From 6388112597c88e37c5835df19b4b7de8d05089c6 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Fri, 26 Jun 2026 21:52:44 +0530 Subject: [PATCH 01/38] Hide draft blog posts from listings, feeds, and search A blog post with `draft: true` in frontmatter stays reachable at its direct URL but is excluded from the blog listing (plus featured hero and pagination), author pages, category pages and chips, the "read next" list, RSS, the JSON feed, and the llms.txt / llms-full.txt aggregators. It also emits a noindex robots meta so search engines drop it while the URL stays live. Implemented via a single publishedPosts (non-draft) source of truth in blog/content.ts, reused across the blog layout context, feeds, and llms generators. unlisted behavior is unchanged. --- src/markdoc/layouts/Post.svelte | 6 ++++++ src/routes/blog/+layout.ts | 4 ++-- src/routes/blog/content.ts | 11 +++++++++-- src/routes/blog/feed.json/+server.ts | 6 +++--- src/routes/blog/rss.xml/+server.ts | 4 ++-- src/routes/llms-full.txt/+server.ts | 12 ++++++++++++ src/routes/llms.txt/+server.ts | 12 ++++++++++++ 7 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/markdoc/layouts/Post.svelte b/src/markdoc/layouts/Post.svelte index dcb56d928d..6b203410dc 100644 --- a/src/markdoc/layouts/Post.svelte +++ b/src/markdoc/layouts/Post.svelte @@ -43,6 +43,8 @@ export let callToAction: BlogCallToActionInput; export let lastUpdated: string; export let faqs: { question: string; answer: string }[] | undefined = undefined; + /** Frontmatter `draft: true`: the post stays reachable by its direct URL but is hidden from all listings/feeds and marked noindex. */ + export let draft = false; const posts = getContext('posts')?.filter( (post) => !(post.unlisted ?? false) && !(post.draft ?? false) @@ -133,6 +135,10 @@ + {#if draft} + + + {/if} {resolvedMetaTitle + TITLE_SUFFIX} diff --git a/src/routes/blog/+layout.ts b/src/routes/blog/+layout.ts index 80d57a6b89..ef71bc5174 100644 --- a/src/routes/blog/+layout.ts +++ b/src/routes/blog/+layout.ts @@ -1,8 +1,8 @@ -import { posts, authors, categories } from './content'; +import { publishedPosts, authors, categories } from './content'; export async function load({ data }) { return { - posts, + posts: publishedPosts, authors, categories, rawContent: data.rawContent diff --git a/src/routes/blog/content.ts b/src/routes/blog/content.ts index 1880a2fb94..70a73fb6c5 100644 --- a/src/routes/blog/content.ts +++ b/src/routes/blog/content.ts @@ -81,6 +81,11 @@ export const posts = Object.entries(postsGlob) return b.date.getTime() - a.date.getTime(); }); +// Posts visible to the public. Drafts are excluded everywhere except their own +// direct URL: the /blog/post/ route still renders a draft (and emits a +// noindex meta via Post.svelte), but it never appears in any listing or feed. +export const publishedPosts = posts.filter((post) => !post.draft); + export const authors = Object.values(authorsGlob).map((authorList) => { const { frontmatter } = authorList as { frontmatter: AuthorData; @@ -115,12 +120,14 @@ export const normalizeCategory = (str: string) => str?.replace(/\s+/g, '-').toLo export const getBlogEntries = () => { const filteredCategories = categories.filter((category) => - posts.some((post) => normalizeCategory(post.category) === normalizeCategory(category.name)) + publishedPosts.some( + (post) => normalizeCategory(post.category) === normalizeCategory(category.name) + ) ); return { authors, filteredCategories, - posts: posts.filter((post) => !post.unlisted) + posts: publishedPosts.filter((post) => !post.unlisted) }; }; diff --git a/src/routes/blog/feed.json/+server.ts b/src/routes/blog/feed.json/+server.ts index ea45f6ee03..e3d01942f5 100644 --- a/src/routes/blog/feed.json/+server.ts +++ b/src/routes/blog/feed.json/+server.ts @@ -1,12 +1,12 @@ import type { RequestHandler } from './$types'; -import { posts } from '../content'; +import { publishedPosts } from '../content'; import { json } from '@sveltejs/kit'; export const prerender = true; export const GET: RequestHandler = () => { return json({ - posts, - total: Object.keys(posts).length + posts: publishedPosts, + total: publishedPosts.length }); }; diff --git a/src/routes/blog/rss.xml/+server.ts b/src/routes/blog/rss.xml/+server.ts index cfc2cf1ecf..f034aafef9 100644 --- a/src/routes/blog/rss.xml/+server.ts +++ b/src/routes/blog/rss.xml/+server.ts @@ -1,5 +1,5 @@ import type { RequestHandler } from './$types'; -import { posts } from '../content'; +import { publishedPosts } from '../content'; export const prerender = true; @@ -26,7 +26,7 @@ export const GET: RequestHandler = () => { https://appwrite.io Appwrite is an open-source platform for building applications at any scale, using your preferred programming languages and tools. - ${posts + ${publishedPosts .map( (post) => ` ${encodeText(post.title)} diff --git a/src/routes/llms-full.txt/+server.ts b/src/routes/llms-full.txt/+server.ts index 9e7c33134a..233460f6f9 100644 --- a/src/routes/llms-full.txt/+server.ts +++ b/src/routes/llms-full.txt/+server.ts @@ -1,5 +1,6 @@ import type { RequestHandler } from '@sveltejs/kit'; import { SPECIAL_PAGES } from '../llms-config'; +import { publishedPosts } from '../blog/content'; export const prerender = true; @@ -9,6 +10,11 @@ const markdocAndMarkdownFiles = import.meta.glob('$routes/**/*.{markdoc,md}', { eager: true }); +// Published (non-draft) blog post slugs — the single source of truth for what is public. +const PUBLISHED_BLOG_SLUGS = new Set( + publishedPosts.map((p) => p.href.split('/blog/post/')[1]).filter(Boolean) +); + function stripRouteGroups(routePath: string): string { return routePath.replace(/\([^/]+\)\//g, ''); } @@ -128,6 +134,12 @@ ${page.fullContent} continue; } + // Skip draft blog posts: only include published ones (single source of truth) + if (href.startsWith('/blog/post')) { + const slug = href.split('/blog/post/')[1]?.replace(/\/+$/, ''); + if (!slug || !PUBLISHED_BLOG_SLUGS.has(slug)) continue; + } + const url = new URL(href, base).toString(); const fmOrH1 = extractTitle(raw); diff --git a/src/routes/llms.txt/+server.ts b/src/routes/llms.txt/+server.ts index fab781cbfe..60b5b58f26 100644 --- a/src/routes/llms.txt/+server.ts +++ b/src/routes/llms.txt/+server.ts @@ -1,5 +1,6 @@ import type { RequestHandler } from '@sveltejs/kit'; import { SPECIAL_PAGES } from '../llms-config'; +import { publishedPosts } from '../blog/content'; export const prerender = true; @@ -10,6 +11,11 @@ const markdocAndMarkdownFiles = import.meta.glob('$routes/**/*.{markdoc,md}', { eager: true }); +// Published (non-draft) blog post slugs — the single source of truth for what is public. +const PUBLISHED_BLOG_SLUGS = new Set( + publishedPosts.map((p) => p.href.split('/blog/post/')[1]).filter(Boolean) +); + // Strip group directories like (marketing) from a route path function stripRouteGroups(routePath: string): string { return routePath.replace(/\([^/]+\)\//g, ''); @@ -148,6 +154,12 @@ export const GET: RequestHandler = ({ request }) => { continue; } + // Skip draft blog posts: only include published ones (single source of truth) + if (href.startsWith('/blog/post')) { + const slug = href.split('/blog/post/')[1]?.replace(/\/+$/, ''); + if (!slug || !PUBLISHED_BLOG_SLUGS.has(slug)) continue; + } + const url = new URL(href, base).toString(); const title = extractTitle(raw) ?? href.split('/').pop()!.replace(/[-_]/g, ' '); From 2a3923bb2512b43940e65ad741d4ebadd245c4dd Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Fri, 26 Jun 2026 17:20:23 +0530 Subject: [PATCH 02/38] Restructure databases docs into per-database-type sections Split the Databases docs into a menu of database types. The /docs/products/databases overview becomes a menu (Appwrite databases: TablesDB, DocumentsDB, VectorsDB; Native databases: PostgreSQL, MySQL). Existing TablesDB content moves under /tablesdb with its full sidebar; DocumentsDB, VectorsDB, PostgreSQL, and MySQL get their own sections with placeholder overviews. Adds redirects for all moved pages. --- src/redirects.json | 142 +++++++++++++++++- .../databases/(overview)/+layout.svelte | 64 ++++++++ .../databases/(overview)/+page.markdoc | 40 +++++ .../databases/documentsdb/+layout.svelte | 29 ++++ .../databases/documentsdb/+page.markdoc | 11 ++ .../products/databases/mysql/+layout.svelte | 29 ++++ .../products/databases/mysql/+page.markdoc | 11 ++ .../databases/postgresql/+layout.svelte | 29 ++++ .../databases/postgresql/+page.markdoc | 11 ++ .../databases/{ => tablesdb}/+layout.svelte | 54 +++---- .../databases/{ => tablesdb}/+page.markdoc | 6 +- .../ai-suggestions/+page.markdoc | 0 .../atomic-numeric-operations/+page.markdoc | 0 .../{ => tablesdb}/backups/+page.markdoc | 0 .../bulk-operations/+page.markdoc | 0 .../{ => tablesdb}/csv-exports/+page.markdoc | 0 .../{ => tablesdb}/csv-imports/+page.markdoc | 0 .../{ => tablesdb}/databases/+page.markdoc | 0 .../{ => tablesdb}/geo-queries/+page.markdoc | 0 .../{ => tablesdb}/legacy/+layout.svelte | 0 .../databases/{ => tablesdb}/legacy/+page.ts | 0 .../atomic-numeric-operations/+page.markdoc | 0 .../legacy/bulk-operations/+page.markdoc | 0 .../legacy/collections/+page.markdoc | 0 .../legacy/databases/+page.markdoc | 0 .../legacy/documents/+page.markdoc | 0 .../{ => tablesdb}/legacy/order/+page.markdoc | 0 .../legacy/pagination/+page.markdoc | 0 .../legacy/permissions/+page.markdoc | 0 .../legacy/queries/+page.markdoc | 0 .../legacy/quick-start/+page.markdoc | 0 .../legacy/relationships/+page.markdoc | 0 .../legacy/type-generation/+page.markdoc | 0 .../{ => tablesdb}/offline/+page.markdoc | 0 .../{ => tablesdb}/operators/+page.markdoc | 0 .../{ => tablesdb}/order/+page.markdoc | 0 .../{ => tablesdb}/pagination/+page.markdoc | 0 .../{ => tablesdb}/permissions/+page.markdoc | 0 .../{ => tablesdb}/queries/+page.markdoc | 0 .../{ => tablesdb}/quick-start/+page.markdoc | 0 .../relationships/+page.markdoc | 0 .../{ => tablesdb}/rows/+page.markdoc | 0 .../{ => tablesdb}/tables/+page.markdoc | 0 .../timestamp-overrides/+page.markdoc | 0 .../{ => tablesdb}/transactions/+page.markdoc | 0 .../type-generation/+page.markdoc | 0 .../databases/vectorsdb/+layout.svelte | 29 ++++ .../databases/vectorsdb/+page.markdoc | 11 ++ 48 files changed, 431 insertions(+), 35 deletions(-) create mode 100644 src/routes/docs/products/databases/(overview)/+layout.svelte create mode 100644 src/routes/docs/products/databases/(overview)/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/+layout.svelte create mode 100644 src/routes/docs/products/databases/documentsdb/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/+layout.svelte create mode 100644 src/routes/docs/products/databases/mysql/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/+layout.svelte create mode 100644 src/routes/docs/products/databases/postgresql/+page.markdoc rename src/routes/docs/products/databases/{ => tablesdb}/+layout.svelte (70%) rename src/routes/docs/products/databases/{ => tablesdb}/+page.markdoc (70%) rename src/routes/docs/products/databases/{ => tablesdb}/ai-suggestions/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/atomic-numeric-operations/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/backups/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/bulk-operations/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/csv-exports/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/csv-imports/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/databases/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/geo-queries/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/+layout.svelte (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/+page.ts (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/atomic-numeric-operations/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/bulk-operations/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/collections/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/databases/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/documents/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/order/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/pagination/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/permissions/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/queries/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/quick-start/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/relationships/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/legacy/type-generation/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/offline/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/operators/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/order/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/pagination/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/permissions/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/queries/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/quick-start/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/relationships/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/rows/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/tables/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/timestamp-overrides/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/transactions/+page.markdoc (100%) rename src/routes/docs/products/databases/{ => tablesdb}/type-generation/+page.markdoc (100%) create mode 100644 src/routes/docs/products/databases/vectorsdb/+layout.svelte create mode 100644 src/routes/docs/products/databases/vectorsdb/+page.markdoc diff --git a/src/redirects.json b/src/redirects.json index 17340a23b8..65ebd11afc 100644 --- a/src/redirects.json +++ b/src/redirects.json @@ -97,15 +97,15 @@ }, { "link": "/docs/databases-queries", - "redirect": "/docs/products/databases/queries" + "redirect": "/docs/products/databases/tablesdb/queries" }, { "link": "/docs/databases-pagination", - "redirect": "/docs/products/databases/pagination" + "redirect": "/docs/products/databases/tablesdb/pagination" }, { "link": "/docs/databases-relationships", - "redirect": "/docs/products/databases/relationships" + "redirect": "/docs/products/databases/tablesdb/relationships" }, { "link": "/docs/storage", @@ -213,11 +213,11 @@ }, { "link": "/docs/queries", - "redirect": "/docs/products/databases/queries" + "redirect": "/docs/products/databases/tablesdb/queries" }, { "link": "/docs/pagination", - "redirect": "/docs/products/databases/pagination" + "redirect": "/docs/products/databases/tablesdb/pagination" }, { "link": "/docs/webhooks", @@ -915,5 +915,137 @@ { "link": "/heroes", "redirect": "/" + }, + { + "link": "/docs/products/databases/ai-suggestions", + "redirect": "/docs/products/databases/tablesdb/ai-suggestions" + }, + { + "link": "/docs/products/databases/atomic-numeric-operations", + "redirect": "/docs/products/databases/tablesdb/atomic-numeric-operations" + }, + { + "link": "/docs/products/databases/backups", + "redirect": "/docs/products/databases/tablesdb/backups" + }, + { + "link": "/docs/products/databases/bulk-operations", + "redirect": "/docs/products/databases/tablesdb/bulk-operations" + }, + { + "link": "/docs/products/databases/csv-exports", + "redirect": "/docs/products/databases/tablesdb/csv-exports" + }, + { + "link": "/docs/products/databases/csv-imports", + "redirect": "/docs/products/databases/tablesdb/csv-imports" + }, + { + "link": "/docs/products/databases/databases", + "redirect": "/docs/products/databases/tablesdb/databases" + }, + { + "link": "/docs/products/databases/geo-queries", + "redirect": "/docs/products/databases/tablesdb/geo-queries" + }, + { + "link": "/docs/products/databases/legacy/atomic-numeric-operations", + "redirect": "/docs/products/databases/tablesdb/legacy/atomic-numeric-operations" + }, + { + "link": "/docs/products/databases/legacy/bulk-operations", + "redirect": "/docs/products/databases/tablesdb/legacy/bulk-operations" + }, + { + "link": "/docs/products/databases/legacy/collections", + "redirect": "/docs/products/databases/tablesdb/legacy/collections" + }, + { + "link": "/docs/products/databases/legacy/databases", + "redirect": "/docs/products/databases/tablesdb/legacy/databases" + }, + { + "link": "/docs/products/databases/legacy/documents", + "redirect": "/docs/products/databases/tablesdb/legacy/documents" + }, + { + "link": "/docs/products/databases/legacy/order", + "redirect": "/docs/products/databases/tablesdb/legacy/order" + }, + { + "link": "/docs/products/databases/legacy/pagination", + "redirect": "/docs/products/databases/tablesdb/legacy/pagination" + }, + { + "link": "/docs/products/databases/legacy/permissions", + "redirect": "/docs/products/databases/tablesdb/legacy/permissions" + }, + { + "link": "/docs/products/databases/legacy/queries", + "redirect": "/docs/products/databases/tablesdb/legacy/queries" + }, + { + "link": "/docs/products/databases/legacy/quick-start", + "redirect": "/docs/products/databases/tablesdb/legacy/quick-start" + }, + { + "link": "/docs/products/databases/legacy/relationships", + "redirect": "/docs/products/databases/tablesdb/legacy/relationships" + }, + { + "link": "/docs/products/databases/legacy/type-generation", + "redirect": "/docs/products/databases/tablesdb/legacy/type-generation" + }, + { + "link": "/docs/products/databases/offline", + "redirect": "/docs/products/databases/tablesdb/offline" + }, + { + "link": "/docs/products/databases/operators", + "redirect": "/docs/products/databases/tablesdb/operators" + }, + { + "link": "/docs/products/databases/order", + "redirect": "/docs/products/databases/tablesdb/order" + }, + { + "link": "/docs/products/databases/pagination", + "redirect": "/docs/products/databases/tablesdb/pagination" + }, + { + "link": "/docs/products/databases/permissions", + "redirect": "/docs/products/databases/tablesdb/permissions" + }, + { + "link": "/docs/products/databases/queries", + "redirect": "/docs/products/databases/tablesdb/queries" + }, + { + "link": "/docs/products/databases/quick-start", + "redirect": "/docs/products/databases/tablesdb/quick-start" + }, + { + "link": "/docs/products/databases/relationships", + "redirect": "/docs/products/databases/tablesdb/relationships" + }, + { + "link": "/docs/products/databases/rows", + "redirect": "/docs/products/databases/tablesdb/rows" + }, + { + "link": "/docs/products/databases/tables", + "redirect": "/docs/products/databases/tablesdb/tables" + }, + { + "link": "/docs/products/databases/timestamp-overrides", + "redirect": "/docs/products/databases/tablesdb/timestamp-overrides" + }, + { + "link": "/docs/products/databases/transactions", + "redirect": "/docs/products/databases/tablesdb/transactions" + }, + { + "link": "/docs/products/databases/type-generation", + "redirect": "/docs/products/databases/tablesdb/type-generation" } ] diff --git a/src/routes/docs/products/databases/(overview)/+layout.svelte b/src/routes/docs/products/databases/(overview)/+layout.svelte new file mode 100644 index 0000000000..ae270c5d9e --- /dev/null +++ b/src/routes/docs/products/databases/(overview)/+layout.svelte @@ -0,0 +1,64 @@ + + + + + + {@render children()} + diff --git a/src/routes/docs/products/databases/(overview)/+page.markdoc b/src/routes/docs/products/databases/(overview)/+page.markdoc new file mode 100644 index 0000000000..635ec2fd95 --- /dev/null +++ b/src/routes/docs/products/databases/(overview)/+page.markdoc @@ -0,0 +1,40 @@ +--- +layout: article +title: Databases +description: Store and query your application data with Appwrite Databases. Choose between Appwrite databases with managed APIs and dedicated native databases with direct access. +--- + +Appwrite Databases provide performant and scalable storage for your application, business, and user data. Choose the database that fits your use case, from managed APIs with permissions and realtime to dedicated native engines you connect to directly. + +{% info title="Looking for file storage?" %} +Databases store data. If you need to store files like images, PDFs, or videos, use [Appwrite Storage](/docs/products/storage). +{% /info %} + +# Appwrite databases {% #appwrite-databases %} + +Managed databases with an Appwrite API on top, including permissions, indexes, queries, and realtime. Available on shared and dedicated infrastructure. + +{% cards %} +{% cards_item href="/docs/products/databases/tablesdb" title="TablesDB" %} +Structured, relational data with typed columns, rows, relationships, and indexes. +{% /cards_item %} +{% cards_item href="/docs/products/databases/documentsdb" title="DocumentsDB" %} +Schemaless document storage for flexible, JSON-style data. +{% /cards_item %} +{% cards_item href="/docs/products/databases/vectorsdb" title="VectorsDB" %} +Store embeddings and run similarity search to power AI features. +{% /cards_item %} +{% /cards %} + +# Native databases {% #native-databases %} + +Native database engines provisioned for your project with direct connection access and no abstraction layer. Available on dedicated infrastructure. + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql" title="PostgreSQL" %} +A dedicated, native PostgreSQL database you connect to directly. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql" title="MySQL" %} +A dedicated, native MySQL database you connect to directly. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/documentsdb/+layout.svelte b/src/routes/docs/products/databases/documentsdb/+layout.svelte new file mode 100644 index 0000000000..3d2666cc56 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/+layout.svelte @@ -0,0 +1,29 @@ + + + + + + {@render children()} + diff --git a/src/routes/docs/products/databases/documentsdb/+page.markdoc b/src/routes/docs/products/databases/documentsdb/+page.markdoc new file mode 100644 index 0000000000..9c70cfae24 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/+page.markdoc @@ -0,0 +1,11 @@ +--- +layout: article +title: DocumentsDB +description: Store schemaless documents in collections with Appwrite DocumentsDB for flexible, JSON-style application data. +--- + +Appwrite DocumentsDB stores schemaless documents in collections, giving you flexible, JSON-style data without a fixed schema. It shares the same permissions, indexes, queries, transactions, and realtime concepts as the rest of Appwrite Databases. + +{% info title="Documentation in progress" %} +Detailed DocumentsDB guides are on the way. For now, the concepts in [TablesDB](/docs/products/databases/tablesdb) are the closest reference. +{% /info %} diff --git a/src/routes/docs/products/databases/mysql/+layout.svelte b/src/routes/docs/products/databases/mysql/+layout.svelte new file mode 100644 index 0000000000..f6fe631eea --- /dev/null +++ b/src/routes/docs/products/databases/mysql/+layout.svelte @@ -0,0 +1,29 @@ + + + + + + {@render children()} + diff --git a/src/routes/docs/products/databases/mysql/+page.markdoc b/src/routes/docs/products/databases/mysql/+page.markdoc new file mode 100644 index 0000000000..de42e29c3b --- /dev/null +++ b/src/routes/docs/products/databases/mysql/+page.markdoc @@ -0,0 +1,11 @@ +--- +layout: article +title: MySQL +description: Run a dedicated, native MySQL database provisioned for your project and connect to it directly with standard MySQL clients. +--- + +Run a dedicated, native MySQL database provisioned for your project. Connect to it directly with standard MySQL clients and tools, with no Appwrite abstraction layer in between. Native databases are available on dedicated infrastructure. + +{% info title="Documentation in progress" %} +Detailed MySQL setup and connection guides are on the way. +{% /info %} diff --git a/src/routes/docs/products/databases/postgresql/+layout.svelte b/src/routes/docs/products/databases/postgresql/+layout.svelte new file mode 100644 index 0000000000..de7adff91d --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/+layout.svelte @@ -0,0 +1,29 @@ + + + + + + {@render children()} + diff --git a/src/routes/docs/products/databases/postgresql/+page.markdoc b/src/routes/docs/products/databases/postgresql/+page.markdoc new file mode 100644 index 0000000000..4e7c251d8d --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/+page.markdoc @@ -0,0 +1,11 @@ +--- +layout: article +title: PostgreSQL +description: Run a dedicated, native PostgreSQL database provisioned for your project and connect to it directly with standard PostgreSQL clients. +--- + +Run a dedicated, native PostgreSQL database provisioned for your project. Connect to it directly with standard PostgreSQL clients and tools, with no Appwrite abstraction layer in between. Native databases are available on dedicated infrastructure. + +{% info title="Documentation in progress" %} +Detailed PostgreSQL setup and connection guides are on the way. +{% /info %} diff --git a/src/routes/docs/products/databases/+layout.svelte b/src/routes/docs/products/databases/tablesdb/+layout.svelte similarity index 70% rename from src/routes/docs/products/databases/+layout.svelte rename to src/routes/docs/products/databases/tablesdb/+layout.svelte index 87f1ffb5a3..ca05c54b16 100644 --- a/src/routes/docs/products/databases/+layout.svelte +++ b/src/routes/docs/products/databases/tablesdb/+layout.svelte @@ -10,7 +10,7 @@ let { children } = $props(); const parent: NavParent = { - href: '/docs', + href: '/docs/products/databases', label: 'Databases' }; @@ -20,11 +20,11 @@ items: [ { label: 'Overview', - href: '/docs/products/databases' + href: '/docs/products/databases/tablesdb' }, { label: 'Quick start', - href: '/docs/products/databases/quick-start' + href: '/docs/products/databases/tablesdb/quick-start' } ] }, @@ -33,45 +33,45 @@ items: [ { label: 'Databases', - href: '/docs/products/databases/databases' + href: '/docs/products/databases/tablesdb/databases' }, { label: 'Tables', - href: '/docs/products/databases/tables' + href: '/docs/products/databases/tablesdb/tables' }, { label: 'Rows', - href: '/docs/products/databases/rows' + href: '/docs/products/databases/tablesdb/rows' }, { label: 'Permissions', - href: '/docs/products/databases/permissions' + href: '/docs/products/databases/tablesdb/permissions' }, { label: 'Relationships', - href: '/docs/products/databases/relationships' + href: '/docs/products/databases/tablesdb/relationships' }, { label: 'Queries', - href: '/docs/products/databases/queries' + href: '/docs/products/databases/tablesdb/queries' }, { label: 'Order', - href: '/docs/products/databases/order' + href: '/docs/products/databases/tablesdb/order' }, { label: 'Operators', - href: '/docs/products/databases/operators', + href: '/docs/products/databases/tablesdb/operators', new: isNewUntil('31 Dec 2025') }, { label: 'Geo queries', - href: '/docs/products/databases/geo-queries', + href: '/docs/products/databases/tablesdb/geo-queries', new: isNewUntil('30 Sep 2025') }, { label: 'Backups', - href: '/docs/products/databases/backups' + href: '/docs/products/databases/tablesdb/backups' } ] }, @@ -80,50 +80,50 @@ items: [ { label: 'Pagination', - href: '/docs/products/databases/pagination' + href: '/docs/products/databases/tablesdb/pagination' }, { label: 'Transactions', - href: '/docs/products/databases/transactions', + href: '/docs/products/databases/tablesdb/transactions', new: isNewUntil('31 Oct 2025') }, { label: 'Type generation', - href: '/docs/products/databases/type-generation', + href: '/docs/products/databases/tablesdb/type-generation', new: isNewUntil('31 Jul 2025') }, { label: 'Offline sync', - href: '/docs/products/databases/offline' + href: '/docs/products/databases/tablesdb/offline' }, { label: 'Bulk operations', - href: '/docs/products/databases/bulk-operations', + href: '/docs/products/databases/tablesdb/bulk-operations', new: isNewUntil('31 Jul 2025') }, { label: 'Atomic numeric operations', - href: '/docs/products/databases/atomic-numeric-operations', + href: '/docs/products/databases/tablesdb/atomic-numeric-operations', new: isNewUntil('31 Jul 2025') }, { label: 'CSV imports', - href: '/docs/products/databases/csv-imports', + href: '/docs/products/databases/tablesdb/csv-imports', new: isNewUntil('31 Jul 2025') }, { label: 'CSV exports', - href: '/docs/products/databases/csv-exports', + href: '/docs/products/databases/tablesdb/csv-exports', new: isNewUntil('28 Feb 2026') }, { label: 'AI suggestions', - href: '/docs/products/databases/ai-suggestions', + href: '/docs/products/databases/tablesdb/ai-suggestions', new: isNewUntil('31 Dec 2025') }, { label: 'Timestamp overrides', - href: '/docs/products/databases/timestamp-overrides' + href: '/docs/products/databases/tablesdb/timestamp-overrides' } ] }, @@ -145,16 +145,16 @@ const legacyUrl = $derived( page.url.pathname - .replace('/products/databases', '/products/databases/legacy') - .replace('rows', 'documents') - .replace('tables', 'collections') + .replace('/tablesdb/', '/tablesdb/legacy/') + .replace(/\/rows(\/|$)/, '/documents$1') + .replace(/\/tables(\/|$)/, '/collections$1') ); const hideSubtitleRoutes = ['offline', 'backups', 'csv-imports', 'csv-exports']; const shouldShowSubtitle = $derived( !hideSubtitleRoutes.some((segment) => page.route.id?.includes(segment)) && - !page.url.pathname.endsWith('products/databases') + !page.url.pathname.endsWith('products/databases/tablesdb') ); const headerSectionInfoAlert = writable(null); diff --git a/src/routes/docs/products/databases/+page.markdoc b/src/routes/docs/products/databases/tablesdb/+page.markdoc similarity index 70% rename from src/routes/docs/products/databases/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/+page.markdoc index 9217bde1e6..e9f0108984 100644 --- a/src/routes/docs/products/databases/+page.markdoc +++ b/src/routes/docs/products/databases/tablesdb/+page.markdoc @@ -1,7 +1,7 @@ --- layout: article -title: Databases -description: Store and query structured data with Appwrite Databases. Databases provide performant and scalable storage for your application, business, and user data. +title: TablesDB +description: Store and query structured data with Appwrite TablesDB. Tables provide performant and scalable storage for your application, business, and user data. --- Appwrite Databases let you store and query structured data. @@ -14,6 +14,6 @@ Databases store data, if you need to store files like images, PDFs or videos, us You can organize data into databases, tables, and rows. You can also paginate, order, and query rows. For complex business logic, Appwrite supports relationships to help you model your data. -{% arrow_link href="/docs/products/databases/quick-start" %} +{% arrow_link href="/docs/products/databases/tablesdb/quick-start" %} Quick start {% /arrow_link %} \ No newline at end of file diff --git a/src/routes/docs/products/databases/ai-suggestions/+page.markdoc b/src/routes/docs/products/databases/tablesdb/ai-suggestions/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/ai-suggestions/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/ai-suggestions/+page.markdoc diff --git a/src/routes/docs/products/databases/atomic-numeric-operations/+page.markdoc b/src/routes/docs/products/databases/tablesdb/atomic-numeric-operations/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/atomic-numeric-operations/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/atomic-numeric-operations/+page.markdoc diff --git a/src/routes/docs/products/databases/backups/+page.markdoc b/src/routes/docs/products/databases/tablesdb/backups/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/backups/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/backups/+page.markdoc diff --git a/src/routes/docs/products/databases/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/bulk-operations/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc diff --git a/src/routes/docs/products/databases/csv-exports/+page.markdoc b/src/routes/docs/products/databases/tablesdb/csv-exports/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/csv-exports/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/csv-exports/+page.markdoc diff --git a/src/routes/docs/products/databases/csv-imports/+page.markdoc b/src/routes/docs/products/databases/tablesdb/csv-imports/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/csv-imports/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/csv-imports/+page.markdoc diff --git a/src/routes/docs/products/databases/databases/+page.markdoc b/src/routes/docs/products/databases/tablesdb/databases/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/databases/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/databases/+page.markdoc diff --git a/src/routes/docs/products/databases/geo-queries/+page.markdoc b/src/routes/docs/products/databases/tablesdb/geo-queries/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/geo-queries/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/geo-queries/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/+layout.svelte b/src/routes/docs/products/databases/tablesdb/legacy/+layout.svelte similarity index 100% rename from src/routes/docs/products/databases/legacy/+layout.svelte rename to src/routes/docs/products/databases/tablesdb/legacy/+layout.svelte diff --git a/src/routes/docs/products/databases/legacy/+page.ts b/src/routes/docs/products/databases/tablesdb/legacy/+page.ts similarity index 100% rename from src/routes/docs/products/databases/legacy/+page.ts rename to src/routes/docs/products/databases/tablesdb/legacy/+page.ts diff --git a/src/routes/docs/products/databases/legacy/atomic-numeric-operations/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/atomic-numeric-operations/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/atomic-numeric-operations/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/atomic-numeric-operations/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/bulk-operations/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/bulk-operations/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/bulk-operations/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/collections/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/collections/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/collections/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/collections/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/databases/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/databases/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/databases/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/databases/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/documents/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/documents/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/documents/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/documents/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/order/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/order/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/order/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/order/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/pagination/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/pagination/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/pagination/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/pagination/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/permissions/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/permissions/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/permissions/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/permissions/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/queries/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/queries/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/queries/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/queries/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/quick-start/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/quick-start/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/quick-start/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/quick-start/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/relationships/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/relationships/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/relationships/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/relationships/+page.markdoc diff --git a/src/routes/docs/products/databases/legacy/type-generation/+page.markdoc b/src/routes/docs/products/databases/tablesdb/legacy/type-generation/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/legacy/type-generation/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/legacy/type-generation/+page.markdoc diff --git a/src/routes/docs/products/databases/offline/+page.markdoc b/src/routes/docs/products/databases/tablesdb/offline/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/offline/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/offline/+page.markdoc diff --git a/src/routes/docs/products/databases/operators/+page.markdoc b/src/routes/docs/products/databases/tablesdb/operators/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/operators/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/operators/+page.markdoc diff --git a/src/routes/docs/products/databases/order/+page.markdoc b/src/routes/docs/products/databases/tablesdb/order/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/order/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/order/+page.markdoc diff --git a/src/routes/docs/products/databases/pagination/+page.markdoc b/src/routes/docs/products/databases/tablesdb/pagination/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/pagination/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/pagination/+page.markdoc diff --git a/src/routes/docs/products/databases/permissions/+page.markdoc b/src/routes/docs/products/databases/tablesdb/permissions/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/permissions/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/permissions/+page.markdoc diff --git a/src/routes/docs/products/databases/queries/+page.markdoc b/src/routes/docs/products/databases/tablesdb/queries/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/queries/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/queries/+page.markdoc diff --git a/src/routes/docs/products/databases/quick-start/+page.markdoc b/src/routes/docs/products/databases/tablesdb/quick-start/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/quick-start/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/quick-start/+page.markdoc diff --git a/src/routes/docs/products/databases/relationships/+page.markdoc b/src/routes/docs/products/databases/tablesdb/relationships/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/relationships/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/relationships/+page.markdoc diff --git a/src/routes/docs/products/databases/rows/+page.markdoc b/src/routes/docs/products/databases/tablesdb/rows/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/rows/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/rows/+page.markdoc diff --git a/src/routes/docs/products/databases/tables/+page.markdoc b/src/routes/docs/products/databases/tablesdb/tables/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/tables/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/tables/+page.markdoc diff --git a/src/routes/docs/products/databases/timestamp-overrides/+page.markdoc b/src/routes/docs/products/databases/tablesdb/timestamp-overrides/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/timestamp-overrides/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/timestamp-overrides/+page.markdoc diff --git a/src/routes/docs/products/databases/transactions/+page.markdoc b/src/routes/docs/products/databases/tablesdb/transactions/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/transactions/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/transactions/+page.markdoc diff --git a/src/routes/docs/products/databases/type-generation/+page.markdoc b/src/routes/docs/products/databases/tablesdb/type-generation/+page.markdoc similarity index 100% rename from src/routes/docs/products/databases/type-generation/+page.markdoc rename to src/routes/docs/products/databases/tablesdb/type-generation/+page.markdoc diff --git a/src/routes/docs/products/databases/vectorsdb/+layout.svelte b/src/routes/docs/products/databases/vectorsdb/+layout.svelte new file mode 100644 index 0000000000..bd502da28b --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/+layout.svelte @@ -0,0 +1,29 @@ + + + + + + {@render children()} + diff --git a/src/routes/docs/products/databases/vectorsdb/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/+page.markdoc new file mode 100644 index 0000000000..f0391bc33d --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/+page.markdoc @@ -0,0 +1,11 @@ +--- +layout: article +title: VectorsDB +description: Store vector embeddings and run similarity search with Appwrite VectorsDB to power semantic search, recommendations, and other AI features. +--- + +Appwrite VectorsDB stores vector embeddings and runs similarity search, so you can build semantic search, recommendations, and other AI features. It also exposes an endpoint to generate text embeddings, and shares the permissions, indexes, transactions, and realtime concepts used across Appwrite Databases. + +{% info title="Documentation in progress" %} +Detailed VectorsDB guides are on the way. For now, the concepts in [TablesDB](/docs/products/databases/tablesdb) are the closest reference. +{% /info %} From dcdb713fe1f5b386a098873c7ceb7cb22eccde39 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale Date: Mon, 29 Jun 2026 20:12:49 +0530 Subject: [PATCH 03/38] Add DocumentsDB documentation section Add DocumentsDB docs (concepts and journeys) under databases/documentsdb, move TablesDB within the databases section with redirects from the previous URLs, and align the backups and bulk operations pages. --- .optimize-cache.json | 8 + src/redirects.json | 4 + .../databases/documentsdb/+layout.svelte | 64 +- .../databases/documentsdb/+page.markdoc | 15 +- .../atomic-numeric-operations/+page.markdoc | 867 ++++++++ .../documentsdb/backups/+page.markdoc | 89 + .../documentsdb/bulk-operations/+page.markdoc | 567 +++++ .../documentsdb/collections/+page.markdoc | 526 +++++ .../documentsdb/databases/+page.markdoc | 218 ++ .../documentsdb/documents/+page.markdoc | 1189 +++++++++++ .../databases/documentsdb/order/+page.markdoc | 336 +++ .../documentsdb/pagination/+page.markdoc | 540 +++++ .../documentsdb/permissions/+page.markdoc | 35 + .../documentsdb/queries/+page.markdoc | 1855 +++++++++++++++++ .../documentsdb/quick-start/+page.markdoc | 243 +++ .../timestamp-overrides/+page.markdoc | 1266 +++++++++++ .../documentsdb/transactions/+page.markdoc | 1274 +++++++++++ .../databases/tablesdb/backups/+page.markdoc | 14 +- .../tablesdb/bulk-operations/+page.markdoc | 42 +- .../databases/documentsdb/backup-policy.avif | Bin 0 -> 10913 bytes .../databases/documentsdb/backups-tab.avif | Bin 0 -> 26847 bytes .../documentsdb/create-database.avif | Bin 0 -> 31320 bytes .../documentsdb/dark/backup-policy.avif | Bin 0 -> 11350 bytes .../documentsdb/dark/backups-tab.avif | Bin 0 -> 28535 bytes .../documentsdb/dark/create-database.avif | Bin 0 -> 34142 bytes .../documentsdb/dark/manual-backup.avif | Bin 0 -> 10490 bytes .../databases/documentsdb/manual-backup.avif | Bin 0 -> 10120 bytes 27 files changed, 9119 insertions(+), 33 deletions(-) create mode 100644 src/routes/docs/products/databases/documentsdb/atomic-numeric-operations/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/backups/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/collections/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/databases/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/documents/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/order/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/permissions/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/queries/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/quick-start/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/timestamp-overrides/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/transactions/+page.markdoc create mode 100644 static/images/docs/databases/documentsdb/backup-policy.avif create mode 100644 static/images/docs/databases/documentsdb/backups-tab.avif create mode 100644 static/images/docs/databases/documentsdb/create-database.avif create mode 100644 static/images/docs/databases/documentsdb/dark/backup-policy.avif create mode 100644 static/images/docs/databases/documentsdb/dark/backups-tab.avif create mode 100644 static/images/docs/databases/documentsdb/dark/create-database.avif create mode 100644 static/images/docs/databases/documentsdb/dark/manual-backup.avif create mode 100644 static/images/docs/databases/documentsdb/manual-backup.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index f926af4a59..babde58ee4 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1455,6 +1455,14 @@ "static/images/docs/databases/dark/scale-custom-policies.png": "0013e987e9b8b917cb9be4c28048f851f2d188f3bfa5ff17a11a7ac7cf9c3ade", "static/images/docs/databases/dark/scale-policies.png": "9ca9523f2e20e9aa993f0ad933cdf1dcd12adbaa35ecb2a0b8b3d2fd65877e1f", "static/images/docs/databases/databases.png": "0278a6bc5672684653f74bcf3c0d022fdd82a08d7a7fd438b28e21bd81b5e5d5", + "static/images/docs/databases/documentsdb/backup-policy.png": "913cacbe957847f8a71efa2d2e704754e52cf9c276dce8978f6c473a9ba6595b", + "static/images/docs/databases/documentsdb/backups-tab.png": "231163729496618d26863c6fa7ad88069875f78a3c320033d4bddc3c2f8da376", + "static/images/docs/databases/documentsdb/create-database.png": "49ba017dcec96631a87f924b13b6b93478add7b516cc62947e87230b5a0d5de1", + "static/images/docs/databases/documentsdb/dark/backup-policy.png": "a29fad13b50374b3de55824f1332fa4be9c2c7a0c4c63f550d03306ffd546551", + "static/images/docs/databases/documentsdb/dark/backups-tab.png": "dedb6cfcdd9217e814e58cb14db3d8309f53e3071cb9f12edd9a0d5f9bad1d7c", + "static/images/docs/databases/documentsdb/dark/create-database.png": "fe4c1340226d31fb3fa1d655563c9c8fdd150b4d0aac3e217fdd2af40718c272", + "static/images/docs/databases/documentsdb/dark/manual-backup.png": "880f077a3a598c35c9939a1cfcab4bc82a2a88e730be1b4157359657f0a47dcd", + "static/images/docs/databases/documentsdb/manual-backup.png": "0f3432e170b68503b00fac4cf65ed7c5e5a04f34031b5011fe1c80f1eda2bf1a", "static/images/docs/databases/manual-backup.png": "a5854158c5350e333ae14b699db4626c5c26e17b529f3acd137cfae8cb08e9c4", "static/images/docs/databases/pro-policy.png": "b0d35de73c334614dc3f644459dea2bbc56d0da3157db985f24897597ae26302", "static/images/docs/databases/restore.png": "97611c54c654631d2a86a8453a2ea3603c32e85888c065668e945eeeeb894df0", diff --git a/src/redirects.json b/src/redirects.json index 65ebd11afc..bc286d8f2d 100644 --- a/src/redirects.json +++ b/src/redirects.json @@ -948,6 +948,10 @@ "link": "/docs/products/databases/geo-queries", "redirect": "/docs/products/databases/tablesdb/geo-queries" }, + { + "link": "/docs/products/databases/legacy", + "redirect": "/docs/products/databases/tablesdb/legacy" + }, { "link": "/docs/products/databases/legacy/atomic-numeric-operations", "redirect": "/docs/products/databases/tablesdb/legacy/atomic-numeric-operations" diff --git a/src/routes/docs/products/databases/documentsdb/+layout.svelte b/src/routes/docs/products/databases/documentsdb/+layout.svelte index 3d2666cc56..3f63cab9b0 100644 --- a/src/routes/docs/products/databases/documentsdb/+layout.svelte +++ b/src/routes/docs/products/databases/documentsdb/+layout.svelte @@ -6,7 +6,7 @@ const parent: NavParent = { href: '/docs/products/databases', - label: 'Databases' + label: 'DocumentsDB' }; const navigation: NavTree = [ @@ -16,6 +16,68 @@ { label: 'Overview', href: '/docs/products/databases/documentsdb' + }, + { + label: 'Quick start', + href: '/docs/products/databases/documentsdb/quick-start' + } + ] + }, + { + label: 'Concepts', + items: [ + { + label: 'Databases', + href: '/docs/products/databases/documentsdb/databases' + }, + { + label: 'Collections', + href: '/docs/products/databases/documentsdb/collections' + }, + { + label: 'Documents', + href: '/docs/products/databases/documentsdb/documents' + }, + { + label: 'Permissions', + href: '/docs/products/databases/documentsdb/permissions' + }, + { + label: 'Queries', + href: '/docs/products/databases/documentsdb/queries' + }, + { + label: 'Order', + href: '/docs/products/databases/documentsdb/order' + }, + { + label: 'Backups', + href: '/docs/products/databases/documentsdb/backups' + } + ] + }, + { + label: 'Journeys', + items: [ + { + label: 'Pagination', + href: '/docs/products/databases/documentsdb/pagination' + }, + { + label: 'Transactions', + href: '/docs/products/databases/documentsdb/transactions' + }, + { + label: 'Bulk operations', + href: '/docs/products/databases/documentsdb/bulk-operations' + }, + { + label: 'Atomic numeric operations', + href: '/docs/products/databases/documentsdb/atomic-numeric-operations' + }, + { + label: 'Timestamp overrides', + href: '/docs/products/databases/documentsdb/timestamp-overrides' } ] } diff --git a/src/routes/docs/products/databases/documentsdb/+page.markdoc b/src/routes/docs/products/databases/documentsdb/+page.markdoc index 9c70cfae24..cb74d847af 100644 --- a/src/routes/docs/products/databases/documentsdb/+page.markdoc +++ b/src/routes/docs/products/databases/documentsdb/+page.markdoc @@ -1,11 +1,18 @@ --- layout: article title: DocumentsDB -description: Store schemaless documents in collections with Appwrite DocumentsDB for flexible, JSON-style application data. +description: Store and query schemaless documents with Appwrite DocumentsDB. Collections give you flexible, JSON-style storage for your application, business, and user data. --- -Appwrite DocumentsDB stores schemaless documents in collections, giving you flexible, JSON-style data without a fixed schema. It shares the same permissions, indexes, queries, transactions, and realtime concepts as the rest of Appwrite Databases. +Appwrite DocumentsDB lets you store and query schemaless documents. +Collections hold documents as flexible JSON, so you can add fields as your data evolves without defining a schema up front. -{% info title="Documentation in progress" %} -Detailed DocumentsDB guides are on the way. For now, the concepts in [TablesDB](/docs/products/databases/tablesdb) are the closest reference. +{% info title="Looking for file storage?" %} +Databases store data, if you need to store files like images, PDFs or videos, use [Appwrite Storage](/docs/products/storage). {% /info %} + +You can organize data into databases, collections, and documents. You can also paginate, order, and query documents. + +{% arrow_link href="/docs/products/databases/documentsdb/quick-start" %} +Quick start +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/documentsdb/atomic-numeric-operations/+page.markdoc b/src/routes/docs/products/databases/documentsdb/atomic-numeric-operations/+page.markdoc new file mode 100644 index 0000000000..9dd095b1a3 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/atomic-numeric-operations/+page.markdoc @@ -0,0 +1,867 @@ +--- +layout: article +title: Atomic numeric operations +description: Safely increment and decrement numeric fields without race conditions. Perfect for counters, quotas, inventory, and usage metrics in high-concurrency applications. +--- + +Atomic numeric operations allow you to safely increase or decrease numeric fields without fetching the full document. This eliminates race conditions and reduces bandwidth usage when updating any numeric values that need to be modified atomically, such as counters, scores, balances, and other fast-moving numeric data. + +These operations work on numeric document fields, whether the value is an integer or a floating-point number. + +# How atomic operations work {% #how-atomic-operations-work %} + +Instead of the traditional read-modify-write pattern, atomic numeric operations use dedicated methods to modify values directly on the server. The server applies the change atomically under concurrency control and returns the new value. + +**Traditional approach:** +1. Fetch document → `{ likes: 42 }` +2. Update client-side → `likes: 43` +3. Write back → `{ likes: 43 }` + +**Atomic approach:** +1. Call `incrementDocumentAttribute()` with the attribute key and the value to increment by +2. Server applies atomically → `likes: 43` + +# When to use atomic operations {% #when-to-use-atomic-operations %} + +Atomic numeric operations work well for: + +- **Social features**: Likes, follows, comment counts +- **Usage metering**: API credits, storage quotas, request limits +- **Game state**: Scores, lives, currency, experience points +- **E-commerce**: Stock counts, inventory levels +- **Workflow tracking**: Retry counts, progress indicators +- **Rate limiting**: Request counters, usage tracking + +# Perform atomic operations {% #perform-atomic-operations %} + +Use the `incrementDocumentAttribute` and `decrementDocumentAttribute` methods to perform atomic numeric operations. The server will apply these changes atomically under concurrency control. + +## Increment a field {% #increment-field %} + +{% multicode %} +```client-web +import { Client, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const documentsDB = new DocumentsDB(client); + +const result = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', // attribute + value: 1 // value +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +final documentsDB = DocumentsDB(client); + +final document = await documentsDB.incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1 +); +``` +```client-apple +import Appwrite +import AppwriteModels + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.incrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1 +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + +val documentsDB = DocumentsDB(client) + +val document = documentsDB.incrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "likes", + value = 1 +) +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', // attribute + value: 1 // value +}); +``` +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.increment_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'likes', # attribute + value = 1 # value +) +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; + +let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + +let documents_db = DocumentsDB::new(&client); + +let result = documents_db.increment_document_attribute( + "", + "", + "", + "likes", // attribute + Some(1.0), // value + None, // max + None, // transaction_id +).await?; +``` +```graphql +mutation { + documentsDBIncrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1 + ) { + _id + _collectionId + _databaseId + _createdAt + _updatedAt + _permissions + data + } +} +``` +{% /multicode %} + +## Decrement a field {% #decrement-field %} + +Use the `decrementDocumentAttribute` method to decrease numeric fields: + +{% multicode %} +```client-web +import { Client, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject(''); // Your project ID + +const documentsDB = new DocumentsDB(client); + +const result = await documentsDB.decrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 5 // value +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +final documentsDB = DocumentsDB(client); + +final document = await documentsDB.decrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', + value: 5 +); +``` +```client-apple +import Appwrite +import AppwriteModels + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.decrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "credits", + value: 5 +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + +val documentsDB = DocumentsDB(client) + +val document = documentsDB.decrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "credits", + value = 5 +) +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.decrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 5 // value +}); +``` +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.decrement_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'credits', # attribute + value = 5 # value +) +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; + +let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + +let documents_db = DocumentsDB::new(&client); + +let result = documents_db.decrement_document_attribute( + "", + "", + "", + "credits", // attribute + Some(5.0), // value + None, // min + None, // transaction_id +).await?; +``` +```graphql +mutation { + documentsDBDecrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "credits", + value: 5 + ) { + _id + _collectionId + _databaseId + _createdAt + _updatedAt + _permissions + data + } +} +``` +{% /multicode %} + +# Set constraints and bounds {% #set-constraints-and-bounds %} + +You can set minimum and maximum bounds for individual operations to prevent invalid values. Use the optional `min` and `max` parameters to ensure the final value stays within acceptable limits. If an operation would move the value past the bound, the request is rejected. + +## Example with constraints {% #example-with-constraints %} + +{% multicode %} +```client-web +// Increment with maximum constraint +const result = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 100, // value + max: 1000 // max (optional) +}); + +// Decrement with minimum constraint +const result2 = await documentsDB.decrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 50, // value + min: 0 // min (optional) +}); +``` +```client-flutter +// Increment with maximum constraint +final document = await documentsDB.incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', + value: 100, + max: 1000 +); + +// Decrement with minimum constraint +final document2 = await documentsDB.decrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', + value: 50, + min: 0 +); +``` +```client-apple +// Increment with maximum constraint +let document = try await documentsDB.incrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "credits", + value: 100, + max: 1000 +) + +// Decrement with minimum constraint +let document2 = try await documentsDB.decrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "credits", + value: 50, + min: 0 +) +``` +```client-android-kotlin +// Increment with maximum constraint +val document = documentsDB.incrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "credits", + value = 100, + max = 1000 +) + +// Decrement with minimum constraint +val document2 = documentsDB.decrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "credits", + value = 50, + min = 0 +) +``` +```server-nodejs +// Increment with maximum constraint +const result = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 100, // value + max: 1000 // max (optional) +}); + +// Decrement with minimum constraint +const result2 = await documentsDB.decrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'credits', // attribute + value: 50, // value + min: 0 // min (optional) +}); +``` +```server-python +# Increment with maximum constraint +result = documents_db.increment_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'credits', # attribute + value = 100, # value + max = 1000 # max (optional) +) + +# Decrement with minimum constraint +result2 = documents_db.decrement_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'credits', # attribute + value = 50, # value + min = 0 # min (optional) +) +``` +```rust +// Increment with maximum constraint +let result = documents_db.increment_document_attribute( + "", + "", + "", + "credits", // attribute + Some(100.0), // value + Some(1000.0), // max (optional) + None, // transaction_id +).await?; + +// Decrement with minimum constraint +let result2 = documents_db.decrement_document_attribute( + "", + "", + "", + "credits", // attribute + Some(50.0), // value + Some(0.0), // min (optional) + None, // transaction_id +).await?; +``` +{% /multicode %} + +# Follow best practices {% #follow-best-practices %} + +## Use for high-concurrency scenarios {% #use-for-high-concurrency-scenarios %} + +Atomic numeric operations are most beneficial when multiple users or processes might update the same numeric field simultaneously. + +## Combine with regular updates {% #combine-with-regular-updates %} + +For complex updates that include both atomic operations and regular field changes, you'll need to use separate API calls: + +{% multicode %} +```client-web +// First, increment the likes atomically +const likeResult = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', // attribute + value: 1 // value +}); + +// Then, update other fields +const updateResult = await documentsDB.updateDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { + lastLikedBy: userId, + lastLikedAt: new Date().toISOString() + } +}); +``` +```client-flutter +// First, increment the likes atomically +final likeResult = await documentsDB.incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1 +); + +// Then, update other fields +final updateResult = await documentsDB.updateDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: { + 'lastLikedBy': userId, + 'lastLikedAt': DateTime.now().toIso8601String() + } +); +``` +```client-apple +// First, increment the likes atomically +let likeResult = try await documentsDB.incrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1 +) + +// Then, update other fields +let updateResult = try await documentsDB.updateDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: [ + "lastLikedBy": userId, + "lastLikedAt": ISO8601DateFormatter().string(from: Date()) + ] +) +``` +```client-android-kotlin +// First, increment the likes atomically +val likeResult = documentsDB.incrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "likes", + value = 1 +) + +// Then, update other fields +val updateResult = documentsDB.updateDocument( + databaseId = "", + collectionId = "", + documentId = "", + data = mapOf( + "lastLikedBy" to userId, + "lastLikedAt" to Instant.now().toString() + ) +) +``` +```server-nodejs +// First, increment the likes atomically +const likeResult = await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', // attribute + value: 1 // value +}); + +// Then, update other fields +const updateResult = await documentsDB.updateDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { + lastLikedBy: userId, + lastLikedAt: new Date().toISOString() + } +}); +``` +```server-python +# First, increment the likes atomically +like_result = documents_db.increment_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'likes', # attribute + value = 1 # value +) + +# Then, update other fields +update_result = documents_db.update_document( + database_id = '', + collection_id = '', + document_id = '', + data = { + 'lastLikedBy': user_id, + 'lastLikedAt': datetime.now().isoformat() + } +) +``` +```rust +use serde_json::json; + +// First, increment the likes atomically +let like_result = documents_db.increment_document_attribute( + "", + "", + "", + "likes", // attribute + Some(1.0), // value + None, // max + None, // transaction_id +).await?; + +// Then, update other fields +let update_result = documents_db.update_document( + "", + "", + "", + Some(json!({ + "lastLikedBy": user_id, + "lastLikedAt": chrono::Utc::now().to_rfc3339() + })), + None, // permissions + None, // transaction_id +).await?; +``` +{% /multicode %} + +# Use transactions {% #use-transactions %} + +Atomic numeric operations accept `transactionId`. When provided, increments/decrements are staged and applied on commit. + +{% multicode %} +```client-web +await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +}); +``` +```client-flutter +await documentsDB.incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +); +``` +```client-apple +try await documentsDB.incrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1, + transactionId: "" +) +``` +```client-android-kotlin +documentsDB.incrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "likes", + value = 1, + transactionId = "" +) +``` +```client-android-java +documentsDB.incrementDocumentAttribute( + "", + "", + "", + "likes", + 1, + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); +``` +```client-react-native +await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +}); +``` +```server-nodejs +await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +}); +``` +```server-deno +await documentsDB.incrementDocumentAttribute({ + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +}); +``` +```server-python +documents_db.increment_document_attribute( + database_id = '', + collection_id = '', + document_id = '', + attribute = 'likes', + value = 1, + transaction_id = '' +) +``` +```rust +documents_db.increment_document_attribute( + "", + "", + "", + "likes", + Some(1.0), + None, // max + Some(""), // transaction_id +).await?; +``` +```server-php +$documentsDB->incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +); +``` +```server-ruby +documents_db.increment_document_attribute( + database_id: '', + collection_id: '', + document_id: '', + attribute: 'likes', + value: 1, + transaction_id: '' +) +``` +```server-dotnet +await documentsDB.IncrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1, + transactionId: "" +); +``` +```server-dart +await documentsDB.incrementDocumentAttribute( + databaseId: '', + collectionId: '', + documentId: '', + attribute: 'likes', + value: 1, + transactionId: '' +); +``` +```server-swift +try await documentsDB.incrementDocumentAttribute( + databaseId: "", + collectionId: "", + documentId: "", + attribute: "likes", + value: 1, + transactionId: "" +) +``` +```server-kotlin +documentsDB.incrementDocumentAttribute( + databaseId = "", + collectionId = "", + documentId = "", + attribute = "likes", + value = 1, + transactionId = "" +) +``` +```server-java +documentsDB.incrementDocumentAttribute( + "", + "", + "", + "likes", + 1, + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); +``` +{% /multicode %} + +## Explore related features + +- [Bulk operations](/docs/products/databases/documentsdb/bulk-operations) - Update multiple documents at once +- [Permissions](/docs/products/databases/documentsdb/permissions) - Control access to documents +- [Queries](/docs/products/databases/documentsdb/queries) - Find documents to update diff --git a/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc b/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc new file mode 100644 index 0000000000..a5930313c7 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc @@ -0,0 +1,89 @@ +--- +layout: article +title: Backups +description: Learn how to back up and restore your DocumentsDB databases on Appwrite Cloud, ensuring data security and seamless recovery. +--- + +Appwrite Backups enable seamless, **encrypted** database backups on Cloud. +All backups are **hot** backups, ensuring zero downtime and fast recovery. + +{% info title="Backups are available on Appwrite Cloud for all Pro and Enterprise customers." %} +{% /info %} + +You manage backups from a database's **Backups** tab, where you can automate backups with policies or create manual backups on demand. + +{% only_dark %} +![Backups tab](/images/docs/databases/documentsdb/dark/backups-tab.avif) +{% /only_dark %} +{% only_light %} +![Backups tab](/images/docs/databases/documentsdb/backups-tab.avif) +{% /only_light %} + +# Backup policies {% #backup-policies %} + +Backup policies automate your backups on a schedule. To create one, open your database's **Backups** tab and click **Create policy**, then choose a preset policy or add a custom one. + +{% only_dark %} +![Create backup policy](/images/docs/databases/documentsdb/dark/backup-policy.avif) +{% /only_dark %} +{% only_light %} +![Create backup policy](/images/docs/databases/documentsdb/backup-policy.avif) +{% /only_light %} + +The available options depend on your plan: + +- On the **Pro** plan, you get a **Daily** backup policy retained for 7 days. +- On the **Enterprise** plan, you get access to additional preset policies and custom policies, where you control how often backups run and how long they are retained. + +Click **Create** to save the policy. Your database is now set up for automated backups. + +# Manual backups {% #manual-backups %} + +You can create an on-demand backup whenever necessary. In your database's **Backups** tab, click **Manual backup**, then click **Create**. + +{% only_dark %} +![Manual backup](/images/docs/databases/documentsdb/dark/manual-backup.avif) +{% /only_dark %} +{% only_light %} +![Manual backup](/images/docs/databases/documentsdb/manual-backup.avif) +{% /only_light %} + +Manual backups are retained until you delete them. Depending on the size of your database, the backup may take some time to complete. You can monitor its progress in the backups list. + +# Restoring backups {% #restoring-backups %} + +To restore a database, you need an existing backup. + +1. Open your database's **Backups** tab. +2. In the backups list, open the **Actions** menu for the backup you want to restore. +3. Click **Restore**. +4. Enter a name for the new database and an optional database ID. +5. Click **Restore**. + +Depending on the size of your database, the restoration may take some time. The restore creates a new database from the backup, leaving the original untouched. + +# Backup security & performance {% #backup-security-and-performance %} + +All backups created with Appwrite are: + +1. **Encrypted**: + All backups are securely encrypted to ensure your data remains protected at all times. + +2. **Remotely stored**: + Backups are stored in a remote location, providing an additional layer of security and ensuring your data is always recoverable. + +3. **Hot backups**: + Backups are hot, meaning they occur with zero downtime, allowing you to recover data quickly without interrupting your projects and services. + +# Best practices {% #best-practices %} + +To ensure your backups are robust and effective, consider the following best practices: + +1. **Schedule regular backups**: + Add backup policies based on the frequency of database changes. Daily backups are often sufficient for most use cases. + +2. **Retain critical backups longer**: + Use custom policies with longer retention to keep backups of critical data for extended periods, ensuring historical records are available when needed. + +3. **Optimize backup policies based on data sensitivity**: + Tailor your backup frequency and retention settings according to the sensitivity and importance of the data. diff --git a/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc new file mode 100644 index 0000000000..6522e3bde6 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc @@ -0,0 +1,567 @@ +--- +layout: article +title: Bulk operations +description: Perform bulk operations on documents within your collections for efficient data handling. +--- + +Appwrite Databases supports bulk operations for documents, allowing you to create, update, or delete multiple documents in a single request. This can significantly improve performance for apps as it allows you to reduce the number of API calls needed while working with large data sets. + +Bulk operations can only be performed via the server-side SDKs. The client-side SDKs do not support bulk operations by design to prevent abuse and protect against unexpected costs. This ensures that only trusted server environments can perform large-scale data operations. + +For client applications that need bulk-like functionality, consider using [Appwrite Functions](/docs/products/functions) with proper rate limiting and validation. + +{% info title="Important notes" %} +Bulk operations trigger Functions, Webhooks, or Realtime events for each document manipulated. Rather than a single event for the entire bulk operation, each document generates a separate event on the existing realtime channels for its operation type. +{% /info %} + +# Atomic behavior {% #atomic-behavior %} + +Bulk operations in Appwrite are **atomic**, meaning they follow an all-or-nothing approach. Either all documents in your bulk request succeed, or all documents fail. + +This atomicity ensures: +- **Data consistency**: Your database remains in a consistent state even if some operations would fail. +- **Race condition prevention**: Multiple clients can safely perform bulk operations simultaneously. +- **Simplified error handling**: You only need to handle complete success or complete failure scenarios. + +For example, if you attempt to create 100 documents and one fails due to a validation error, none of the 100 documents will be created. + +# Plan limits {% #plan-limits %} + +Bulk operations have different limits based on your Appwrite plan: + +| Plan | Documents per request | +|------|----------------------| +| Free | 100 | +| Pro | 1,000 | + +These limits apply to all bulk operations including create, update, upsert, and delete operations. If you need higher limits than what the Pro plan offers, you can [inquire](/contact-us/enterprise) about a custom plan. + +# Create documents {% #create-documents %} + +You can create multiple documents in a single request using the `createDocuments` method. + +{% info title="Custom timestamps" %} +When creating, updating or upserting in bulk, you can set `$createdAt` and `$updatedAt` for each document in the payload. Values must be ISO 8601 date-time strings. If omitted, Appwrite sets them automatically. +{% /info %} + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { + $id: sdk.ID.unique(), + name: 'Document 1' + }, + { + $id: sdk.ID.unique(), + name: 'Document 2' + } + ] +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +result = documents_db.create_documents( + database_id = '', + collection_id = '', + documents = [ + { + '$id': ID.unique(), + 'name': 'Document 1' + }, + { + '$id': ID.unique(), + 'name': 'Document 2' + } + ] +) +``` + +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_documents( + "", + "", + vec![ + json!({ + "$id": ID::unique(), + "name": "Document 1" + }), + json!({ + "$id": ID::unique(), + "name": "Document 2" + }), + ], + None, + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Update documents {% #update-documents %} + +{% info title="Permissions required" %} +You must grant **update** permissions to users at the **collection level** before users can update documents. +[Learn more about permissions](/docs/products/databases/documentsdb/permissions) +{% /info %} + +You can update multiple documents in a single request using the `updateDocuments` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.updateDocuments({ + databaseId: '', + collectionId: '', + data: { + status: 'published' + }, + queries: [ + sdk.Query.equal('status', 'draft') + ] +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +result = documents_db.update_documents( + database_id = '', + collection_id = '', + data = { + 'status': 'published' + }, + queries = [ + Query.equal('status', 'draft') + ] +) +``` + +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::query::Query; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.update_documents( + "", + "", + Some(json!({ + "status": "published" + })), + Some(vec![ + Query::equal("status", "draft").to_string(), + ]), + None, + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Upsert documents {% #upsert-documents %} + +{% info title="Permissions required" %} +You must grant **create** and **update** permissions to users at the **collection level** before users can create documents. +[Learn more about permissions](/docs/products/databases/documentsdb/permissions) +{% /info %} + +You can upsert multiple documents in a single request using the `upsertDocuments` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.upsertDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { + $id: sdk.ID.unique(), + name: 'New Document 1' + }, + { + $id: 'document-id-2', // Existing document ID + name: 'New Document 2' + } + ] +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +result = documents_db.upsert_documents( + database_id = '', + collection_id = '', + documents = [ + { + '$id': ID.unique(), + 'name': 'New Document 1' + }, + { + '$id': 'document-id-2', # Existing document ID + 'name': 'New Document 2' + } + ] +) +``` + +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.upsert_documents( + "", + "", + vec![ + json!({ + "$id": ID::unique(), + "name": "New Document 1" + }), + json!({ + "$id": "document-id-2", // Existing document ID + "name": "New Document 2" + }), + ], + None, + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Delete documents {% #delete-documents %} + +{% info title="Permissions required" %} +You must grant **delete** permissions to users at the **collection level** before users can delete documents. +[Learn more about permissions](/docs/products/databases/documentsdb/permissions) +{% /info %} + +You can delete multiple documents in a single request using the `deleteDocuments` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.deleteDocuments({ + databaseId: '', + collectionId: '', + queries: [ + sdk.Query.equal('status', 'archived') + ] +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +result = documents_db.delete_documents( + database_id = '', + collection_id = '', + queries = [ + Query.equal('status', 'archived') + ] +) +``` + +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.delete_documents( + "", + "", + Some(vec![ + Query::equal("status", "archived").to_string(), + ]), + None, + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +{% info title="Queries for deletion" %} + +When deleting documents, you must specify queries to filter which documents to delete. +If no queries are provided, all documents in the collection will be deleted. +[Learn more about queries](/docs/products/databases/documentsdb/queries). + +{% /info %} + +# Use transactions {% #use-transactions %} + +All bulk operations accept `transactionId`. When provided, Appwrite stages the bulk request and applies it on commit. See [Transactions](/docs/products/databases/documentsdb/transactions). + +{% multicode %} +```server-nodejs +await documentsDB.createDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { $id: sdk.ID.unique(), name: 'One' }, + { $id: sdk.ID.unique(), name: 'Two' } + ], + transactionId: '' +}); +``` +```server-python +documents_db.create_documents( + database_id = '', + collection_id = '', + documents = [ + { '$id': ID.unique(), 'name': 'One' }, + { '$id': ID.unique(), 'name': 'Two' } + ], + transaction_id = '' +) +``` +```server-deno +await documentsDB.createDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { $id: sdk.ID.unique(), name: 'One' }, + { $id: sdk.ID.unique(), name: 'Two' } + ], + transactionId: '' +}); +``` +```server-php +$documentsDB->createDocuments( + databaseId: '', + collectionId: '', + documents: [ + [ '$id' => ID::unique(), 'name' => 'One' ], + [ '$id' => ID::unique(), 'name' => 'Two' ] + ], + transactionId: '' +); +``` +```server-ruby +documents_db.create_documents( + database_id: '', + collection_id: '', + documents: [ + { '$id' => ID.unique(), 'name' => 'One' }, + { '$id' => ID.unique(), 'name' => 'Two' } + ], + transaction_id: '' +) +``` +```server-dotnet +await documentsDB.CreateDocuments( + databaseId: "", + collectionId: "", + documents: new List> + { + new Dictionary + { + ["$id"] = ID.Unique(), + ["name"] = "One" + }, + new Dictionary + { + ["$id"] = ID.Unique(), + ["name"] = "Two" + } + }, + transactionId: "" +); +``` +```server-dart +await documentsDB.createDocuments( + databaseId: '', + collectionId: '', + documents: [ + { '\$id': ID.unique(), 'name': 'One' }, + { '\$id': ID.unique(), 'name': 'Two' } + ], + transactionId: '' +); +``` +```server-swift +try await documentsDB.createDocuments( + databaseId: "", + collectionId: "", + documents: [ + ["$id": ID.unique(), "name": "One"], + ["$id": ID.unique(), "name": "Two"] + ], + transactionId: "" +) +``` +```server-kotlin +documentsDB.createDocuments( + databaseId = "", + collectionId = "", + documents = listOf( + mapOf("\$id" to ID.unique(), "name" to "One"), + mapOf("\$id" to ID.unique(), "name" to "Two") + ), + transactionId = "" +) +``` +```server-java +documentsDB.createDocuments( + "", + "", + Arrays.asList( + Map.of( + "$id", ID.unique(), + "name", "One" + ), + Map.of( + "$id", ID.unique(), + "name", "Two" + ) + ), + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); +``` +```rust +let result = documents_db.create_documents( + "", + "", + vec![ + json!({ + "$id": ID::unique(), + "name": "One" + }), + json!({ + "$id": ID::unique(), + "name": "Two" + }), + ], + Some(""), +).await?; +``` +{% /multicode %} diff --git a/src/routes/docs/products/databases/documentsdb/collections/+page.markdoc b/src/routes/docs/products/databases/documentsdb/collections/+page.markdoc new file mode 100644 index 0000000000..09ec098633 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/collections/+page.markdoc @@ -0,0 +1,526 @@ +--- +layout: article +title: Collections +description: Organize documents with Appwrite DocumentsDB collections. Learn how to create collections, configure permissions, and add indexes for fast queries. +--- +Appwrite uses collections as containers of documents. +Collections are schemaless, so documents in the same collection can hold different fields. You shape data in your application instead of defining columns up front. + +# Create collection {% #create-collection %} +You can create collections using the Appwrite Console, a [Server SDK](/docs/sdks#server), or using the [CLI](/docs/tooling/command-line/installation). +{% tabs %} + +{% tabsitem #console title="Console" %} +Head to the **Databases** page, open a [database](/docs/products/databases/documentsdb/databases), and click **Create collection**. + +{% /tabsitem %} + +{% tabsitem #server-sdk title="Server SDK" %} +You can also create collections programmatically using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createCollection({ + databaseId: '', + collectionId: '', + name: '', + permissions: [sdk.Permission.read(sdk.Role.any())], // optional + documentSecurity: false // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createCollection({ + databaseId: '', + collectionId: '', + name: '', + permissions: [sdk.Permission.read(sdk.Role.any())], // optional + documentSecurity: false // optional +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->createCollection( + databaseId: '', + collectionId: '', + name: '', + permissions: [Permission::read(Role::any())], // optional + documentSecurity: false // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.create_collection( + database_id = '', + collection_id = '', + name = '', + permissions = [Permission.read(Role.any())], # optional + document_security = False # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.create_collection( + database_id: '', + collection_id: '', + name: '', + permissions: [Permission.read(Role.any())], # optional + document_security: false # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Collection result = await documentsDB.CreateCollection( + databaseId: "", + collectionId: "", + name: "", + permissions: new List { Permission.Read(Role.Any()) }, // optional + documentSecurity: false // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Collection result = await documentsDB.createCollection( + databaseId: '', + collectionId: '', + name: '', + permissions: [Permission.read(Role.any())], // (optional) + documentSecurity: false, // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.createCollection( + databaseId = "", + collectionId = "", + name = "", + permissions = listOf(Permission.read(Role.any())), // optional + documentSecurity = false, // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.createCollection( + "", + "", + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let collection = try await documentsDB.createCollection( + databaseId: "", + collectionId: "", + name: "", + permissions: [Permission.read(Role.any())], // optional + documentSecurity: false // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_collection( + "", + "", + "", + Some(vec![Permission::read(Role::any()).to_string()]), // permissions (optional) + Some(false), // documentSecurity (optional) + None, // enabled (optional) + None, // attributes (optional) + None, // indexes (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} +{% /tabsitem %} +{% /tabs %} + +# Permissions {% #permissions %} +Appwrite uses permissions to control data access. +For security, only users that are granted permissions can access a resource. + +By default, Appwrite doesn't grant permissions to any users when a new collection is created. +This means users can't create documents or read, update, and delete existing documents until you grant access. + +Set `documentSecurity` to `true` on a collection to configure permissions on individual documents. A user then needs either collection level or document level permissions to access a document. + +[Learn about configuring permissions](/docs/products/databases/documentsdb/permissions). + +# Indexes {% #indexes %} +Databases use indexes to quickly locate data without scanning every document. +To ensure the best performance, Appwrite recommends an index for every field you query. +If you plan to query multiple fields in a single query, creating an index with **all** queried fields will yield optimal performance. + +The following indexes are currently supported: + +| Type | Description | +|------------|--------------------------------------------------------------------------------------------------------------| +| `key` | Plain index to allow queries. | +| `unique` | Unique index to disallow duplicates. | +| `fulltext` | For searching within text fields. Required for the [search query method](/docs/products/databases/documentsdb/queries). | + +You can create an index by navigating to your collection's **Indexes** tab or by using your favorite [Server SDK](/docs/sdks#server). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createIndex({ + databaseId: '', + collectionId: '', + key: 'title_index', + type: sdk.DocumentsDBIndexType.Key, + attributes: ['title'] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createIndex({ + databaseId: '', + collectionId: '', + key: 'title_index', + type: sdk.DocumentsDBIndexType.Key, + attributes: ['title'] +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->createIndex( + databaseId: '', + collectionId: '', + key: 'title_index', + type: DocumentsDBIndexType::KEY(), + attributes: ['title'] +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.enums import DocumentsDBIndexType + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.create_index( + database_id = '', + collection_id = '', + key = 'title_index', + type = DocumentsDBIndexType.KEY, + attributes = ['title'] +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.create_index( + database_id: '', + collection_id: '', + key: 'title_index', + type: DocumentsDBIndexType::KEY, + attributes: ['title'] +) +``` +```csharp +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Index result = await documentsDB.CreateIndex( + databaseId: "", + collectionId: "", + key: "title_index", + type: DocumentsDBIndexType.Key, + attributes: new List { "title" } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Index result = await documentsDB.createIndex( + databaseId: '', + collectionId: '', + key: 'title_index', + type: enums.DocumentsDBIndexType.key, + attributes: ['title'], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.enums.DocumentsDBIndexType +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.createIndex( + databaseId = "", + collectionId = "", + key = "title_index", + type = DocumentsDBIndexType.KEY, + attributes = listOf("title"), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.enums.DocumentsDBIndexType; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.createIndex( + "", + "", + "title_index", + DocumentsDBIndexType.KEY, + List.of("title"), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let index = try await documentsDB.createIndex( + databaseId: "", + collectionId: "", + key: "title_index", + type: .key, + attributes: ["title"] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; +use appwrite::enums::DocumentsDBIndexType; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_index( + "", + "", + "title_index", + DocumentsDBIndexType::Key, + vec!["title"], + None, // orders (optional) + None, // lengths (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} diff --git a/src/routes/docs/products/databases/documentsdb/databases/+page.markdoc b/src/routes/docs/products/databases/documentsdb/databases/+page.markdoc new file mode 100644 index 0000000000..f2f21db6e4 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/databases/+page.markdoc @@ -0,0 +1,218 @@ +--- +layout: article +title: Databases +description: Dive deeper into Appwrite DocumentsDB and database configuration. Learn how to create and manage multiple databases for your application. +--- +Databases are the largest organizational unit in Appwrite. +Each database contains a group of [collections](/docs/products/databases/documentsdb/collections). + +# Create in Console {% #create-in-console %} +The easiest way to create a database is using the Appwrite Console. +Navigate to the **Databases** page and click **Create database**, choose **DocumentsDB** as the database type, and select your preferred tier. + +{% only_dark %} +![Create database](/images/docs/databases/documentsdb/dark/create-database.avif) +{% /only_dark %} +{% only_light %} +![Create database](/images/docs/databases/documentsdb/create-database.avif) +{% /only_light %} + +# Create using Server SDKs {% #create-using-server-sdks %} +You can programmatically create databases using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.create({ + databaseId: '', + name: '' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.create({ + databaseId: '', + name: '' +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->create( + databaseId: '', + name: '' +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.create( + database_id = '', + name = '' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.create( + database_id: '', + name: '' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Database result = await documentsDB.Create( + databaseId: "", + name: "" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Database result = await documentsDB.create( + databaseId: '', + name: '', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.create( + databaseId = "", + name = "", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.create( + "", + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let database = try await documentsDB.create( + databaseId: "", + name: "" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create( + "", + "", + None, // enabled (optional) + None, // dedicatedDatabaseId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + diff --git a/src/routes/docs/products/databases/documentsdb/documents/+page.markdoc b/src/routes/docs/products/databases/documentsdb/documents/+page.markdoc new file mode 100644 index 0000000000..6bb4704224 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/documents/+page.markdoc @@ -0,0 +1,1189 @@ +--- +layout: article +title: Documents +description: Create, read, update, and delete documents in Appwrite DocumentsDB. Learn how to work with schemaless JSON documents in your collections. +--- +Each piece of data in Appwrite DocumentsDB is a document. +Documents are schemaless JSON, so each document in a collection can hold its own set of fields. + +# Create documents {% #create-documents %} +{% info title="Permissions required" %} +You must grant _create_ permissions to users at the _collection level_ before users can create documents. +[Learn more about permissions](#permissions) +{% /info %} + +Use the `createDocument` method to add a document to a collection. Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createDocument({ + databaseId: '', + collectionId: '', + documentId: sdk.ID.unique(), + data: { title: 'Hamlet', year: 1601 }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createDocument({ + databaseId: '', + collectionId: '', + documentId: sdk.ID.unique(), + data: { title: 'Hamlet', year: 1601 }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->createDocument( + databaseId: '', + collectionId: '', + documentId: ID::unique(), + data: ['title' => 'Hamlet', 'year' => 1601], + permissions: [Permission::read(Role::any())] // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.create_document( + database_id = '', + collection_id = '', + document_id = ID.unique(), + data = { "title": "Hamlet", "year": 1601 }, + permissions = [Permission.read(Role.any())] # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.create_document( + database_id: '', + collection_id: '', + document_id: ID.unique(), + data: { "title" => "Hamlet", "year" => 1601 }, + permissions: [Permission.read(Role.any())] # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Document result = await documentsDB.CreateDocument( + databaseId: "", + collectionId: "", + documentId: ID.Unique(), + data: new { title = "Hamlet", year = 1601 }, + permissions: new List { Permission.Read(Role.Any()) } // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Document result = await documentsDB.createDocument( + databaseId: '', + collectionId: '', + documentId: ID.unique(), + data: { "title": "Hamlet", "year": 1601 }, + permissions: [Permission.read(Role.any())], // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.createDocument( + databaseId = "", + collectionId = "", + documentId = ID.unique(), + data = mapOf("title" to "Hamlet", "year" to 1601), + permissions = listOf(Permission.read(Role.any())), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.createDocument( + "", + "", + ID.unique(), + Map.of("title", "Hamlet", "year", 1601), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.createDocument( + databaseId: "", + collectionId: "", + documentId: ID.unique(), + data: ["title": "Hamlet", "year": 1601], + permissions: [Permission.read(Role.any())] // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_document( + "", + "", + ID::unique(), + serde_json::json!({ "title": "Hamlet", "year": 1601 }), + Some(vec![Permission::read(Role::any()).to_string()]), // optional + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite documents-db create-document \ + --database-id \ + --collection-id \ + --document-id 'unique()' \ + --data '{ "title": "Hamlet", "year": 1601 }' +``` +{% /multicode %} + +# List documents {% #list-documents %} +Use the `listDocuments` method to read documents from a collection. Pass [queries](/docs/products/databases/documentsdb/queries) to filter, order, and paginate the results. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + sdk.Query.equal('title', 'Hamlet') + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + sdk.Query.equal('title', 'Hamlet') + ] +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query::equal('title', ['Hamlet']) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.list_documents( + database_id = '', + collection_id = '', + queries = [ + Query.equal('title', 'Hamlet') + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.list_documents( + database_id: '', + collection_id: '', + queries: [ + Query.equal('title', ['Hamlet']) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +DocumentList result = await documentsDB.ListDocuments( + databaseId: "", + collectionId: "", + queries: new List { + Query.Equal("title", new List { "Hamlet" }) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +DocumentList result = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.equal('title', 'Hamlet') + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.equal("title", "Hamlet") + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.listDocuments( + "", + "", + List.of( + Query.equal("title", List.of("Hamlet")) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let documentList = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.equal("title", value: "Hamlet") + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.list_documents( + "", + "", + Some(vec![Query::equal("title", vec!["Hamlet"])]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite documents-db list-documents \ + --database-id \ + --collection-id \ + --queries '{"method":"equal","attribute":"title","values":["Hamlet"]}' +``` +{% /multicode %} + +# Update document {% #update-document %} +Use the `updateDocument` method to update a document. With the patch behavior, you only pass the fields you want to change. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.updateDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { year: 1602 } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.updateDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { year: 1602 } +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->updateDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: ['year' => 1602] +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.update_document( + database_id = '', + collection_id = '', + document_id = '', + data = { "year": 1602 } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.update_document( + database_id: '', + collection_id: '', + document_id: '', + data: { "year" => 1602 } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Document result = await documentsDB.UpdateDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: new { year = 1602 } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Document result = await documentsDB.updateDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: { "year": 1602 }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.updateDocument( + databaseId = "", + collectionId = "", + documentId = "", + data = mapOf("year" to 1602), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.updateDocument( + "", + "", + "", + Map.of("year", 1602), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.updateDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: ["year": 1602] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.update_document( + "", + "", + "", + Some(serde_json::json!({ "year": 1602 })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite documents-db update-document \ + --database-id \ + --collection-id \ + --document-id \ + --data '{ "year": 1602 }' +``` +{% /multicode %} + +# Upsert documents {% #upsert-documents %} +Use the `upsertDocument` method to create a document if it doesn't exist, or update it if it does. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.upsertDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { title: 'Hamlet', year: 1603 } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.upsertDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { title: 'Hamlet', year: 1603 } +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->upsertDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: ['title' => 'Hamlet', 'year' => 1603] +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.upsert_document( + database_id = '', + collection_id = '', + document_id = '', + data = { "title": "Hamlet", "year": 1603 } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.upsert_document( + database_id: '', + collection_id: '', + document_id: '', + data: { "title" => "Hamlet", "year" => 1603 } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Document result = await documentsDB.UpsertDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: new { title = "Hamlet", year = 1603 } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Document result = await documentsDB.upsertDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: { "title": "Hamlet", "year": 1603 }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.upsertDocument( + databaseId = "", + collectionId = "", + documentId = "", + data = mapOf("title" to "Hamlet", "year" to 1603), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.upsertDocument( + "", + "", + "", + Map.of("title", "Hamlet", "year", 1603), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.upsertDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: ["title": "Hamlet", "year": 1603] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.upsert_document( + "", + "", + "", + Some(serde_json::json!({ "title": "Hamlet", "year": 1603 })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite documents-db upsert-document \ + --database-id \ + --collection-id \ + --document-id \ + --data '{ "title": "Hamlet", "year": 1603 }' +``` +{% /multicode %} + +# Delete document {% #delete-document %} +Use the `deleteDocument` method to remove a document from a collection. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.deleteDocument({ + databaseId: '', + collectionId: '', + documentId: '' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.deleteDocument({ + databaseId: '', + collectionId: '', + documentId: '' +}); +``` +```php +setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('') // Your project ID + ->setKey(''); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->deleteDocument( + databaseId: '', + collectionId: '', + documentId: '' +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('') # Your project ID +client.set_key('') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.delete_document( + database_id = '', + collection_id = '', + document_id = '' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('') # Your project ID + .set_key('') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.delete_document( + database_id: '', + collection_id: '', + document_id: '' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("") // Your project ID + .SetKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +await documentsDB.DeleteDocument( + databaseId: "", + collectionId: "", + documentId: "" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('') // Your project ID + .setKey(''); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +await documentsDB.deleteDocument( + databaseId: '', + collectionId: '', + documentId: '', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +val documentsDB = DocumentsDB(client) + +documentsDB.deleteDocument( + databaseId = "", + collectionId = "", + documentId = "", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; + +Client client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey(""); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.deleteDocument( + "", + "", + "", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println("Deleted"); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("") // Your project ID + .setKey("") // Your secret API key + +let documentsDB = DocumentsDB(client) + +try await documentsDB.deleteDocument( + databaseId: "", + collectionId: "", + documentId: "" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new(); + client.set_endpoint("https://.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project(""); // Your project ID + client.set_key(""); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + documents_db.delete_document( + "", + "", + "", + None, // transactionId (optional) + ).await?; + + Ok(()) +} +``` +```bash +appwrite documents-db delete-document \ + --database-id \ + --collection-id \ + --document-id +``` +{% /multicode %} + +# Permissions {% #permissions %} +To access documents through a [Client SDK](/docs/sdks#client), you must grant the relevant permissions. +By default, Appwrite doesn't grant any user permissions when a new collection is created. + +You can configure permissions at the collection level, or enable `documentSecurity` on the collection to also set permissions on individual documents. + +[Learn about configuring permissions](/docs/products/databases/documentsdb/permissions). diff --git a/src/routes/docs/products/databases/documentsdb/order/+page.markdoc b/src/routes/docs/products/databases/documentsdb/order/+page.markdoc new file mode 100644 index 0000000000..c8dfeba16c --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/order/+page.markdoc @@ -0,0 +1,336 @@ +--- +layout: article +title: Order +description: Understand how to do data ordering in Appwrite Databases. Learn how to order and sort your database records for efficient data retrieval. +--- + +You can order results returned by Appwrite Databases by using an order query. +For best performance, create an [index](/docs/products/databases/documentsdb/collections#indexes) on the field you plan to order by. + +# Ordering one field {% #one-field %} + +When querying using the [listDocuments](/docs/products/databases/documentsdb/documents#list-documents) endpoint, +you can specify the order of the documents returned using the `Query.orderAsc()` and `Query.orderDesc()` query methods. + +{% multicode %} +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('title'), + ] +}); +``` + +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + try { + final documents = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('title') + ] + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` + +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + let documentsDB = DocumentsDB(client) + + do { + let documents = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.orderAsc("title") + ] + ) + } catch { + print(error.localizedDescription) + } +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + val documentsDB = DocumentsDB(client) + + try { + val documents = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = [ + Query.orderAsc("title") + ] + ) + } catch (e: AppwriteException) { + Log.e("Appwrite", e.message) + } +} +``` + +```graphql +query { + documentsDBListDocuments( + databaseId: "", + collectionId: "" + queries: ["orderAsc(\"title\")"] + ) { + total + documents { + _id + data + } + } +} +``` + +{% /multicode %} + +# Multiple fields {% #multiple-fields %} +To sort based on multiple fields, simply provide multiple query methods. +For better performance, create an index on the first field that you order by. + +In the example below, the movies returned will be first sorted by `title` in ascending order, then sorted by `year` in descending order. +{% multicode %} + +```js +// Web SDK code example for sorting based on multiple fields +// ... + +// List documents and sort based on multiple fields +documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('title'), // Order first by title in ascending order + Query.orderDesc('year'), // Then, order by year in descending order + ] +}); +``` +```dart +// Flutter SDK code example for sorting based on multiple fields +// ... + +// List documents and sort based on multiple fields +try { + final documents = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('title'), // Order by title in ascending order + Query.orderDesc('year') // Order by year in descending order + ] + ); +} on AppwriteException catch(e) { + print(e); +} +``` +```kotlin +// Android SDK code example for sorting based on multiple fields +// ... + +// List documents and sort based on multiple fields +try { + val documents = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = [ + Query.orderAsc("title"), // Order by title in ascending order + Query.orderDesc("year") // Order by year in descending order + ] + ); +} catch (e: AppwriteException) { + Log.e("Appwrite", e.message); +} +``` +```swift +// Apple SDK code example for sorting based on multiple fields +// ... + +// List documents and sort based on multiple fields +do { + let documents = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.orderAsc("title"), // Order by title in ascending order + Query.orderDesc("year") // Order by year in descending order + ] + ); +} catch { + print(error.localizedDescription); +} +``` +```graphql +query { + documentsDBListDocuments( + databaseId: "", + collectionId: "", + queries: ["orderAsc(\"title\")", "orderDesc(\"year\")"] + ) { + total + documents { + _id + data + } + } +} +``` +{% /multicode %} + +# Ordering by sequence {% #sequence-ordering %} + +For ordering based on insertion order, you can use the `$sequence` field, which Appwrite automatically adds to all documents. Sorting by `$sequence` returns documents in the order they were created. + +{% multicode %} +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('$sequence'), + ] +}); +``` + +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + try { + final documents = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.orderAsc('\$sequence') + ] + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` + +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + do { + let documents = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.orderAsc("$sequence") + ] + ) + } catch { + print(error.localizedDescription) + } +} +``` + +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + val documentsDB = DocumentsDB(client) + + try { + val documents = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.orderAsc("\$sequence") + ) + ) + } catch (e: AppwriteException) { + Log.e("Appwrite", e.message) + } +} +``` + +```graphql +query { + documentsDBListDocuments( + databaseId: "", + collectionId: "" + queries: ["orderAsc(\"$sequence\")"] + ) { + total + documents { + _id + data + } + } +} +``` +{% /multicode %} + +The `$sequence` field is useful when you need: +- Consistent ordering for pagination, especially with high-frequency inserts +- Reliable insertion order tracking when timestamps might not be precise enough +- Simple insertion-order sorting without managing custom counter fields diff --git a/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc b/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc new file mode 100644 index 0000000000..1f310e8ffe --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc @@ -0,0 +1,540 @@ +--- +layout: article +title: Pagination +description: Implement pagination for large data sets in Appwrite Databases. Explore techniques for splitting and displaying data across multiple pages. +--- + +As your collection grows in size, you'll need to paginate the documents returned. +Pagination improves performance by returning a subset of documents that match a query at a time, called a page. + +By default, list operations return 25 documents per page, which can be changed using the `Query.limit()` query method. +There is no hard limit on the number of documents you can request. However, beware that **large pages can degrade performance**. + +# Offset pagination {% #offset-pagination %} + +Offset pagination divides documents into pages of `N` documents each. +To read page number `P`, skip `offset = N * (P - 1)` documents, then read the next `N`. + +Using `Query.limit()` and `Query.offset()` you can achieve offset pagination. +With `Query.limit()` you define how many documents can be returned from one request. +The `Query.offset()` is the number of documents you wish to skip before selecting documents. + +{% multicode %} +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +// Page 1 +const page1 = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.offset(0) + ] +}); + +// Page 2 +const page2 = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.offset(25) + ] +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + final page1 = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.offset(0) + ] + ); + + final page2 = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.offset(25) + ] + ); +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + let page1 = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.limit(25), + Query.offset(0) + ] + ) + + let page2 = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.limit(25), + Query.offset(25) + ] + ) +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + val documentsDB = DocumentsDB(client) + + val page1 = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.limit(25), + Query.offset(0) + ) + ) + + val page2 = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.limit(25), + Query.offset(25) + ) + ) +} +``` + +{% /multicode %} + +{% info title="Drawbacks" %} +While traditional offset pagination is familiar, it comes with some drawbacks. +The request gets slower as the offset increases because the database has to skip over all the preceding documents before it can start selecting data. +If the data changes frequently, offset pagination will also produce **missing and duplicate** results. +{% /info %} + +# Cursor pagination {% #cursor-pagination %} + +The cursor is a unique identifier for a document that points to where the next page should start. +After reading a page of documents, pass the last document's ID into the `Query.cursorAfter(lastId)` query method to get the next page of documents. +Pass the first document's ID into the `Query.cursorBefore(firstId)` query method to retrieve the previous page. + +{% multicode %} + +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject(""); + +const documentsDB = new DocumentsDB(client); + +// Page 1 +const page1 = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25) + ] +}); + +const lastId = page1.documents[page1.documents.length - 1].$id; + +// Page 2 +const page2 = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.cursorAfter(lastId) + ] +}); +``` + +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + final page1 = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25) + ] + ); + + final lastId = page1.documents[page1.documents.length - 1].$id; + + final page2 = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25), + Query.cursorAfter(lastId) + ] + ); +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + let page1 = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.limit(25) + ] + ) + + let lastId = page1.documents[page1.documents.count - 1].$id + + let page2 = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.limit(25), + Query.cursorAfter(lastId) + ] + ) +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + val documentsDB = DocumentsDB(client) + + val page1 = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.limit(25) + ) + ) + + val lastId = page1.documents[page1.documents.size - 1].$id + + val page2 = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.limit(25), + Query.cursorAfter(lastId) + ) + ) +} +``` + +{% /multicode %} + +# When to use what? {% #when-to-use %} +Offset pagination should be used for collections that rarely change. +Offset pagination lets you build an indicator of the current page number and the total page count. +For example, a list with up to 20 pages or static data like a list of countries or currencies. +Using offset pagination on large and frequently updated collections may result in slow performance and **missing and duplicate** results. + +Cursor pagination should be used for frequently updated collections. +It is best suited for lazy-loaded pages with infinite scrolling. +For example, a feed, comment section, chat history, or high volume datasets. + +# Cache list responses {% #cache-list-responses %} + +You can cache list responses by passing a `ttl` (time-to-live) value in seconds. Subsequent identical requests return the cached result until the TTL expires. The cache is permission-aware, so users with different roles never see each other's cached data. + +Set `ttl` between `1` and `86400` (24 hours). The default is `0` (caching disabled). The response includes an `X-Appwrite-Cache` header with value `hit` or `miss`. + +{% multicode %} +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +const page = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +}); +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +const page = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + sdk.Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +}); +``` +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +page = documents_db.list_documents( + database_id='', + collection_id='', + queries=[ + Query.limit(25) + ], + ttl=60 # Cache for 60 seconds +) +``` +```server-ruby +require 'appwrite' + +client = Appwrite::Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +documents_db = Appwrite::DocumentsDB.new(client) + +page = documents_db.list_documents( + database_id: '', + collection_id: '', + queries: [ + Appwrite::Query.limit(25) + ], + ttl: 60 # Cache for 60 seconds +) +``` +```server-deno +import { Client, Query, DocumentsDB } from "https://deno.land/x/appwrite/mod.ts"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new DocumentsDB(client); + +const page = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +}); +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$documentsDB = new DocumentsDB($client); + +$page = $documentsDB->listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query::limit(25) + ], + ttl: 60 // Cache for 60 seconds +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + + final documentsDB = DocumentsDB(client); + + final page = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds + ); +} +``` +```server-swift +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + + let documentsDB = DocumentsDB(client) + + let page = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds + ) +} +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + + val documentsDB = DocumentsDB(client) + + val page = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.limit(25) + ), + ttl = 60 // Cache for 60 seconds + ) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let page = documents_db.list_documents( + "", + "", + Some(vec![ + Query::limit(25).to_string(), + ]), + None, // transaction_id + None, // total + Some(60), // ttl - Cache for 60 seconds + ).await?; + + println!("{:?}", page); + Ok(()) +} +``` +```graphql +query { + documentsDBListDocuments( + databaseId: "", + collectionId: "", + queries: ["limit(25)"], + ttl: 60 + ) { + total + documents { + _id + data + } + } +} +``` +```http +GET /v1/documentsdb//collections//documents?ttl=60 HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +``` +{% /multicode %} + +Document writes do **not** invalidate the cache, so cached responses may contain stale data until the TTL expires. Use a short TTL for collections that change often, or skip caching entirely when you always need the latest documents. diff --git a/src/routes/docs/products/databases/documentsdb/permissions/+page.markdoc b/src/routes/docs/products/databases/documentsdb/permissions/+page.markdoc new file mode 100644 index 0000000000..5ccd0905b3 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/permissions/+page.markdoc @@ -0,0 +1,35 @@ +--- +layout: article +title: Database permissions +description: Control access to your DocumentsDB data with permissions. Learn how to set collection level and document level access rules. +--- + +Permissions define who can access documents in a collection. By default **no permissions** are granted to any users, so no user can access any documents. +Permissions exist at two levels, collection level and document level permissions. + +In Appwrite, permissions are **granted**, meaning a user has no access by default and receives access when granted. +A user with access granted at either collection level or document level will be able to access a document. +Users **don't need access at both levels** to access documents. + +# Collection level {% #collection-level %} +Collection level permissions apply to every document in the collection. +If a user has read, create, update, or delete permissions at the collection level, the user can access **all documents** inside the collection. + +Configure collection level permissions by navigating to **Your collection** > **Security** > **Permissions**. + +[Learn more about permissions and roles](/docs/advanced/platform/permissions) + +# Document level {% #document-level %} +Document level permissions grant access to individual documents. +If a user has read, create, update, or delete permissions at the document level, the user can access the **individual document**. + +Document level permissions are only applied if row level security is enabled in the security settings of your collection. +Enable document level permissions by navigating to **Your collection** > **Security** > **Row level security (RLS)**. + +Document level permissions are configured on individual documents. + +[Learn more about permissions and roles](/docs/advanced/platform/permissions) + +# Common use cases {% #common-use-cases %} + +For examples of how to implement common permission patterns, including creating private documents that are only accessible to their creators, see the [permissions examples](/docs/advanced/platform/permissions#examples) in our platform documentation. diff --git a/src/routes/docs/products/databases/documentsdb/queries/+page.markdoc b/src/routes/docs/products/databases/documentsdb/queries/+page.markdoc new file mode 100644 index 0000000000..34d9f05769 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/queries/+page.markdoc @@ -0,0 +1,1855 @@ +--- +layout: article +title: Queries +description: Harness the power of querying with Appwrite DocumentsDB. Discover various query options, filtering, sorting, and advanced querying techniques. +--- + +Many list endpoints in Appwrite allow you to filter, sort, and paginate results using queries. Appwrite provides a common set of syntax to build queries. + +# Query class {% #query-class %} + +Appwrite SDKs provide a `Query` class to help you build queries. The `Query` class has methods for each type of supported query operation. + +# Building queries {% #building-queries %} + +Queries are passed to an endpoint through the `queries` parameter as an array of query strings, which can be generated using the `Query` class. + +Each query method is logically separated via `AND` operations. For `OR` operation, pass multiple values into the query method separated by commas. +For example `Query.equal('title', ['Avatar', 'Lord of the Rings'])` will fetch the movies `Avatar` or `Lord of the Rings`. + +{% info title="Default pagination behavior" %} +By default, results are limited to the **first 25 items**. +You can change this through [pagination](/docs/products/databases/documentsdb/pagination). +{% /info %} + +{% multicode %} + +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.equal('title', ['Avatar', 'Lord of the Rings']), + Query.greaterThan('year', 1999) + ] +}); +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client(); + +const documentsDB = new sdk.DocumentsDB(client); + +client + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey('') +; + +const promise = documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + sdk.Query.equal('title', ['Avatar', 'Lord of the Rings']), + sdk.Query.greaterThan('year', 1999) + ] +}); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + try { + final documents = await documentsDB.listDocuments( + '', + '', + [ + Query.equal('title', ['Avatar', 'Lord of the Rings']), + Query.greaterThan('year', 1999) + ] + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + do { + let documents = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.equal("title", value: ["Avatar", "Lord of the Rings"]), + Query.greaterThan("year", value: 1999) + ] + ) + } catch { + print(error.localizedDescription) + } +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + val documentsDB = DocumentsDB(client) + + try { + val documents = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.equal("title", listOf("Avatar", "Lord of the Rings")), + Query.greaterThan("year", 1999) + ) + ) + } catch (e: AppwriteException) { + Log.e("Appwrite", e.message) + } +} +``` +```server-go +package main + +import ( + "fmt" + "log" + + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/query" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://.cloud.appwrite.io/v1"), + appwrite.WithProject(""), + appwrite.WithKey(""), + ) + + documentsDB := appwrite.NewDocumentsDB(client) + + documents, err := documentsDB.ListDocuments( + "", + "", + documentsDB.WithListDocumentsQueries([]string{ + query.Equal("title", []string{"Avatar", "Lord of the Rings"}), + query.GreaterThan("year", 1999), + }), + ) + if err != nil { + log.Fatal(err) + } + + fmt.Printf("Documents: %+v\n", documents) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::query::Query; +use serde_json::Value; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let documents = documents_db.list_documents( + "", + "", + Some(vec![ + Query::equal("title", Value::Array(vec![ + Value::String("Avatar".to_string()), + Value::String("Lord of the Rings".to_string()), + ])).to_string(), + Query::greater_than("year", 1999).to_string(), + ]), + None, + None, + None, + ).await?; + + println!("{:?}", documents); + Ok(()) +} +``` +```server-php +setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey('') +; + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->listDocuments( + '', + '', + [ + Query::equal('title', ['Avatar', 'Lord of the Rings']), + Query::greaterThan('year', 1999) + ] +); +``` +```server-python +from appwrite.client import Client +from appwrite.query import Query +from appwrite.services.documents_db import DocumentsDB + +client = Client() + +(client + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') +) + +documentsDB = DocumentsDB(client) + +result = documentsDB.list_documents( + '', + '', + [ + Query.equal('title', ['Avatar', 'Lord of the Rings']), + Query.greater_than('year', 1999) + ] +) +``` +```graphql +query { + documentsDBListDocuments( + databaseId: "", + collectionId: "" + queries: [ + "{\"method\":\"equal\",\"attribute\":\"title\",\"values\":[\"Avatar\",\"Lord of the Rings\"]}", + "{\"method\":\"greaterThan\",\"attribute\":\"year\",\"values\":[1999]}" + ] + ) { + total + documents { + _id + data + } + } +} +``` +```http +GET /v1/documentsdb//collections//documents?queries[]=%7B%22method%22%3A%22equal%22%2C%22attribute%22%3A%22title%22%2C%22values%22%3A%5B%22Avatar%22%2C%22Lord%20of%20the%20Rings%22%5D%7D&queries[]=%7B%22method%22%3A%22greaterThan%22%2C%22attribute%22%3A%22year%22%2C%22values%22%3A%5B1999%5D%7D HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: +``` +```bash +appwrite documents-db list-documents \ + --database-id \ + --collection-id \ + --queries '{"method":"equal","attribute":"title","values":["Avatar","Lord of the Rings"]}' '{"method":"greaterThan","attribute":"year","values":[1999]}' +``` +{% /multicode %} + +# Query operators {% #query-operators %} + +## Select {% #select %} + +The `select` operator allows you to specify which fields should be returned from a document. This optimizes response size and retrieves only the data you need. + +{% multicode %} +```client-web +Query.select(["name", "title"]) +``` +```client-flutter +Query.select(["name", "title"]) +``` +```server-python +Query.select(["name", "title"]) +``` +```server-ruby +Query.select(["name", "title"]) +``` +```server-deno +Query.select(["name", "title"]) +``` +```server-php +Query::select(["name", "title"]) +``` +```client-apple +Query.select(["name", "title"]) +``` +```server-go +query.Select([]string{"name", "title"}) +``` +```server-rust +Query::select(vec!["name", "title"]).to_string() +``` +```http +{"method":"select","values":["name","title"]} +``` +{% /multicode %} + +### Use selection patterns {% #select-patterns %} + +| Pattern | Description | Use case | +|---------|-------------|----------| +| `["field1", "field2"]` | Specific fields only | Minimize response size | +| `["*"]` | All document fields | Get complete document data | + +### Optimize performance {% #select-performance %} + +**Optimize response size** - Only select the fields you actually need. Smaller responses are faster to transfer and parse. + +**Reduce database load** - Selecting fewer fields reduces database processing time, especially for large documents. + +## Comparison operators {% #comparison %} + +### Equal {% #equal %} + +Returns document if field is equal to any value in the provided array. + +{% multicode %} +```client-web +Query.equal("title", ["Iron Man"]) +``` +```client-flutter +Query.equal("title", ["Iron Man"]) +``` +```server-python +Query.equal("title", ["Iron Man"]) +``` +```server-ruby +Query.equal("title", ["Iron Man"]) +``` +```server-deno +Query.equal("title", ["Iron Man"]) +``` +```server-php +Query::equal("title", ["Iron Man"]) +``` +```client-apple +Query.equal("title", value: ["Iron Man"]) +``` +```server-go +query.Equal("title", []string{"Iron Man"}) +``` +```server-rust +Query::equal("title", Value::Array(vec![Value::String("Iron Man".to_string())])).to_string() +``` +```http +{"method":"equal","attribute":"title","values":["Iron Man"]} +``` +{% /multicode %} + +### Not equal {% #not-equal %} + +Returns document if field is not equal to any value in the provided array. + +{% multicode %} +```client-web +Query.notEqual("title", "Iron Man") +``` +```client-flutter +Query.notEqual("title", "Iron Man") +``` +```server-python +Query.not_equal("title", "Iron Man") +``` +```server-ruby +Query.not_equal("title", "Iron Man") +``` +```server-deno +Query.notEqual("title", "Iron Man") +``` +```server-php +Query::notEqual("title", "Iron Man") +``` +```client-apple +Query.notEqual("title", value: "Iron Man") +``` +```server-go +query.NotEqual("title", "Iron Man") +``` +```server-rust +Query::not_equal("title", "Iron Man").to_string() +``` +```http +{"method":"notEqual","attribute":"title","values":"Iron Man"} +``` +{% /multicode %} + +### Less than {% #less-than %} + +Returns document if field is less than the provided value. + +{% multicode %} +```client-web +Query.lessThan("score", 10) +``` +```client-flutter +Query.lessThan("score", 10) +``` +```server-python +Query.less_than("score", 10) +``` +```server-ruby +Query.less_than("score", 10) +``` +```server-deno +Query.lessThan("score", 10) +``` +```server-php +Query::lessThan("score", 10) +``` +```client-apple +Query.lessThan("score", value: 10) +``` +```server-go +query.LessThan("score", 10) +``` +```server-rust +Query::less_than("score", 10).to_string() +``` +```http +{"method":"lessThan","attribute":"score","values":[10]} +``` +{% /multicode %} + +### Less than or equal {% #less-than-equal %} + +Returns document if field is less than or equal to the provided value. + +{% multicode %} +```client-web +Query.lessThanEqual("score", 10) +``` +```client-flutter +Query.lessThanEqual("score", 10) +``` +```server-python +Query.less_than_equal("score", 10) +``` +```server-ruby +Query.less_than_equal("score", 10) +``` +```server-deno +Query.lessThanEqual("score", 10) +``` +```server-php +Query::lessThanEqual("score", 10) +``` +```client-apple +Query.lessThanEqual("score", value: 10) +``` +```server-go +query.LessThanEqual("score", 10) +``` +```server-rust +Query::less_than_equal("score", 10).to_string() +``` +```http +{"method":"lessThanEqual","attribute":"score","values":[10]} +``` +{% /multicode %} + +### Greater than {% #greater-than %} + +Returns document if field is greater than the provided value. + +{% multicode %} +```client-web +Query.greaterThan("score", 10) +``` +```client-flutter +Query.greaterThan("score", 10) +``` +```server-python +Query.greater_than("score", 10) +``` +```server-ruby +Query.greater_than("score", 10) +``` +```server-deno +Query.greaterThan("score", 10) +``` +```server-php +Query::greaterThan("score", 10) +``` +```client-apple +Query.greaterThan("score", value: 10) +``` +```server-go +query.GreaterThan("score", 10) +``` +```server-rust +Query::greater_than("score", 10).to_string() +``` +```http +{"method":"greaterThan","attribute":"score","values":[10]} +``` +{% /multicode %} + +### Greater than or equal {% #greater-than-equal %} + +Returns document if field is greater than or equal to the provided value. + +{% multicode %} +```client-web +Query.greaterThanEqual("score", 10) +``` +```client-flutter +Query.greaterThanEqual("score", 10) +``` +```server-python +Query.greater_than_equal("score", 10) +``` +```server-ruby +Query.greater_than_equal("score", 10) +``` +```server-deno +Query.greaterThanEqual("score", 10) +``` +```server-php +Query::greaterThanEqual("score", 10) +``` +```client-apple +Query.greaterThanEqual("score", value: 10) +``` +```server-go +query.GreaterThanEqual("score", 10) +``` +```server-rust +Query::greater_than_equal("score", 10).to_string() +``` +```http +{"method":"greaterThanEqual","attribute":"score","values":[10]} +``` +{% /multicode %} + +### Between {% #between %} + +Returns document if field value falls between the two values. The boundary values are inclusive and can be strings or numbers. + +{% multicode %} +```client-web +Query.between("price", 5, 10) +``` +```client-flutter +Query.between("price", 5, 10) +``` +```server-python +Query.between("price", 5, 10) +``` +```server-ruby +Query.between("price", 5, 10) +``` +```server-deno +Query.between("price", 5, 10) +``` +```server-php +Query::between("price", 5, 10) +``` +```client-apple +Query.between("price", start: 5, end: 10) +``` +```server-go +query.Between("price", 5, 10) +``` +```server-rust +Query::between("price", 5, 10).to_string() +``` +```http +{"method":"between","attribute":"price","values":[5,10]} +``` +{% /multicode %} + +### Not between {% #not-between %} + +Returns documents if the field value is outside the range defined by the two values (strictly less than start OR strictly greater than end). +Works with strings or numbers. Boundary values are excluded. + +{% multicode %} +```client-web +Query.notBetween("price", 5, 10) +``` +```client-flutter +Query.notBetween("price", 5, 10) +``` +```client-apple +Query.notBetween("price", start: 5, end: 10) +``` +```client-android-kotlin +Query.notBetween("price", 5, 10) +``` +```client-android-java +Query.notBetween("price", 5, 10) +``` +```server-python +Query.not_between("price", 5, 10) +``` +```server-ruby +Query.not_between("price", 5, 10) +``` +```server-deno +Query.notBetween("price", 5, 10) +``` +```server-nodejs +Query.notBetween("price", 5, 10) +``` +```server-php +Query::notBetween("price", 5, 10) +``` +```server-swift +Query.notBetween("price", start: 5, end: 10) +``` +```server-rust +Query::not_between("price", 5, 10).to_string() +``` +```http +{"method":"notBetween","attribute":"price","values":[5,10]} +``` +{% /multicode %} + +## Null checks {% #null-checks %} + +### Is null {% #is-null %} + +Returns documents where field value is null. + +{% multicode %} +```client-web +Query.isNull("name") +``` +```client-flutter +Query.isNull("name") +``` +```server-python +Query.is_null("name") +``` +```server-ruby +Query.is_null("name") +``` +```server-deno +Query.isNull("name") +``` +```server-php +Query::isNull("name") +``` +```client-apple +Query.isNull("name") +``` +```server-go +query.IsNull("name") +``` +```server-rust +Query::is_null("name").to_string() +``` +```http +{"method":"isNull","attribute":"name"} +``` +{% /multicode %} + +### Is not null {% #is-not-null %} + +Returns documents where field value is **not** null. + +{% multicode %} +```client-web +Query.isNotNull("name") +``` +```client-flutter +Query.isNotNull("name") +``` +```server-python +Query.is_not_null("name") +``` +```server-ruby +Query.is_not_null("name") +``` +```server-deno +Query.isNotNull("name") +``` +```server-php +Query::isNotNull("name") +``` +```client-apple +Query.isNotNull("name") +``` +```server-go +query.IsNotNull("name") +``` +```server-rust +Query::is_not_null("name").to_string() +``` +```http +{"method":"isNotNull","attribute":"name"} +``` +{% /multicode %} + +## String operations {% #string-operations %} + +### Starts with {% #starts-with %} + +Returns documents if a string field starts with a substring. + +{% multicode %} +```client-web +Query.startsWith("name", "Once upon a time") +``` +```client-flutter +Query.startsWith("name", "Once upon a time") +``` +```server-python +Query.starts_with("name", "Once upon a time") +``` +```server-ruby +Query.starts_with("name", "Once upon a time") +``` +```server-deno +Query.startsWith("name", "Once upon a time") +``` +```server-php +Query::startsWith("name", "Once upon a time") +``` +```client-apple +Query.startsWith("name", value: "Once upon a time") +``` +```server-go +query.StartsWith("name", "Once upon a time") +``` +```server-rust +Query::starts_with("name", "Once upon a time").to_string() +``` +```http +{"method":"startsWith","attribute":"name","values":["Once upon a time"]} +``` +{% /multicode %} + +### Not starts with {% #not-starts-with %} + +Returns documents if a string field does not start with a substring. + +{% multicode %} +```client-web +Query.notStartsWith("name", "Once upon a time") +``` +```client-flutter +Query.notStartsWith("name", "Once upon a time") +``` +```client-apple +Query.notStartsWith("name", value: "Once upon a time") +``` +```client-android-kotlin +Query.notStartsWith("name", "Once upon a time") +``` +```client-android-java +Query.notStartsWith("name", "Once upon a time") +``` +```server-python +Query.not_starts_with("name", "Once upon a time") +``` +```server-ruby +Query.not_starts_with("name", "Once upon a time") +``` +```server-deno +Query.notStartsWith("name", "Once upon a time") +``` +```server-nodejs +Query.notStartsWith("name", "Once upon a time") +``` +```server-php +Query::notStartsWith("name", "Once upon a time") +``` +```server-swift +Query.notStartsWith("name", value: "Once upon a time") +``` +```server-rust +Query::not_starts_with("name", "Once upon a time").to_string() +``` +```http +{"method":"notStartsWith","attribute":"name","values":["Once upon a time"]} +``` +{% /multicode %} + +### Ends with {% #ends-with %} + +Returns documents if a string field ends with a substring. + +{% multicode %} +```client-web +Query.endsWith("name", "happily ever after.") +``` +```client-flutter +Query.endsWith("name", "happily ever after.") +``` +```server-python +Query.ends_with("name", "happily ever after.") +``` +```server-ruby +Query.ends_with("name", "happily ever after.") +``` +```server-deno +Query.endsWith("name", "happily ever after.") +``` +```server-php +Query::endsWith("name", "happily ever after.") +``` +```client-apple +Query.endsWith("name", value: "happily ever after.") +``` +```server-go +query.EndsWith("name", "happily ever after.") +``` +```server-rust +Query::ends_with("name", "happily ever after.").to_string() +``` +```http +{"method":"endsWith","attribute":"name","values":["happily ever after."]} +``` +{% /multicode %} + +### Not ends with {% #not-ends-with %} + +Returns documents if a string field does not end with a substring. + +{% multicode %} +```client-web +Query.notEndsWith("name", "happily ever after.") +``` +```client-flutter +Query.notEndsWith("name", "happily ever after.") +``` +```client-apple +Query.notEndsWith("name", value: "happily ever after.") +``` +```client-android-kotlin +Query.notEndsWith("name", "happily ever after.") +``` +```client-android-java +Query.notEndsWith("name", "happily ever after.") +``` +```server-python +Query.not_ends_with("name", "happily ever after.") +``` +```server-ruby +Query.not_ends_with("name", "happily ever after.") +``` +```server-deno +Query.notEndsWith("name", "happily ever after.") +``` +```server-nodejs +Query.notEndsWith("name", "happily ever after.") +``` +```server-php +Query::notEndsWith("name", "happily ever after.") +``` +```server-swift +Query.notEndsWith("name", value: "happily ever after.") +``` +```server-rust +Query::not_ends_with("name", "happily ever after.").to_string() +``` +```http +{"method":"notEndsWith","attribute":"name","values":["happily ever after."]} +``` +{% /multicode %} + +### Contains {% #contains %} + +Returns documents if the array field contains the specified elements or if a string field contains the specified substring. + +{% multicode %} +```client-web +// For arrays +Query.contains("ingredients", ['apple', 'banana']) + +// For strings +Query.contains("name", "Tom") +``` +```client-flutter +// For arrays +Query.contains("ingredients", ['apple', 'banana']) + +// For strings +Query.contains("name", "Tom") +``` +```server-python +# For arrays +Query.contains("ingredients", ['apple', 'banana']) + +# For strings +Query.contains("name", "Tom") +``` +```server-ruby +# For arrays +Query.contains("ingredients", ['apple', 'banana']) + +# For strings +Query.contains("name", "Tom") +``` +```server-deno +// For arrays +Query.contains("ingredients", ['apple', 'banana']) + +// For strings +Query.contains("name", "Tom") +``` +```server-php +// For arrays +Query::contains("ingredients", ['apple', 'banana']) + +// For strings +Query::contains("name", "Tom") +``` +```client-apple +// For arrays +Query.contains("ingredients", value: ["apple", "banana"]) + +// For strings +Query.contains("name", value: "Tom") +```server-go +// For arrays +query.Contains("ingredients", []string{"apple", "banana"}) + +// For strings +query.Contains("name", "Tom") +``` +```server-rust +// For arrays +Query::contains("ingredients", Value::Array(vec![ + Value::String("apple".to_string()), + Value::String("banana".to_string()), +])).to_string() + +// For strings +Query::contains("name", "Tom").to_string() +``` +```http +# For arrays +{"method":"contains","attribute":"ingredients","values":["apple","banana"]} + +# For strings +{"method":"contains","attribute":"name","values":["Tom"]} +``` +{% /multicode %} + +### Not contains {% #not-contains %} + +Returns documents if the array field does not contain the specified +elements, or if a string field does not contain the specified +substring. + +{% multicode %} +```client-web +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```client-flutter +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```client-react-native +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```client-apple +// For arrays +Query.notContains("ingredients", value: ['apple', 'banana']) + +// For strings +Query.notContains("name", value: "Tom") +``` +```client-android-kotlin +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```client-android-java +// For arrays +Query.notContains("ingredients", Arrays.asList("apple", "banana")) + +// For strings +Query.notContains("name", "Tom") +``` +```server-python +# For arrays +Query.not_contains("ingredients", ['apple', 'banana']) + +# For strings +Query.not_contains("name", "Tom") +``` +```server-ruby +# For arrays +Query.not_contains("ingredients", ['apple', 'banana']) + +# For strings +Query.not_contains("name", "Tom") +``` +```server-deno +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```server-nodejs +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```server-php +// For arrays +Query::notContains("ingredients", ['apple', 'banana']) + +// For strings +Query::notContains("name", "Tom") +``` +```server-dotnet +// For arrays +Query.NotContains("ingredients", new List { "apple", "banana" }) + +// For strings +Query.NotContains("name", "Tom") +``` +```server-go +// For arrays +query.NotContains("ingredients", []string{"apple", "banana"}) + +// For strings +query.NotContains("name", "Tom") +```server-dart +// For arrays +Query.notContains("ingredients", ['apple', 'banana']) + +// For strings +Query.notContains("name", "Tom") +``` +```server-swift +// For arrays +Query.notContains("ingredients", value: ['apple', 'banana']) + +// For strings +Query.notContains("name", value: "Tom") +``` +```server-kotlin +// For arrays +Query.notContains("ingredients", listOf("apple", "banana")) + +// For strings +Query.notContains("name", "Tom") +``` +```server-rust +// For arrays +Query::not_contains("ingredients", Value::Array(vec![ + Value::String("apple".to_string()), + Value::String("banana".to_string()), +])).to_string() + +// For strings +Query::not_contains("name", "Tom").to_string() +``` +```http +# For arrays +{"method":"notContains","attribute":"ingredients","values":["apple","banana"]} + +# For strings +{"method":"notContains","attribute":"name","values":["Tom"]} +``` +{% /multicode %} + +### Search {% #search %} + +Searches string fields for provided keywords. Requires a [full-text index](/docs/products/databases/documentsdb/collections#indexes) on queried fields. + +{% multicode %} +```client-web +Query.search("text", "key words") +``` +```client-flutter +Query.search("text", "key words") +``` +```server-python +Query.search("text", "key words") +``` +```server-ruby +Query.search("text", "key words") +``` +```server-deno +Query.search("text", "key words") +``` +```server-php +Query::search("text", "key words") +``` +```client-apple +Query.search("text", value: "key words") +``` +```server-go +query.Search("text", "key words") +``` +```server-rust +Query::search("text", "key words").to_string() +``` +```http +{"method":"search","attribute":"text","values":["key words"]} +``` +{% /multicode %} + +### Not search {% #not-search %} + +Returns documents if a string field does not match the full-text search +query. Requires a [full-text index](/docs/products/databases/documentsdb/collections#indexes) +on queried fields. + +{% multicode %} +```client-web +Query.notSearch("text", "key words") +``` +```client-flutter +Query.notSearch("text", "key words") +``` +```client-apple +Query.notSearch("text", value: "key words") +``` +```client-android-kotlin +Query.notSearch("text", "key words") +``` +```client-android-java +Query.notSearch("text", "key words") +``` +```server-python +Query.not_search("text", "key words") +``` +```server-ruby +Query.not_search("text", "key words") +``` +```server-deno +Query.notSearch("text", "key words") +``` +```server-nodejs +Query.notSearch("text", "key words") +``` +```server-php +Query::notSearch("text", "key words") +``` +```server-swift +Query.notSearch("text", value: "key words") +``` +```server-rust +Query::not_search("text", "key words").to_string() +``` +```http +{"method":"notSearch","attribute":"text","values":["key words"]} +``` +{% /multicode %} + +## Logical operators {% #logical-operators %} + +### AND {% #and %} + +Returns document if it matches all of the nested sub-queries in the array passed in. + +{% multicode %} +```client-web +Query.and([ + Query.lessThan("size", 10), + Query.greaterThan("size", 5) +]) +``` +```client-flutter +Query.and([ + Query.lessThan("size", 10), + Query.greaterThan("size", 5) +]) +``` +```server-python +Query.and_queries([ + Query.less_than("size", 10), + Query.greater_than("size", 5) +]) +``` +```server-ruby +Query.and([ + Query.less_than("size", 10), + Query.greater_than("size", 5) +]) +``` +```server-deno +Query.and([ + Query.lessThan("size", 10), + Query.greaterThan("size", 5) +]) +``` +```server-php +Query::and([ + Query::lessThan("size", 10), + Query::greaterThan("size", 5) +]) +``` +```client-apple +Query.and([ + Query.lessThan("size", value: 10), + Query.greaterThan("size", value: 5) +]) +``` +```server-go +query.And([]string{ + query.LessThan("size", 10), + query.GreaterThan("size", 5), +}) +``` +```server-rust +Query::and(vec![ + Query::less_than("size", 10).to_string(), + Query::greater_than("size", 5).to_string(), +]).to_string() +``` +```http +{"method":"and","values":[{"method":"lessThan","attribute":"size","values":[10]},{"method":"greaterThan","attribute":"size","values":[5]}]} +``` +{% /multicode %} + +### OR {% #or %} + +Returns document if it matches any of the nested sub-queries in the array passed in. + +{% multicode %} +```client-web +Query.or([ + Query.lessThan("size", 5), + Query.greaterThan("size", 10) +]) +``` +```client-flutter +Query.or([ + Query.lessThan("size", 5), + Query.greaterThan("size", 10) +]) +``` +```server-python +Query.or_queries([ + Query.less_than("size", 5), + Query.greater_than("size", 10) +]) +``` +```server-ruby +Query.or([ + Query.less_than("size", 5), + Query.greater_than("size", 10) +]) +``` +```server-deno +Query.or([ + Query.lessThan("size", 5), + Query.greaterThan("size", 10) +]) +``` +```server-php +Query::or([ + Query::lessThan("size", 5), + Query::greaterThan("size", 10) +]) +``` +```client-apple +Query.or([ + Query.lessThan("size", value: 5), + Query.greaterThan("size", value: 10) +]) +``` +```server-go +query.Or([]string{ + query.LessThan("size", 5), + query.GreaterThan("size", 10), +}) +``` +```server-rust +Query::or(vec![ + Query::less_than("size", 5).to_string(), + Query::greater_than("size", 10).to_string(), +]).to_string() +``` +```http +{"method":"or","values":[{"method":"lessThan","attribute":"size","values":[5]},{"method":"greaterThan","attribute":"size","values":[10]}]} +``` +{% /multicode %} + +## Ordering {% #ordering %} + +### Order descending {% #order-desc %} + +Orders results in descending order by field. + +{% multicode %} +```client-web +Query.orderDesc("field") +``` +```client-flutter +Query.orderDesc("field") +``` +```server-python +Query.order_desc("field") +``` +```server-ruby +Query.order_desc("field") +``` +```server-nodejs +Query.orderDesc("field") +``` +```server-php +Query::orderDesc("field") +``` +```client-apple +Query.orderDesc("field") +``` +```server-go +query.OrderDesc("attribute") +``` +```server-rust +Query::order_desc("field").to_string() +``` +```http +{"method":"orderDesc","attribute":"field"} +``` +{% /multicode %} + +### Order ascending {% #order-asc %} + +Orders results in ascending order by field. + +{% multicode %} +```client-web +Query.orderAsc("field") +``` +```client-flutter +Query.orderAsc("field") +``` +```server-python +Query.order_asc("field") +``` +```server-ruby +Query.order_asc("field") +``` +```server-nodejs +Query.orderAsc("field") +``` +```server-php +Query::orderAsc("field") +``` +```client-apple +Query.orderAsc("field") +``` +```server-go +query.OrderAsc("attribute") +``` +```server-rust +Query::order_asc("field").to_string() +``` +```http +{"method":"orderAsc","attribute":"field"} +``` +{% /multicode %} + +## Pagination {% #pagination %} + +### Limit {% #limit %} + +Limits the number of results returned by the query. Used for [pagination](/docs/products/databases/documentsdb/pagination). + +{% multicode %} +```client-web +Query.limit(25) +``` +```client-flutter +Query.limit(25) +``` +```server-python +Query.limit(25) +``` +```server-ruby +Query.limit(25) +``` +```server-deno +Query.limit(25) +``` +```server-php +Query::limit(25) +``` +```client-apple +Query.limit(25) +``` +```server-go +query.Limit(25) +``` +```server-rust +Query::limit(25).to_string() +``` +```http +{"method":"limit","values":[25]} +``` +{% /multicode %} + +### Offset {% #offset %} + +Offset the results returned by skipping some of the results. Used for [pagination](/docs/products/databases/documentsdb/pagination). + +{% multicode %} +```client-web +Query.offset(0) +``` +```client-flutter +Query.offset(0) +``` +```server-python +Query.offset(0) +``` +```server-ruby +Query.offset(0) +``` +```server-deno +Query.offset(0) +``` +```server-php +Query::offset(0) +``` +```client-apple +Query.offset(0) +``` +```server-go +query.Offset(0) +``` +```server-rust +Query::offset(0).to_string() +``` +```http +{"method":"offset","values":[0]} +``` +{% /multicode %} + +### Cursor after {% #cursor-after %} + +Places the cursor after the specified resource ID. Used for [pagination](/docs/products/databases/documentsdb/pagination). + +{% multicode %} +```client-web +Query.cursorAfter("62a7...f620") +``` +```client-flutter +Query.cursorAfter("62a7...f620") +``` +```server-python +Query.cursor_after("62a7...f620") +``` +```server-ruby +Query.cursor_after("62a7...f620") +``` +```server-deno +Query.cursorAfter("62a7...f620") +``` +```server-php +Query::cursorAfter("62a7...f620") +``` +```client-apple +Query.cursorAfter("62a7...f620") +``` +```server-go +query.CursorAfter("62a7...f620") +``` +```server-rust +Query::cursor_after("62a7...f620").to_string() +``` +```http +{"method":"cursorAfter","values":["62a7...f620"]} +``` +{% /multicode %} + +### Cursor before {% #cursor-before %} + +Places the cursor before the specified resource ID. Used for [pagination](/docs/products/databases/documentsdb/pagination). + +{% multicode %} +```client-web +Query.cursorBefore("62a7...a600") +``` +```client-flutter +Query.cursorBefore("62a7...a600") +``` +```server-python +Query.cursor_before("62a7...a600") +``` +```server-ruby +Query.cursor_before("62a7...a600") +``` +```server-deno +Query.cursorBefore("62a7...a600") +``` +```server-php +Query::cursorBefore("62a7...a600") +``` +```client-apple +Query.cursorBefore("62a7...a600") +``` +```server-go +query.CursorBefore("62a7...a600") +``` +```server-rust +Query::cursor_before("62a7...a600").to_string() +``` +```http +{"method":"cursorBefore","values":["62a7...a600"]} +``` +{% /multicode %} + +# Time helpers {% #time-helpers %} + +Built-in helpers for filtering by creation and update timestamps using +ISO 8601 date-time strings (for example, "2025-01-01T00:00:00Z"). + +### Created before {% #created-before %} + +Returns documents created before the given date. + +{% multicode %} +```client-web +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```client-flutter +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```client-apple +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```client-android-kotlin +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```client-android-java +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```server-python +Query.created_before("2025-01-01T00:00:00Z") +``` +```server-ruby +Query.created_before("2025-01-01T00:00:00Z") +``` +```server-deno +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```server-nodejs +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```server-php +Query::createdBefore("2025-01-01T00:00:00Z") +``` +```server-swift +Query.createdBefore("2025-01-01T00:00:00Z") +``` +```server-rust +Query::created_before("2025-01-01T00:00:00Z").to_string() +``` +```http +{"method":"createdBefore","values":["2025-01-01T00:00:00Z"]} +``` +{% /multicode %} + +### Created after {% #created-after %} + +Returns documents created after the given date. + +{% multicode %} +```client-web +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```client-flutter +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```client-apple +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```client-android-kotlin +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```client-android-java +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```server-python +Query.created_after("2025-01-01T00:00:00Z") +``` +```server-ruby +Query.created_after("2025-01-01T00:00:00Z") +``` +```server-deno +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```server-nodejs +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```server-php +Query::createdAfter("2025-01-01T00:00:00Z") +``` +```server-swift +Query.createdAfter("2025-01-01T00:00:00Z") +``` +```server-rust +Query::created_after("2025-01-01T00:00:00Z").to_string() +``` +```http +{"method":"createdAfter","values":["2025-01-01T00:00:00Z"]} +``` +{% /multicode %} + +### Updated before {% #updated-before %} + +Returns documents updated before the given date. + +{% multicode %} +```client-web +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```client-flutter +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```client-apple +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```client-android-kotlin +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```client-android-java +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```server-python +Query.updated_before("2025-01-01T00:00:00Z") +``` +```server-ruby +Query.updated_before("2025-01-01T00:00:00Z") +``` +```server-deno +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```server-nodejs +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```server-php +Query::updatedBefore("2025-01-01T00:00:00Z") +``` +```server-swift +Query.updatedBefore("2025-01-01T00:00:00Z") +``` +```server-rust +Query::updated_before("2025-01-01T00:00:00Z").to_string() +``` +```http +{"method":"updatedBefore","values":["2025-01-01T00:00:00Z"]} +``` +{% /multicode %} + +### Updated after {% #updated-after %} + +Returns documents updated after the given date. + +{% multicode %} +```client-web +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```client-flutter +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```client-apple +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```client-android-kotlin +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```client-android-java +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```server-python +Query.updated_after("2025-01-01T00:00:00Z") +``` +```server-ruby +Query.updated_after("2025-01-01T00:00:00Z") +``` +```server-deno +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```server-nodejs +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```server-php +Query::updatedAfter("2025-01-01T00:00:00Z") +``` +```server-swift +Query.updatedAfter("2025-01-01T00:00:00Z") +``` +```server-rust +Query::updated_after("2025-01-01T00:00:00Z").to_string() +``` +```http +{"method":"updatedAfter","values":["2025-01-01T00:00:00Z"]} +``` +{% /multicode %} +# Complex queries {% #complex-queries %} + +You can create complex queries by combining AND and OR operations. For example, to find items that are either books under $20 or magazines under $10: + +{% multicode %} +```client-web +const results = await documentsDB.listDocuments({ + databaseId: '', + collectionId: '', + queries: [ + Query.or([ + Query.and([ + Query.equal('category', ['books']), + Query.lessThan('price', 20) + ]), + Query.and([ + Query.equal('category', ['magazines']), + Query.lessThan('price', 10) + ]) + ]) + ] +}); +``` +```client-flutter +final results = await documentsDB.listDocuments( + '', + '', + [ + Query.or([ + Query.and([ + Query.equal('category', ['books']), + Query.lessThan('price', 20) + ]), + Query.and([ + Query.equal('category', ['magazines']), + Query.lessThan('price', 10) + ]) + ]) + ] +); +``` +```server-python +results = documentsDB.list_documents( + database_id='', + collection_id='', + queries=[ + Query.or_queries([ + Query.and_queries([ + Query.equal('category', ['books']), + Query.less_than('price', 20) + ]), + Query.and_queries([ + Query.equal('category', ['magazines']), + Query.less_than('price', 10) + ]) + ]) + ] +) +``` +```server-go +documents, err := documentsDB.ListDocuments( + "", + "", + documentsDB.WithListDocumentsQueries([]string{ + query.Or([]string{ + query.And([]string{ + query.Equal("category", []string{"books"}), + query.LessThan("price", 20), + }), + query.And([]string{ + query.Equal("category", []string{"magazines"}), + query.LessThan("price", 10), + }), + }), + }), +) +if err != nil { + log.Fatal(err) +} +``` +```server-rust +let documents = documents_db.list_documents( + "", + "", + Some(vec![ + Query::or(vec![ + Query::and(vec![ + Query::equal("category", Value::Array(vec![Value::String("books".to_string())])).to_string(), + Query::less_than("price", 20).to_string(), + ]).to_string(), + Query::and(vec![ + Query::equal("category", Value::Array(vec![Value::String("magazines".to_string())])).to_string(), + Query::less_than("price", 10).to_string(), + ]).to_string(), + ]).to_string(), + ]), + None, + None, + None, +).await?; +``` +```http +{"method":"or","values":[{"method":"and","values":[{"method":"equal","attribute":"category","values":["books"]},{"method":"lessThan","attribute":"price","values":[20]}]},{"method":"and","values":[{"method":"equal","attribute":"category","values":["magazines"]},{"method":"lessThan","attribute":"price","values":[10]}]}]} +``` +{% /multicode %} + +This example demonstrates how to combine `OR` and `AND` operations. The query uses `Query.or()` to match either condition: books under $20 OR magazines under $10. +Each condition within the OR is composed of two AND conditions - one for the category and one for the price threshold. The database will return documents that match either of these combined conditions. + diff --git a/src/routes/docs/products/databases/documentsdb/quick-start/+page.markdoc b/src/routes/docs/products/databases/documentsdb/quick-start/+page.markdoc new file mode 100644 index 0000000000..92c5f30cf8 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/quick-start/+page.markdoc @@ -0,0 +1,243 @@ +--- +layout: article +title: Start with DocumentsDB +description: Get started with Appwrite DocumentsDB. Follow a step-by-step guide to create your first database, add a collection, and perform basic document operations. +--- + + +{% section #create-database step=1 title="Create database" %} +Head to your [Appwrite Console](https://cloud.appwrite.io/console/) and click **Create database**. Name it `Oscar` and choose **DocumentsDB** as the database type. +Optionally, add a custom database ID. Select your preferred tier, then click **Create database**. +{% /section %} + +{% section #create-collection step=2 title="Create collection" %} +In the `Oscar` database, click **Create collection** and name it `My books`. Optionally, add a custom collection ID. + +Collections are schemaless, so there are no columns to define. Each document holds its own fields as flexible JSON. + +Open the collection's **Security** tab. Under **Permissions**, add a new role **Any** and check **Create** and **Read**, so anyone can create and read documents. Click **Update** to save. +{% /section %} + + +{% section #create-documents step=3 title="Create documents" %} +To create a document use the `createDocument` method. + +In the **Settings** menu, find your project ID and replace `` in the example. + +Navigate to the `Oscar` database, copy the database ID, and replace ``. +Then, in the `My books` collection, copy the collection ID, and replace ``. + +{% multicode %} +```client-web +import { Client, ID, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + +const documentsDB = new DocumentsDB(client); + +const promise = documentsDB.createDocument({ + databaseId: '', + collectionId: '', + documentId: ID.unique(), + data: { title: "Hamlet" } +}); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject(''); + + final documentsDB = DocumentsDB(client); + + try { + final document = documentsDB.createDocument( + databaseId: '', + collectionId: '', + documentId: ID.unique(), + data: { "title": "Hamlet" } + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + do { + let document = try await documentsDB.createDocument( + databaseId: "", + collectionId: "", + documentId: ID.unique(), + data: ["title": "Hamlet"] + ) + } catch { + print(error.localizedDescription) + } +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + val documentsDB = DocumentsDB(client) + + try { + val document = documentsDB.createDocument( + databaseId = "", + collectionId = "", + documentId = ID.unique(), + data = mapOf("title" to "Hamlet"), + ) + } catch (e: Exception) { + Log.e("Appwrite", "Error: " + e.message) + } +} +``` +{% /multicode %} + +The response should look similar to this. + +```json +{ + "title": "Hamlet", + "$id": "6a423aa70000c39da0be", + "$sequence": "019f12b5-1c89-7094-8d12-5b7e7a09f025", + "$permissions": [], + "$createdAt": "2026-06-29T09:28:07.047+00:00", + "$updatedAt": "2026-06-29T09:28:07.047+00:00", + "$databaseId": "650125c64b3c25ce4bc4", + "$collectionId": "650125cff227cf9f95ad" +} +``` + +{% /section %} + +{% section #list-documents step=4 title="List documents" %} +To read and query data from your collection, use the `listDocuments` endpoint. + +Like the previous step, replace ``, ``, and `` with their respective IDs. +{% multicode %} +```client-web +import { Client, Query, DocumentsDB } from "appwrite"; + +const client = new Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + +const documentsDB = new DocumentsDB(client); + +const promise = documentsDB.listDocuments({ + databaseId: "", + collectionId: "", + queries: [ + Query.equal('title', 'Hamlet') + ] +}); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + final documentsDB = DocumentsDB(client); + + try { + final documents = await documentsDB.listDocuments( + databaseId: '', + collectionId: '', + queries: [ + Query.equal('title', 'Hamlet') + ] + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws{ + let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + let documentsDB = DocumentsDB(client) + + do { + let documents = try await documentsDB.listDocuments( + databaseId: "", + collectionId: "", + queries: [ + Query.equal("title", value: "Hamlet") + ] + ) + } catch { + print(error.localizedDescription) + } +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.DocumentsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + + val documentsDB = DocumentsDB(client) + + try { + val documents = documentsDB.listDocuments( + databaseId = "", + collectionId = "", + queries = listOf( + Query.equal("title", "Hamlet") + ) + ) + } catch (e: AppwriteException) { + Log.e("Appwrite", "Error: " + e.message) + } +} +``` + +{% /multicode %} +{% /section %} diff --git a/src/routes/docs/products/databases/documentsdb/timestamp-overrides/+page.markdoc b/src/routes/docs/products/databases/documentsdb/timestamp-overrides/+page.markdoc new file mode 100644 index 0000000000..0549b732ab --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/timestamp-overrides/+page.markdoc @@ -0,0 +1,1266 @@ +--- +layout: article +title: Timestamp overrides +description: Set custom $createdAt and $updatedAt timestamps for your documents when using server SDKs. +--- + +When creating or updating documents, Appwrite automatically sets `$createdAt` and `$updatedAt` timestamps. However, there are scenarios where you might need to set these timestamps manually, such as when migrating data from another system or backfilling historical records. + +{% info title="Server SDKs required" %} +To manually set `$createdAt` and `$updatedAt`, you must use a **server SDK** with an **API key**. These attributes can be passed inside the `data` parameter on any of the create, update, or upsert routes (single or bulk). +{% /info %} + +# Setting custom timestamps {% #setting-custom-timestamps %} + +You can override a document's timestamps by providing ISO 8601 strings (for example, `2025-08-10T12:34:56.000Z`) in the `data` payload. If these attributes are not provided, Appwrite will set them automatically. + +Custom timestamps work with all document operations: create, update, upsert, and their bulk variants. + +## Single document operations {% #single-document-operations %} + +When working with individual documents, you can set custom timestamps during create, update, and upsert operations. + +### Create with custom timestamps {% #create-custom %} + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +const documentsDB = new sdk.DocumentsDB(client); + +await documentsDB.createDocument({ + databaseId: '', + collectionId: '', + documentId: sdk.ID.unique(), + data: { + '$createdAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + '$updatedAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + // ...your attributes + } +}); +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\DocumentsDB; + +$client = (new Client()) + ->setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$documentsDB = new DocumentsDB($client); + +$documentsDB->createDocument( + databaseId: '', + collectionId: '', + documentId: ID::unique(), + data: [ + '$createdAt' => (new DateTime(''))->format(DATE_ATOM), + '$updatedAt' => (new DateTime(''))->format(DATE_ATOM), + // ...your attributes + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let documentsDB = DocumentsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let customDate = isoFormatter.date(from: "") ?? Date() +let createdAt = isoFormatter.string(from: customDate) +let updatedAt = isoFormatter.string(from: customDate) + +do { + let created = try await documentsDB.createDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: [ + "$createdAt": createdAt, + "$updatedAt": updatedAt, + // ...your attributes + ] + ) + print("Created:", created) +} catch { + print("Create error:", error) +} +``` +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.id import ID +from datetime import datetime, timezone + +client = Client() +client.set_endpoint('https://.cloud.appwrite.io/v1') +client.set_project('') +client.set_key('') + +documents_db = DocumentsDB(client) + +iso = datetime(2025, 8, 10, 12, 34, 56, tzinfo=timezone.utc).isoformat() + +documents_db.create_document( + database_id='', + collection_id='', + document_id=ID.unique(), + data={ + '$createdAt': iso, + '$updatedAt': iso, + # ...your attributes + } +) +``` +```server-ruby +require 'appwrite' +require 'time' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +documents_db = DocumentsDB.new(client) + +custom_date = Time.parse('2025-08-10T12:34:56.000Z').iso8601 + +documents_db.create_document( + database_id: '', + collection_id: '', + document_id: ID.unique(), + data: { + '$createdAt' => custom_date, + '$updatedAt' => custom_date, + # ...your attributes + } +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +DocumentsDB documentsDB = new DocumentsDB(client); + +string customDate = DateTimeOffset.Parse("2025-08-10T12:34:56.000Z").ToString("O"); + +await documentsDB.CreateDocument( + databaseId: "", + collectionId: "", + documentId: ID.Unique(), + data: new Dictionary + { + ["$createdAt"] = customDate, + ["$updatedAt"] = customDate, + // ...your attributes + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +DocumentsDB documentsDB = DocumentsDB(client); + +String customDate = DateTime.parse('2025-08-10T12:34:56.000Z').toIso8601String(); + +await documentsDB.createDocument( + databaseId: '', + collectionId: '', + documentId: ID.unique(), + data: { + '\$createdAt': customDate, + '\$updatedAt': customDate, + // ...your attributes + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_document( + "", + "", + &ID::unique(), + json!({ + "$createdAt": "2025-08-10T12:34:56.000Z", + "$updatedAt": "2025-08-10T12:34:56.000Z" + // ...your attributes + }), + None, + None, + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +### Update with custom timestamps {% #update-custom %} + +When updating documents, you can also set a custom `$updatedAt` timestamp: + +{% multicode %} +```server-nodejs +await documentsDB.updateDocument({ + databaseId: '', + collectionId: '', + documentId: '', + data: { + '$updatedAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + // ...your attributes + } +}); +``` +```server-php +$documentsDB->updateDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: [ + '$updatedAt' => (new DateTime(''))->format(DATE_ATOM), + // ...your attributes + ] +); +``` +```server-python +from datetime import datetime, timezone + +documents_db.update_document( + database_id='', + collection_id='', + document_id='', + data={ + '$updatedAt': datetime(2025, 8, 10, 12, 34, 56, tzinfo=timezone.utc).isoformat(), + # ...your attributes + } +) +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let documentsDB = DocumentsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let updatedAt = isoFormatter.string(from: isoFormatter.date(from: "") ?? Date()) + +do { + let updated = try await documentsDB.updateDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: [ + "$updatedAt": updatedAt, + // ...your attributes + ] + ) + print("Updated:", updated) +} catch { + print("Update error:", error) +} +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +documents_db = DocumentsDB.new(client) + +custom_date = Time.parse('').iso8601 + +documents_db.update_document( + database_id: '', + collection_id: '', + document_id: '', + data: { + '$updatedAt' => custom_date, + # ...your attributes + } +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +DocumentsDB documentsDB = new DocumentsDB(client); + +string customDate = DateTimeOffset.Parse("").ToString("O"); + +await documentsDB.UpdateDocument( + databaseId: "", + collectionId: "", + documentId: "", + data: new Dictionary + { + ["$updatedAt"] = customDate, + // ...your attributes + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +DocumentsDB documentsDB = DocumentsDB(client); + +String customDate = DateTime.parse('').toIso8601String(); + +await documentsDB.updateDocument( + databaseId: '', + collectionId: '', + documentId: '', + data: { + '\$updatedAt': customDate, + // ...your attributes + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.update_document( + "", + "", + "", + Some(json!({ + "$updatedAt": "2025-08-10T12:34:56.000Z" + // ...your attributes + })), + None, + None, + ).await?; + + println!("Updated: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Bulk operations {% #bulk-operations %} + +Custom timestamps also work with bulk operations, allowing you to set different timestamps for each document in the batch: + +### Bulk create {% #bulk-create %} + +{% multicode %} +```server-nodejs +await documentsDB.createDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { + '$id': sdk.ID.unique(), + '$createdAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + // ...your attributes + }, + { + '$id': sdk.ID.unique(), + '$createdAt': new Date('2024-02-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2024-02-01T00:00:00.000Z').toISOString(), + // ...your attributes + } + ] +}); +``` +```server-python +documents_db.create_documents( + database_id='', + collection_id='', + documents=[ + { + '$id': ID.unique(), + '$createdAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + # ...your attributes + }, + { + '$id': ID.unique(), + '$createdAt': datetime(2024, 2, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2024, 2, 1, tzinfo=timezone.utc).isoformat(), + # ...your attributes + } + ] +) +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\DocumentsDB; + +$client = (new Client()) + ->setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$documentsDB = new DocumentsDB($client); + +$documentsDB->createDocuments( + databaseId: '', + collectionId: '', + documents: [ + [ + '$id' => ID::unique(), + '$createdAt' => (new DateTime(''))->format(DATE_ATOM), + '$updatedAt' => (new DateTime(''))->format(DATE_ATOM), + // ...your attributes + ], + [ + '$id' => ID::unique(), + '$createdAt' => (new DateTime(''))->format(DATE_ATOM), + '$updatedAt' => (new DateTime(''))->format(DATE_ATOM), + // ...your attributes + ], + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let documentsDB = DocumentsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + +let first = isoFormatter.string(from: isoFormatter.date(from: "") ?? Date()) +let second = isoFormatter.string(from: isoFormatter.date(from: "") ?? Date()) + +do { + let bulkCreated = try await documentsDB.createDocuments( + databaseId: "", + collectionId: "", + documents: [ + [ + "$id": ID.unique(), + "$createdAt": first, + "$updatedAt": first, + // ...your attributes + ], + [ + "$id": ID.unique(), + "$createdAt": second, + "$updatedAt": second, + // ...your attributes + ] + ] + ) + print("Bulk create:", bulkCreated) +} catch { + print("Bulk create error:", error) +} +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +documents_db = DocumentsDB.new(client) + +first = Time.parse('').iso8601 +second = Time.parse('').iso8601 + +documents_db.create_documents( + database_id: '', + collection_id: '', + documents: [ + { + '$id' => ID.unique(), + '$createdAt' => first, + '$updatedAt' => first, + # ...your attributes + }, + { + '$id' => ID.unique(), + '$createdAt' => second, + '$updatedAt' => second, + # ...your attributes + } + ] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +DocumentsDB documentsDB = new DocumentsDB(client); + +string first = DateTimeOffset.Parse("").ToString("O"); +string second = DateTimeOffset.Parse("").ToString("O"); + +await documentsDB.CreateDocuments( + databaseId: "", + collectionId: "", + documents: new List + { + new Dictionary + { + ["$id"] = ID.Unique(), + ["$createdAt"] = first, + ["$updatedAt"] = first, + // ...your attributes + }, + new Dictionary + { + ["$id"] = ID.Unique(), + ["$createdAt"] = second, + ["$updatedAt"] = second, + // ...your attributes + } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +DocumentsDB documentsDB = DocumentsDB(client); + +String first = DateTime.parse('').toIso8601String(); +String second = DateTime.parse('').toIso8601String(); + +await documentsDB.createDocuments( + databaseId: '', + collectionId: '', + documents: [ + { + '\$id': ID.unique(), + '\$createdAt': first, + '\$updatedAt': first, + // ...your attributes + }, + { + '\$id': ID.unique(), + '\$createdAt': second, + '\$updatedAt': second, + // ...your attributes + } + ], +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_documents( + "", + "", + vec![ + json!({ + "$id": ID::unique(), + "$createdAt": "2024-01-01T00:00:00.000Z", + "$updatedAt": "2024-01-01T00:00:00.000Z" + // ...your attributes + }), + json!({ + "$id": ID::unique(), + "$createdAt": "2024-02-01T00:00:00.000Z", + "$updatedAt": "2024-02-01T00:00:00.000Z" + // ...your attributes + }), + ], + None, + ).await?; + + println!("Bulk create: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +### Bulk upsert {% #bulk-upsert %} + +{% multicode %} +```server-nodejs +await documentsDB.upsertDocuments({ + databaseId: '', + collectionId: '', + documents: [ + { + '$id': '', + '$createdAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2025-01-01T00:00:00.000Z').toISOString(), + // ...your attributes + } + ] +}); +``` +```server-python +documents_db.upsert_documents( + database_id='', + collection_id='', + documents=[ + { + '$id': '', + '$createdAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2025, 1, 1, tzinfo=timezone.utc).isoformat(), + # ...your attributes + } + ] +) +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\DocumentsDB; + +$client = (new Client()) + ->setEndpoint('https://.cloud.appwrite.io/v1') + ->setProject('') + ->setKey(''); + +$documentsDB = new DocumentsDB($client); + +$documentsDB->upsertDocuments( + databaseId: '', + collectionId: '', + documents: [ + [ + '$id' => '', + '$createdAt' => (new DateTime(''))->format(DATE_ATOM), + '$updatedAt' => (new DateTime(''))->format(DATE_ATOM), + // ...your attributes + ], + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://.cloud.appwrite.io/v1") + .setProject("") + .setKey("") + +let documentsDB = DocumentsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let createdAt = isoFormatter.string(from: isoFormatter.date(from: "") ?? Date()) +let updatedAt = isoFormatter.string(from: isoFormatter.date(from: "") ?? Date()) + +do { + let bulkUpserted = try await documentsDB.upsertDocuments( + databaseId: "", + collectionId: "", + documents: [ + [ + "$id": "", + "$createdAt": createdAt, + "$updatedAt": updatedAt, + // ...your attributes + ] + ] + ) + print("Bulk upsert:", bulkUpserted) +} catch { + print("Bulk upsert error:", error) +} +``` +```server-ruby +require 'appwrite' +require 'time' + +include Appwrite + +client = Client.new + .set_endpoint('https://.cloud.appwrite.io/v1') + .set_project('') + .set_key('') + +documents_db = DocumentsDB.new(client) + +custom_date = Time.parse('').iso8601 + +documents_db.upsert_documents( + database_id: '', + collection_id: '', + documents: [ + { + '$id' => '', + '$createdAt' => custom_date, + '$updatedAt' => custom_date, + # ...your attributes + } + ] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://.cloud.appwrite.io/v1") + .SetProject("") + .SetKey(""); + +DocumentsDB documentsDB = new DocumentsDB(client); + +string createdAt = DateTimeOffset.Parse("").ToString("O"); +string updatedAt = DateTimeOffset.Parse("").ToString("O"); + +await documentsDB.UpsertDocuments( + databaseId: "", + collectionId: "", + documents: new List + { + new Dictionary + { + ["$id"] = "", + ["$createdAt"] = createdAt, + ["$updatedAt"] = updatedAt, + // ...your attributes + } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://.cloud.appwrite.io/v1') + .setProject('') + .setKey(''); + +DocumentsDB documentsDB = DocumentsDB(client); + +String createdAt = DateTime.parse('').toIso8601String(); +String updatedAt = DateTime.parse('').toIso8601String(); + +await documentsDB.upsertDocuments( + databaseId: '', + collectionId: '', + documents: [ + { + '\$id': '', + '\$createdAt': createdAt, + '\$updatedAt': updatedAt, + // ...your attributes + } + ], +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let client = Client::new() + .set_endpoint("https://.cloud.appwrite.io/v1") + .set_project("") + .set_key(""); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.upsert_documents( + "", + "", + vec![ + json!({ + "$id": "", + "$createdAt": "2024-01-01T00:00:00.000Z", + "$updatedAt": "2025-01-01T00:00:00.000Z" + // ...your attributes + }), + ], + None, + ).await?; + + println!("Bulk upsert: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +# Common use cases {% #use-cases %} + +Custom timestamps are particularly useful in several scenarios: + +## Data migration {% #data-migration %} +When migrating existing data from another system, you can preserve the original +creation and modification times: + +{% multicode %} +```server-nodejs +await documentsDB.createDocument({ + databaseId: '', + collectionId: 'blog_posts', + documentId: sdk.ID.unique(), + data: { + '$createdAt': '', + '$updatedAt': '', + title: '', + content: '<CONTENT>' + } +}); +``` +```server-php +$documentsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'blog_posts', + documentId: ID::unique(), + data: [ + '$createdAt' => '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt' => '<LAST_MODIFIED_ISO>', + 'title' => '<TITLE>', + 'content' => '<CONTENT>' + ] +); +``` +```server-swift +let _ = try await documentsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "blog_posts", + documentId: ID.unique(), + data: [ + "$createdAt": "<ORIGINAL_CREATED_AT_ISO>", + "$updatedAt": "<LAST_MODIFIED_ISO>", + "title": "<TITLE>", + "content": "<CONTENT>" + ] +) +``` +```server-python +documents_db.create_document( + database_id='<DATABASE_ID>', + collection_id='blog_posts', + document_id=ID.unique(), + data={ + '$createdAt': '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt': '<LAST_MODIFIED_ISO>', + 'title': '<TITLE>', + 'content': '<CONTENT>' + } +) +``` +```server-ruby +documents_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: 'blog_posts', + document_id: ID.unique(), + data: { + '$createdAt' => '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt' => '<LAST_MODIFIED_ISO>', + 'title' => '<TITLE>', + 'content' => '<CONTENT>' + } +) +``` +```server-dotnet +await documentsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "blog_posts", + documentId: ID.Unique(), + data: new Dictionary<string, object> + { + ["$createdAt"] = "<ORIGINAL_CREATED_AT_ISO>", + ["$updatedAt"] = "<LAST_MODIFIED_ISO>", + ["title"] = "<TITLE>", + ["content"] = "<CONTENT>" + } +); +``` +```server-dart +await documentsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'blog_posts', + documentId: ID.unique(), + data: { + '\$createdAt': '<ORIGINAL_CREATED_AT_ISO>', + '\$updatedAt': '<LAST_MODIFIED_ISO>', + 'title': '<TITLE>', + 'content': '<CONTENT>' + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_document( + "<DATABASE_ID>", + "blog_posts", + &ID::unique(), + json!({ + "$createdAt": "<ORIGINAL_CREATED_AT_ISO>", + "$updatedAt": "<LAST_MODIFIED_ISO>", + "title": "<TITLE>", + "content": "<CONTENT>" + }), + None, + None, + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Backdating records {% #backdating %} +For historical data entry or when creating records that represent past events: + +{% multicode %} +```server-nodejs +await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: 'transactions', + documentId: sdk.ID.unique(), + data: { + '$createdAt': '2023-12-31T23:59:59.000Z', + '$updatedAt': '2023-12-31T23:59:59.000Z', + amount: 1000, + type: 'year-end-bonus' + } +}); +``` +```server-php +$documentsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'transactions', + documentId: ID::unique(), + data: [ + '$createdAt' => '2023-12-31T23:59:59.000Z', + '$updatedAt' => '2023-12-31T23:59:59.000Z', + 'amount' => 1000, + 'type' => 'year-end-bonus' + ] +); +``` +```server-swift +let _ = try await documentsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "transactions", + documentId: ID.unique(), + data: [ + "$createdAt": "2023-12-31T23:59:59.000Z", + "$updatedAt": "2023-12-31T23:59:59.000Z", + "amount": 1000, + "type": "year-end-bonus" + ] +) +``` +```server-python +documents_db.create_document( + database_id='<DATABASE_ID>', + collection_id='transactions', + document_id=ID.unique(), + data={ + '$createdAt': '2023-12-31T23:59:59.000Z', + '$updatedAt': '2023-12-31T23:59:59.000Z', + 'amount': 1000, + 'type': 'year-end-bonus' + } +) +``` +```server-ruby +documents_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: 'transactions', + document_id: ID.unique(), + data: { + '$createdAt' => '2023-12-31T23:59:59.000Z', + '$updatedAt' => '2023-12-31T23:59:59.000Z', + 'amount' => 1000, + 'type' => 'year-end-bonus' + } +) +``` +```server-dotnet +await documentsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "transactions", + documentId: ID.Unique(), + data: new Dictionary<string, object> + { + ["$createdAt"] = "2023-12-31T23:59:59.000Z", + ["$updatedAt"] = "2023-12-31T23:59:59.000Z", + ["amount"] = 1000, + ["type"] = "year-end-bonus" + } +); +``` +```server-dart +await documentsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'transactions', + documentId: ID.unique(), + data: { + '\$createdAt': '2023-12-31T23:59:59.000Z', + '\$updatedAt': '2023-12-31T23:59:59.000Z', + 'amount': 1000, + 'type': 'year-end-bonus' + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_document( + "<DATABASE_ID>", + "transactions", + &ID::unique(), + json!({ + "$createdAt": "2023-12-31T23:59:59.000Z", + "$updatedAt": "2023-12-31T23:59:59.000Z", + "amount": 1000, + "type": "year-end-bonus" + }), + None, + None, + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Synchronization {% #synchronization %} +When synchronizing data between systems while maintaining timestamp consistency: + +{% multicode %} +```server-nodejs +await documentsDB.upsertDocument({ + databaseId: '<DATABASE_ID>', + collectionId: 'users', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + profile: '<PROFILE_DATA>' + } +}); +``` +```server-php +$documentsDB->upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'users', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: [ + '$updatedAt' => '<EXTERNAL_LAST_MODIFIED_ISO>', + 'profile' => '<PROFILE_DATA>' + ] +); +``` +```server-swift +let _ = try await documentsDB.upsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "users", + documentId: "<DOCUMENT_ID_OR_NEW_ID>", + data: [ + "$updatedAt": "<EXTERNAL_LAST_MODIFIED_ISO>", + "profile": "<PROFILE_DATA>" + ] +) +``` +```server-python +documents_db.upsert_document( + database_id='<DATABASE_ID>', + collection_id='users', + document_id='<DOCUMENT_ID_OR_NEW_ID>', + data={ + '$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + 'profile': '<PROFILE_DATA>' + } +) +``` +```server-ruby +documents_db.upsert_document( + database_id: '<DATABASE_ID>', + collection_id: 'users', + document_id: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '$updatedAt' => '<EXTERNAL_LAST_MODIFIED_ISO>', + 'profile' => '<PROFILE_DATA>' + } +) +``` +```server-dotnet +await documentsDB.UpsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "users", + documentId: "<DOCUMENT_ID_OR_NEW_ID>", + data: new Dictionary<string, object> + { + ["$updatedAt"] = "<EXTERNAL_LAST_MODIFIED_ISO>", + ["profile"] = "<PROFILE_DATA>" + } +); +``` +```server-dart +await documentsDB.upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: 'users', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '\$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + 'profile': '<PROFILE_DATA>' + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.upsert_document( + "<DATABASE_ID>", + "users", + "<DOCUMENT_ID_OR_NEW_ID>", + Some(json!({ + "$updatedAt": "<EXTERNAL_LAST_MODIFIED_ISO>", + "profile": "<PROFILE_DATA>" + })), + None, + None, + ).await?; + + println!("Upserted: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +{% info title="Timestamp format and usage" %} +- Values must be valid ISO 8601 date-time strings (UTC recommended). Using `toISOString()` (JavaScript) or `datetime.isoformat()` (Python) is a good default. +- You can set either or both attributes as needed. If omitted, Appwrite sets them automatically. +{% /info %} diff --git a/src/routes/docs/products/databases/documentsdb/transactions/+page.markdoc b/src/routes/docs/products/databases/documentsdb/transactions/+page.markdoc new file mode 100644 index 0000000000..be64977d0a --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/transactions/+page.markdoc @@ -0,0 +1,1274 @@ +--- +layout: article +title: Transactions +description: Stage multiple database operations and commit them atomically. Group changes across databases and collections with ordering, isolation, and conflict detection. +--- + +Transactions let you stage multiple database operations and apply them together, atomically. Use transactions to keep related changes consistent, even when they span multiple databases and collections. + +# How transactions work {% #how-transactions-work %} + +1. Call the [createTransaction](#create-a-transaction) method to create a transaction. This will return a transaction model, including its ID. +2. Stage operations by passing the `transactionId` parameter to supported document, bulk, and atomic numeric methods. You can stage many operations at once with the [createOperations](#create-operations) method. +3. Call the [updateTransaction](#update-transaction) method to commit or roll back. + +On commit, Appwrite replays all staged logs in order inside a real database transaction. Staged operations see earlier staged changes (read your own writes). If any affected document changed outside your transaction, the commit fails with a conflict. + +{% info title="Scope and limitations" %} +You can stage operations across any database and collection within the same transaction. Schema operations (for example, creating or deleting indexes) are not included in transactions. +{% /info %} + +# Limits {% #limits %} + +The maximum number of operations you can stage per transaction depends on your plan: + +| Plan | Max operations per transaction | +|------|-------------------------------| +| Free | 100 | +| Pro | 1,000 | + +# Create a transaction {% #create-a-transaction %} + +Call the `createTransaction` method to begin. It returns a transaction model that includes `$id`. Pass this ID as `transactionId` to subsequent operations. + +{% multicode %} +```client-web +import { Client, DocumentsDB } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + +const documentsDB = new DocumentsDB(client); + +const tx = await documentsDB.createTransaction(); +// tx.$id is your transactionId +``` +```client-react-native +import { Client, DocumentsDB } from 'react-native-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + +const documentsDB = new DocumentsDB(client); + +const tx = await documentsDB.createTransaction(); +// tx.$id is your transactionId +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + +final documentsDB = DocumentsDB(client); + +final tx = await documentsDB.createTransaction(); +// tx.$id is your transactionId +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + +let documentsDB = DocumentsDB(client) + +let tx = try await documentsDB.createTransaction() +// tx.$id is your transactionId +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client(applicationContext) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + +val documentsDB = DocumentsDB(client) + +val tx = documentsDB.createTransaction() +// tx.$id is your transactionId +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.services.DocumentsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>"); + +DocumentsDB documentsDB = new DocumentsDB(client); + +// Create a transaction (asynchronous) +documentsDB.createTransaction(new CoroutineCallback<>((tx, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(tx); +})); +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const documentsDB = new sdk.DocumentsDB(client); + +const tx = await documentsDB.createTransaction(); +// tx.$id is your transactionId +``` +```server-deno +import * as sdk from 'npm:node-appwrite'; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const documentsDB = new sdk.DocumentsDB(client); + +const tx = await documentsDB.createTransaction(); +// tx.$id is your transactionId +``` +```server-python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +documents_db = DocumentsDB(client) + +tx = documents_db.create_transaction() +# tx.$id is your transactionId +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\DocumentsDB; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<API_KEY>') +; + +$documentsDB = new DocumentsDB($client); + +$tx = $documentsDB->createTransaction(); +// $tx->\$id is your transactionId +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<API_KEY>') + +documents_db = DocumentsDB.new(client) + +tx = documents_db.create_transaction +# tx['$id'] is your transactionId +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +var client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<API_KEY>"); + +var documentsDB = new DocumentsDB(client); + +var tx = await documentsDB.CreateTransaction(); +// tx.$id is your transactionId +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +void main() async { + Client client = Client(); + DocumentsDB documentsDB = DocumentsDB(client); + + client + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + + final tx = await documentsDB.createTransaction(); + // tx contains the transaction ID +} +``` +```server-go +package main + +import ( + "log" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<API_KEY>"), + ) + + documentsDB := appwrite.NewDocumentsDB(client) + + tx, err := documentsDB.CreateTransaction() + if err != nil { log.Fatal(err) } + _ = tx +} +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<API_KEY>") + +let documentsDB = DocumentsDB(client) + +let tx = try await documentsDB.createTransaction() +// tx.$id is your transactionId +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.DocumentsDB + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<API_KEY>") + +val documentsDB = DocumentsDB(client) + +val tx = documentsDB.createTransaction() +// tx.$id is your transactionId +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<API_KEY>"); + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.createTransaction(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); +})); +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let tx = documents_db.create_transaction(None).await?; + // tx.id is your transaction_id + + Ok(()) +} +``` +{% /multicode %} + +# Stage operations {% #stage-operations %} + +Add the `transactionId` parameter to supported methods to stage them instead of immediately persisting. + +When you pass `transactionId`, Appwrite writes the operation to an internal staging area. The target collection is not modified until you commit the transaction. + +## Stage single operations {% #stage-single-operations %} + +Create, update, upsert, delete, and atomic numeric operations accept `transactionId`, as well as their bulk versions (createDocuments, updateDocuments, upsertDocuments, deleteDocuments). + +{% multicode %} +```client-web +// Create inside a transaction +await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { name: 'Walter' }, + transactionId: tx.$id +}); + +// Increment inside a transaction +await documentsDB.incrementDocumentAttribute({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: tx.$id +}); +``` +```client-flutter +// Create inside a transaction +await documentsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { 'name': 'Walter' }, + transactionId: tx.$id +); + +// Increment inside a transaction +await documentsDB.incrementDocumentAttribute( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: tx.$id +); +``` +```client-apple +// Create inside a transaction +try await documentsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: ["name": "Walter"], + transactionId: tx.$id +) + +// Increment inside a transaction +try await documentsDB.incrementDocumentAttribute( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + attribute: "credits", + value: 1, + transactionId: tx.$id +) +``` +```server-kotlin +// Create inside a transaction +documentsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + data = mapOf("name" to "Walter"), + transactionId = tx.$id +) + +// Increment inside a transaction +documentsDB.incrementDocumentAttribute( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + attribute = "credits", + value = 1, + transactionId = tx.$id +) +``` +```server-java +// Create inside a transaction (asynchronous) +documentsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Map.of("name", "Walter"), + "<TRANSACTION_ID>", + new CoroutineCallback<>((document, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(document); + return null; + }) +); + +// Increment inside a transaction (asynchronous) +documentsDB.incrementDocumentAttribute( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + "credits", + 1, + "<TRANSACTION_ID>", + new CoroutineCallback<>((document, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(document); + return null; + }) +); +``` +```client-react-native +// Create inside a transaction +await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { name: 'Walter' }, + transactionId: tx.$id +}); + +// Increment inside a transaction +await documentsDB.incrementDocumentAttribute({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: tx.$id +}); +``` +```server-nodejs +// Update inside a transaction +await documentsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { plan: 'pro' }, + transactionId: tx.$id +}); + +// Delete inside a transaction +await documentsDB.deleteDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +}); +``` +```server-python +# Upsert inside a transaction +documents_db.upsert_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + data = { 'name': 'Walter' }, + transaction_id = tx.id +) + +# Decrement inside a transaction +documents_db.decrement_document_attribute( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + attribute = 'credits', + value = 1, + transaction_id = tx.id +) +``` +```server-php +// Create inside a transaction +$documentsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: ['name' => 'Walter'], + transactionId: $tx['$id'] +); + +// Increment inside a transaction +$documentsDB->incrementDocumentAttribute( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: $tx['$id'] +); +``` +```server-ruby +# Create inside a transaction +documents_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + data: { 'name' => 'Walter' }, + transaction_id: tx['$id'] +) + +# Increment inside a transaction +documents_db.increment_document_attribute( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transaction_id: tx['$id'] +) +``` +```server-dotnet +// Create inside a transaction +await documentsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: new Dictionary<string, object> { ["name"] = "Walter" }, + transactionId: tx.Id +); + +// Increment inside a transaction +await documentsDB.IncrementDocumentAttribute( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + attribute: "credits", + value: 1, + transactionId: tx.Id +); +``` +```server-dart +// Create inside a transaction +await documentsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { 'name': 'Walter' }, + transactionId: tx.Id +); + +// Increment inside a transaction +await documentsDB.incrementDocumentAttribute( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: tx.Id +); +``` +```server-deno +// Create inside a transaction +await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { name: 'Walter' }, + transactionId: tx.$id +}); + +// Increment inside a transaction +await documentsDB.incrementDocumentAttribute({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + attribute: 'credits', + value: 1, + transactionId: tx.$id +}); +``` +```server-swift +// Create inside a transaction +try await documentsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: ["name": "Walter"], + transactionId: tx.$id +) + +// Increment inside a transaction +try await documentsDB.incrementDocumentAttribute( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + attribute: "credits", + value: 1, + transactionId: tx.$id +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let tx = documents_db.create_transaction(None).await?; + + // Update inside a transaction + documents_db.update_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(json!({ "plan": "pro" })), + None, + Some(&tx.id), + ).await?; + + // Delete inside a transaction + documents_db.delete_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(&tx.id), + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +## Stage many with createOperations {% #create-operations %} + +Use the `createOperations` method to stage multiple operations across databases and collections in a single request. Provide an array of operation objects: + +```json +[ + { + "action": "create|update|upsert|increment|decrement|delete|bulkCreate|bulkUpdate|bulkUpsert|bulkDelete", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID>", + "data": {} + } +] +``` + +### Provide data for each action (createOperations) {% #provide-data-for-each-action %} + +### Create, update, and upsert {% #create-update-upsert %} +Pass a raw data object. +```json +{ "name": "Walter" } +``` + +### Increment and decrement {% #increment-decrement %} +Pass a value and optionally `min`/`max` bounds. +```json +{ "value": 1, "min": 0, "max": 1000, "attribute": "<ATTRIBUTE_NAME>" } +``` + +### Bulk create and bulk upsert {% #bulk-create-upsert %} +Pass an array of raw data objects. +```json +[{ "$id": "123", "name": "Walter" }] +``` + +### Bulk update {% #bulk-update %} +Pass queries and the data to apply. +```json +{ "queries": [{"method": "equal", "attribute": "status", "values": ["draft"]}], "data": { "status": "published" } } +``` + +### Bulk delete {% #bulk-delete %} +Pass queries to select documents to delete. +```json +{ "queries": [{"method": "equal", "attribute": "archived", "values": [true]}] } +``` + +{% multicode %} +```server-nodejs +// Stage multiple operations at once +await documentsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'create', + databaseId: '<DB_A>', + collectionId: '<COLLECTION_1>', + documentId: 'u1', + data: { name: 'Walter' } + }, + { + action: 'increment', + databaseId: '<DB_B>', + collectionId: '<COLLECTION_2>', + documentId: 'u2', + data: { value: 1, min: 0, attribute: 'credits' } + } + ] +}); +``` +```server-python +documents_db.create_operations( + transaction_id = tx.id, + operations = [ + { + 'action': 'create', + 'databaseId': '<DB_A>', + 'collectionId': '<COLLECTION_1>', + 'documentId': 'u1', + 'data': { 'name': 'Walter' } + }, + { + 'action': 'increment', + 'databaseId': '<DB_B>', + 'collectionId': '<COLLECTION_2>', + 'documentId': 'u2', + 'data': { 'value': 1, 'min': 0, 'attribute': 'credits' } + } + ] +) +``` +```client-web +await documentsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'create', + databaseId: '<DB_A>', + collectionId: '<COLLECTION_1>', + documentId: 'u1', + data: { name: 'Walter' } + }, + { + action: 'increment', + databaseId: '<DB_B>', + collectionId: '<COLLECTION_2>', + documentId: 'u2', + data: { value: 1, min: 0, attribute: 'credits' } + } + ] +}); +``` +```client-flutter +await documentsDB.createOperations( + transactionId: tx.$id, + operations: [ + { + 'action': 'create', + 'databaseId': '<DB_A>', + 'collectionId': '<COLLECTION_1>', + 'documentId': 'u1', + 'data': { 'name': 'Walter' } + }, + { + 'action': 'increment', + 'databaseId': '<DB_B>', + 'collectionId': '<COLLECTION_2>', + 'documentId': 'u2', + 'data': { 'value': 1, 'min': 0, 'attribute': 'credits' } + } + ], +); +``` +```client-apple +try await documentsDB.createOperations( + transactionId: tx.$id, + operations: [ + [ + "action": "create", + "databaseId": "<DB_A>", + "collectionId": "<COLLECTION_1>", + "documentId": "u1", + "data": ["name": "Walter"] + ], + [ + "action": "increment", + "databaseId": "<DB_B>", + "collectionId": "<COLLECTION_2>", + "documentId": "u2", + "data": ["value": 1, "min": 0, "attribute": "credits"] + ] + ] +) +``` +```server-kotlin +documentsDB.createOperations( + transactionId = tx.$id, + operations = listOf( + mapOf( + "action" to "create", + "databaseId" to "<DB_A>", + "collectionId" to "<COLLECTION_1>", + "documentId" to "u1", + "data" to mapOf("name" to "Walter") + ), + mapOf( + "action" to "increment", + "databaseId" to "<DB_B>", + "collectionId" to "<COLLECTION_2>", + "documentId" to "u2", + "data" to mapOf("value" to 1, "min" to 0, "attribute" to "credits") + ) + ) +) +``` +```server-java +// Stage multiple operations at once (asynchronous) +List<Map<String, Object>> operations = Arrays.asList( + Map.of( + "action", "create", + "databaseId", "<DB_A>", + "collectionId", "<COLLECTION_1>", + "documentId", "u1", + "data", Map.of("name", "Walter") + ), + Map.of( + "action", "increment", + "databaseId", "<DB_B>", + "collectionId", "<COLLECTION_2>", + "documentId", "u2", + "data", Map.of("value", 1, "min", 0, "attribute", "credits") + ) +); + +documentsDB.createOperations( + "<TRANSACTION_ID>", + operations, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); +``` +```client-react-native +await documentsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'create', + databaseId: '<DB_A>', + collectionId: '<COLLECTION_1>', + documentId: 'u1', + data: { name: 'Walter' } + }, + { + action: 'increment', + databaseId: '<DB_B>', + collectionId: '<COLLECTION_2>', + documentId: 'u2', + data: { value: 1, min: 0, attribute: 'credits' } + } + ] +}); +``` +```server-deno +await documentsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'create', + databaseId: '<DB_A>', + collectionId: '<COLLECTION_1>', + documentId: 'u1', + data: { name: 'Walter' } + }, + { + action: 'increment', + databaseId: '<DB_B>', + collectionId: '<COLLECTION_2>', + documentId: 'u2', + data: { value: 1, min: 0, attribute: 'credits' } + } + ] +}); +``` +```server-php +$documentsDB->createOperations( + transactionId: $tx['$id'], + operations: [ + [ + 'action' => 'create', + 'databaseId' => '<DB_A>', + 'collectionId' => '<COLLECTION_1>', + 'documentId' => 'u1', + 'data' => [ 'name' => 'Walter' ] + ], + [ + 'action' => 'increment', + 'databaseId' => '<DB_B>', + 'collectionId' => '<COLLECTION_2>', + 'documentId' => 'u2', + 'data' => [ 'value' => 1, 'min' => 0, 'attribute' => 'credits' ] + ] + ] +); +``` +```server-ruby +documents_db.create_operations( + transaction_id: tx['$id'], + operations: [ + { + 'action' => 'create', + 'databaseId' => '<DB_A>', + 'collectionId' => '<COLLECTION_1>', + 'documentId' => 'u1', + 'data' => { 'name' => 'Walter' } + }, + { + 'action' => 'increment', + 'databaseId' => '<DB_B>', + 'collectionId' => '<COLLECTION_2>', + 'documentId' => 'u2', + 'data' => { 'value' => 1, 'min' => 0, 'attribute' => 'credits' } + } + ] +) +``` +```server-dotnet +await documentsDB.CreateOperations( + transactionId: tx.Id, + operations: new List<Dictionary<string, object>> + { + new Dictionary<string, object> + { + ["action"] = "create", + ["databaseId"] = "<DB_A>", + ["collectionId"] = "<COLLECTION_1>", + ["documentId"] = "u1", + ["data"] = new Dictionary<string, object> { ["name"] = "Walter" } + }, + new Dictionary<string, object> + { + ["action"] = "increment", + ["databaseId"] = "<DB_B>", + ["collectionId"] = "<COLLECTION_2>", + ["documentId"] = "u2", + ["data"] = new Dictionary<string, object> { ["value"] = 1, ["min"] = 0, ["attribute"] = "credits" } + } + } +); +``` +```server-dart +await documentsDB.createOperations( + transactionId: tx.Id, + operations: [ + { + 'action': 'create', + 'databaseId': '<DB_A>', + 'collectionId': '<COLLECTION_1>', + 'documentId': 'u1', + 'data': { 'name': 'Walter' } + }, + { + 'action': 'increment', + 'databaseId': '<DB_B>', + 'collectionId': '<COLLECTION_2>', + 'documentId': 'u2', + 'data': { 'value': 1, 'min': 0, 'attribute': 'credits' } + } + ] +); +``` +```server-swift +try await documentsDB.createOperations( + transactionId: tx.$id, + operations: [ + [ + "action": "create", + "databaseId": "<DB_A>", + "collectionId": "<COLLECTION_1>", + "documentId": "u1", + "data": ["name": "Walter"] + ], + [ + "action": "increment", + "databaseId": "<DB_B>", + "collectionId": "<COLLECTION_2>", + "documentId": "u2", + "data": ["value": 1, "min": 0, "attribute": "credits"] + ] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + let tx = documents_db.create_transaction(None).await?; + + // Stage multiple operations at once + documents_db.create_operations( + &tx.id, + Some(vec![ + json!({ + "action": "create", + "databaseId": "<DB_A>", + "collectionId": "<COLLECTION_1>", + "documentId": "u1", + "data": { "name": "Walter" } + }), + json!({ + "action": "increment", + "databaseId": "<DB_B>", + "collectionId": "<COLLECTION_2>", + "documentId": "u2", + "data": { "value": 1, "min": 0, "attribute": "credits" } + }), + ]), + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Commit or roll back {% #commit-or-rollback %} + +When you are done staging operations, call the `updateTransaction` method to finalize the transaction. + +{% multicode %} +```client-web +// Commit +await documentsDB.updateTransaction({ + transactionId: tx.$id, + commit: true +}); + +// Or roll back +await documentsDB.updateTransaction({ + transactionId: tx.$id, + rollback: true +}); +``` +```client-flutter +// Commit +await documentsDB.updateTransaction( + transactionId: tx.$id, + commit: true +); + +// Roll back +await documentsDB.updateTransaction( + transactionId: tx.$id, + rollback: true +); +``` +```client-apple +// Commit +try await documentsDB.updateTransaction( + transactionId: tx.$id, + commit: true +) + +// Roll back +try await documentsDB.updateTransaction( + transactionId: tx.$id, + rollback: true +) +``` +```server-kotlin +// Commit +documentsDB.updateTransaction( + transactionId = tx.$id, + commit = true +) + +// Roll back +documentsDB.updateTransaction( + transactionId = tx.$id, + rollback = true +) +``` +```server-java +// Commit (asynchronous) +documentsDB.updateTransaction( + "<TRANSACTION_ID>", + true, + false, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); + +// Roll back (asynchronous) +documentsDB.updateTransaction( + "<TRANSACTION_ID>", + false, + true, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return null; + } + System.out.println(result); + return null; + }) +); +``` +```client-react-native +// Commit +await documentsDB.updateTransaction({ + transactionId: tx.$id, + commit: true +}); + +// Roll back +await documentsDB.updateTransaction({ + transactionId: tx.$id, + rollback: true +}); +``` +```server-nodejs +// Commit +await documentsDB.updateTransaction({ + transactionId: tx.$id, + commit: true +}); + +// Roll back +await documentsDB.updateTransaction({ + transactionId: tx.$id, + rollback: true +}); +``` +```server-python +# Commit +documents_db.update_transaction( + transaction_id = tx.id, + commit = True +) + +# Roll back +documents_db.update_transaction( + transaction_id = tx.id, + rollback = True +) +``` +```server-php +// Commit +$documentsDB->updateTransaction( + transactionId: $tx['$id'], + commit: true +); + +// Roll back +$documentsDB->updateTransaction( + transactionId: $tx['$id'], + rollback: true +); +``` +```server-ruby +# Commit +documents_db.update_transaction( + transaction_id: tx['$id'], + commit: true +) + +# Roll back +documents_db.update_transaction( + transaction_id: tx['$id'], + rollback: true +) +``` +```server-dotnet +// Commit +await documentsDB.UpdateTransaction( + transactionId: tx.Id, + commit: true +); + +// Roll back +await documentsDB.UpdateTransaction( + transactionId: tx.Id, + rollback: true +); +``` +```server-dart +// Commit +await documentsDB.updateTransaction( + transactionId: tx.Id, + commit: true +); + +// Roll back +await documentsDB.updateTransaction( + transactionId: tx.Id, + rollback: true +); +``` +```server-rust +use appwrite::Client; +use appwrite::services::documents_db::DocumentsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<API_KEY>"); + + let documents_db = DocumentsDB::new(&client); + + // Commit + documents_db.update_transaction( + "<TRANSACTION_ID>", + Some(true), + None, + ).await?; + + // Roll back + documents_db.update_transaction( + "<TRANSACTION_ID>", + None, + Some(true), + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Handle conflicts {% #handle-conflicts %} + +On commit, Appwrite verifies that documents affected by your transaction haven't changed externally since they were staged. If a conflicting change is detected, the commit fails with a conflict error. Resolve the conflict (for example, refetch and re-stage) and try again. + +{% info title="Best practices" %} +Keep transactions short-lived to reduce the likelihood of conflicts. Stage related updates in the order they must be applied. Prefer `createOperations` when you need to stage many changes across multiple collections. +{% /info %} + +{% arrow_link href="/docs/references" %} +Explore the API references +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/tablesdb/backups/+page.markdoc b/src/routes/docs/products/databases/tablesdb/backups/+page.markdoc index 202133529f..6dca288f05 100644 --- a/src/routes/docs/products/databases/tablesdb/backups/+page.markdoc +++ b/src/routes/docs/products/databases/tablesdb/backups/+page.markdoc @@ -8,14 +8,14 @@ Appwrite Backups enable seamless, **encrypted** database backups on Cloud. All backups are **hot** backups, ensuring zero downtime and fast recovery. Learn how to efficiently back up your databases to ensure data security and smooth recovery. -{% info title="Backups are available on Appwrite Cloud for all Pro, Scale, and Enterprise customers." %} +{% info title="Backups are available on Appwrite Cloud for all Pro and Enterprise customers." %} {% /info %} Appwrite Backups allow you to automate database backups using backup policies, supporting pre-defined, custom retention & other options. You can also create manual backups whenever necessary. # Backup policies {% #backup-policies %} -Backup policies allow you to automate your backup process. The Scale and Enterprise plans allow for more customization and offer options like how often backups should occur, how long they should be retained, and when they should run. +Backup policies allow you to automate your backup process. The Enterprise plan allows for more customization and offers options like how often backups should occur, how long they should be retained, and when they should run. ## Creating a backup policy {% #creating-backup-policy %} @@ -40,21 +40,21 @@ To automate your database backups, you need to create backup policies that run a ![Pro plan policy](/images/docs/databases/pro-policy.avif) {% /only_light %} - * On **Scale** and **Enterprise** plans, you get access to more & custom policies\ + * On the **Enterprise** plan, you get access to more & custom policies\   * Select a pre-defined policy {% only_dark %} - ![Scale plan policies](/images/docs/databases/dark/scale-policies.avif) + ![Backup policies](/images/docs/databases/dark/scale-policies.avif) {% /only_dark %} {% only_light %} - ![Scale plan policies](/images/docs/databases/scale-policies.avif) + ![Backup policies](/images/docs/databases/scale-policies.avif) {% /only_light %} * Or create a custom policy and adjust the settings as you like {% only_dark %} - ![Custom policies for Scale plan](/images/docs/databases/dark/scale-custom-policies.avif) + ![Custom backup policies](/images/docs/databases/dark/scale-custom-policies.avif) {% /only_dark %} {% only_light %} - ![Custom policies for Scale plan](/images/docs/databases/scale-custom-policies.avif) + ![Custom backup policies](/images/docs/databases/scale-custom-policies.avif) {% /only_light %} 4. Click on **Create** diff --git a/src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc index 07a93db88c..d157489430 100644 --- a/src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc +++ b/src/routes/docs/products/databases/tablesdb/bulk-operations/+page.markdoc @@ -56,10 +56,10 @@ const client = new sdk.Client() const tablesDB = new sdk.TablesDB(client); -const result = await tablesDB.createRows( - '<DATABASE_ID>', - '<TABLE_ID>', - [ +const result = await tablesDB.createRows({ + databaseId: '<DATABASE_ID>', + tableId: '<TABLE_ID>', + rows: [ { $id: sdk.ID.unique(), name: 'Row 1' @@ -69,7 +69,7 @@ const result = await tablesDB.createRows( name: 'Row 2' } ] -); +}); ``` ```server-python @@ -155,16 +155,16 @@ const client = new sdk.Client() const tablesDB = new sdk.TablesDB(client); -const result = await tablesDB.updateRows( - '<DATABASE_ID>', - '<TABLE_ID>', - { +const result = await tablesDB.updateRows({ + databaseId: '<DATABASE_ID>', + tableId: '<TABLE_ID>', + data: { status: 'published' }, - [ + queries: [ sdk.Query.equal('status', 'draft') ] -); +}); ``` ```server-python @@ -242,10 +242,10 @@ const client = new sdk.Client() const tablesDB = new sdk.TablesDB(client); -const result = await tablesDB.upsertRows( - '<DATABASE_ID>', - '<TABLE_ID>', - [ +const result = await tablesDB.upsertRows({ + databaseId: '<DATABASE_ID>', + tableId: '<TABLE_ID>', + rows: [ { $id: sdk.ID.unique(), name: 'New Row 1' @@ -255,7 +255,7 @@ const result = await tablesDB.upsertRows( name: 'New Row 2' } ] -); +}); ``` ```server-python @@ -342,13 +342,13 @@ const client = new sdk.Client() const tablesDB = new sdk.TablesDB(client); -const result = await tablesDB.deleteRows( - '<DATABASE_ID>', - '<TABLE_ID>', - [ +const result = await tablesDB.deleteRows({ + databaseId: '<DATABASE_ID>', + tableId: '<TABLE_ID>', + queries: [ sdk.Query.equal('status', 'archived') ] -); +}); ``` ```server-python diff --git a/static/images/docs/databases/documentsdb/backup-policy.avif b/static/images/docs/databases/documentsdb/backup-policy.avif new file mode 100644 index 0000000000000000000000000000000000000000..b44ed9afa6b3e8dbd4a45a3d1314fe7a17e6a405 GIT binary patch literal 10913 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/backups-tab.avif b/static/images/docs/databases/documentsdb/backups-tab.avif new file mode 100644 index 0000000000000000000000000000000000000000..29aec532bc7a20143dbfba8f340e88218acaea61 GIT binary patch literal 26847 zcmXu}V~{Y+&NYmVZQHhO+qP|cuCZ;~wr$(CZGZQE&Uw?-Sy`!6CBM>LsQ>@~;F!61 zIvBcHngRSLww7j$|Fdl^4gbeiZB1Pa|L6Zt2rW!(oc@0%0Dyy~vCIFn{~y9RSi0E$ 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 J4&(`B2i)Q|INSgL literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/create-database.avif b/static/images/docs/databases/documentsdb/create-database.avif new file mode 100644 index 0000000000000000000000000000000000000000..4a201bf95547debc4f5f8d931de7205d21a73584 GIT binary patch literal 31320 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%0D85z4Fh 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 Bkput$ literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/dark/backup-policy.avif b/static/images/docs/databases/documentsdb/dark/backup-policy.avif new file mode 100644 index 0000000000000000000000000000000000000000..3e152f6732d9433fda4ff81a128f36f369f710df GIT binary patch literal 11350 zcmXxKV~{31*EQO<ZDZPY_q1)>wmogzwr$(I+M2d)8{gc|Iqyy-Ypq?YD*I1TsU$!^ zKzL>@o(_g?mS#Zz!q(D^=|663Y51RBu{Cuu{4f76h%HQPoc=!w1ms|8?DBv7{}92! z(#7_F0{GuZVrgS<{GSpL00REk{)_kjAAx9e{wY#ROS}I~`oAptKVb^;pX;C3(2bGl zKdNTw;N<WRIV~NG?f)U1p&OHM0QvuHXqL_nrvI6MfWZHCkokWDl7pp(<$oDaC@83Z zfMMxi`+xQSD*`kC1QZB}#>Cdd&;<nu28PSZ{HtIP1P7jo8K5REN(;o;kE8(P3-(N% zj%nf39v|ogyR-_S>eWKi`mR1uhfvfr&5;G$k=EqmcQtW!v3&ZbOLJ`l?wT2b`b2=f zX70>h(sTcJT)esjmv>o&FP^R~7ING6`qhz|Dt?vg)+{h@&~1M`xY;kqs?a035J=?U zB(!XtKMss3IY$ux!NSV6zOz1o5!op~W>hV`kf6fDGhi>k2X}P?h%mD9`UY}ptb)S+ zL*6~+P97l$F@E(;Z6}jAsRz3`tdVB$jTAx+kHUo<mr7Iq5)z53_XhoAi0$%j(3^ut z==I(uUN*$tI+Sae1ZMe=(-e`Pow21dCfy8cADB<BeVH4g5Oe2V?1iy5E3fpLliebj z2;yPD&zz~Os7x92jz0IPO0dE)GP$9+STtkkM3I#lKRkg#1!Gva;febwU<ZWEwxEkA z*trjl$@@Gw$m`Vwz?2xnz8Qf_+*SNxM>IvhGpU44(sRe{zO{-tyg(cbe<JY#23LCP z-kX9#+w_o2Dr95We-3?=cs!4Nt9jpIVay0+VJ^b<f&=|0qr!`ioJY_={OFnj;YTj% zi2-BIMi45QrdAgy6NcYcwudRJ%orZGy3r;DG3W18)?}^ZZ7r8znJpIQn>}F}r`Yc& zsg|cX*YnVDCibfihdF=DQS)HXF-SVLn83%yqS`UZt2<_{UlG?doDXh+Pc377Kq&Hi z$3D+h1xvd*Fh`@lLEx-SF1ZZd4IhJco-K`oVI86nIedWCD=;Ta+(84Q$j3@ewW2)Z zf^19o1g%50WHu9=&>$neQBHq<v9tPsn;XTZ49-*NIB79wK8EC5xTs)b$q0(@0QuGL zfjYxdL-lm+2@TmtgCTjyA}-+on+Y#ASlqIC|IeWh@+*6@xxH$cZbpeTu8SBU5%g&+ zKSqoIGu)Hm+0tGo;abu_HQ2|8?^qS)V}n2MLa6WH^x=*D0^J#qPku2*KG@|Sw$J0` zlz(oN>WL^*ZHy|W%icqwA?~X+;jU`yq8Jf)AG-hi+Ub#TMK*%4U@-67$c4v;z29PZ zYKO`MhSatT?kKCasYi%`R#Lg101900j(&C(B9<47)fm$QB&WLBJIem_I|EZ`Y-XcW z3*4<qRaZ9OOe*a2l@WwswsubA4I5(C4$TXPypd<sgjpYJ?m=^YgDPv}h{eO)5E{sm zeY=9NFKrPEQ;fQ4;%{&bcV{lv5+Ha8)%s-|H6^|8%|g-3oSW~bE1OzhtKqpo*Em?& zbF4%?n+hnnZm2Pwgxm20@NoofMSj5WE;W!c8{sqKtd1(9IA(HgKz-A<S#ScVAd$&g zX6;`-A$RkWy{W*0l`N_Rz>K1<GFEcQT%#vL@hk>TKzAp7f=@@8MQW^-*4M*EDKHGd z@Cs4kros3kHaR@(3!Bg;3cvdE-jtWVh##-0k)A?geF<X9hx^o|BGWg9VPs`VDIFK{ z%v0-^3xY*x^~ZqGtf1cZ#Tc*N!IrwuOc*lMaW}Vx{T4-m9XB^}%9M;L+nY-_Mr$zm zv18c?q+&65cwnI$ou{IWH;u8QG&`8F_o2B=gzgIJW?D|+hFG1YQa_V$1r09L?jUZt zV!3Svgpls)?_9wI(=EVk^m$p64Rm{2CL@Y7-k0zs?|c>2&N>yhx=-HATCL7l6lKQ0 zep*_x&fS+jtast*jDHuDL?q?KS45rz;>IbOhs`sE<7Q5DQ(L6W?UG#L1`KJ9>DH9p zw`xV%!sL%?2Ps5vIt~mix|{^RTX9pZ?#EhBYNGpNstAMvmJH1tW6KWXBPOjI7J9Qu zJ~{2ZFT3w&M5;aA*7`UMkFV*_PSc63J6w6TpGVVyhFX!{dS#4(?M~9=HbP_Z?MLOF z!SfhRtohxE-r&c1H>pqX0!@p=4=%I*`m6_nI&XvL{01u%5GgSMih@HRnUOm4VzoXX zIQAmJ3!h7ZHqfTY?&l74CmXnk<fEZ-GSF8nb#g<wHp69%@%s?yO}qVjqey&S02Jxr zM^G&b%I@_IM1j>5#Yp${dxcwtE9c}H3LIR^Ae2*<d_r*rIO043jv@<qZT}S#Rp$4x z0)e^$2pj>BP-Vlf^b@w+5Z*@!P&XjnyRCxy#w!-Gn$uobdn(-6$sZw(rLiI>K^Lm# z^T@W<f`^46$ugsfgmWjiyqCSow^^0m)kir<{*z*G8dvg3520z3sKsDSI+0+kl|dUU z!i4UCSXnx0`F^o+wX|bH6zpm^KIR!GbBVyL@>xOO_l=lUQ!w_)6H`KRy1{%aj&{k0 zJP3<OQH$UH%NOfB6pO3!#J>!gMepRK`M;K%wOi6Kt476b(_NxKY4j!YJE}W5Rx$;3 zDX+TU=LZ@DF{S+EhSAUxv!yH8@HvMYEz-?2KWWIek?&j@O7niL2&qeI`rIyQ{wbTH zwpRT>U3$@osJCvMcRT~aG#iKxv8TMWH{4l!R{NrMbF9JQmS(WC`E54ta`%1oSv)}X zNl2JkQH?%`XFjkdEvo@mmnX{vnflJgIOOE+Ck5y1*!j!X*O?F1&dg%LP#BGYo}HEU z#><ra{B)>XNJU%$VM=_!Y61lZeoBOCYfLPC4G>LEf%3fC<QCe3QoLz2rY;?hHczHm zDf=2U89U=e7hbZUd-<NJ|IDbd`qyzbXhJBYvBYdG-OJkD@~d~uGAllp(8~!}pQoWf z6~q1p!C!g_NAFZWelvlbUGVB!4g&>uc+hS_Vv|OAbi4DtQ*rl5C#aoG^z|ZD4@mR$ zys8Pz!St~z$d@v#7-;hlO^#&P<?5{Mp}HBmt}(O;&wS9P)2KoU{h`-7wcC3R%W>J5 zAn=@~3p|#7HKnlgLjwqUdUx{meOT&%0D4Hoc}@2Pe9?K-Q|_V?$R8!{Lq3@H_8eG2 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 F{|_n$*Mk56 literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/dark/backups-tab.avif b/static/images/docs/databases/documentsdb/dark/backups-tab.avif new file mode 100644 index 0000000000000000000000000000000000000000..b975ab60a2a1cc63ae0e2471459a75445a4ccb14 GIT binary patch literal 28535 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/dark/create-database.avif b/static/images/docs/databases/documentsdb/dark/create-database.avif new file mode 100644 index 0000000000000000000000000000000000000000..8cfe52aa5ed6d505ef2ba868a2d912a96254e201 GIT binary patch literal 34142 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 BF*pDK literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/dark/manual-backup.avif b/static/images/docs/databases/documentsdb/dark/manual-backup.avif new file mode 100644 index 0000000000000000000000000000000000000000..091f73911ed07848eba43d1d18e6857783484a53 GIT binary patch literal 10490 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb/manual-backup.avif b/static/images/docs/databases/documentsdb/manual-backup.avif new file mode 100644 index 0000000000000000000000000000000000000000..0dc1a93e6dbfa5870d407fe42bb3f109530c0d60 GIT binary patch literal 10120 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 Vl+cu#7+ZGm)Cah&Z{k7w|3AL_cIyBD literal 0 HcmV?d00001 From 424e023486b54d5513616b58f4d6a0dedaf332eb Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 1 Jul 2026 19:19:53 +0530 Subject: [PATCH 04/38] Add VectorsDB documentation section --- .../databases/vectorsdb/+layout.svelte | 76 +- .../databases/vectorsdb/+page.markdoc | 24 +- .../databases/vectorsdb/backups/+page.markdoc | 89 + .../vectorsdb/bulk-operations/+page.markdoc | 475 +++++ .../vectorsdb/collections/+page.markdoc | 1144 ++++++++++ .../vectorsdb/csv-exports/+page.markdoc | 102 + .../vectorsdb/csv-imports/+page.markdoc | 118 ++ .../vectorsdb/databases/+page.markdoc | 975 +++++++++ .../vectorsdb/documents/+page.markdoc | 1541 ++++++++++++++ .../vectorsdb/embeddings/+page.markdoc | 612 ++++++ .../databases/vectorsdb/order/+page.markdoc | 1006 +++++++++ .../vectorsdb/pagination/+page.markdoc | 1041 +++++++++ .../vectorsdb/permissions/+page.markdoc | 1241 +++++++++++ .../databases/vectorsdb/queries/+page.markdoc | 1879 +++++++++++++++++ .../vectorsdb/quick-start/+page.markdoc | 1034 +++++++++ .../timestamp-overrides/+page.markdoc | 1302 ++++++++++++ .../vectorsdb/transactions/+page.markdoc | 1240 +++++++++++ .../vectorsdb/vector-search/+page.markdoc | 556 +++++ 18 files changed, 14451 insertions(+), 4 deletions(-) create mode 100644 src/routes/docs/products/databases/vectorsdb/backups/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/bulk-operations/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/collections/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/csv-exports/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/csv-imports/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/databases/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/documents/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/embeddings/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/order/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/pagination/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/permissions/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/queries/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/quick-start/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/timestamp-overrides/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/transactions/+page.markdoc create mode 100644 src/routes/docs/products/databases/vectorsdb/vector-search/+page.markdoc diff --git a/src/routes/docs/products/databases/vectorsdb/+layout.svelte b/src/routes/docs/products/databases/vectorsdb/+layout.svelte index bd502da28b..174edc4ed4 100644 --- a/src/routes/docs/products/databases/vectorsdb/+layout.svelte +++ b/src/routes/docs/products/databases/vectorsdb/+layout.svelte @@ -6,7 +6,7 @@ const parent: NavParent = { href: '/docs/products/databases', - label: 'Databases' + label: 'VectorsDB' }; const navigation: NavTree = [ @@ -16,6 +16,80 @@ { label: 'Overview', href: '/docs/products/databases/vectorsdb' + }, + { + label: 'Quick start', + href: '/docs/products/databases/vectorsdb/quick-start' + } + ] + }, + { + label: 'Concepts', + items: [ + { + label: 'Databases', + href: '/docs/products/databases/vectorsdb/databases' + }, + { + label: 'Collections', + href: '/docs/products/databases/vectorsdb/collections' + }, + { + label: 'Documents', + href: '/docs/products/databases/vectorsdb/documents' + }, + { + label: 'Embeddings', + href: '/docs/products/databases/vectorsdb/embeddings' + }, + { + label: 'Permissions', + href: '/docs/products/databases/vectorsdb/permissions' + }, + { + label: 'Queries', + href: '/docs/products/databases/vectorsdb/queries' + }, + { + label: 'Order', + href: '/docs/products/databases/vectorsdb/order' + }, + { + label: 'Backups', + href: '/docs/products/databases/vectorsdb/backups' + } + ] + }, + { + label: 'Journeys', + items: [ + { + label: 'Pagination', + href: '/docs/products/databases/vectorsdb/pagination' + }, + { + label: 'Vector search', + href: '/docs/products/databases/vectorsdb/vector-search' + }, + { + label: 'Transactions', + href: '/docs/products/databases/vectorsdb/transactions' + }, + { + label: 'Bulk operations', + href: '/docs/products/databases/vectorsdb/bulk-operations' + }, + { + label: 'Timestamp overrides', + href: '/docs/products/databases/vectorsdb/timestamp-overrides' + }, + { + label: 'CSV imports', + href: '/docs/products/databases/vectorsdb/csv-imports' + }, + { + label: 'CSV exports', + href: '/docs/products/databases/vectorsdb/csv-exports' } ] } diff --git a/src/routes/docs/products/databases/vectorsdb/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/+page.markdoc index f0391bc33d..dcc7f83401 100644 --- a/src/routes/docs/products/databases/vectorsdb/+page.markdoc +++ b/src/routes/docs/products/databases/vectorsdb/+page.markdoc @@ -4,8 +4,26 @@ title: VectorsDB description: Store vector embeddings and run similarity search with Appwrite VectorsDB to power semantic search, recommendations, and other AI features. --- -Appwrite VectorsDB stores vector embeddings and runs similarity search, so you can build semantic search, recommendations, and other AI features. It also exposes an endpoint to generate text embeddings, and shares the permissions, indexes, transactions, and realtime concepts used across Appwrite Databases. +Appwrite VectorsDB lets you store vector embeddings and run similarity search over them. +A collection is created with a fixed `dimension`, every document holds an `embeddings` vector of that length plus optional `metadata`, and an HNSW index keeps similarity search fast as your data grows. -{% info title="Documentation in progress" %} -Detailed VectorsDB guides are on the way. For now, the concepts in [TablesDB](/docs/products/databases/tablesdb) are the closest reference. +{% info title="Looking for file storage?" %} +Databases store data, if you need to store files like images, PDFs or videos, use [Appwrite Storage](/docs/products/storage). {% /info %} + +You organize data into databases, collections, and documents, the same way you do across Appwrite Databases. What sets VectorsDB apart is the fixed schema built for vectors and the ability to generate text embeddings and search by similarity. + +# Key concepts {% #key-concepts %} +[Collections](/docs/products/databases/vectorsdb/collections) are created with a required `dimension`, the length of the vectors they hold. Instead of a typed-attribute schema, every collection is provisioned with a fixed shape: a required `embeddings` vector and an optional `metadata` object. + +[Documents](/docs/products/databases/vectorsdb/documents) store a single embedding under `embeddings` and any associated JSON under `metadata`. The embedding length must match the collection's `dimension`. + +[Embeddings](/docs/products/databases/vectorsdb/embeddings) can be generated from text with built-in models, so you can turn strings into vectors and store them without running a separate embedding service. + +[Vector search](/docs/products/databases/vectorsdb/vector-search) ranks documents by how close their `embeddings` are to a query vector. You create an HNSW index on the `embeddings` field, then pass a vector query to list documents by cosine, dot product, or Euclidean distance. + +VectorsDB also shares the [permissions](/docs/products/databases/vectorsdb/permissions), [queries](/docs/products/databases/vectorsdb/queries), [pagination](/docs/products/databases/vectorsdb/pagination), [transactions](/docs/products/databases/vectorsdb/transactions), and [bulk operations](/docs/products/databases/vectorsdb/bulk-operations) used across Appwrite Databases. + +{% arrow_link href="/docs/products/databases/vectorsdb/quick-start" %} +Quick start +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/vectorsdb/backups/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/backups/+page.markdoc new file mode 100644 index 0000000000..745a382dc0 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/backups/+page.markdoc @@ -0,0 +1,89 @@ +--- +layout: article +title: Backups +description: Learn how to back up and restore your VectorsDB databases, ensuring data security and seamless recovery. +--- + +Appwrite Backups enable seamless, **encrypted** database backups. +All backups are **hot** backups, ensuring zero downtime and fast recovery. + +{% info title="Backups are available for all Pro and Enterprise customers." %} +{% /info %} + +You manage backups from a database's **Backups** tab, where you can automate backups with policies or create manual backups on demand. A backup captures the database along with its collections, documents, and embeddings. + +{% only_dark %} +![Backups tab](/images/docs/databases/documentsdb/dark/backups-tab.avif) +{% /only_dark %} +{% only_light %} +![Backups tab](/images/docs/databases/documentsdb/backups-tab.avif) +{% /only_light %} + +# Backup policies {% #backup-policies %} + +Backup policies automate your backups on a schedule. To create one, open your database's **Backups** tab and click **Create policy**, then choose a preset policy or add a custom one. + +{% only_dark %} +![Create backup policy](/images/docs/databases/documentsdb/dark/backup-policy.avif) +{% /only_dark %} +{% only_light %} +![Create backup policy](/images/docs/databases/documentsdb/backup-policy.avif) +{% /only_light %} + +The available options depend on your plan: + +- On the **Pro** plan, you get a **Daily** backup policy retained for 7 days. +- On the **Enterprise** plan, you get access to additional preset policies and custom policies, where you control how often backups run and how long they are retained. + +Click **Create** to save the policy. Your database is now set up for automated backups. + +# Manual backups {% #manual-backups %} + +You can create an on-demand backup whenever necessary. In your database's **Backups** tab, click **Manual backup**, then click **Create**. + +{% only_dark %} +![Manual backup](/images/docs/databases/documentsdb/dark/manual-backup.avif) +{% /only_dark %} +{% only_light %} +![Manual backup](/images/docs/databases/documentsdb/manual-backup.avif) +{% /only_light %} + +Manual backups are retained until you delete them. Depending on the size of your database, the backup may take some time to complete. You can monitor its progress in the backups list. + +# Restoring backups {% #restoring-backups %} + +To restore a database, you need an existing backup. + +1. Open your database's **Backups** tab. +2. In the backups list, open the **Actions** menu for the backup you want to restore. +3. Click **Restore**. +4. Enter a name for the new database and an optional database ID. +5. Click **Restore**. + +Depending on the size of your database, the restoration may take some time. The restore creates a new database from the backup, leaving the original untouched. + +# Backup security & performance {% #backup-security-and-performance %} + +All backups created with Appwrite are: + +1. **Encrypted**: + All backups are securely encrypted to ensure your data remains protected at all times. + +2. **Remotely stored**: + Backups are stored in a remote location, providing an additional layer of security and ensuring your data is always recoverable. + +3. **Hot backups**: + Backups are hot, meaning they occur with zero downtime, allowing you to recover data quickly without interrupting your projects and services. + +# Best practices {% #best-practices %} + +To ensure your backups are robust and effective, consider the following best practices: + +1. **Schedule regular backups**: + Add backup policies based on the frequency of database changes. Daily backups are often sufficient for most use cases. + +2. **Retain critical backups longer**: + Use custom policies with longer retention to keep backups of critical data for extended periods, ensuring historical records are available when needed. + +3. **Optimize backup policies based on data sensitivity**: + Tailor your backup frequency and retention settings according to the sensitivity and importance of the data. diff --git a/src/routes/docs/products/databases/vectorsdb/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/bulk-operations/+page.markdoc new file mode 100644 index 0000000000..d7c7e15950 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/bulk-operations/+page.markdoc @@ -0,0 +1,475 @@ +--- +layout: article +title: Bulk operations +description: Perform bulk operations on documents within your collections for efficient data handling in Appwrite VectorsDB. +--- + +Appwrite VectorsDB supports bulk operations for documents, allowing you to create, update, or delete multiple documents in a single request. This can significantly improve performance for apps as it allows you to reduce the number of API calls needed while working with large data sets. + +Bulk operations can only be performed via the server-side SDKs. The client-side SDKs do not support bulk operations by design to prevent abuse and protect against unexpected costs. This ensures that only trusted server environments can perform large-scale data operations. + +For client applications that need bulk-like functionality, consider using [Appwrite Functions](/docs/products/functions) with proper rate limiting and validation. + +Each document's data follows the fixed schema provisioned by its collection: an `embeddings` vector whose length must equal the collection's `dimension`, and an optional free-form `metadata` object. The examples on this page use a collection with `dimension: 4` to keep the arrays readable. + +{% info title="Important notes" %} +Bulk operations trigger Functions, Webhooks, or Realtime events for each document manipulated. Rather than a single event for the entire bulk operation, each document generates a separate event on the existing realtime channels for its operation type. +{% /info %} + +# Atomic behavior {% #atomic-behavior %} + +Bulk operations in Appwrite are **atomic**, meaning they follow an all-or-nothing approach. Either all documents in your bulk request succeed, or all documents fail. + +This atomicity ensures: +- **Data consistency**: Your database remains in a consistent state even if some operations would fail. +- **Race condition prevention**: Multiple clients can safely perform bulk operations simultaneously. +- **Simplified error handling**: You only need to handle complete success or complete failure scenarios. + +For example, if you attempt to create 100 documents and one fails due to a validation error, none of the 100 documents will be created. + +# Plan limits {% #plan-limits %} + +Bulk operations have different limits based on your Appwrite plan: + +| Plan | Documents per request | +|------|----------------------| +| Free | 100 | +| Pro | 1,000 | + +These limits apply to all bulk operations including create, update, upsert, and delete operations. If you need higher limits than what the Pro plan offers, you can [inquire](/contact-us/enterprise) about a custom plan. + +# Create documents {% #create-documents %} + +You can create multiple documents in a single request using the `createDocuments` method. + +{% info title="Custom timestamps" %} +When creating, updating or upserting in bulk, you can set `$createdAt` and `$updatedAt` for each document in the payload. Values must be ISO 8601 date-time strings. If omitted, Appwrite sets them automatically. +{% /info %} + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + $id: sdk.ID.unique(), + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet', genre: 'tragedy' } + }, + { + $id: sdk.ID.unique(), + embeddings: [0.91, 0.22, 0.14, 0.65], + metadata: { title: 'Macbeth', genre: 'tragedy' } + } + ] +}); +``` + +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +vectors_db = VectorsDB(client) + +result = vectors_db.create_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + documents = [ + { + '$id': ID.unique(), + 'embeddings': [0.12, 0.84, 0.33, 0.57], + 'metadata': { 'title': 'Hamlet', 'genre': 'tragedy' } + }, + { + '$id': ID.unique(), + 'embeddings': [0.91, 0.22, 0.14, 0.65], + 'metadata': { 'title': 'Macbeth', 'genre': 'tragedy' } + } + ] +) +``` + +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vec![ + json!({ + "$id": ID::unique(), + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet", "genre": "tragedy" } + }), + json!({ + "$id": ID::unique(), + "embeddings": [0.91, 0.22, 0.14, 0.65], + "metadata": { "title": "Macbeth", "genre": "tragedy" } + }), + ], + ).await?; + + Ok(()) +} +``` + +{% /multicode %} + +# Update documents {% #update-documents %} + +{% info title="Permissions required" %} +You must grant **update** permissions to users at the **collection level** before users can update documents. +[Learn more about permissions](/docs/products/databases/vectorsdb/permissions) +{% /info %} + +You can update multiple documents in a single request using the `updateDocuments` method. Pass the fields to change in `data`, and use `queries` to select which documents are affected. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + data: { + metadata: { genre: 'drama' } + }, + queries: [ + sdk.Query.equal('metadata.genre', 'tragedy') + ] +}); +``` + +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +vectors_db = VectorsDB(client) + +result = vectors_db.update_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + data = { + 'metadata': { 'genre': 'drama' } + }, + queries = [ + Query.equal('metadata.genre', 'tragedy') + ] +) +``` + +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(json!({ + "metadata": { "genre": "drama" } + })), + Some(vec![ + Query::equal("metadata.genre", "tragedy").to_string(), + ]), + None, + ).await?; + + Ok(()) +} +``` + +{% /multicode %} + +# Upsert documents {% #upsert-documents %} + +{% info title="Permissions required" %} +You must grant **create** and **update** permissions to users at the **collection level** before users can create documents. +[Learn more about permissions](/docs/products/databases/vectorsdb/permissions) +{% /info %} + +You can upsert multiple documents in a single request using the `upsertDocuments` method. Documents with a new `$id` are created, while documents with an existing `$id` are updated. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.upsertDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + $id: sdk.ID.unique(), + embeddings: [0.40, 0.40, 0.40, 0.40], + metadata: { title: 'Othello', genre: 'tragedy' } + }, + { + $id: 'document-id-2', // Existing document ID + embeddings: [0.10, 0.10, 0.10, 0.10], + metadata: { title: 'Hamlet', genre: 'tragedy' } + } + ] +}); +``` + +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +vectors_db = VectorsDB(client) + +result = vectors_db.upsert_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + documents = [ + { + '$id': ID.unique(), + 'embeddings': [0.40, 0.40, 0.40, 0.40], + 'metadata': { 'title': 'Othello', 'genre': 'tragedy' } + }, + { + '$id': 'document-id-2', # Existing document ID + 'embeddings': [0.10, 0.10, 0.10, 0.10], + 'metadata': { 'title': 'Hamlet', 'genre': 'tragedy' } + } + ] +) +``` + +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.upsert_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vec![ + json!({ + "$id": ID::unique(), + "embeddings": [0.40, 0.40, 0.40, 0.40], + "metadata": { "title": "Othello", "genre": "tragedy" } + }), + json!({ + "$id": "document-id-2", // Existing document ID + "embeddings": [0.10, 0.10, 0.10, 0.10], + "metadata": { "title": "Hamlet", "genre": "tragedy" } + }), + ], + None, + ).await?; + + Ok(()) +} +``` + +{% /multicode %} + +# Delete documents {% #delete-documents %} + +{% info title="Permissions required" %} +You must grant **delete** permissions to users at the **collection level** before users can delete documents. +[Learn more about permissions](/docs/products/databases/vectorsdb/permissions) +{% /info %} + +You can delete multiple documents in a single request using the `deleteDocuments` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.deleteDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.equal('metadata.genre', 'drama') + ] +}); +``` + +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +vectors_db = VectorsDB(client) + +result = vectors_db.delete_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.equal('metadata.genre', 'drama') + ] +) +``` + +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.delete_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::equal("metadata.genre", "drama").to_string(), + ]), + None, + ).await?; + + Ok(()) +} +``` + +{% /multicode %} + +{% info title="Queries for deletion" %} + +When deleting documents, you must specify queries to filter which documents to delete. +If no queries are provided, all documents in the collection will be deleted. +[Learn more about queries](/docs/products/databases/vectorsdb/queries). + +{% /info %} + +# Use transactions {% #use-transactions %} + +`updateDocuments`, `upsertDocuments`, and `deleteDocuments` accept a `transactionId`. When provided, Appwrite stages the bulk request and applies it on commit. See [Transactions](/docs/products/databases/vectorsdb/transactions). + +{% multicode %} +```server-nodejs +await vectorsDB.upsertDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { $id: sdk.ID.unique(), embeddings: [0.12, 0.84, 0.33, 0.57], metadata: { title: 'One' } }, + { $id: sdk.ID.unique(), embeddings: [0.91, 0.22, 0.14, 0.65], metadata: { title: 'Two' } } + ], + transactionId: '<TRANSACTION_ID>' +}); +``` +```python +vectors_db.upsert_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + documents = [ + { '$id': ID.unique(), 'embeddings': [0.12, 0.84, 0.33, 0.57], 'metadata': { 'title': 'One' } }, + { '$id': ID.unique(), 'embeddings': [0.91, 0.22, 0.14, 0.65], 'metadata': { 'title': 'Two' } } + ], + transaction_id = '<TRANSACTION_ID>' +) +``` +```server-rust +let result = vectors_db.upsert_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vec![ + json!({ + "$id": ID::unique(), + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "One" } + }), + json!({ + "$id": ID::unique(), + "embeddings": [0.91, 0.22, 0.14, 0.65], + "metadata": { "title": "Two" } + }), + ], + Some("<TRANSACTION_ID>"), +).await?; +``` +{% /multicode %} diff --git a/src/routes/docs/products/databases/vectorsdb/collections/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/collections/+page.markdoc new file mode 100644 index 0000000000..bf246bde57 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/collections/+page.markdoc @@ -0,0 +1,1144 @@ +--- +layout: article +title: Collections +description: Organize embeddings with Appwrite VectorsDB collections. Learn how to create collections with a fixed dimension, manage them, and configure permissions. +--- +Appwrite uses collections as containers of documents. +A VectorsDB collection stores embeddings, so every collection is created with a fixed **`dimension`**, the length of the embedding vectors it holds. All documents in the collection must use vectors of that exact length. + +Unlike TablesDB, you don't define a schema for a VectorsDB collection. The schema is fixed and provisioned for you when the collection is created: + +| Attribute | Type | Description | +|--------------|----------|-----------------------------------------------------------------------------| +| `embeddings` | `vector` | The embedding vector. Required, and sized to the collection's `dimension`. | +| `metadata` | `object` | Arbitrary JSON stored alongside the vector. Optional. | + +Because the schema is fixed, VectorsDB has no typed-attribute endpoints like TablesDB columns. You cannot add, update, or delete attributes on a collection. You store your vector under `embeddings` and any associated data under `metadata`. + +# Create collection {% #create-collection %} +You can create collections using the Appwrite Console, a [Server SDK](/docs/sdks#server), or using the [CLI](/docs/tooling/command-line/installation). + +Head to the **Databases** page, open a [database](/docs/products/databases/vectorsdb/databases), and click **Create collection**. Set a **dimension** that matches the embedding model you plan to use. + +You can also create collections programmatically using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +The `dimension` is required and must match the length of the vectors you'll store. For example, the default `nomic-embed-text` model produces 768-dimensional vectors, so you would create the collection with `dimension: 768`. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + dimension: 768, + permissions: [sdk.Permission.read(sdk.Role.any())], // optional + documentSecurity: false, // optional + enabled: true // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + dimension: 768, + permissions: [sdk.Permission.read(sdk.Role.any())], // optional + documentSecurity: false, // optional + enabled: true // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + dimension: 768, + permissions: [Permission::read(Role::any())], // optional + documentSecurity: false, // optional + enabled: true // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_collection( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + name = '<NAME>', + dimension = 768, + permissions = [Permission.read(Role.any())], # optional + document_security = False, # optional + enabled = True # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_collection( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + name: '<NAME>', + dimension: 768, + permissions: [Permission.read(Role.any())], # optional + document_security: false, # optional + enabled: true # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.CreateCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "<NAME>", + dimension: 768, + permissions: new List<string> { Permission.Read(Role.Any()) }, // optional + documentSecurity: false, // optional + enabled: true // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.createCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + dimension: 768, + permissions: [Permission.read(Role.any())], // (optional) + documentSecurity: false, // (optional) + enabled: true, // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createCollection( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + name = "<NAME>", + dimension = 768, + permissions = listOf(Permission.read(Role.any())), // optional + documentSecurity = false, // optional + enabled = true, // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createCollection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<NAME>", + 768, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.createCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "<NAME>", + dimension: 768, + permissions: [Permission.read(Role.any())], // optional + documentSecurity: false, // optional + enabled: true // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::VectorsDB; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_collection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<NAME>", + 768, + Some(vec![Permission::read(Role::any()).to_string()]), // permissions (optional) + Some(false), // documentSecurity (optional) + Some(true), // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --name "<NAME>" \ + --dimension 768 +``` +{% /multicode %} + +{% info title="Dimension is fixed" %} +The `dimension` is set when the collection is created and applies to every document in it. Choose a value that matches your embedding model, between 1 and 16000. To store vectors of a different length, create a separate collection. +{% /info %} + +# Schema {% #schema %} +A VectorsDB collection's schema is provisioned automatically and cannot be changed. Every collection has exactly two attributes: + +- `embeddings`, a required `vector` attribute sized to the collection's `dimension`. +- `metadata`, an optional `object` attribute that holds arbitrary JSON. + +A document's `data` therefore looks like this, where the vector length equals the collection's `dimension`: + +```json +{ + "embeddings": [0.12, 0.84, 0.05, 0.63], + "metadata": { "title": "Introduction", "source": "docs" } +} +``` + +An `object` index on `metadata` is also created for you. There are no endpoints to add, modify, or remove attributes. To learn how to write and read this data, see [Documents](/docs/products/databases/vectorsdb/documents). + +# Manage collections {% #manage-collections %} +Use a [Server SDK](/docs/sdks#server) to list, retrieve, update, and delete collections. + +## List collections {% #list-collections %} +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listCollections({ + databaseId: '<DATABASE_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listCollections({ + databaseId: '<DATABASE_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listCollections( + databaseId: '<DATABASE_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_collections( + database_id = '<DATABASE_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_collections( + database_id: '<DATABASE_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +CollectionList result = await vectorsDB.ListCollections( + databaseId: "<DATABASE_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +CollectionList result = await vectorsDB.listCollections( + databaseId: '<DATABASE_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listCollections( + databaseId = "<DATABASE_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listCollections( + "<DATABASE_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collectionList = try await vectorsDB.listCollections( + databaseId: "<DATABASE_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_collections( + "<DATABASE_ID>", + None, // queries (optional) + None, // search (optional) + None, // total (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-collections \ + --database-id "<DATABASE_ID>" +``` +{% /multicode %} + +## Get collection {% #get-collection %} +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.getCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.getCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->getCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.get_collection( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.get_collection( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.GetCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.getCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.getCollection( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.getCollection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.getCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.get_collection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db get-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" +``` +{% /multicode %} + +## Update collection {% #update-collection %} +You can rename a collection and change its permissions, `documentSecurity`, or `enabled` state. The `name` is required when updating. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + documentSecurity: true // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + documentSecurity: true // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->updateCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + documentSecurity: true // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.update_collection( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + name = '<NAME>', + document_security = True # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.update_collection( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + name: '<NAME>', + document_security: true # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.UpdateCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "<NAME>", + documentSecurity: true // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.updateCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: '<NAME>', + documentSecurity: true, // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.updateCollection( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + name = "<NAME>", + documentSecurity = true, // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.updateCollection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<NAME>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.updateCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "<NAME>", + documentSecurity: true // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_collection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<NAME>", + None, // dimension (optional) + None, // permissions (optional) + Some(true), // documentSecurity (optional) + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db update-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --name "<NAME>" +``` +{% /multicode %} + +## Delete collection {% #delete-collection %} +Deleting a collection permanently removes it and all of its documents. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.deleteCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.deleteCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->deleteCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.delete_collection( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.delete_collection( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +await vectorsDB.DeleteCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +await vectorsDB.deleteCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +vectorsDB.deleteCollection( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.deleteCollection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +try await vectorsDB.deleteCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + vectors_db.delete_collection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db delete-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" +``` +{% /multicode %} + +# Permissions {% #permissions %} +Appwrite uses permissions to control data access. +For security, only users that are granted permissions can access a resource. + +By default, Appwrite doesn't grant permissions to any users when a new collection is created. +This means users can't create documents or read, update, and delete existing documents until you grant access. + +Set `documentSecurity` to `true` on a collection to configure permissions on individual documents. A user then needs either collection level or document level permissions to access a document. + +[Learn about configuring permissions](/docs/products/databases/vectorsdb/permissions). diff --git a/src/routes/docs/products/databases/vectorsdb/csv-exports/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/csv-exports/+page.markdoc new file mode 100644 index 0000000000..c80841bc88 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/csv-exports/+page.markdoc @@ -0,0 +1,102 @@ +--- +layout: article +title: CSV exports +description: Export VectorsDB documents to a CSV file. Share embeddings and metadata as a portable dataset without writing custom scripts. +--- + +Appwrite's CSV export feature lets you export documents from a VectorsDB collection to a CSV file. This is useful for reporting, sharing a dataset with your team, creating custom backups, or handing embeddings and their metadata off to other tools. + +# Exported columns {% #exported-columns %} + +A VectorsDB collection has a fixed schema, so every export has the same shape. Each row carries the document's system fields together with the two collection attributes: + +| Column | Type | Description | +|--------------|--------|--------------------------------------------------------------------------| +| `$id` | string | The document ID. | +| `embeddings` | JSON | The embedding vector, serialized as a JSON array of numbers. | +| `metadata` | JSON | The metadata stored alongside the vector, serialized as a JSON object. | + +System columns like `$id`, `$createdAt`, and `$updatedAt` are included automatically. Because `embeddings` is the full vector for each document, exported files can be large for high dimension collections. + +An example of exported data, where each `embeddings` value is the full vector for that document: + +```text +$id,embeddings,metadata +doc-1,"[0.12,0.84,0.33,0.57]","{""title"":""Hamlet"",""year"":1601}" +doc-2,"[0.2,0.1,0.6,0.1]","{""title"":""Macbeth"",""year"":1606}" +doc-3,"[0.5,0.5,0.5,0.5]","{""title"":""Othello"",""year"":1603}" +``` + +# Export configuration {% #export-configuration %} + +Before exporting, you can configure several options to control the output format and contents. + +## Apply filters {% #apply-filters %} + +You can pass [queries](/docs/products/databases/vectorsdb/queries) to export only the documents you need rather than the whole collection. This is useful when you want a subset of your data for a specific use case. + +## Select columns {% #select-columns %} + +You can choose which columns to include in the export. By default, all columns are exported. Selecting specific columns creates more focused datasets, for example exporting only `metadata` when you don't need the raw vectors. + +## Custom delimiter {% #custom-delimiter %} + +You can set a custom delimiter for the CSV file. While commas are standard, you can use tabs, semicolons, or other delimiters based on the tools you import into. + +Common delimiters: +- **Comma (`,`)**: Standard format, compatible with most tools +- **Tab**: Useful when your data contains many commas +- **Semicolon (`;`)**: Common in European Excel versions +- **Pipe (`|`)**: Useful when your data contains many semicolons + +## Header row {% #header-row %} + +You can choose whether to include a header row with column names. Headers make the data easier to read in spreadsheets, but some import tools work better without them. + +# Timestamps {% #timestamps %} + +The `$createdAt` and `$updatedAt` columns are exported in ISO 8601 format, making them compatible with most spreadsheet and database tools. + +# Permissions {% #permissions %} + +If [document security](/docs/products/databases/vectorsdb/permissions) is enabled for your collection, the `$permissions` column is included in the export. Permission strings are formatted as comma-separated role definitions within quotes. + +```text +$id,embeddings,$permissions +doc-1,"[0.12,0.84,0.33,0.57]","read(""any""),update(""user:user-123"")" +doc-2,"[0.2,0.1,0.6,0.1]","read(""team:team-456""),update(""team:team-456"")" +``` + +The roles used are API strings that can be found in the [permissions documentation](/docs/products/databases/vectorsdb/permissions). + +# Background processing {% #background-processing %} + +Large exports run as background tasks so they don't block your workflow. When an export completes, you receive an email with a short-lived download link to retrieve your CSV file. + +This means you can start an export, close the Console, and return later to download your file. The Console displays a floating progress bar while the export is active. + +# Use cases {% #use-cases %} + +CSV exports are useful for many common workflows: + +- **Reporting**: Generate reports for stakeholders who need data in spreadsheet format +- **Data sharing**: Share an embeddings dataset with teammates +- **Analytics hand-off**: Provide vectors and metadata to analysts using other tools +- **Custom backups**: Archive specific data subsets for record-keeping +- **Migration preparation**: Extract data to move it into another system + +# Best practices {% #best-practices %} + +To get the most out of CSV exports: + +1. **Filter your data**: Export only the documents you need to reduce file size and processing time +2. **Select specific columns**: Export only `metadata` when you don't need the raw vectors, since high dimension `embeddings` columns make files much larger +3. **Choose appropriate delimiters**: Use tabs or semicolons if your data contains many commas +4. **Consider header requirements**: Include headers for human readability, exclude them for automated imports + +# Additional resources {% #additional-resources %} + +- [CSV imports](/docs/products/databases/vectorsdb/csv-imports) - Import data from CSV files +- [Documents](/docs/products/databases/vectorsdb/documents) - Create, read, update, and delete documents +- [Permissions](/docs/products/databases/vectorsdb/permissions) - Configure document-level security +- [Backups](/docs/products/databases/vectorsdb/backups) - Automated backup policies diff --git a/src/routes/docs/products/databases/vectorsdb/csv-imports/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/csv-imports/+page.markdoc new file mode 100644 index 0000000000..6e94bf6e5d --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/csv-imports/+page.markdoc @@ -0,0 +1,118 @@ +--- +layout: article +title: CSV imports +description: Import embeddings into Appwrite VectorsDB by uploading a CSV file. Learn how to format the embeddings and metadata columns for a bulk import. +--- + +Appwrite's CSV Import feature allows you to create multiple documents in a collection by uploading a single CSV file. This is especially useful for loading precomputed embeddings, seeding test environments, or migrating vectors from another system. + +# Prepare your CSV {% #prepare-csv %} + +A VectorsDB collection has a fixed schema, so every CSV maps to the same two columns: + +| Column | Type | Description | +|--------------|----------|----------------------------------------------------------------------------------| +| `embeddings` | `vector` | The embedding vector, written as a JSON array. Required, and its length must equal the collection's `dimension`. | +| `metadata` | `object` | Arbitrary JSON stored alongside the vector, written as a JSON object. Optional. | + +Each row represents a new document. The `embeddings` value is parsed as a JSON array of numbers, and the `metadata` value is parsed as a JSON object. Each row is validated before being imported. + +{% info title="Good to know" %} +You can optionally include the `$id` column to define custom document IDs. If not provided, Appwrite will generate unique IDs for each document automatically. + +Appwrite imports documents in batches of 100 documents at a time. If a provided ID already exists in the collection, the entire batch containing that document will fail, but documents in other batches will continue to be imported successfully. +{% /info %} + +An example of a valid CSV file for a collection created with `dimension: 4`: + +```text +$id,embeddings,metadata +vec_1,"[0.12,0.04,0.88,0.31]","{""title"":""First vector"",""year"":2024}" +vec_2,"[0.55,0.61,0.07,0.42]","{""title"":""Second vector"",""year"":2025}" +vec_3,"[0.20,0.20,0.20,0.20]","{""title"":""Third vector"",""year"":2025}" +``` + +The double quotes around each value let you include the commas inside the JSON array and object. The inner double quotes of the JSON keys and string values are escaped by doubling them (`""`). See [Special characters](#special-characters) for the escaping rules. + +{% info title="Vector length" %} +Every `embeddings` array must contain exactly as many numbers as the collection's `dimension`. A row whose vector length does not match the dimension is rejected. +{% /info %} + +# Metadata values {% #metadata-values %} + +The `metadata` column is an object, so each value must be a valid JSON object or the literal `null`: + +- **A JSON object**, for example `"{""key"":""value""}"`. An empty object `"{}"` is also valid. +- **`null`** (the unquoted literal) stores no metadata for that document. + +A blank `metadata` value is not accepted. To omit metadata for a row, use `null` rather than leaving the field empty: + +```text +$id,embeddings,metadata +vec_1,"[0.12,0.04,0.88,0.31]","{""title"":""With metadata""}" +vec_2,"[0.55,0.61,0.07,0.42]",null +``` + +# Create and update timestamps {% #created-at-and-updated-at %} + +You can also optionally include `$createdAt` and `$updatedAt` columns to set custom timestamps for imported documents. If omitted, Appwrite sets these automatically during import. + +An example of a valid CSV file with `$createdAt` and `$updatedAt` timestamps: + +```text +$id,$createdAt,$updatedAt,embeddings,metadata +vec_1,2025-08-10T12:34:56.000Z,2025-08-10T12:34:56.000Z,"[0.12,0.04,0.88,0.31]","{""title"":""First vector""}" +vec_2,2025-08-11T09:15:00.000Z,2025-08-11T10:00:00.000Z,"[0.55,0.61,0.07,0.42]","{""title"":""Second vector""}" +``` + +{% info title="Timestamps format" %} +`$createdAt` and `$updatedAt` must be valid ISO 8601 date-time strings, for example: `2025-08-10T12:34:56.000Z`. +{% /info %} + +# Permissions {% #permissions %} + +You can set permissions for documents in your CSV file by adding data for the `$permissions` column. Make sure document level security is enabled for your collection. + +An example of a valid permissions string: + +```text +"read(""any""),update(""users""),delete(""user:user_id"")" +``` + +The roles used are API strings that can be found in the [permissions documentation](/docs/apis/rest#roles). + +A full example of a valid CSV file with document permissions: + +```text +$id,embeddings,metadata,$permissions +vec_1,"[0.12,0.04,0.88,0.31]","{""title"":""First vector""}","read(""any""),update(""user:user_id""),delete(""user:user_id"")" +vec_2,"[0.55,0.61,0.07,0.42]","{""title"":""Second vector""}","read(""users""),update(""user:user_id"")" +``` + +# Special characters {% #special-characters %} + +The `embeddings` and `metadata` values are JSON written inside CSV fields, so you need to escape the characters that CSV treats specially. + +## Comma + +The JSON array and object both contain commas, so wrap each value in double quotes (`"[0.1,0.2,0.3,0.4]"`). Without the surrounding quotes, the commas would be read as column separators. + +## Double quotes + +JSON keys and string values use double quotes, and a double quote inside a quoted CSV field must be escaped by doubling it (`""`). For example, the object `{"title":"hello"}` is written in the CSV as `"{""title"":""hello""}"`. + +# Run the import {% #run-import %} + +CSV imports run as a background migration. First upload your CSV to a [storage bucket](/docs/products/storage/buckets), then start the import against the target collection. The import is triggered through the migrations endpoint at `POST /v1/migrations/csv/imports` with an [API key](/docs/advanced/platform/api-keys) that has the `migrations.write` scope. The request takes the storage `bucketId` and `fileId` that hold your CSV, and the target collection as a composite `resourceId` in the form `databaseId:collectionId`. + +The `onDuplicate` option controls what happens when a document with an existing `$id` is encountered: `fail` (the default) aborts on the first conflict, `skip` ignores it, and `overwrite` replaces the existing document. + +{% info title="Console import" %} +The VectorsDB collection view in the Appwrite Console offers JSON import and export. To import a CSV into a VectorsDB collection, use the migrations endpoint described above. +{% /info %} + +# Additional resources {% #additional-resources %} + +- [Appwrite CLI](/docs/command-line) +- [Database permissions](/docs/products/databases/vectorsdb/permissions) +- [Embeddings](/docs/products/databases/vectorsdb/embeddings) diff --git a/src/routes/docs/products/databases/vectorsdb/databases/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/databases/+page.markdoc new file mode 100644 index 0000000000..7802e67276 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/databases/+page.markdoc @@ -0,0 +1,975 @@ +--- +layout: article +title: Databases +description: Dive deeper into Appwrite VectorsDB and database configuration. Learn how to create and manage multiple vector databases for your application. +--- +Databases are the largest organizational unit in Appwrite. +Each database contains a group of [collections](/docs/products/databases/vectorsdb/collections). + +# Shared and dedicated databases {% #shared-and-dedicated %} +VectorsDB databases run on either shared or dedicated infrastructure. + +Shared databases run on infrastructure that Appwrite manages and scales for you. They are the fastest way to get started and you can create them from the Console or programmatically with a [Server SDK](/docs/sdks#server). + +Dedicated databases run on infrastructure provisioned for your project alone. They can only be created from the Appwrite Console. Once created, you manage their collections and documents with the same SDK methods as a shared database. + +# Create in Console {% #create-in-console %} +The easiest way to create a database is using the Appwrite Console. +Navigate to the **Databases** page and click **Create database**, choose **VectorsDB** as the database type, and select your preferred tier. + +# Create using Server SDKs {% #create-using-server-sdks %} +You can programmatically create a shared database using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.create({ + databaseId: '<DATABASE_ID>', + name: '<NAME>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.create({ + databaseId: '<DATABASE_ID>', + name: '<NAME>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->create( + databaseId: '<DATABASE_ID>', + name: '<NAME>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create( + database_id = '<DATABASE_ID>', + name = '<NAME>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create( + database_id: '<DATABASE_ID>', + name: '<NAME>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Database result = await vectorsDB.Create( + databaseId: "<DATABASE_ID>", + name: "<NAME>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Database result = await vectorsDB.create( + databaseId: '<DATABASE_ID>', + name: '<NAME>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.create( + databaseId = "<DATABASE_ID>", + name = "<NAME>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.create( + "<DATABASE_ID>", + "<NAME>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let database = try await vectorsDB.create( + databaseId: "<DATABASE_ID>", + name: "<NAME>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create( + "<DATABASE_ID>", + "<NAME>", + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create \ + --database-id <DATABASE_ID> \ + --name <NAME> +``` +{% /multicode %} + +# List databases {% #list-databases %} +Use the `list` method to retrieve all databases in your project. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.list({}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.list({}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->list(); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list() +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list() +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DatabaseList result = await vectorsDB.List(); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DatabaseList result = await vectorsDB.list(); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.list() +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.list( + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let databaseList = try await vectorsDB.list() +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list( + None, // queries (optional) + None, // search (optional) + None, // total (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list +``` +{% /multicode %} + +# Get a database {% #get-database %} +Use the `get` method to retrieve a single database by its ID. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.get({ + databaseId: '<DATABASE_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.get({ + databaseId: '<DATABASE_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->get( + databaseId: '<DATABASE_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.get( + database_id = '<DATABASE_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.get( + database_id: '<DATABASE_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Database result = await vectorsDB.Get( + databaseId: "<DATABASE_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Database result = await vectorsDB.get( + databaseId: '<DATABASE_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.get( + databaseId = "<DATABASE_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.get( + "<DATABASE_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let database = try await vectorsDB.get( + databaseId: "<DATABASE_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.get( + "<DATABASE_ID>", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db get \ + --database-id <DATABASE_ID> +``` +{% /multicode %} + +# Update a database {% #update-database %} +Use the `update` method to change a database's name or enabled state. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.update({ + databaseId: '<DATABASE_ID>', + name: '<NAME>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.update({ + databaseId: '<DATABASE_ID>', + name: '<NAME>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->update( + databaseId: '<DATABASE_ID>', + name: '<NAME>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.update( + database_id = '<DATABASE_ID>', + name = '<NAME>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.update( + database_id: '<DATABASE_ID>', + name: '<NAME>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Database result = await vectorsDB.Update( + databaseId: "<DATABASE_ID>", + name: "<NAME>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Database result = await vectorsDB.update( + databaseId: '<DATABASE_ID>', + name: '<NAME>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.update( + databaseId = "<DATABASE_ID>", + name = "<NAME>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.update( + "<DATABASE_ID>", + "<NAME>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let database = try await vectorsDB.update( + databaseId: "<DATABASE_ID>", + name: "<NAME>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update( + "<DATABASE_ID>", + "<NAME>", + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db update \ + --database-id <DATABASE_ID> \ + --name <NAME> +``` +{% /multicode %} + +# Delete a database {% #delete-database %} +Use the `delete` method to permanently remove a database and all of its collections and documents. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.delete({ + databaseId: '<DATABASE_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.delete({ + databaseId: '<DATABASE_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->delete( + databaseId: '<DATABASE_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.delete( + database_id = '<DATABASE_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.delete( + database_id: '<DATABASE_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +await vectorsDB.Delete( + databaseId: "<DATABASE_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +await vectorsDB.delete( + databaseId: '<DATABASE_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +vectorsDB.delete( + databaseId = "<DATABASE_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.delete( + "<DATABASE_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +try await vectorsDB.delete( + databaseId: "<DATABASE_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + vectors_db.delete( + "<DATABASE_ID>", + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db delete \ + --database-id <DATABASE_ID> +``` +{% /multicode %} diff --git a/src/routes/docs/products/databases/vectorsdb/documents/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/documents/+page.markdoc new file mode 100644 index 0000000000..ea820edce3 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/documents/+page.markdoc @@ -0,0 +1,1541 @@ +--- +layout: article +title: Documents +description: Create, read, update, and delete documents in Appwrite VectorsDB. Learn how to store embedding vectors and metadata in your collections. +--- +Each piece of data in Appwrite VectorsDB is a document. +A document's data follows the fixed schema provisioned by its collection: an `embeddings` vector and an optional `metadata` object. + +The `embeddings` array is required, and its length must equal the `dimension` you set when [creating the collection](/docs/products/databases/vectorsdb/collections). +The `metadata` field is free-form JSON, so you can attach any data you want to keep alongside each vector. + +{% info title="Embedding length must match the dimension" %} +If the `embeddings` array is longer or shorter than the collection's `dimension`, the request is rejected. +The examples on this page use a collection with `dimension: 4` to keep the arrays readable. +{% /info %} + +# Create documents {% #create-documents %} +{% info title="Permissions required" %} +You must grant _create_ permissions to users at the _collection level_ before users can create documents. +[Learn more about permissions](#permissions) +{% /info %} + +Use the `createDocument` method to add a document to a collection. Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet', year: 1601 } + }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet', year: 1601 } + }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => ['title' => 'Hamlet', 'year' => 1601] + ], + permissions: [Permission::read(Role::any())] // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = ID.unique(), + data = { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet", "year": 1601 } + }, + permissions = [Permission.read(Role.any())] # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + "embeddings" => [0.12, 0.84, 0.33, 0.57], + "metadata" => { "title" => "Hamlet", "year" => 1601 } + }, + permissions: [Permission.read(Role.any())] # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> { + { "embeddings", new List<double> { 0.12, 0.84, 0.33, 0.57 } }, + { "metadata", new Dictionary<string, object> { { "title", "Hamlet" }, { "year", 1601 } } } + }, + permissions: new List<string> { Permission.Read(Role.Any()) } // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet", "year": 1601 } + }, + permissions: [Permission.read(Role.any())], // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = ID.unique(), + data = mapOf( + "embeddings" to listOf(0.12, 0.84, 0.33, 0.57), + "metadata" to mapOf("title" to "Hamlet", "year" to 1601) + ), + permissions = listOf(Permission.read(Role.any())), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID.unique(), + Map.of( + "embeddings", List.of(0.12, 0.84, 0.33, 0.57), + "metadata", Map.of("title", "Hamlet", "year", 1601) + ), + List.of(Permission.read(Role.any())), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": ["title": "Hamlet", "year": 1601] + ], + permissions: [Permission.read(Role.any())] // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet", "year": 1601 } + }), + Some(vec![Permission::read(Role::any()).to_string()]), // optional + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id 'unique()' \ + --data '{ "embeddings": [0.12, 0.84, 0.33, 0.57], "metadata": { "title": "Hamlet", "year": 1601 } }' +``` +{% /multicode %} + +To insert many documents in a single request, use [bulk operations](/docs/products/databases/vectorsdb/bulk-operations) instead of calling `createDocument` in a loop. + +# Get document {% #get-document %} +Use the `getDocument` method to read a single document by its ID. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.getDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.getDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->getDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.get_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.get_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.GetDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.getDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.getDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.getDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.getDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.get_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + None, // queries (optional) + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db get-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> +``` +{% /multicode %} + +# List documents {% #list-documents %} +Use the `listDocuments` method to read documents from a collection. Pass [queries](/docs/products/databases/vectorsdb/queries) to filter, order, and paginate the results. + +To rank documents by similarity to a query vector, use a vector search query instead. See [Vector search](/docs/products/databases/vectorsdb/vector-search). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(10) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(10) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(10) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(10) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(10) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(10) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(10) + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(10) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.limit(10) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documentList = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(10) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::limit(10).to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[10]}' +``` +{% /multicode %} + +# Update document {% #update-document %} +Use the `updateDocument` method to update a document. The update is a patch, so you only pass the fields you want to change. To change the vector, pass a new `embeddings` array of the same length as the collection's `dimension`. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + embeddings: [0.20, 0.10, 0.60, 0.10], + metadata: { title: 'Hamlet', year: 1602 } + } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + embeddings: [0.20, 0.10, 0.60, 0.10], + metadata: { title: 'Hamlet', year: 1602 } + } +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: [ + 'embeddings' => [0.20, 0.10, 0.60, 0.10], + 'metadata' => ['title' => 'Hamlet', 'year' => 1602] + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.update_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + data = { + "embeddings": [0.20, 0.10, 0.60, 0.10], + "metadata": { "title": "Hamlet", "year": 1602 } + } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.update_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + data: { + "embeddings" => [0.20, 0.10, 0.60, 0.10], + "metadata" => { "title" => "Hamlet", "year" => 1602 } + } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.UpdateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: new Dictionary<string, object> { + { "embeddings", new List<double> { 0.20, 0.10, 0.60, 0.10 } }, + { "metadata", new Dictionary<string, object> { { "title", "Hamlet" }, { "year", 1602 } } } + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + "embeddings": [0.20, 0.10, 0.60, 0.10], + "metadata": { "title": "Hamlet", "year": 1602 } + }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.updateDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + data = mapOf( + "embeddings" to listOf(0.20, 0.10, 0.60, 0.10), + "metadata" to mapOf("title" to "Hamlet", "year" to 1602) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.updateDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Map.of( + "embeddings", List.of(0.20, 0.10, 0.60, 0.10), + "metadata", Map.of("title", "Hamlet", "year", 1602) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.updateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: [ + "embeddings": [0.20, 0.10, 0.60, 0.10], + "metadata": ["title": "Hamlet", "year": 1602] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(json!({ + "embeddings": [0.20, 0.10, 0.60, 0.10], + "metadata": { "title": "Hamlet", "year": 1602 } + })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db update-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> \ + --data '{ "embeddings": [0.20, 0.10, 0.60, 0.10], "metadata": { "title": "Hamlet", "year": 1602 } }' +``` +{% /multicode %} + +# Upsert document {% #upsert-document %} +Use the `upsertDocument` method to create a document if it doesn't exist, or update it if it does. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.upsertDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + embeddings: [0.50, 0.50, 0.50, 0.50], + metadata: { title: 'Hamlet', year: 1603 } + } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.upsertDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + embeddings: [0.50, 0.50, 0.50, 0.50], + metadata: { title: 'Hamlet', year: 1603 } + } +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: [ + 'embeddings' => [0.50, 0.50, 0.50, 0.50], + 'metadata' => ['title' => 'Hamlet', 'year' => 1603] + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.upsert_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + data = { + "embeddings": [0.50, 0.50, 0.50, 0.50], + "metadata": { "title": "Hamlet", "year": 1603 } + } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.upsert_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + data: { + "embeddings" => [0.50, 0.50, 0.50, 0.50], + "metadata" => { "title" => "Hamlet", "year" => 1603 } + } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.UpsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: new Dictionary<string, object> { + { "embeddings", new List<double> { 0.50, 0.50, 0.50, 0.50 } }, + { "metadata", new Dictionary<string, object> { { "title", "Hamlet" }, { "year", 1603 } } } + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + "embeddings": [0.50, 0.50, 0.50, 0.50], + "metadata": { "title": "Hamlet", "year": 1603 } + }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.upsertDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + data = mapOf( + "embeddings" to listOf(0.50, 0.50, 0.50, 0.50), + "metadata" to mapOf("title" to "Hamlet", "year" to 1603) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.upsertDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Map.of( + "embeddings", List.of(0.50, 0.50, 0.50, 0.50), + "metadata", Map.of("title", "Hamlet", "year", 1603) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.upsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: [ + "embeddings": [0.50, 0.50, 0.50, 0.50], + "metadata": ["title": "Hamlet", "year": 1603] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.upsert_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(json!({ + "embeddings": [0.50, 0.50, 0.50, 0.50], + "metadata": { "title": "Hamlet", "year": 1603 } + })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db upsert-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> \ + --data '{ "embeddings": [0.50, 0.50, 0.50, 0.50], "metadata": { "title": "Hamlet", "year": 1603 } }' +``` +{% /multicode %} + +# Delete document {% #delete-document %} +Use the `deleteDocument` method to remove a document from a collection. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.deleteDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.deleteDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->deleteDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.delete_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.delete_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +await vectorsDB.DeleteDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +await vectorsDB.deleteDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +vectorsDB.deleteDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.deleteDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println("Deleted"); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +try await vectorsDB.deleteDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + vectors_db.delete_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + None, // transactionId (optional) + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db delete-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> +``` +{% /multicode %} + +# Permissions {% #permissions %} +To access documents through a [Client SDK](/docs/sdks#client), you must grant the relevant permissions. +By default, Appwrite doesn't grant any user permissions when a new collection is created. + +You can configure permissions at the collection level, or enable `documentSecurity` on the collection to also set permissions on individual documents. + +[Learn about configuring permissions](/docs/products/databases/vectorsdb/permissions). + +# Next steps {% #next-steps %} + +Continue learning with these related guides: + +{% cards %} +{% cards_item href="/docs/products/databases/vectorsdb/vector-search" title="Vector search" %} +Rank documents by similarity to a query vector using cosine, dot product, or Euclidean distance. +{% /cards_item %} + +{% cards_item href="/docs/products/databases/vectorsdb/bulk-operations" title="Bulk operations" %} +Create, update, upsert, and delete many documents in a single request. +{% /cards_item %} + +{% cards_item href="/docs/products/databases/vectorsdb/collections" title="Collections" %} +Configure the dimension and indexes that define how your vectors are stored and searched. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/vectorsdb/embeddings/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/embeddings/+page.markdoc new file mode 100644 index 0000000000..5730c4365f --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/embeddings/+page.markdoc @@ -0,0 +1,612 @@ +--- +layout: article +title: Embeddings +description: Generate text embeddings with Appwrite VectorsDB. Turn text into vector embeddings with built-in models and store them in your documents for vector search. +--- +An embedding is a list of numbers that represents the meaning of a piece of text. +VectorsDB can generate embeddings for you with built-in models, so you can turn text into vectors and store them in a collection without running a separate embedding service. + +The typical flow is two steps: generate an embedding from your text, then store that embedding in a document's `embeddings` field. Once stored, you can run [vector search](/docs/products/databases/vectorsdb/vector-search) over your documents. + +# Generate embeddings {% #generate-embeddings %} +Use the `createTextEmbeddings` method to turn one or more strings into vector embeddings. Pass an array of `texts` and, optionally, a `model`. When you omit `model`, VectorsDB uses the default `nomic-embed-text` model. Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createTextEmbeddings({ + texts: ['The quick brown fox jumps over the lazy dog'], + model: sdk.EmbeddingModel.Nomicembedtext // optional, defaults to nomic-embed-text +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createTextEmbeddings({ + texts: ['The quick brown fox jumps over the lazy dog'], + model: sdk.EmbeddingModel.Nomicembedtext // optional, defaults to nomic-embed-text +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Enums\EmbeddingModel; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createTextEmbeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel::NOMICEMBEDTEXT() // optional, defaults to nomic-embed-text +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.enums import EmbeddingModel + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_text_embeddings( + texts = ['The quick brown fox jumps over the lazy dog'], + model = EmbeddingModel.NOMIC_EMBED_TEXT # optional, defaults to nomic-embed-text +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_text_embeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel::NOMIC_EMBED_TEXT # optional, defaults to nomic-embed-text +) +``` +```csharp +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +EmbeddingList result = await vectorsDB.CreateTextEmbeddings( + texts: new List<string> { "The quick brown fox jumps over the lazy dog" }, + model: EmbeddingModel.NomicEmbedText // optional, defaults to nomic-embed-text +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +EmbeddingList result = await vectorsDB.createTextEmbeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel.nomicEmbedText, // optional, defaults to nomic-embed-text +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.enums.EmbeddingModel +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createTextEmbeddings( + texts = listOf("The quick brown fox jumps over the lazy dog"), + model = EmbeddingModel.NOMIC_EMBED_TEXT, // optional, defaults to nomic-embed-text +) +``` +```java +import io.appwrite.Client; +import io.appwrite.enums.EmbeddingModel; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createTextEmbeddings( + List.of("The quick brown fox jumps over the lazy dog"), + EmbeddingModel.NOMIC_EMBED_TEXT, // optional, defaults to nomic-embed-text + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let embeddingList = try await vectorsDB.createTextEmbeddings( + texts: ["The quick brown fox jumps over the lazy dog"], + model: .nomicEmbedText // optional, defaults to nomic-embed-text +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::enums::EmbeddingModel; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_text_embeddings( + vec!["The quick brown fox jumps over the lazy dog"], + Some(EmbeddingModel::NomicEmbedText), // optional, defaults to nomic-embed-text + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-text-embeddings \ + --texts 'The quick brown fox jumps over the lazy dog' \ + --model 'nomic-embed-text' +``` +{% /multicode %} + +The response is an embedding list. The `embeddings` array holds one entry per input text, in the same order you passed them. + +```json +{ + "total": 1, + "embeddings": [ + { + "model": "nomic-embed-text", + "dimension": 768, + "embedding": [-0.012246467, 0.02621112, -0.15247375, ...], + "error": "" + } + ] +} +``` + +Each entry contains: + +| Field | Description | +| --- | --- | +| `model` | The model that generated this embedding. | +| `dimension` | The number of values in the embedding vector. | +| `embedding` | The embedding vector as an array of floats. If generation fails, this is an empty array. | +| `error` | An error message if this text could not be embedded. An empty string means there was no error. | + +# Available models {% #available-models %} +VectorsDB ships with the following text embedding models. The `dimension` of a model is the length of the vector it produces, and it must match the `dimension` you set on the [collection](/docs/products/databases/vectorsdb/collections) where you store the embeddings. + +| Model | Dimension | Notes | +| --- | --- | --- | +| `nomic-embed-text` | 768 | Default model, used when you omit `model`. | +| `embedding-gemma` | 768 | | +| `all-minilm` | 384 | | +| `bge-small` | 384 | | + +{% info title="Match the model to your collection dimension" %} +Pick a model before you create your collection, then set the collection's `dimension` to that model's dimension. All documents in a collection must use vectors of the same dimension, so a single collection works with models of one dimension only. +{% /info %} + +# Store embeddings {% #store-embeddings %} +Once you have an embedding, store it in a document's `embeddings` field. The collection's `dimension` must match the embedding's `dimension`. You can store any related data alongside the vector in the document's `metadata` field. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const text = 'The quick brown fox jumps over the lazy dog'; + +const embeddings = await vectorsDB.createTextEmbeddings({ + texts: [text] +}); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: embeddings.embeddings[0].embedding, + metadata: { text } + } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const text = 'The quick brown fox jumps over the lazy dog'; + +const embeddings = await vectorsDB.createTextEmbeddings({ + texts: [text] +}); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: embeddings.embeddings[0].embedding, + metadata: { text } + } +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$text = 'The quick brown fox jumps over the lazy dog'; + +$embeddings = $vectorsDB->createTextEmbeddings( + texts: [$text] +); + +$result = $vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + 'embeddings' => $embeddings['embeddings'][0]['embedding'], + 'metadata' => ['text' => $text] + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +text = 'The quick brown fox jumps over the lazy dog' + +embeddings = vectors_db.create_text_embeddings( + texts = [text] +) + +result = vectors_db.create_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = ID.unique(), + data = { + "embeddings": embeddings["embeddings"][0]["embedding"], + "metadata": { "text": text } + } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +text = 'The quick brown fox jumps over the lazy dog' + +embeddings = vectors_db.create_text_embeddings( + texts: [text] +) + +result = vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + "embeddings" => embeddings.embeddings[0].embedding, + "metadata" => { "text" => text } + } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +var text = "The quick brown fox jumps over the lazy dog"; + +EmbeddingList embeddings = await vectorsDB.CreateTextEmbeddings( + texts: new List<string> { text } +); + +Document result = await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new { + embeddings = embeddings.Embeddings[0].Embedding, + metadata = new { text } + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +final text = 'The quick brown fox jumps over the lazy dog'; + +EmbeddingList embeddings = await vectorsDB.createTextEmbeddings( + texts: [text], +); + +Document result = await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + "embeddings": embeddings.embeddings[0].embedding, + "metadata": { "text": text } + }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val text = "The quick brown fox jumps over the lazy dog" + +val embeddings = vectorsDB.createTextEmbeddings( + texts = listOf(text), +) + +val response = vectorsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = ID.unique(), + data = mapOf( + "embeddings" to embeddings.embeddings[0].embedding, + "metadata" to mapOf("text" to text) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +String text = "The quick brown fox jumps over the lazy dog"; + +vectorsDB.createTextEmbeddings( + List.of(text), + new CoroutineCallback<>((embeddings, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + vectorsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID.unique(), + Map.of( + "embeddings", embeddings.getEmbeddings().get(0).getEmbedding(), + "metadata", Map.of("text", text) + ), + new CoroutineCallback<>((result, err) -> { + if (err != null) { + err.printStackTrace(); + return; + } + + System.out.println(result); + }) + ); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let text = "The quick brown fox jumps over the lazy dog" + +let embeddings = try await vectorsDB.createTextEmbeddings( + texts: [text] +) + +let document = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "embeddings": embeddings.embeddings[0].embedding, + "metadata": ["text": text] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let text = "The quick brown fox jumps over the lazy dog"; + + let embeddings = vectors_db.create_text_embeddings( + vec![text], + None, // model (optional) + ).await?; + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "embeddings": embeddings.embeddings[0].embedding, + "metadata": { "text": text } + }), + None, // permissions (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id 'unique()' \ + --data '{ "embeddings": [-0.012246467, 0.02621112, -0.15247375], "metadata": { "text": "The quick brown fox jumps over the lazy dog" } }' +``` +{% /multicode %} + +{% info title="Embed in batches" %} +You can pass several strings in one `createTextEmbeddings` call to embed them together. The response returns one entry per input text, in order, so you can map each embedding back to its source text before storing. +{% /info %} + +# Next steps {% #next-steps %} +With embeddings stored in your documents, you can find the most similar documents to a query vector with vector search. + +{% arrow_link href="/docs/products/databases/vectorsdb/vector-search" %} +Learn about vector search +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/vectorsdb/order/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/order/+page.markdoc new file mode 100644 index 0000000000..160513898f --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/order/+page.markdoc @@ -0,0 +1,1006 @@ +--- +layout: article +title: Order +description: Order documents returned by Appwrite VectorsDB. Learn how to sort by system fields like $createdAt and $sequence, and why metadata sub-fields can't be ordered. +--- +You can order the documents returned by [listDocuments](/docs/products/databases/vectorsdb/documents#list-documents) using the `Query.orderAsc()` and `Query.orderDesc()` query methods. + +VectorsDB orders on the system fields that Appwrite maintains on every document, such as `$createdAt`, `$updatedAt`, `$sequence`, and `$id`. + +{% info title="Metadata sub-fields can't be ordered" %} +A VectorsDB collection has a [fixed schema](/docs/products/databases/vectorsdb/collections#schema): an `embeddings` vector and a `metadata` object. Because `metadata` is stored as a single JSON object rather than typed columns, you can't order by a value inside it. Ordering by a nested path like `metadata.title` is rejected with `Invalid query: Cannot order by nested attribute: metadata`. Order by the system fields below instead, or keep an orderable value in a system field such as `$createdAt`. +{% /info %} + +# Order by a system field {% #one-field %} +Pass `Query.orderAsc()` or `Query.orderDesc()` with a system field to sort the documents returned. The example below orders documents from newest to oldest by `$createdAt`. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderDesc('$createdAt') + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderDesc('$createdAt') + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::orderDesc('$createdAt') + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.order_desc('$createdAt') + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.order_desc('$createdAt') + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.OrderDesc("$createdAt") + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.orderDesc('\$createdAt') + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.orderDesc("\$createdAt") + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.orderDesc("$createdAt") + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documentList = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.orderDesc("$createdAt") + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::order_desc("$createdAt").to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderDesc","values":["$createdAt"]}' +``` +{% /multicode %} + +# Order by multiple fields {% #multiple-fields %} +To sort by more than one field, pass multiple order queries. They are applied in order, so the first query is the primary sort and each later query breaks ties. + +In the example below, documents are sorted first by `$createdAt` in descending order, then by `$id` in ascending order to break ties. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderDesc('$createdAt'), // Order first by creation time, newest first + sdk.Query.orderAsc('$id') // Then break ties by document ID + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderDesc('$createdAt'), // Order first by creation time, newest first + sdk.Query.orderAsc('$id') // Then break ties by document ID + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::orderDesc('$createdAt'), + Query::orderAsc('$id') + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.order_desc('$createdAt'), + Query.order_asc('$id') + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.order_desc('$createdAt'), + Query.order_asc('$id') + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.OrderDesc("$createdAt"), + Query.OrderAsc("$id") + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.orderDesc('\$createdAt'), + Query.orderAsc('\$id') + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.orderDesc("\$createdAt"), + Query.orderAsc("\$id") + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.orderDesc("$createdAt"), + Query.orderAsc("$id") + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documentList = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.orderDesc("$createdAt"), + Query.orderAsc("$id") + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::order_desc("$createdAt").to_string(), + Query::order_asc("$id").to_string(), + ]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderDesc","values":["$createdAt"]}' '{"method":"orderAsc","values":["$id"]}' +``` +{% /multicode %} + +# Order by sequence {% #sequence-ordering %} +For ordering based on insertion order, use the `$sequence` field, which Appwrite adds to every document. Sorting by `$sequence` returns documents in the order they were created. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderAsc('$sequence') + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderAsc('$sequence') + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::orderAsc('$sequence') + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.order_asc('$sequence') + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.order_asc('$sequence') + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.OrderAsc("$sequence") + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.orderAsc('\$sequence') + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.orderAsc("\$sequence") + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.orderAsc("$sequence") + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documentList = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.orderAsc("$sequence") + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::order_asc("$sequence").to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderAsc","values":["$sequence"]}' +``` +{% /multicode %} + +The `$sequence` field is useful when you need: +- Consistent ordering for pagination, especially with high-frequency inserts +- Reliable insertion order tracking when timestamps might not be precise enough +- Simple insertion-order sorting without managing custom counter fields + +# Order randomly {% #random-ordering %} +Use `Query.orderRandom()` to return documents in a random order. This is useful for sampling documents or surfacing varied results on each request. It takes no field. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderRandom() + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.orderRandom() + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::orderRandom() + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.order_random() + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.order_random() + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.OrderRandom() + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.orderRandom() + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.orderRandom() + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.orderRandom() + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documentList = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.orderRandom() + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::order_random().to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderRandom","values":[]}' +``` +{% /multicode %} + +To rank documents by similarity to a query vector instead of ordering by a field, use a vector search query. See [Vector search](/docs/products/databases/vectorsdb/vector-search). diff --git a/src/routes/docs/products/databases/vectorsdb/pagination/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/pagination/+page.markdoc new file mode 100644 index 0000000000..c12e0d4cdd --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/pagination/+page.markdoc @@ -0,0 +1,1041 @@ +--- +layout: article +title: Pagination +description: Implement pagination for large data sets in Appwrite VectorsDB. Explore techniques for splitting and displaying documents across multiple pages. +--- + +As your collection grows in size, you'll need to paginate the documents returned. +Pagination improves performance by returning a subset of documents that match a query at a time, called a page. + +By default, list operations return 25 documents per page, which can be changed using the `Query.limit()` query method. +There is no hard limit on the number of documents you can request. However, beware that **large pages can degrade performance**. + +# Offset pagination {% #offset-pagination %} + +Offset pagination divides documents into pages of `N` documents each. +To read page number `P`, skip `offset = N * (P - 1)` documents, then read the next `N`. + +Using `Query.limit()` and `Query.offset()` you can achieve offset pagination. +With `Query.limit()` you define how many documents can be returned from one request. +The `Query.offset()` is the number of documents you wish to skip before selecting documents. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +// Page 1 +const page1 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.offset(0) + ] +}); + +// Page 2 +const page2 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.offset(25) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +// Page 1 +const page1 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.offset(0) + ] +}); + +// Page 2 +const page2 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.offset(25) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +// Page 1 +$page1 = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(25), + Query::offset(0) + ] +); + +// Page 2 +$page2 = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(25), + Query::offset(25) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +# Page 1 +page1 = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(25), + Query.offset(0) + ] +) + +# Page 2 +page2 = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(25), + Query.offset(25) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +# Page 1 +page1 = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.offset(0) + ] +) + +# Page 2 +page2 = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.offset(25) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +// Page 1 +DocumentList page1 = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(25), + Query.Offset(0) + } +); + +// Page 2 +DocumentList page2 = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(25), + Query.Offset(25) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +// Page 1 +DocumentList page1 = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.offset(0) + ], +); + +// Page 2 +DocumentList page2 = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.offset(25) + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +// Page 1 +val page1 = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(25), + Query.offset(0) + ), +) + +// Page 2 +val page2 = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(25), + Query.offset(25) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.limit(25), + Query.offset(0) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +// Page 1 +let page1 = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(25), + Query.offset(0) + ] +) + +// Page 2 +let page2 = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(25), + Query.offset(25) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + // Page 1 + let page1 = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::limit(25).to_string(), + Query::offset(0).to_string(), + ]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + // Page 2 + let page2 = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::limit(25).to_string(), + Query::offset(25).to_string(), + ]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[25]}' '{"method":"offset","values":[25]}' +``` +{% /multicode %} + +{% info title="Drawbacks" %} +While traditional offset pagination is familiar, it comes with some drawbacks. +The request gets slower as the offset increases because the database has to skip over all the preceding documents before it can start selecting data. +If the data changes frequently, offset pagination will also produce **missing and duplicate** results. +{% /info %} + +# Cursor pagination {% #cursor-pagination %} + +The cursor is a unique identifier for a document that points to where the next page should start. +After reading a page of documents, pass the last document's ID into the `Query.cursorAfter(lastId)` query method to get the next page of documents. +Pass the first document's ID into the `Query.cursorBefore(firstId)` query method to retrieve the previous page. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +// Page 1 +const page1 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25) + ] +}); + +const lastId = page1.documents[page1.documents.length - 1].$id; + +// Page 2 +const page2 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.cursorAfter(lastId) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +// Page 1 +const page1 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25) + ] +}); + +const lastId = page1.documents[page1.documents.length - 1].$id; + +// Page 2 +const page2 = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25), + sdk.Query.cursorAfter(lastId) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +// Page 1 +$page1 = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(25) + ] +); + +$lastId = $page1['documents'][count($page1['documents']) - 1]['$id']; + +// Page 2 +$page2 = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(25), + Query::cursorAfter($lastId) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +# Page 1 +page1 = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(25) + ] +) + +last_id = page1['documents'][-1]['$id'] + +# Page 2 +page2 = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(25), + Query.cursor_after(last_id) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +# Page 1 +page1 = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(25) + ] +) + +last_id = page1.documents.last.id + +# Page 2 +page2 = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.cursor_after(last_id) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +// Page 1 +DocumentList page1 = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(25) + } +); + +string lastId = page1.Documents.Last().Id; + +// Page 2 +DocumentList page2 = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(25), + Query.CursorAfter(lastId) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +// Page 1 +DocumentList page1 = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(25) + ], +); + +final lastId = page1.documents.last.$id; + +// Page 2 +DocumentList page2 = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(25), + Query.cursorAfter(lastId) + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +// Page 1 +val page1 = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(25) + ), +) + +val lastId = page1.documents.last().id + +// Page 2 +val page2 = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(25), + Query.cursorAfter(lastId) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.limit(25), + Query.cursorAfter("<LAST_DOCUMENT_ID>") + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +// Page 1 +let page1 = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(25) + ] +) + +let lastId = page1.documents.last!.id + +// Page 2 +let page2 = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(25), + Query.cursorAfter(lastId) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + // Page 1 + let page1 = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::limit(25).to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + let last_id = page1.documents.last().unwrap().id.clone(); + + // Page 2 + let page2 = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::limit(25).to_string(), + Query::cursor_after(last_id).to_string(), + ]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[25]}' '{"method":"cursorAfter","values":["<LAST_DOCUMENT_ID>"]}' +``` +{% /multicode %} + +# When to use what? {% #when-to-use %} +Offset pagination should be used for collections that rarely change. +Offset pagination lets you build an indicator of the current page number and the total page count. +For example, a list with up to 20 pages or static data like a list of countries or currencies. +Using offset pagination on large and frequently updated collections may result in slow performance and **missing and duplicate** results. + +Cursor pagination should be used for frequently updated collections. +It is best suited for lazy-loaded pages with infinite scrolling. +For example, a feed, comment section, chat history, or high volume datasets. + +# Cache list responses {% #cache-list-responses %} + +You can cache list responses by passing a `ttl` (time-to-live) value in seconds. Subsequent identical requests return the cached result until the TTL expires. The cache is permission-aware, so users with different roles never see each other's cached data. + +Set `ttl` between `1` and `86400` (24 hours). The default is `0` (caching disabled). The response includes an `X-Appwrite-Cache` header with value `hit` or `miss`. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const page = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const page = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$page = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(25) + ], + ttl: 60 // Cache for 60 seconds +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +page = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(25) + ], + ttl = 60 # Cache for 60 seconds +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +page = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(25) + ], + ttl: 60 # Cache for 60 seconds +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList page = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(25) + }, + ttl: 60 // Cache for 60 seconds +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList page = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(25) + ], + ttl: 60, // Cache for 60 seconds +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val page = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(25) + ), + ttl = 60 // Cache for 60 seconds +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.limit(25) + ), + null, // transactionId + null, // total + 60, // ttl - Cache for 60 seconds + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let page = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(25) + ], + ttl: 60 // Cache for 60 seconds +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let page = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::limit(25).to_string()]), + None, // transactionId (optional) + None, // total (optional) + Some(60), // ttl - Cache for 60 seconds + ).await?; + + println!("{:?}", page); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[25]}' \ + --ttl 60 +``` +{% /multicode %} + +Document writes do **not** invalidate the cache, so cached responses may contain stale data until the TTL expires. Use a short TTL for collections that change often, or skip caching entirely when you always need the latest documents. diff --git a/src/routes/docs/products/databases/vectorsdb/permissions/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/permissions/+page.markdoc new file mode 100644 index 0000000000..2b3adc1c58 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/permissions/+page.markdoc @@ -0,0 +1,1241 @@ +--- +layout: article +title: Database permissions +description: Control access to your VectorsDB data with permissions. Learn how to set collection level and document level access rules. +--- + +Permissions define who can access documents in a collection. By default **no permissions** are granted to any users, so no user can access any documents. +Permissions exist at two levels, collection level and document level permissions. + +In Appwrite, permissions are **granted**, meaning a user has no access by default and receives access when granted. +A user with access granted at either collection level or document level will be able to access a document. +Users **don't need access at both levels** to access documents. + +Permissions are evaluated when documents are accessed through a [Client SDK](/docs/sdks#client). [Server SDKs](/docs/sdks#server) authenticated with an [API key](/docs/advanced/platform/api-keys) bypass permissions, so the examples below use a Server SDK to set and read back the permissions that a client would then be evaluated against. + +# Collection level {% #collection-level %} +Collection level permissions apply to every document in the collection. +If a user has read, create, update, or delete permissions at the collection level, the user can access **all documents** inside the collection. + +Configure collection level permissions by navigating to **Your collection** > **Security** > **Permissions**, or pass a `permissions` array when you create or update the collection. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: sdk.ID.unique(), + name: 'documents', + dimension: 4, + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.create(sdk.Role.users()), + sdk.Permission.update(sdk.Role.users()), + sdk.Permission.delete(sdk.Role.users()) + ], + documentSecurity: true // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: sdk.ID.unique(), + name: 'documents', + dimension: 4, + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.create(sdk.Role.users()), + sdk.Permission.update(sdk.Role.users()), + sdk.Permission.delete(sdk.Role.users()) + ], + documentSecurity: true // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createCollection( + databaseId: '<DATABASE_ID>', + collectionId: ID::unique(), + name: 'documents', + dimension: 4, + permissions: [ + Permission::read(Role::any()), + Permission::create(Role::users()), + Permission::update(Role::users()), + Permission::delete(Role::users()) + ], + documentSecurity: true // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_collection( + database_id = '<DATABASE_ID>', + collection_id = ID.unique(), + name = 'documents', + dimension = 4, + permissions = [ + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ], + document_security = True # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_collection( + database_id: '<DATABASE_ID>', + collection_id: ID.unique(), + name: 'documents', + dimension: 4, + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ], + document_security: true # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.CreateCollection( + databaseId: "<DATABASE_ID>", + collectionId: ID.Unique(), + name: "documents", + dimension: 4, + permissions: new List<string> { + Permission.Read(Role.Any()), + Permission.Create(Role.Users()), + Permission.Update(Role.Users()), + Permission.Delete(Role.Users()) + }, + documentSecurity: true // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.createCollection( + databaseId: '<DATABASE_ID>', + collectionId: ID.unique(), + name: 'documents', + dimension: 4, + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ], // (optional) + documentSecurity: true, // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createCollection( + databaseId = "<DATABASE_ID>", + collectionId = ID.unique(), + name = "documents", + dimension = 4, + permissions = listOf( + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ), // optional + documentSecurity = true, // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createCollection( + "<DATABASE_ID>", + ID.unique(), + "documents", + 4, + List.of( + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ), + true, + true, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.createCollection( + databaseId: "<DATABASE_ID>", + collectionId: ID.unique(), + name: "documents", + dimension: 4, + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()), + Permission.update(Role.users()), + Permission.delete(Role.users()) + ], + documentSecurity: true // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_collection( + "<DATABASE_ID>", + ID::unique(), + "documents", + 4, + Some(vec![ + Permission::read(Role::any()).to_string(), + Permission::create(Role::users(None)).to_string(), + Permission::update(Role::users(None)).to_string(), + Permission::delete(Role::users(None)).to_string(), + ]), + Some(true), // documentSecurity (optional) + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --name "documents" \ + --dimension 4 \ + --permissions 'read("any")' 'create("users")' 'update("users")' 'delete("users")' \ + --document-security true +``` +{% /multicode %} + +To change a collection's permissions later, pass a new `permissions` array to `updateCollection`. The `name` is required when updating. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: 'documents', + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.create(sdk.Role.users()) + ], + documentSecurity: false // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateCollection({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: 'documents', + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.create(sdk.Role.users()) + ], + documentSecurity: false // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->updateCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: 'documents', + permissions: [ + Permission::read(Role::any()), + Permission::create(Role::users()) + ], + documentSecurity: false // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.update_collection( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + name = 'documents', + permissions = [ + Permission.read(Role.any()), + Permission.create(Role.users()) + ], + document_security = False # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.update_collection( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + name: 'documents', + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()) + ], + document_security: false # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.UpdateCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "documents", + permissions: new List<string> { + Permission.Read(Role.Any()), + Permission.Create(Role.Users()) + }, + documentSecurity: false // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.updateCollection( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + name: 'documents', + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()) + ], // (optional) + documentSecurity: false, // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.updateCollection( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + name = "documents", + permissions = listOf( + Permission.read(Role.any()), + Permission.create(Role.users()) + ), // optional + documentSecurity = false, // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.updateCollection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "documents", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.updateCollection( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + name: "documents", + permissions: [ + Permission.read(Role.any()), + Permission.create(Role.users()) + ], + documentSecurity: false // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_collection( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "documents", + None, // dimension (optional) + Some(vec![ + Permission::read(Role::any()).to_string(), + Permission::create(Role::users(None)).to_string(), + ]), + Some(false), // documentSecurity (optional) + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db update-collection \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --name "documents" \ + --permissions 'read("any")' 'create("users")' \ + --document-security false +``` +{% /multicode %} + +[Learn more about permissions and roles](/docs/advanced/platform/permissions) + +# Document level {% #document-level %} +Document level permissions grant access to individual documents. +If a user has read, update, or delete permissions at the document level, the user can access the **individual document**. + +Document level permissions are only applied if `documentSecurity` is enabled on the collection. Enable it in the Console by navigating to **Your collection** > **Security** > **Document security**, or by setting `documentSecurity` to `true` when you create or update the collection, as shown above. + +Set permissions on an individual document by passing a `permissions` array to `createDocument`. Use `Role.user('<USER_ID>')` to scope access to a specific user. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet' } + }, + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.update(sdk.Role.user('<USER_ID>')), + sdk.Permission.delete(sdk.Role.user('<USER_ID>')) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet' } + }, + permissions: [ + sdk.Permission.read(sdk.Role.any()), + sdk.Permission.update(sdk.Role.user('<USER_ID>')), + sdk.Permission.delete(sdk.Role.user('<USER_ID>')) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => ['title' => 'Hamlet'] + ], + permissions: [ + Permission::read(Role::any()), + Permission::update(Role::user('<USER_ID>')), + Permission::delete(Role::user('<USER_ID>')) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = ID.unique(), + data = { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet" } + }, + permissions = [ + Permission.read(Role.any()), + Permission.update(Role.user('<USER_ID>')), + Permission.delete(Role.user('<USER_ID>')) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + "embeddings" => [0.12, 0.84, 0.33, 0.57], + "metadata" => { "title" => "Hamlet" } + }, + permissions: [ + Permission.read(Role.any()), + Permission.update(Role.user('<USER_ID>')), + Permission.delete(Role.user('<USER_ID>')) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> { + { "embeddings", new List<double> { 0.12, 0.84, 0.33, 0.57 } }, + { "metadata", new Dictionary<string, object> { { "title", "Hamlet" } } } + }, + permissions: new List<string> { + Permission.Read(Role.Any()), + Permission.Update(Role.User("<USER_ID>")), + Permission.Delete(Role.User("<USER_ID>")) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet" } + }, + permissions: [ + Permission.read(Role.any()), + Permission.update(Role.user('<USER_ID>')), + Permission.delete(Role.user('<USER_ID>')) + ], // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = ID.unique(), + data = mapOf( + "embeddings" to listOf(0.12, 0.84, 0.33, 0.57), + "metadata" to mapOf("title" to "Hamlet") + ), + permissions = listOf( + Permission.read(Role.any()), + Permission.update(Role.user("<USER_ID>")), + Permission.delete(Role.user("<USER_ID>")) + ), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID.unique(), + Map.of( + "embeddings", List.of(0.12, 0.84, 0.33, 0.57), + "metadata", Map.of("title", "Hamlet") + ), + List.of( + Permission.read(Role.any()), + Permission.update(Role.user("<USER_ID>")), + Permission.delete(Role.user("<USER_ID>")) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": ["title": "Hamlet"] + ], + permissions: [ + Permission.read(Role.any()), + Permission.update(Role.user("<USER_ID>")), + Permission.delete(Role.user("<USER_ID>")) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet" } + }), + Some(vec![ + Permission::read(Role::any()).to_string(), + Permission::update(Role::user("<USER_ID>", None)).to_string(), + Permission::delete(Role::user("<USER_ID>", None)).to_string(), + ]), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-document \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --document-id 'unique()' \ + --data '{ "embeddings": [0.12, 0.84, 0.33, 0.57], "metadata": { "title": "Hamlet" } }' \ + --permissions 'read("any")' 'update("user:<USER_ID>")' 'delete("user:<USER_ID>")' +``` +{% /multicode %} + +To change a document's permissions later, pass a new `permissions` array to `updateDocument`. Only the fields you pass are changed, so you can update permissions without touching the vector or metadata. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + permissions: [ + sdk.Permission.read(sdk.Role.users()) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + permissions: [ + sdk.Permission.read(sdk.Role.users()) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + permissions: [ + Permission::read(Role::users()) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.update_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + permissions = [ + Permission.read(Role.users()) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.update_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + permissions: [ + Permission.read(Role.users()) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.UpdateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + permissions: new List<string> { + Permission.Read(Role.Users()) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + permissions: [ + Permission.read(Role.users()) + ], // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.updateDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + permissions = listOf( + Permission.read(Role.users()) + ), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.updateDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + null, + List.of( + Permission.read(Role.users()) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.updateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + permissions: [ + Permission.read(Role.users()) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + None, // data (optional) + Some(vec![ + Permission::read(Role::users(None)).to_string(), + ]), + None, // transactionId (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db update-document \ + --database-id "<DATABASE_ID>" \ + --collection-id "<COLLECTION_ID>" \ + --document-id "<DOCUMENT_ID>" \ + --permissions 'read("users")' +``` +{% /multicode %} + +[Learn more about permissions and roles](/docs/advanced/platform/permissions) + +# Common use cases {% #common-use-cases %} + +For examples of how to implement common permission patterns, including creating private documents that are only accessible to their creators, see the [permissions examples](/docs/advanced/platform/permissions#examples) in our platform documentation. diff --git a/src/routes/docs/products/databases/vectorsdb/queries/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/queries/+page.markdoc new file mode 100644 index 0000000000..5e36bec232 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/queries/+page.markdoc @@ -0,0 +1,1879 @@ +--- +layout: article +title: Queries +description: Filter VectorsDB documents by their metadata using the Query class. Discover comparison, string, logical, ordering, and pagination operators. +--- + +Many list endpoints in Appwrite allow you to filter, sort, and paginate results using queries. Appwrite provides a common set of syntax to build queries. + +In VectorsDB, every document stores an `embeddings` vector and an optional `metadata` object. The queries on this page filter documents by the fields inside that `metadata` object. To rank documents by vector similarity instead, see [vector search](/docs/products/databases/vectorsdb/vector-search). + +# Query class {% #query-class %} + +Appwrite SDKs provide a `Query` class to help you build queries. The `Query` class has methods for each type of supported query operation. + +# Building queries {% #building-queries %} + +Queries are passed to an endpoint through the `queries` parameter as an array of query strings, which can be generated using the `Query` class. + +Each query method is logically separated via `AND` operations. For `OR` operation, pass multiple values into the query method separated by commas. +For example `Query.equal('metadata.genre', ['sci-fi', 'drama'])` will fetch documents whose genre is `sci-fi` or `drama`. + +To filter on a field inside the `metadata` object, reference it with dot notation, such as `metadata.genre` or `metadata.year`. + +{% info title="Filter metadata with string values" %} +VectorsDB stores `metadata` as a JSON object, so metadata fields are compared as strings. Pass filter values as strings, even when the stored value is a number. For example, use `Query.greaterThan('metadata.year', '2010')`, not `Query.greaterThan('metadata.year', 2010)`. Passing a numeric value returns a `400` error. +{% /info %} + +{% info title="Default pagination behavior" %} +By default, results are limited to the **first 25 items**. +You can change this through [pagination](/docs/products/databases/vectorsdb/pagination). +{% /info %} + +{% multicode %} + +```client-web +import { Client, Query, VectorsDB } from "appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + +const vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.equal('metadata.genre', ['sci-fi', 'drama']), + Query.greaterThan('metadata.year', '2010') + ] +}); +``` +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client(); + +const vectorsDB = new sdk.VectorsDB(client); + +client + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>') +; + +const promise = vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.equal('metadata.genre', ['sci-fi', 'drama']), + sdk.Query.greaterThan('metadata.year', '2010') + ] +}); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +void main() async { + final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + final vectorsDB = VectorsDB(client); + + try { + final documents = await vectorsDB.listDocuments( + '<DATABASE_ID>', + '<COLLECTION_ID>', + [ + Query.equal('metadata.genre', ['sci-fi', 'drama']), + Query.greaterThan('metadata.year', '2010') + ] + ); + } on AppwriteException catch(e) { + print(e); + } +} +``` +```client-apple +import Appwrite +import AppwriteModels + +func main() async throws { + let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + + let vectorsDB = VectorsDB(client) + + do { + let documents = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.equal("metadata.genre", value: ["sci-fi", "drama"]), + Query.greaterThan("metadata.year", value: "2010") + ] + ) + } catch { + print(error.localizedDescription) + } +} +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +suspend fun main() { + val client = Client(applicationContext) + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + val vectorsDB = VectorsDB(client) + + try { + val documents = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.equal("metadata.genre", listOf("sci-fi", "drama")), + Query.greaterThan("metadata.year", "2010") + ) + ) + } catch (e: AppwriteException) { + Log.e("Appwrite", e.message) + } +} +``` +```server-go +package main + +import ( + "fmt" + "log" + + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/query" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<API_KEY>"), + ) + + vectorsDB := appwrite.NewVectorsDB(client) + + documents, err := vectorsDB.ListDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vectorsDB.WithListDocumentsQueries([]string{ + query.Equal("metadata.genre", []string{"sci-fi", "drama"}), + query.GreaterThan("metadata.year", "2010"), + }), + ) + if err != nil { + log.Fatal(err) + } + + fmt.Printf("Documents: %+v\n", documents) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; +use serde_json::Value; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let documents = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::equal("metadata.genre", Value::Array(vec![ + Value::String("sci-fi".to_string()), + Value::String("drama".to_string()), + ])).to_string(), + Query::greater_than("metadata.year", "2010").to_string(), + ]), + None, + None, + None, + ).await?; + + println!("{:?}", documents); + Ok(()) +} +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Query; +use Appwrite\Services\VectorsDB; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>') +; + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + '<DATABASE_ID>', + '<COLLECTION_ID>', + [ + Query::equal('metadata.genre', ['sci-fi', 'drama']), + Query::greaterThan('metadata.year', '2010') + ] +); +``` +```server-python +from appwrite.client import Client +from appwrite.query import Query +from appwrite.services.vectors_db import VectorsDB + +client = Client() + +(client + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') +) + +vectorsDB = VectorsDB(client) + +result = vectorsDB.list_documents( + '<DATABASE_ID>', + '<COLLECTION_ID>', + [ + Query.equal('metadata.genre', ['sci-fi', 'drama']), + Query.greater_than('metadata.year', '2010') + ] +) +``` +```graphql +query { + vectorsDBListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>" + queries: [ + "{\"method\":\"equal\",\"attribute\":\"metadata.genre\",\"values\":[\"sci-fi\",\"drama\"]}", + "{\"method\":\"greaterThan\",\"attribute\":\"metadata.year\",\"values\":[\"2010\"]}" + ] + ) { + total + documents { + _id + data + } + } +} +``` +```http +GET /v1/vectorsdb/<DATABASE_ID>/collections/<COLLECTION_ID>/documents?queries[]=%7B%22method%22%3A%22equal%22%2C%22attribute%22%3A%22metadata.genre%22%2C%22values%22%3A%5B%22sci-fi%22%2C%22drama%22%5D%7D&queries[]=%7B%22method%22%3A%22greaterThan%22%2C%22attribute%22%3A%22metadata.year%22%2C%22values%22%3A%5B%222010%22%5D%7D HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"equal","attribute":"metadata.genre","values":["sci-fi","drama"]}' '{"method":"greaterThan","attribute":"metadata.year","values":["2010"]}' +``` +{% /multicode %} + +# Query operators {% #query-operators %} + +## Select {% #select %} + +The `select` operator allows you to specify which fields should be returned from a document. This optimizes response size and retrieves only the data you need. Each VectorsDB document has two data fields, `embeddings` and `metadata`. + +{% multicode %} +```client-web +Query.select(["metadata"]) +``` +```client-flutter +Query.select(["metadata"]) +``` +```server-python +Query.select(["metadata"]) +``` +```server-ruby +Query.select(["metadata"]) +``` +```server-deno +Query.select(["metadata"]) +``` +```server-php +Query::select(["metadata"]) +``` +```client-apple +Query.select(["metadata"]) +``` +```server-go +query.Select([]string{"metadata"}) +``` +```server-nodejs +Query.select(["metadata"]) +``` +```server-rust +Query::select(vec!["metadata"]).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"select","values":["metadata"]}' +``` +```http +{"method":"select","values":["metadata"]} +``` +{% /multicode %} + +### Use selection patterns {% #select-patterns %} + +| Pattern | Description | Use case | +|---------|-------------|----------| +| `["metadata"]` | Metadata object only | Return metadata without the embedding vector | +| `["embeddings"]` | Embedding vector only | Return the stored vector | +| `["metadata", "embeddings"]` | Both data fields | Get the complete document data | + +### Optimize performance {% #select-performance %} + +**Optimize response size** - Only select the fields you actually need. Embedding vectors are large, so omitting `embeddings` keeps responses small when you only need metadata. + +**Reduce database load** - Selecting fewer fields reduces database processing time. + +## Comparison operators {% #comparison %} + +Pass metadata filter values as strings. See [Filter metadata with string values](#building-queries). + +### Equal {% #equal %} + +Returns document if a metadata field is equal to any value in the provided array. + +{% multicode %} +```client-web +Query.equal("metadata.genre", ["sci-fi"]) +``` +```client-flutter +Query.equal("metadata.genre", ["sci-fi"]) +``` +```server-python +Query.equal("metadata.genre", ["sci-fi"]) +``` +```server-ruby +Query.equal("metadata.genre", ["sci-fi"]) +``` +```server-deno +Query.equal("metadata.genre", ["sci-fi"]) +``` +```server-php +Query::equal("metadata.genre", ["sci-fi"]) +``` +```client-apple +Query.equal("metadata.genre", value: ["sci-fi"]) +``` +```server-go +query.Equal("metadata.genre", []string{"sci-fi"}) +``` +```server-nodejs +Query.equal("metadata.genre", ["sci-fi"]) +``` +```server-rust +Query::equal("metadata.genre", Value::Array(vec![Value::String("sci-fi".to_string())])).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]}' +``` +```http +{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]} +``` +{% /multicode %} + +### Not equal {% #not-equal %} + +Returns document if a metadata field is not equal to the provided value. + +{% multicode %} +```client-web +Query.notEqual("metadata.genre", "sci-fi") +``` +```client-flutter +Query.notEqual("metadata.genre", "sci-fi") +``` +```server-python +Query.not_equal("metadata.genre", "sci-fi") +``` +```server-ruby +Query.not_equal("metadata.genre", "sci-fi") +``` +```server-deno +Query.notEqual("metadata.genre", "sci-fi") +``` +```server-php +Query::notEqual("metadata.genre", "sci-fi") +``` +```client-apple +Query.notEqual("metadata.genre", value: "sci-fi") +``` +```server-go +query.NotEqual("metadata.genre", "sci-fi") +``` +```server-nodejs +Query.notEqual("metadata.genre", "sci-fi") +``` +```server-rust +Query::not_equal("metadata.genre", "sci-fi").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"notEqual","attribute":"metadata.genre","values":["sci-fi"]}' +``` +```http +{"method":"notEqual","attribute":"metadata.genre","values":"sci-fi"} +``` +{% /multicode %} + +### Less than {% #less-than %} + +Returns document if a metadata field is less than the provided value. + +{% multicode %} +```client-web +Query.lessThan("metadata.year", "2009") +``` +```client-flutter +Query.lessThan("metadata.year", "2009") +``` +```server-python +Query.less_than("metadata.year", "2009") +``` +```server-ruby +Query.less_than("metadata.year", "2009") +``` +```server-deno +Query.lessThan("metadata.year", "2009") +``` +```server-php +Query::lessThan("metadata.year", "2009") +``` +```client-apple +Query.lessThan("metadata.year", value: "2009") +``` +```server-go +query.LessThan("metadata.year", "2009") +``` +```server-nodejs +Query.lessThan("metadata.year", "2009") +``` +```server-rust +Query::less_than("metadata.year", "2009").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"lessThan","attribute":"metadata.year","values":["2009"]}' +``` +```http +{"method":"lessThan","attribute":"metadata.year","values":["2009"]} +``` +{% /multicode %} + +### Less than or equal {% #less-than-equal %} + +Returns document if a metadata field is less than or equal to the provided value. + +{% multicode %} +```client-web +Query.lessThanEqual("metadata.year", "2009") +``` +```client-flutter +Query.lessThanEqual("metadata.year", "2009") +``` +```server-python +Query.less_than_equal("metadata.year", "2009") +``` +```server-ruby +Query.less_than_equal("metadata.year", "2009") +``` +```server-deno +Query.lessThanEqual("metadata.year", "2009") +``` +```server-php +Query::lessThanEqual("metadata.year", "2009") +``` +```client-apple +Query.lessThanEqual("metadata.year", value: "2009") +``` +```server-go +query.LessThanEqual("metadata.year", "2009") +``` +```server-nodejs +Query.lessThanEqual("metadata.year", "2009") +``` +```server-rust +Query::less_than_equal("metadata.year", "2009").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"lessThanEqual","attribute":"metadata.year","values":["2009"]}' +``` +```http +{"method":"lessThanEqual","attribute":"metadata.year","values":["2009"]} +``` +{% /multicode %} + +### Greater than {% #greater-than %} + +Returns document if a metadata field is greater than the provided value. + +{% multicode %} +```client-web +Query.greaterThan("metadata.year", "2009") +``` +```client-flutter +Query.greaterThan("metadata.year", "2009") +``` +```server-python +Query.greater_than("metadata.year", "2009") +``` +```server-ruby +Query.greater_than("metadata.year", "2009") +``` +```server-deno +Query.greaterThan("metadata.year", "2009") +``` +```server-php +Query::greaterThan("metadata.year", "2009") +``` +```client-apple +Query.greaterThan("metadata.year", value: "2009") +``` +```server-go +query.GreaterThan("metadata.year", "2009") +``` +```server-nodejs +Query.greaterThan("metadata.year", "2009") +``` +```server-rust +Query::greater_than("metadata.year", "2009").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"greaterThan","attribute":"metadata.year","values":["2009"]}' +``` +```http +{"method":"greaterThan","attribute":"metadata.year","values":["2009"]} +``` +{% /multicode %} + +### Greater than or equal {% #greater-than-equal %} + +Returns document if a metadata field is greater than or equal to the provided value. + +{% multicode %} +```client-web +Query.greaterThanEqual("metadata.year", "2009") +``` +```client-flutter +Query.greaterThanEqual("metadata.year", "2009") +``` +```server-python +Query.greater_than_equal("metadata.year", "2009") +``` +```server-ruby +Query.greater_than_equal("metadata.year", "2009") +``` +```server-deno +Query.greaterThanEqual("metadata.year", "2009") +``` +```server-php +Query::greaterThanEqual("metadata.year", "2009") +``` +```client-apple +Query.greaterThanEqual("metadata.year", value: "2009") +``` +```server-go +query.GreaterThanEqual("metadata.year", "2009") +``` +```server-nodejs +Query.greaterThanEqual("metadata.year", "2009") +``` +```server-rust +Query::greater_than_equal("metadata.year", "2009").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"greaterThanEqual","attribute":"metadata.year","values":["2009"]}' +``` +```http +{"method":"greaterThanEqual","attribute":"metadata.year","values":["2009"]} +``` +{% /multicode %} + +### Between {% #between %} + +Returns document if a metadata field value falls between the two values. The boundary values are inclusive. + +{% multicode %} +```client-web +Query.between("metadata.year", "2005", "2010") +``` +```client-flutter +Query.between("metadata.year", "2005", "2010") +``` +```server-python +Query.between("metadata.year", "2005", "2010") +``` +```server-ruby +Query.between("metadata.year", "2005", "2010") +``` +```server-deno +Query.between("metadata.year", "2005", "2010") +``` +```server-php +Query::between("metadata.year", "2005", "2010") +``` +```client-apple +Query.between("metadata.year", start: "2005", end: "2010") +``` +```server-go +query.Between("metadata.year", "2005", "2010") +``` +```server-nodejs +Query.between("metadata.year", "2005", "2010") +``` +```server-rust +Query::between("metadata.year", "2005", "2010").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"between","attribute":"metadata.year","values":["2005","2010"]}' +``` +```http +{"method":"between","attribute":"metadata.year","values":["2005","2010"]} +``` +{% /multicode %} + +### Not between {% #not-between %} + +Returns documents if the metadata field value is outside the range defined by the two values. Boundary values are excluded. + +{% multicode %} +```client-web +Query.notBetween("metadata.year", "2005", "2010") +``` +```client-flutter +Query.notBetween("metadata.year", "2005", "2010") +``` +```client-apple +Query.notBetween("metadata.year", start: "2005", end: "2010") +``` +```client-android-kotlin +Query.notBetween("metadata.year", "2005", "2010") +``` +```client-android-java +Query.notBetween("metadata.year", "2005", "2010") +``` +```server-python +Query.not_between("metadata.year", "2005", "2010") +``` +```server-ruby +Query.not_between("metadata.year", "2005", "2010") +``` +```server-deno +Query.notBetween("metadata.year", "2005", "2010") +``` +```server-nodejs +Query.notBetween("metadata.year", "2005", "2010") +``` +```server-php +Query::notBetween("metadata.year", "2005", "2010") +``` +```server-swift +Query.notBetween("metadata.year", start: "2005", end: "2010") +``` +```server-rust +Query::not_between("metadata.year", "2005", "2010").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"notBetween","attribute":"metadata.year","values":["2005","2010"]}' +``` +```http +{"method":"notBetween","attribute":"metadata.year","values":["2005","2010"]} +``` +{% /multicode %} + +## Null checks {% #null-checks %} + +### Is null {% #is-null %} + +Returns documents where the metadata field value is null or absent. + +{% multicode %} +```client-web +Query.isNull("metadata.archived") +``` +```client-flutter +Query.isNull("metadata.archived") +``` +```server-python +Query.is_null("metadata.archived") +``` +```server-ruby +Query.is_null("metadata.archived") +``` +```server-deno +Query.isNull("metadata.archived") +``` +```server-php +Query::isNull("metadata.archived") +``` +```client-apple +Query.isNull("metadata.archived") +``` +```server-go +query.IsNull("metadata.archived") +``` +```server-nodejs +Query.isNull("metadata.archived") +``` +```server-rust +Query::is_null("metadata.archived").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"isNull","attribute":"metadata.archived"}' +``` +```http +{"method":"isNull","attribute":"metadata.archived"} +``` +{% /multicode %} + +### Is not null {% #is-not-null %} + +Returns documents where the metadata field value is **not** null. + +{% multicode %} +```client-web +Query.isNotNull("metadata.archived") +``` +```client-flutter +Query.isNotNull("metadata.archived") +``` +```server-python +Query.is_not_null("metadata.archived") +``` +```server-ruby +Query.is_not_null("metadata.archived") +``` +```server-deno +Query.isNotNull("metadata.archived") +``` +```server-php +Query::isNotNull("metadata.archived") +``` +```client-apple +Query.isNotNull("metadata.archived") +``` +```server-go +query.IsNotNull("metadata.archived") +``` +```server-nodejs +Query.isNotNull("metadata.archived") +``` +```server-rust +Query::is_not_null("metadata.archived").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"isNotNull","attribute":"metadata.archived"}' +``` +```http +{"method":"isNotNull","attribute":"metadata.archived"} +``` +{% /multicode %} + +## String operations {% #string-operations %} + +### Starts with {% #starts-with %} + +Returns documents if a metadata string field starts with a substring. + +{% multicode %} +```client-web +Query.startsWith("metadata.title", "Iron") +``` +```client-flutter +Query.startsWith("metadata.title", "Iron") +``` +```server-python +Query.starts_with("metadata.title", "Iron") +``` +```server-ruby +Query.starts_with("metadata.title", "Iron") +``` +```server-deno +Query.startsWith("metadata.title", "Iron") +``` +```server-php +Query::startsWith("metadata.title", "Iron") +``` +```client-apple +Query.startsWith("metadata.title", value: "Iron") +``` +```server-go +query.StartsWith("metadata.title", "Iron") +``` +```server-nodejs +Query.startsWith("metadata.title", "Iron") +``` +```server-rust +Query::starts_with("metadata.title", "Iron").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"startsWith","attribute":"metadata.title","values":["Iron"]}' +``` +```http +{"method":"startsWith","attribute":"metadata.title","values":["Iron"]} +``` +{% /multicode %} + +### Not starts with {% #not-starts-with %} + +Returns documents if a metadata string field does not start with a substring. + +{% multicode %} +```client-web +Query.notStartsWith("metadata.title", "Iron") +``` +```client-flutter +Query.notStartsWith("metadata.title", "Iron") +``` +```client-apple +Query.notStartsWith("metadata.title", value: "Iron") +``` +```client-android-kotlin +Query.notStartsWith("metadata.title", "Iron") +``` +```client-android-java +Query.notStartsWith("metadata.title", "Iron") +``` +```server-python +Query.not_starts_with("metadata.title", "Iron") +``` +```server-ruby +Query.not_starts_with("metadata.title", "Iron") +``` +```server-deno +Query.notStartsWith("metadata.title", "Iron") +``` +```server-nodejs +Query.notStartsWith("metadata.title", "Iron") +``` +```server-php +Query::notStartsWith("metadata.title", "Iron") +``` +```server-swift +Query.notStartsWith("metadata.title", value: "Iron") +``` +```server-rust +Query::not_starts_with("metadata.title", "Iron").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"notStartsWith","attribute":"metadata.title","values":["Iron"]}' +``` +```http +{"method":"notStartsWith","attribute":"metadata.title","values":["Iron"]} +``` +{% /multicode %} + +### Ends with {% #ends-with %} + +Returns documents if a metadata string field ends with a substring. + +{% multicode %} +```client-web +Query.endsWith("metadata.title", "Man") +``` +```client-flutter +Query.endsWith("metadata.title", "Man") +``` +```server-python +Query.ends_with("metadata.title", "Man") +``` +```server-ruby +Query.ends_with("metadata.title", "Man") +``` +```server-deno +Query.endsWith("metadata.title", "Man") +``` +```server-php +Query::endsWith("metadata.title", "Man") +``` +```client-apple +Query.endsWith("metadata.title", value: "Man") +``` +```server-go +query.EndsWith("metadata.title", "Man") +``` +```server-nodejs +Query.endsWith("metadata.title", "Man") +``` +```server-rust +Query::ends_with("metadata.title", "Man").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"endsWith","attribute":"metadata.title","values":["Man"]}' +``` +```http +{"method":"endsWith","attribute":"metadata.title","values":["Man"]} +``` +{% /multicode %} + +### Not ends with {% #not-ends-with %} + +Returns documents if a metadata string field does not end with a substring. + +{% multicode %} +```client-web +Query.notEndsWith("metadata.title", "Man") +``` +```client-flutter +Query.notEndsWith("metadata.title", "Man") +``` +```client-apple +Query.notEndsWith("metadata.title", value: "Man") +``` +```client-android-kotlin +Query.notEndsWith("metadata.title", "Man") +``` +```client-android-java +Query.notEndsWith("metadata.title", "Man") +``` +```server-python +Query.not_ends_with("metadata.title", "Man") +``` +```server-ruby +Query.not_ends_with("metadata.title", "Man") +``` +```server-deno +Query.notEndsWith("metadata.title", "Man") +``` +```server-nodejs +Query.notEndsWith("metadata.title", "Man") +``` +```server-php +Query::notEndsWith("metadata.title", "Man") +``` +```server-swift +Query.notEndsWith("metadata.title", value: "Man") +``` +```server-rust +Query::not_ends_with("metadata.title", "Man").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"notEndsWith","attribute":"metadata.title","values":["Man"]}' +``` +```http +{"method":"notEndsWith","attribute":"metadata.title","values":["Man"]} +``` +{% /multicode %} + +### Contains {% #contains %} + +Returns documents if a metadata array field contains the specified elements or if a metadata string field contains the specified substring. + +{% multicode %} +```client-web +// For arrays +Query.contains("metadata.tags", ["space"]) + +// For strings +Query.contains("metadata.title", "Iron") +``` +```client-flutter +// For arrays +Query.contains("metadata.tags", ["space"]) + +// For strings +Query.contains("metadata.title", "Iron") +``` +```server-python +# For arrays +Query.contains("metadata.tags", ["space"]) + +# For strings +Query.contains("metadata.title", "Iron") +``` +```server-ruby +# For arrays +Query.contains("metadata.tags", ["space"]) + +# For strings +Query.contains("metadata.title", "Iron") +``` +```server-deno +// For arrays +Query.contains("metadata.tags", ["space"]) + +// For strings +Query.contains("metadata.title", "Iron") +``` +```server-php +// For arrays +Query::contains("metadata.tags", ["space"]) + +// For strings +Query::contains("metadata.title", "Iron") +``` +```client-apple +// For arrays +Query.contains("metadata.tags", value: ["space"]) + +// For strings +Query.contains("metadata.title", value: "Iron") +``` +```server-go +// For arrays +query.Contains("metadata.tags", []string{"space"}) + +// For strings +query.Contains("metadata.title", "Iron") +``` +```server-nodejs +// For arrays +Query.contains("metadata.tags", ["space"]) + +// For strings +Query.contains("metadata.title", "Iron") +``` +```server-rust +// For arrays +Query::contains("metadata.tags", Value::Array(vec![ + Value::String("space".to_string()), +])).to_string() + +// For strings +Query::contains("metadata.title", "Iron").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"contains","attribute":"metadata.tags","values":["space"]}' +``` +```http +# For arrays +{"method":"contains","attribute":"metadata.tags","values":["space"]} + +# For strings +{"method":"contains","attribute":"metadata.title","values":["Iron"]} +``` +{% /multicode %} + +### Not contains {% #not-contains %} + +Returns documents if a metadata array field does not contain the specified elements, or if a metadata string field does not contain the specified substring. + +{% multicode %} +```client-web +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```client-flutter +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```client-react-native +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```client-apple +// For arrays +Query.notContains("metadata.tags", value: ["space"]) + +// For strings +Query.notContains("metadata.title", value: "Iron") +``` +```client-android-kotlin +// For arrays +Query.notContains("metadata.tags", listOf("space")) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```client-android-java +// For arrays +Query.notContains("metadata.tags", Arrays.asList("space")) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```server-python +# For arrays +Query.not_contains("metadata.tags", ["space"]) + +# For strings +Query.not_contains("metadata.title", "Iron") +``` +```server-ruby +# For arrays +Query.not_contains("metadata.tags", ["space"]) + +# For strings +Query.not_contains("metadata.title", "Iron") +``` +```server-deno +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```server-nodejs +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```server-php +// For arrays +Query::notContains("metadata.tags", ["space"]) + +// For strings +Query::notContains("metadata.title", "Iron") +``` +```server-dotnet +// For arrays +Query.NotContains("metadata.tags", new List<string> { "space" }) + +// For strings +Query.NotContains("metadata.title", "Iron") +``` +```server-go +// For arrays +query.NotContains("metadata.tags", []string{"space"}) + +// For strings +query.NotContains("metadata.title", "Iron") +``` +```server-dart +// For arrays +Query.notContains("metadata.tags", ["space"]) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```server-swift +// For arrays +Query.notContains("metadata.tags", value: ["space"]) + +// For strings +Query.notContains("metadata.title", value: "Iron") +``` +```server-kotlin +// For arrays +Query.notContains("metadata.tags", listOf("space")) + +// For strings +Query.notContains("metadata.title", "Iron") +``` +```server-rust +// For arrays +Query::not_contains("metadata.tags", Value::Array(vec![ + Value::String("space".to_string()), +])).to_string() + +// For strings +Query::not_contains("metadata.title", "Iron").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"notContains","attribute":"metadata.tags","values":["space"]}' +``` +```http +# For arrays +{"method":"notContains","attribute":"metadata.tags","values":["space"]} + +# For strings +{"method":"notContains","attribute":"metadata.title","values":["Iron"]} +``` +{% /multicode %} + +## Logical operators {% #logical-operators %} + +### AND {% #and %} + +Returns document if it matches all of the nested sub-queries in the array passed in. + +{% multicode %} +```client-web +Query.and([ + Query.equal("metadata.genre", "sci-fi"), + Query.startsWith("metadata.title", "Inter") +]) +``` +```client-flutter +Query.and([ + Query.equal("metadata.genre", "sci-fi"), + Query.startsWith("metadata.title", "Inter") +]) +``` +```server-python +Query.and_queries([ + Query.equal("metadata.genre", "sci-fi"), + Query.starts_with("metadata.title", "Inter") +]) +``` +```server-ruby +Query.and([ + Query.equal("metadata.genre", "sci-fi"), + Query.starts_with("metadata.title", "Inter") +]) +``` +```server-deno +Query.and([ + Query.equal("metadata.genre", "sci-fi"), + Query.startsWith("metadata.title", "Inter") +]) +``` +```server-php +Query::and([ + Query::equal("metadata.genre", "sci-fi"), + Query::startsWith("metadata.title", "Inter") +]) +``` +```client-apple +Query.and([ + Query.equal("metadata.genre", value: "sci-fi"), + Query.startsWith("metadata.title", value: "Inter") +]) +``` +```server-go +query.And([]string{ + query.Equal("metadata.genre", []string{"sci-fi"}), + query.StartsWith("metadata.title", "Inter"), +}) +``` +```server-nodejs +Query.and([ + Query.equal("metadata.genre", "sci-fi"), + Query.startsWith("metadata.title", "Inter") +]) +``` +```server-rust +Query::and(vec![ + Query::equal("metadata.genre", Value::String("sci-fi".to_string())).to_string(), + Query::starts_with("metadata.title", "Inter").to_string(), +]).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]},{"method":"startsWith","attribute":"metadata.title","values":["Inter"]}]}' +``` +```http +{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]},{"method":"startsWith","attribute":"metadata.title","values":["Inter"]}]} +``` +{% /multicode %} + +### OR {% #or %} + +Returns document if it matches any of the nested sub-queries in the array passed in. + +{% multicode %} +```client-web +Query.or([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```client-flutter +Query.or([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```server-python +Query.or_queries([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```server-ruby +Query.or([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```server-deno +Query.or([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```server-php +Query::or([ + Query::equal("metadata.genre", "romance"), + Query::equal("metadata.genre", "sci-fi") +]) +``` +```client-apple +Query.or([ + Query.equal("metadata.genre", value: "romance"), + Query.equal("metadata.genre", value: "sci-fi") +]) +``` +```server-go +query.Or([]string{ + query.Equal("metadata.genre", []string{"romance"}), + query.Equal("metadata.genre", []string{"sci-fi"}), +}) +``` +```server-nodejs +Query.or([ + Query.equal("metadata.genre", "romance"), + Query.equal("metadata.genre", "sci-fi") +]) +``` +```server-rust +Query::or(vec![ + Query::equal("metadata.genre", Value::String("romance".to_string())).to_string(), + Query::equal("metadata.genre", Value::String("sci-fi".to_string())).to_string(), +]).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"or","values":[{"method":"equal","attribute":"metadata.genre","values":["romance"]},{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]}]}' +``` +```http +{"method":"or","values":[{"method":"equal","attribute":"metadata.genre","values":["romance"]},{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]}]} +``` +{% /multicode %} + +## Ordering {% #ordering %} + +Order results by a top-level document attribute such as `$createdAt`, `$updatedAt`, or `$id`. Ordering by a nested `metadata` field is not supported. + +### Order descending {% #order-desc %} + +Orders results in descending order by attribute. + +{% multicode %} +```client-web +Query.orderDesc("$createdAt") +``` +```client-flutter +Query.orderDesc("$createdAt") +``` +```server-python +Query.order_desc("$createdAt") +``` +```server-ruby +Query.order_desc("$createdAt") +``` +```server-nodejs +Query.orderDesc("$createdAt") +``` +```server-php +Query::orderDesc("$createdAt") +``` +```client-apple +Query.orderDesc("$createdAt") +``` +```server-go +query.OrderDesc("$createdAt") +``` +```server-rust +Query::order_desc("$createdAt").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderDesc","attribute":"$createdAt"}' +``` +```http +{"method":"orderDesc","attribute":"$createdAt"} +``` +{% /multicode %} + +### Order ascending {% #order-asc %} + +Orders results in ascending order by attribute. + +{% multicode %} +```client-web +Query.orderAsc("$createdAt") +``` +```client-flutter +Query.orderAsc("$createdAt") +``` +```server-python +Query.order_asc("$createdAt") +``` +```server-ruby +Query.order_asc("$createdAt") +``` +```server-nodejs +Query.orderAsc("$createdAt") +``` +```server-php +Query::orderAsc("$createdAt") +``` +```client-apple +Query.orderAsc("$createdAt") +``` +```server-go +query.OrderAsc("$createdAt") +``` +```server-rust +Query::order_asc("$createdAt").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderAsc","attribute":"$createdAt"}' +``` +```http +{"method":"orderAsc","attribute":"$createdAt"} +``` +{% /multicode %} + +### Order random {% #order-random %} + +Orders results in random order. + +{% multicode %} +```client-web +Query.orderRandom() +``` +```client-flutter +Query.orderRandom() +``` +```server-python +Query.order_random() +``` +```server-ruby +Query.order_random() +``` +```server-nodejs +Query.orderRandom() +``` +```server-php +Query::orderRandom() +``` +```client-apple +Query.orderRandom() +``` +```server-go +query.OrderRandom() +``` +```server-rust +Query::order_random().to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"orderRandom"}' +``` +```http +{"method":"orderRandom"} +``` +{% /multicode %} + +## Pagination {% #pagination %} + +### Limit {% #limit %} + +Limits the number of results returned by the query. Used for [pagination](/docs/products/databases/vectorsdb/pagination). + +{% multicode %} +```client-web +Query.limit(25) +``` +```client-flutter +Query.limit(25) +``` +```server-python +Query.limit(25) +``` +```server-ruby +Query.limit(25) +``` +```server-deno +Query.limit(25) +``` +```server-php +Query::limit(25) +``` +```client-apple +Query.limit(25) +``` +```server-go +query.Limit(25) +``` +```server-nodejs +Query.limit(25) +``` +```server-rust +Query::limit(25).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[25]}' +``` +```http +{"method":"limit","values":[25]} +``` +{% /multicode %} + +### Offset {% #offset %} + +Offset the results returned by skipping some of the results. Used for [pagination](/docs/products/databases/vectorsdb/pagination). + +{% multicode %} +```client-web +Query.offset(0) +``` +```client-flutter +Query.offset(0) +``` +```server-python +Query.offset(0) +``` +```server-ruby +Query.offset(0) +``` +```server-deno +Query.offset(0) +``` +```server-php +Query::offset(0) +``` +```client-apple +Query.offset(0) +``` +```server-go +query.Offset(0) +``` +```server-nodejs +Query.offset(0) +``` +```server-rust +Query::offset(0).to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"offset","values":[0]}' +``` +```http +{"method":"offset","values":[0]} +``` +{% /multicode %} + +### Cursor after {% #cursor-after %} + +Places the cursor after the specified document ID. Used for [pagination](/docs/products/databases/vectorsdb/pagination). + +{% multicode %} +```client-web +Query.cursorAfter("62a7...f620") +``` +```client-flutter +Query.cursorAfter("62a7...f620") +``` +```server-python +Query.cursor_after("62a7...f620") +``` +```server-ruby +Query.cursor_after("62a7...f620") +``` +```server-deno +Query.cursorAfter("62a7...f620") +``` +```server-php +Query::cursorAfter("62a7...f620") +``` +```client-apple +Query.cursorAfter("62a7...f620") +``` +```server-go +query.CursorAfter("62a7...f620") +``` +```server-nodejs +Query.cursorAfter("62a7...f620") +``` +```server-rust +Query::cursor_after("62a7...f620").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"cursorAfter","values":["62a7...f620"]}' +``` +```http +{"method":"cursorAfter","values":["62a7...f620"]} +``` +{% /multicode %} + +### Cursor before {% #cursor-before %} + +Places the cursor before the specified document ID. Used for [pagination](/docs/products/databases/vectorsdb/pagination). + +{% multicode %} +```client-web +Query.cursorBefore("62a7...a600") +``` +```client-flutter +Query.cursorBefore("62a7...a600") +``` +```server-python +Query.cursor_before("62a7...a600") +``` +```server-ruby +Query.cursor_before("62a7...a600") +``` +```server-deno +Query.cursorBefore("62a7...a600") +``` +```server-php +Query::cursorBefore("62a7...a600") +``` +```client-apple +Query.cursorBefore("62a7...a600") +``` +```server-go +query.CursorBefore("62a7...a600") +``` +```server-nodejs +Query.cursorBefore("62a7...a600") +``` +```server-rust +Query::cursor_before("62a7...a600").to_string() +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"cursorBefore","values":["62a7...a600"]}' +``` +```http +{"method":"cursorBefore","values":["62a7...a600"]} +``` +{% /multicode %} + +# Complex queries {% #complex-queries %} + +You can create complex queries by combining AND and OR operations. For example, to find documents that are either sci-fi released after 2010 or romance released before 2005: + +{% multicode %} +```client-web +const results = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.or([ + Query.and([ + Query.equal('metadata.genre', ['sci-fi']), + Query.greaterThan('metadata.year', '2010') + ]), + Query.and([ + Query.equal('metadata.genre', ['romance']), + Query.lessThan('metadata.year', '2005') + ]) + ]) + ] +}); +``` +```client-flutter +final results = await vectorsDB.listDocuments( + '<DATABASE_ID>', + '<COLLECTION_ID>', + [ + Query.or([ + Query.and([ + Query.equal('metadata.genre', ['sci-fi']), + Query.greaterThan('metadata.year', '2010') + ]), + Query.and([ + Query.equal('metadata.genre', ['romance']), + Query.lessThan('metadata.year', '2005') + ]) + ]) + ] +); +``` +```server-nodejs +const results = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.or([ + Query.and([ + Query.equal('metadata.genre', ['sci-fi']), + Query.greaterThan('metadata.year', '2010') + ]), + Query.and([ + Query.equal('metadata.genre', ['romance']), + Query.lessThan('metadata.year', '2005') + ]) + ]) + ] +}); +``` +```server-python +results = vectorsDB.list_documents( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + queries=[ + Query.or_queries([ + Query.and_queries([ + Query.equal('metadata.genre', ['sci-fi']), + Query.greater_than('metadata.year', '2010') + ]), + Query.and_queries([ + Query.equal('metadata.genre', ['romance']), + Query.less_than('metadata.year', '2005') + ]) + ]) + ] +) +``` +```server-go +documents, err := vectorsDB.ListDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vectorsDB.WithListDocumentsQueries([]string{ + query.Or([]string{ + query.And([]string{ + query.Equal("metadata.genre", []string{"sci-fi"}), + query.GreaterThan("metadata.year", "2010"), + }), + query.And([]string{ + query.Equal("metadata.genre", []string{"romance"}), + query.LessThan("metadata.year", "2005"), + }), + }), + }), +) +if err != nil { + log.Fatal(err) +} +``` +```server-rust +let documents = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::or(vec![ + Query::and(vec![ + Query::equal("metadata.genre", Value::Array(vec![Value::String("sci-fi".to_string())])).to_string(), + Query::greater_than("metadata.year", "2010").to_string(), + ]).to_string(), + Query::and(vec![ + Query::equal("metadata.genre", Value::Array(vec![Value::String("romance".to_string())])).to_string(), + Query::less_than("metadata.year", "2005").to_string(), + ]).to_string(), + ]).to_string(), + ]), + None, + None, + None, +).await?; +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"or","values":[{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]},{"method":"greaterThan","attribute":"metadata.year","values":["2010"]}]},{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["romance"]},{"method":"lessThan","attribute":"metadata.year","values":["2005"]}]}]}' +``` +```http +{"method":"or","values":[{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["sci-fi"]},{"method":"greaterThan","attribute":"metadata.year","values":["2010"]}]},{"method":"and","values":[{"method":"equal","attribute":"metadata.genre","values":["romance"]},{"method":"lessThan","attribute":"metadata.year","values":["2005"]}]}]} +``` +{% /multicode %} + +This example demonstrates how to combine `OR` and `AND` operations. The query uses `Query.or()` to match either condition: sci-fi released after 2010 OR romance released before 2005. +Each condition within the OR is composed of two AND conditions, one for the genre and one for the year. The database returns documents that match either of these combined conditions. + +{% arrow_link href="/docs/products/databases/vectorsdb/vector-search" %} +Learn about vector search +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/vectorsdb/quick-start/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/quick-start/+page.markdoc new file mode 100644 index 0000000000..3586d5bc96 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/quick-start/+page.markdoc @@ -0,0 +1,1034 @@ +--- +layout: article +title: Start with VectorsDB +description: Get started with Appwrite VectorsDB. Follow a step-by-step guide to create your first database, add a collection with a fixed dimension, store embeddings with metadata, and read them back. +--- + + +VectorsDB stores embedding vectors so you can build features like semantic search, recommendations, and retrieval for AI applications. +This guide walks through creating a database, adding a collection with a fixed `dimension`, storing a document with its `embeddings` and `metadata`, and reading it back. + +These steps use a [Server SDK](/docs/sdks#server), which requires an [API key](/docs/advanced/platform/api-keys). + +{% section #create-database step=1 title="Create database" %} +Head to your [Appwrite Console](https://cloud.appwrite.io/console/) and click **Create database**. Name it `Knowledge base` and choose **VectorsDB** as the database type. +Optionally, add a custom database ID. Select your preferred tier, then click **Create database**. + +You can also create a database programmatically with the `create` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.create({ + databaseId: sdk.ID.unique(), + name: 'Knowledge base' +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.create({ + databaseId: sdk.ID.unique(), + name: 'Knowledge base' +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->create( + databaseId: ID::unique(), + name: 'Knowledge base' +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create( + database_id = ID.unique(), + name = 'Knowledge base' +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create( + database_id: ID.unique(), + name: 'Knowledge base' +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Database result = await vectorsDB.Create( + databaseId: ID.Unique(), + name: "Knowledge base" +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Database result = await vectorsDB.create( + databaseId: ID.unique(), + name: 'Knowledge base', +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.create( + databaseId = ID.unique(), + name = "Knowledge base", +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.create( + ID.unique(), + "Knowledge base", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let database = try await vectorsDB.create( + databaseId: ID.unique(), + name: "Knowledge base" +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create( + ID::unique(), + "Knowledge base", + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create \ + --database-id <DATABASE_ID> \ + --name "Knowledge base" +``` +{% /multicode %} +{% /section %} + +{% section #create-collection step=2 title="Create collection" %} +In the `Knowledge base` database, click **Create collection** and name it `Articles`. Optionally, add a custom collection ID. + +A VectorsDB collection has a fixed `dimension`, the length of the embedding vectors it holds. All documents in the collection must use vectors of that exact length, so set the `dimension` to match the embedding model you plan to use. This guide uses `dimension: 4` to keep the vectors short and readable. The default `nomic-embed-text` [embedding model](/docs/products/databases/vectorsdb/embeddings) produces 768-dimensional vectors, so a production collection would use `dimension: 768`. + +The schema is provisioned for you: an `embeddings` vector and an optional `metadata` object. There are no columns to define. + +Set the **dimension**, then add a **Read** permission for the **Any** role so anyone can read documents. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: sdk.ID.unique(), + name: 'Articles', + dimension: 4, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createCollection({ + databaseId: '<DATABASE_ID>', + collectionId: sdk.ID.unique(), + name: 'Articles', + dimension: 4, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createCollection( + databaseId: '<DATABASE_ID>', + collectionId: ID::unique(), + name: 'Articles', + dimension: 4, + permissions: [Permission::read(Role::any())] // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_collection( + database_id = '<DATABASE_ID>', + collection_id = ID.unique(), + name = 'Articles', + dimension = 4, + permissions = [Permission.read(Role.any())] # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_collection( + database_id: '<DATABASE_ID>', + collection_id: ID.unique(), + name: 'Articles', + dimension: 4, + permissions: [Permission.read(Role.any())] # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Collection result = await vectorsDB.CreateCollection( + databaseId: "<DATABASE_ID>", + collectionId: ID.Unique(), + name: "Articles", + dimension: 4, + permissions: new List<string> { Permission.Read(Role.Any()) } // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Collection result = await vectorsDB.createCollection( + databaseId: '<DATABASE_ID>', + collectionId: ID.unique(), + name: 'Articles', + dimension: 4, + permissions: [Permission.read(Role.any())], // optional +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createCollection( + databaseId = "<DATABASE_ID>", + collectionId = ID.unique(), + name = "Articles", + dimension = 4, + permissions = listOf(Permission.read(Role.any())), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.Permission; +import io.appwrite.Role; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createCollection( + "<DATABASE_ID>", + ID.unique(), + "Articles", + 4, + List.of(Permission.read(Role.any())), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let collection = try await vectorsDB.createCollection( + databaseId: "<DATABASE_ID>", + collectionId: ID.unique(), + name: "Articles", + dimension: 4, + permissions: [Permission.read(Role.any())] // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_collection( + "<DATABASE_ID>", + ID::unique(), + "Articles", + 4, + Some(vec![Permission::read(Role::any()).to_string()]), // permissions (optional) + None, // documentSecurity (optional) + None, // enabled (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-collection \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --name "Articles" \ + --dimension 4 \ + --permissions 'read("any")' +``` +{% /multicode %} +{% /section %} + +{% section #store-documents step=3 title="Store documents" %} +A document's data is an `embeddings` vector and an optional `metadata` object. +The `embeddings` array length must equal the collection's `dimension`, and `metadata` is free-form JSON you can use to store any data you want to keep alongside the vector. + +The vectors here are hardcoded so the example runs on its own. In an application, you generate them from your text with [embeddings](/docs/products/databases/vectorsdb/embeddings). + +Use the `createDocument` method to store the embedding and its metadata. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Getting started with Appwrite', tags: ['guide'] } + } +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Getting started with Appwrite', tags: ['guide'] } + } +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\ID; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => ['title' => 'Getting started with Appwrite', 'tags' => ['guide']] + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = ID.unique(), + data = { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Getting started with Appwrite", "tags": ["guide"] } + } +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + "embeddings" => [0.12, 0.84, 0.33, 0.57], + "metadata" => { "title" => "Getting started with Appwrite", "tags" => ["guide"] } + } +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Document result = await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> { + { "embeddings", new List<double> { 0.12, 0.84, 0.33, 0.57 } }, + { "metadata", new Dictionary<string, object> { { "title", "Getting started with Appwrite" }, { "tags", new List<string> { "guide" } } } } + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Document result = await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Getting started with Appwrite", "tags": ["guide"] } + }, +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = ID.unique(), + data = mapOf( + "embeddings" to listOf(0.12, 0.84, 0.33, 0.57), + "metadata" to mapOf("title" to "Getting started with Appwrite", "tags" to listOf("guide")) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID.unique(), + Map.of( + "embeddings", List.of(0.12, 0.84, 0.33, 0.57), + "metadata", Map.of("title", "Getting started with Appwrite", "tags", List.of("guide")) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let document = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": ["title": "Getting started with Appwrite", "tags": ["guide"]] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Getting started with Appwrite", "tags": ["guide"] } + }), + None, // permissions (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id 'unique()' \ + --data '{ "embeddings": [0.12, 0.84, 0.33, 0.57], "metadata": { "title": "Getting started with Appwrite", "tags": ["guide"] } }' +``` +{% /multicode %} + +The response includes the stored `embeddings` and `metadata` alongside the document's system fields. + +```json +{ + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Getting started with Appwrite", "tags": ["guide"] }, + "$id": "6a43c07100195469a012", + "$sequence": "1", + "$createdAt": "2026-06-30T13:11:13.441+00:00", + "$updatedAt": "2026-06-30T13:11:13.441+00:00", + "$permissions": [], + "$databaseId": "650125c64b3c25ce4bc4", + "$collectionId": "650125cff227cf9f95ad" +} +``` +{% /section %} + +{% section #read-documents step=4 title="Read documents" %} +To read documents back from your collection, use the `listDocuments` method. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(10) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.limit(10) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::limit(10) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.limit(10) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.limit(10) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; +using Appwrite.Queries; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.Limit(10) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.limit(10) + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.limit(10) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.limit(10) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let documents = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.limit(10) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![Query::limit(10).to_string()]), + None, // transactionId (optional) + None, // total (optional) + None, // ttl (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"limit","values":[10]}' +``` +{% /multicode %} +{% /section %} + +{% section #next-steps step=5 title="Next steps" %} +You now have a database, a collection, and a document holding an embedding with its metadata. From here: + +- Generate vectors from your text instead of hardcoding them with [embeddings](/docs/products/databases/vectorsdb/embeddings). +- Find the documents closest to a query vector with [vector search](/docs/products/databases/vectorsdb/vector-search). + +{% arrow_link href="/docs/products/databases/vectorsdb/vector-search" %} +Run vector search +{% /arrow_link %} +{% /section %} diff --git a/src/routes/docs/products/databases/vectorsdb/timestamp-overrides/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/timestamp-overrides/+page.markdoc new file mode 100644 index 0000000000..2956294d75 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/timestamp-overrides/+page.markdoc @@ -0,0 +1,1302 @@ +--- +layout: article +title: Timestamp overrides +description: Set custom $createdAt and $updatedAt timestamps for your documents when using server SDKs. +--- + +When creating or updating documents, Appwrite automatically sets `$createdAt` and `$updatedAt` timestamps. However, there are scenarios where you might need to set these timestamps manually, such as when migrating data from another system or backfilling historical records. + +{% info title="Server SDKs required" %} +To manually set `$createdAt` and `$updatedAt`, you must use a **server SDK** with an **API key**. These attributes can be passed inside the `data` parameter on any of the create, update, or upsert routes (single or bulk). +{% /info %} + +# Setting custom timestamps {% #setting-custom-timestamps %} + +You can override a document's timestamps by providing ISO 8601 strings (for example, `2025-08-10T12:34:56.000Z`) in the `data` payload. If these attributes are not provided, Appwrite will set them automatically. + +Custom timestamps work with all document operations: create, update, upsert, and their bulk variants. + +## Single document operations {% #single-document-operations %} + +When working with individual documents, you can set custom timestamps during create, update, and upsert operations. + +### Create with custom timestamps {% #create-custom %} + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + +const vectorsDB = new sdk.VectorsDB(client); + +await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + '$createdAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + '$updatedAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Hamlet' } + } +}); +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<YOUR_PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$vectorsDB = new VectorsDB($client); + +$vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + '$createdAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + '$updatedAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => ['title' => 'Hamlet'] + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let vectorsDB = VectorsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let customDate = isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date() +let createdAt = isoFormatter.string(from: customDate) +let updatedAt = isoFormatter.string(from: customDate) + +do { + let created = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: [ + "$createdAt": createdAt, + "$updatedAt": updatedAt, + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": ["title": "Hamlet"] + ] + ) + print("Created:", created) +} catch { + print("Create error:", error) +} +``` +```server-python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.id import ID +from datetime import datetime, timezone + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<API_KEY>') + +vectors_db = VectorsDB(client) + +iso = datetime(2025, 8, 10, 12, 34, 56, tzinfo=timezone.utc).isoformat() + +vectors_db.create_document( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + document_id=ID.unique(), + data={ + '$createdAt': iso, + '$updatedAt': iso, + 'embeddings': [0.12, 0.84, 0.33, 0.57], + 'metadata': { 'title': 'Hamlet' } + } +) +``` +```server-ruby +require 'appwrite' +require 'time' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<YOUR_PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +vectors_db = VectorsDB.new(client) + +custom_date = Time.parse('2025-08-10T12:34:56.000Z').iso8601 + +vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + '$createdAt' => custom_date, + '$updatedAt' => custom_date, + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => { 'title' => 'Hamlet' } + } +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<YOUR_PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +VectorsDB vectorsDB = new VectorsDB(client); + +string customDate = DateTimeOffset.Parse("2025-08-10T12:34:56.000Z").ToString("O"); + +await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> + { + ["$createdAt"] = customDate, + ["$updatedAt"] = customDate, + ["embeddings"] = new List<double> { 0.12, 0.84, 0.33, 0.57 }, + ["metadata"] = new Dictionary<string, object> { ["title"] = "Hamlet" } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +VectorsDB vectorsDB = VectorsDB(client); + +String customDate = DateTime.parse('2025-08-10T12:34:56.000Z').toIso8601String(); + +await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + '\$createdAt': customDate, + '\$updatedAt': customDate, + 'embeddings': [0.12, 0.84, 0.33, 0.57], + 'metadata': { 'title': 'Hamlet' } + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "$createdAt": "2025-08-10T12:34:56.000Z", + "$updatedAt": "2025-08-10T12:34:56.000Z", + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Hamlet" } + }), + None, // permissions (optional) + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +### Update with custom timestamps {% #update-custom %} + +When updating documents, you can also set a custom `$updatedAt` timestamp. The existing `$createdAt` is preserved unless you provide a new one: + +{% multicode %} +```server-nodejs +await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + '$updatedAt': new Date('2025-08-10T12:34:56.000Z').toISOString(), + metadata: { title: 'Hamlet, revised' } + } +}); +``` +```server-php +$vectorsDB->updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: [ + '$updatedAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + 'metadata' => ['title' => 'Hamlet, revised'] + ] +); +``` +```server-python +from datetime import datetime, timezone + +vectors_db.update_document( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + document_id='<DOCUMENT_ID>', + data={ + '$updatedAt': datetime(2025, 8, 10, 12, 34, 56, tzinfo=timezone.utc).isoformat(), + 'metadata': { 'title': 'Hamlet, revised' } + } +) +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let vectorsDB = VectorsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let updatedAt = isoFormatter.string(from: isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date()) + +do { + let updated = try await vectorsDB.updateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: [ + "$updatedAt": updatedAt, + "metadata": ["title": "Hamlet, revised"] + ] + ) + print("Updated:", updated) +} catch { + print("Update error:", error) +} +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<YOUR_PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +vectors_db = VectorsDB.new(client) + +custom_date = Time.parse('<CUSTOM_DATE>').iso8601 + +vectors_db.update_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + data: { + '$updatedAt' => custom_date, + 'metadata' => { 'title' => 'Hamlet, revised' } + } +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<YOUR_PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +VectorsDB vectorsDB = new VectorsDB(client); + +string customDate = DateTimeOffset.Parse("<CUSTOM_DATE>").ToString("O"); + +await vectorsDB.UpdateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: new Dictionary<string, object> + { + ["$updatedAt"] = customDate, + ["metadata"] = new Dictionary<string, object> { ["title"] = "Hamlet, revised" } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +VectorsDB vectorsDB = VectorsDB(client); + +String customDate = DateTime.parse('<CUSTOM_DATE>').toIso8601String(); + +await vectorsDB.updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { + '\$updatedAt': customDate, + 'metadata': { 'title': 'Hamlet, revised' } + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.update_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(json!({ + "$updatedAt": "2025-08-10T12:34:56.000Z", + "metadata": { "title": "Hamlet, revised" } + })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("Updated: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Bulk operations {% #bulk-operations %} + +Custom timestamps also work with bulk operations, allowing you to set different timestamps for each document in the batch: + +### Bulk create {% #bulk-create %} + +{% multicode %} +```server-nodejs +await vectorsDB.createDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + '$id': sdk.ID.unique(), + '$createdAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + embeddings: [0.1, 0.1, 0.1, 0.1], + metadata: { batch: 1 } + }, + { + '$id': sdk.ID.unique(), + '$createdAt': new Date('2024-02-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2024-02-01T00:00:00.000Z').toISOString(), + embeddings: [0.2, 0.2, 0.2, 0.2], + metadata: { batch: 2 } + } + ] +}); +``` +```server-python +vectors_db.create_documents( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + documents=[ + { + '$id': ID.unique(), + '$createdAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + 'embeddings': [0.1, 0.1, 0.1, 0.1], + 'metadata': { 'batch': 1 } + }, + { + '$id': ID.unique(), + '$createdAt': datetime(2024, 2, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2024, 2, 1, tzinfo=timezone.utc).isoformat(), + 'embeddings': [0.2, 0.2, 0.2, 0.2], + 'metadata': { 'batch': 2 } + } + ] +) +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<YOUR_PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$vectorsDB = new VectorsDB($client); + +$vectorsDB->createDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + [ + '$id' => ID::unique(), + '$createdAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + '$updatedAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + 'embeddings' => [0.1, 0.1, 0.1, 0.1], + 'metadata' => ['batch' => 1] + ], + [ + '$id' => ID::unique(), + '$createdAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + '$updatedAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + 'embeddings' => [0.2, 0.2, 0.2, 0.2], + 'metadata' => ['batch' => 2] + ], + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let vectorsDB = VectorsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] + +let first = isoFormatter.string(from: isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date()) +let second = isoFormatter.string(from: isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date()) + +do { + let bulkCreated = try await vectorsDB.createDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documents: [ + [ + "$id": ID.unique(), + "$createdAt": first, + "$updatedAt": first, + "embeddings": [0.1, 0.1, 0.1, 0.1], + "metadata": ["batch": 1] + ], + [ + "$id": ID.unique(), + "$createdAt": second, + "$updatedAt": second, + "embeddings": [0.2, 0.2, 0.2, 0.2], + "metadata": ["batch": 2] + ] + ] + ) + print("Bulk create:", bulkCreated) +} catch { + print("Bulk create error:", error) +} +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<YOUR_PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +vectors_db = VectorsDB.new(client) + +first = Time.parse('<CUSTOM_DATE>').iso8601 +second = Time.parse('<CUSTOM_DATE>').iso8601 + +vectors_db.create_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + documents: [ + { + '$id' => ID.unique(), + '$createdAt' => first, + '$updatedAt' => first, + 'embeddings' => [0.1, 0.1, 0.1, 0.1], + 'metadata' => { 'batch' => 1 } + }, + { + '$id' => ID.unique(), + '$createdAt' => second, + '$updatedAt' => second, + 'embeddings' => [0.2, 0.2, 0.2, 0.2], + 'metadata' => { 'batch' => 2 } + } + ] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<YOUR_PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +VectorsDB vectorsDB = new VectorsDB(client); + +string first = DateTimeOffset.Parse("<CUSTOM_DATE>").ToString("O"); +string second = DateTimeOffset.Parse("<CUSTOM_DATE>").ToString("O"); + +await vectorsDB.CreateDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documents: new List<object> + { + new Dictionary<string, object> + { + ["$id"] = ID.Unique(), + ["$createdAt"] = first, + ["$updatedAt"] = first, + ["embeddings"] = new List<double> { 0.1, 0.1, 0.1, 0.1 }, + ["metadata"] = new Dictionary<string, object> { ["batch"] = 1 } + }, + new Dictionary<string, object> + { + ["$id"] = ID.Unique(), + ["$createdAt"] = second, + ["$updatedAt"] = second, + ["embeddings"] = new List<double> { 0.2, 0.2, 0.2, 0.2 }, + ["metadata"] = new Dictionary<string, object> { ["batch"] = 2 } + } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +VectorsDB vectorsDB = VectorsDB(client); + +String first = DateTime.parse('<CUSTOM_DATE>').toIso8601String(); +String second = DateTime.parse('<CUSTOM_DATE>').toIso8601String(); + +await vectorsDB.createDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + '\$id': ID.unique(), + '\$createdAt': first, + '\$updatedAt': first, + 'embeddings': [0.1, 0.1, 0.1, 0.1], + 'metadata': { 'batch': 1 } + }, + { + '\$id': ID.unique(), + '\$createdAt': second, + '\$updatedAt': second, + 'embeddings': [0.2, 0.2, 0.2, 0.2], + 'metadata': { 'batch': 2 } + } + ], +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vec![ + json!({ + "$id": ID::unique(), + "$createdAt": "2024-01-01T00:00:00.000Z", + "$updatedAt": "2024-01-01T00:00:00.000Z", + "embeddings": [0.1, 0.1, 0.1, 0.1], + "metadata": { "batch": 1 } + }), + json!({ + "$id": ID::unique(), + "$createdAt": "2024-02-01T00:00:00.000Z", + "$updatedAt": "2024-02-01T00:00:00.000Z", + "embeddings": [0.2, 0.2, 0.2, 0.2], + "metadata": { "batch": 2 } + }), + ], + ).await?; + + println!("Bulk create: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +### Bulk upsert {% #bulk-upsert %} + +{% multicode %} +```server-nodejs +await vectorsDB.upsertDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + '$id': '<DOCUMENT_ID_OR_NEW_ID>', + '$createdAt': new Date('2024-01-01T00:00:00.000Z').toISOString(), + '$updatedAt': new Date('2025-01-01T00:00:00.000Z').toISOString(), + embeddings: [0.3, 0.3, 0.3, 0.3], + metadata: { source: 'sync' } + } + ] +}); +``` +```server-python +vectors_db.upsert_documents( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + documents=[ + { + '$id': '<DOCUMENT_ID_OR_NEW_ID>', + '$createdAt': datetime(2024, 1, 1, tzinfo=timezone.utc).isoformat(), + '$updatedAt': datetime(2025, 1, 1, tzinfo=timezone.utc).isoformat(), + 'embeddings': [0.3, 0.3, 0.3, 0.3], + 'metadata': { 'source': 'sync' } + } + ] +) +``` +```server-php +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<YOUR_PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$vectorsDB = new VectorsDB($client); + +$vectorsDB->upsertDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + [ + '$id' => '<DOCUMENT_ID_OR_NEW_ID>', + '$createdAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + '$updatedAt' => (new DateTime('<CUSTOM_DATE>'))->format(DATE_ATOM), + 'embeddings' => [0.3, 0.3, 0.3, 0.3], + 'metadata' => ['source' => 'sync'] + ], + ] +); +``` +```server-swift +import Appwrite +import Foundation + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let vectorsDB = VectorsDB(client) + +let isoFormatter = ISO8601DateFormatter() +isoFormatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds] +let createdAt = isoFormatter.string(from: isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date()) +let updatedAt = isoFormatter.string(from: isoFormatter.date(from: "<CUSTOM_DATE>") ?? Date()) + +do { + let bulkUpserted = try await vectorsDB.upsertDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documents: [ + [ + "$id": "<DOCUMENT_ID_OR_NEW_ID>", + "$createdAt": createdAt, + "$updatedAt": updatedAt, + "embeddings": [0.3, 0.3, 0.3, 0.3], + "metadata": ["source": "sync"] + ] + ] + ) + print("Bulk upsert:", bulkUpserted) +} catch { + print("Bulk upsert error:", error) +} +``` +```server-ruby +require 'appwrite' +require 'time' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<YOUR_PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +vectors_db = VectorsDB.new(client) + +custom_date = Time.parse('<CUSTOM_DATE>').iso8601 + +vectors_db.upsert_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + documents: [ + { + '$id' => '<DOCUMENT_ID_OR_NEW_ID>', + '$createdAt' => custom_date, + '$updatedAt' => custom_date, + 'embeddings' => [0.3, 0.3, 0.3, 0.3], + 'metadata' => { 'source' => 'sync' } + } + ] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<YOUR_PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +VectorsDB vectorsDB = new VectorsDB(client); + +string createdAt = DateTimeOffset.Parse("<CUSTOM_DATE>").ToString("O"); +string updatedAt = DateTimeOffset.Parse("<CUSTOM_DATE>").ToString("O"); + +await vectorsDB.UpsertDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documents: new List<object> + { + new Dictionary<string, object> + { + ["$id"] = "<DOCUMENT_ID_OR_NEW_ID>", + ["$createdAt"] = createdAt, + ["$updatedAt"] = updatedAt, + ["embeddings"] = new List<double> { 0.3, 0.3, 0.3, 0.3 }, + ["metadata"] = new Dictionary<string, object> { ["source"] = "sync" } + } + } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +VectorsDB vectorsDB = VectorsDB(client); + +String createdAt = DateTime.parse('<CUSTOM_DATE>').toIso8601String(); +String updatedAt = DateTime.parse('<CUSTOM_DATE>').toIso8601String(); + +await vectorsDB.upsertDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documents: [ + { + '\$id': '<DOCUMENT_ID_OR_NEW_ID>', + '\$createdAt': createdAt, + '\$updatedAt': updatedAt, + 'embeddings': [0.3, 0.3, 0.3, 0.3], + 'metadata': { 'source': 'sync' } + } + ], +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.upsert_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + vec![ + json!({ + "$id": "<DOCUMENT_ID_OR_NEW_ID>", + "$createdAt": "2024-01-01T00:00:00.000Z", + "$updatedAt": "2025-01-01T00:00:00.000Z", + "embeddings": [0.3, 0.3, 0.3, 0.3], + "metadata": { "source": "sync" } + }), + ], + None, // transactionId (optional) + ).await?; + + println!("Bulk upsert: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +# Common use cases {% #use-cases %} + +Custom timestamps are particularly useful in several scenarios: + +## Data migration {% #data-migration %} +When migrating existing vectors from another system, you can preserve the original +creation and modification times: + +{% multicode %} +```server-nodejs +await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + '$createdAt': '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt': '<LAST_MODIFIED_ISO>', + embeddings: [0.12, 0.84, 0.33, 0.57], + metadata: { title: 'Imported post' } + } +}); +``` +```server-php +$vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + '$createdAt' => '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt' => '<LAST_MODIFIED_ISO>', + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => ['title' => 'Imported post'] + ] +); +``` +```server-swift +let _ = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "$createdAt": "<ORIGINAL_CREATED_AT_ISO>", + "$updatedAt": "<LAST_MODIFIED_ISO>", + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": ["title": "Imported post"] + ] +) +``` +```server-python +vectors_db.create_document( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + document_id=ID.unique(), + data={ + '$createdAt': '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt': '<LAST_MODIFIED_ISO>', + 'embeddings': [0.12, 0.84, 0.33, 0.57], + 'metadata': { 'title': 'Imported post' } + } +) +``` +```server-ruby +vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + '$createdAt' => '<ORIGINAL_CREATED_AT_ISO>', + '$updatedAt' => '<LAST_MODIFIED_ISO>', + 'embeddings' => [0.12, 0.84, 0.33, 0.57], + 'metadata' => { 'title' => 'Imported post' } + } +) +``` +```server-dotnet +await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> + { + ["$createdAt"] = "<ORIGINAL_CREATED_AT_ISO>", + ["$updatedAt"] = "<LAST_MODIFIED_ISO>", + ["embeddings"] = new List<double> { 0.12, 0.84, 0.33, 0.57 }, + ["metadata"] = new Dictionary<string, object> { ["title"] = "Imported post" } + } +); +``` +```server-dart +await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + '\$createdAt': '<ORIGINAL_CREATED_AT_ISO>', + '\$updatedAt': '<LAST_MODIFIED_ISO>', + 'embeddings': [0.12, 0.84, 0.33, 0.57], + 'metadata': { 'title': 'Imported post' } + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "$createdAt": "<ORIGINAL_CREATED_AT_ISO>", + "$updatedAt": "<LAST_MODIFIED_ISO>", + "embeddings": [0.12, 0.84, 0.33, 0.57], + "metadata": { "title": "Imported post" } + }), + None, // permissions (optional) + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Backdating records {% #backdating %} +For historical data entry or when creating records that represent past events: + +{% multicode %} +```server-nodejs +await vectorsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { + '$createdAt': '2023-12-31T23:59:59.000Z', + '$updatedAt': '2023-12-31T23:59:59.000Z', + embeddings: [0.5, 0.5, 0.5, 0.5], + metadata: { type: 'year-end-bonus', amount: 1000 } + } +}); +``` +```server-php +$vectorsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: [ + '$createdAt' => '2023-12-31T23:59:59.000Z', + '$updatedAt' => '2023-12-31T23:59:59.000Z', + 'embeddings' => [0.5, 0.5, 0.5, 0.5], + 'metadata' => ['type' => 'year-end-bonus', 'amount' => 1000] + ] +); +``` +```server-swift +let _ = try await vectorsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: [ + "$createdAt": "2023-12-31T23:59:59.000Z", + "$updatedAt": "2023-12-31T23:59:59.000Z", + "embeddings": [0.5, 0.5, 0.5, 0.5], + "metadata": ["type": "year-end-bonus", "amount": 1000] + ] +) +``` +```server-python +vectors_db.create_document( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + document_id=ID.unique(), + data={ + '$createdAt': '2023-12-31T23:59:59.000Z', + '$updatedAt': '2023-12-31T23:59:59.000Z', + 'embeddings': [0.5, 0.5, 0.5, 0.5], + 'metadata': { 'type': 'year-end-bonus', 'amount': 1000 } + } +) +``` +```server-ruby +vectors_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { + '$createdAt' => '2023-12-31T23:59:59.000Z', + '$updatedAt' => '2023-12-31T23:59:59.000Z', + 'embeddings' => [0.5, 0.5, 0.5, 0.5], + 'metadata' => { 'type' => 'year-end-bonus', 'amount' => 1000 } + } +) +``` +```server-dotnet +await vectorsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new Dictionary<string, object> + { + ["$createdAt"] = "2023-12-31T23:59:59.000Z", + ["$updatedAt"] = "2023-12-31T23:59:59.000Z", + ["embeddings"] = new List<double> { 0.5, 0.5, 0.5, 0.5 }, + ["metadata"] = new Dictionary<string, object> { ["type"] = "year-end-bonus", ["amount"] = 1000 } + } +); +``` +```server-dart +await vectorsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { + '\$createdAt': '2023-12-31T23:59:59.000Z', + '\$updatedAt': '2023-12-31T23:59:59.000Z', + 'embeddings': [0.5, 0.5, 0.5, 0.5], + 'metadata': { 'type': 'year-end-bonus', 'amount': 1000 } + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::id::ID; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + json!({ + "$createdAt": "2023-12-31T23:59:59.000Z", + "$updatedAt": "2023-12-31T23:59:59.000Z", + "embeddings": [0.5, 0.5, 0.5, 0.5], + "metadata": { "type": "year-end-bonus", "amount": 1000 } + }), + None, // permissions (optional) + ).await?; + + println!("Created: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Synchronization {% #synchronization %} +When synchronizing data between systems while maintaining timestamp consistency: + +{% multicode %} +```server-nodejs +await vectorsDB.upsertDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + embeddings: [0.6, 0.6, 0.6, 0.6], + metadata: { profile: 'external' } + } +}); +``` +```server-php +$vectorsDB->upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: [ + '$updatedAt' => '<EXTERNAL_LAST_MODIFIED_ISO>', + 'embeddings' => [0.6, 0.6, 0.6, 0.6], + 'metadata' => ['profile' => 'external'] + ] +); +``` +```server-swift +let _ = try await vectorsDB.upsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID_OR_NEW_ID>", + data: [ + "$updatedAt": "<EXTERNAL_LAST_MODIFIED_ISO>", + "embeddings": [0.6, 0.6, 0.6, 0.6], + "metadata": ["profile": "external"] + ] +) +``` +```server-python +vectors_db.upsert_document( + database_id='<DATABASE_ID>', + collection_id='<COLLECTION_ID>', + document_id='<DOCUMENT_ID_OR_NEW_ID>', + data={ + '$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + 'embeddings': [0.6, 0.6, 0.6, 0.6], + 'metadata': { 'profile': 'external' } + } +) +``` +```server-ruby +vectors_db.upsert_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '$updatedAt' => '<EXTERNAL_LAST_MODIFIED_ISO>', + 'embeddings' => [0.6, 0.6, 0.6, 0.6], + 'metadata' => { 'profile' => 'external' } + } +) +``` +```server-dotnet +await vectorsDB.UpsertDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID_OR_NEW_ID>", + data: new Dictionary<string, object> + { + ["$updatedAt"] = "<EXTERNAL_LAST_MODIFIED_ISO>", + ["embeddings"] = new List<double> { 0.6, 0.6, 0.6, 0.6 }, + ["metadata"] = new Dictionary<string, object> { ["profile"] = "external" } + } +); +``` +```server-dart +await vectorsDB.upsertDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_OR_NEW_ID>', + data: { + '\$updatedAt': '<EXTERNAL_LAST_MODIFIED_ISO>', + 'embeddings': [0.6, 0.6, 0.6, 0.6], + 'metadata': { 'profile': 'external' } + }, +); +``` +```rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<API_KEY>"); + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.upsert_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID_OR_NEW_ID>", + Some(json!({ + "$updatedAt": "<EXTERNAL_LAST_MODIFIED_ISO>", + "embeddings": [0.6, 0.6, 0.6, 0.6], + "metadata": { "profile": "external" } + })), + None, // permissions (optional) + None, // transactionId (optional) + ).await?; + + println!("Upserted: {:?}", result); + Ok(()) +} +``` +{% /multicode %} + +{% info title="Timestamp format and usage" %} +- Values must be valid ISO 8601 date-time strings (UTC recommended). Using `toISOString()` (JavaScript) or `datetime.isoformat()` (Python) is a good default. +- You can set either or both attributes as needed. If omitted, Appwrite sets them automatically. +{% /info %} diff --git a/src/routes/docs/products/databases/vectorsdb/transactions/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/transactions/+page.markdoc new file mode 100644 index 0000000000..00dfdfb011 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/transactions/+page.markdoc @@ -0,0 +1,1240 @@ +--- +layout: article +title: Transactions +description: Stage multiple VectorsDB operations and commit them atomically. Group changes across databases and collections with ordering, isolation, and conflict detection. +--- + +Transactions let you stage multiple database operations and apply them together, atomically. Use transactions to keep related changes consistent, even when they span multiple databases and collections. + +# How transactions work {% #how-transactions-work %} + +1. Call the [createTransaction](#create-a-transaction) method to create a transaction. This will return a transaction model, including its ID. +2. Stage operations by passing the `transactionId` parameter to supported document, bulk, and atomic numeric methods. You can stage many operations at once with the [createOperations](#create-operations) method. +3. Call the [updateTransaction](#commit-or-rollback) method to commit or roll back. + +On commit, Appwrite replays all staged logs in order inside a real database transaction. Staged operations see earlier staged changes (read your own writes). If any affected document changed outside your transaction, the commit fails with a conflict. + +{% info title="Scope and limitations" %} +You can stage operations across any database and collection within the same transaction. Schema operations (for example, creating or deleting indexes) are not included in transactions. +{% /info %} + +# Limits {% #limits %} + +The maximum number of operations you can stage per transaction depends on your plan: + +| Plan | Max operations per transaction | +|------|-------------------------------| +| Free | 100 | +| Pro | 1,000 | + +# Create a transaction {% #create-a-transaction %} + +Call the `createTransaction` method to begin. It returns a transaction model that includes `$id`. Pass this ID as `transactionId` to subsequent operations. Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/platform/api-keys). + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const tx = await vectorsDB.createTransaction(); +// tx.$id is your transactionId +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const tx = await vectorsDB.createTransaction(); +// tx.$id is your transactionId +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$tx = $vectorsDB->createTransaction(); +// $tx['$id'] is your transactionId +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +tx = vectors_db.create_transaction() +# tx['$id'] is your transactionId +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +tx = vectors_db.create_transaction +# tx['$id'] is your transactionId +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +var tx = await vectorsDB.CreateTransaction(); +// tx.Id is your transactionId +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +final tx = await vectorsDB.createTransaction(); +// tx.$id is your transactionId +``` +```kotlin +import io.appwrite.Client +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val tx = vectorsDB.createTransaction() +// tx.id is your transactionId +``` +```java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createTransaction(new CoroutineCallback<>((tx, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(tx); +})); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let tx = try await vectorsDB.createTransaction() +// tx.id is your transactionId +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let tx = vectors_db.create_transaction(None).await?; + // tx.id is your transaction_id + + Ok(()) +} +``` +```bash +appwrite vectors-db create-transaction +``` +{% /multicode %} + +# Stage operations {% #stage-operations %} + +Add the `transactionId` parameter to supported methods to stage them instead of immediately persisting. + +When you pass `transactionId`, Appwrite writes the operation to an internal staging area. The target collection is not modified until you commit the transaction. + +## Stage single operations {% #stage-single-operations %} + +Update, upsert, and delete operations accept `transactionId`, as well as their bulk versions (`updateDocuments`, `upsertDocuments`, `deleteDocuments`). To stage the first write to a brand new document, use `upsertDocument` with `transactionId`. + +{% multicode %} +```server-nodejs +// Update inside a transaction +await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { metadata: { title: 'Hamlet', year: 1602 } }, + transactionId: tx.$id +}); + +// Delete inside a transaction +await vectorsDB.deleteDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +}); +``` +```deno +// Update inside a transaction +await vectorsDB.updateDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { metadata: { title: 'Hamlet', year: 1602 } }, + transactionId: tx.$id +}); + +// Delete inside a transaction +await vectorsDB.deleteDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +}); +``` +```php +// Update inside a transaction +$vectorsDB->updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: ['metadata' => ['title' => 'Hamlet', 'year' => 1602]], + transactionId: $tx['$id'] +); + +// Delete inside a transaction +$vectorsDB->deleteDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: $tx['$id'] +); +``` +```python +# Update inside a transaction +vectors_db.update_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + data = { "metadata": { "title": "Hamlet", "year": 1602 } }, + transaction_id = tx['$id'] +) + +# Delete inside a transaction +vectors_db.delete_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + transaction_id = tx['$id'] +) +``` +```ruby +# Update inside a transaction +vectors_db.update_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + data: { "metadata" => { "title" => "Hamlet", "year" => 1602 } }, + transaction_id: tx['$id'] +) + +# Delete inside a transaction +vectors_db.delete_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + transaction_id: tx['$id'] +) +``` +```csharp +// Update inside a transaction +await vectorsDB.UpdateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: new Dictionary<string, object> { + { "metadata", new Dictionary<string, object> { { "title", "Hamlet" }, { "year", 1602 } } } + }, + transactionId: tx.Id +); + +// Delete inside a transaction +await vectorsDB.DeleteDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + transactionId: tx.Id +); +``` +```dart +// Update inside a transaction +await vectorsDB.updateDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + data: { "metadata": { "title": "Hamlet", "year": 1602 } }, + transactionId: tx.$id +); + +// Delete inside a transaction +await vectorsDB.deleteDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +); +``` +```kotlin +// Update inside a transaction +vectorsDB.updateDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + data = mapOf("metadata" to mapOf("title" to "Hamlet", "year" to 1602)), + transactionId = tx.id +) + +// Delete inside a transaction +vectorsDB.deleteDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + transactionId = tx.id +) +``` +```java +// Update inside a transaction (asynchronous) +vectorsDB.updateDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Map.of("metadata", Map.of("title", "Hamlet", "year", 1602)), + listOf(), + "<TRANSACTION_ID>", + new CoroutineCallback<>((document, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(document); + }) +); +``` +```swift +// Update inside a transaction +try await vectorsDB.updateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + data: ["metadata": ["title": "Hamlet", "year": 1602]], + transactionId: tx.id +) + +// Delete inside a transaction +try await vectorsDB.deleteDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + transactionId: tx.id +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let tx = vectors_db.create_transaction(None).await?; + + // Update inside a transaction + vectors_db.update_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(json!({ "metadata": { "title": "Hamlet", "year": 1602 } })), + None, + Some(&tx.id), + ).await?; + + // Delete inside a transaction + vectors_db.delete_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + Some(&tx.id), + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db update-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> \ + --data '{ "metadata": { "title": "Hamlet", "year": 1602 } }' \ + --transaction-id <TRANSACTION_ID> +``` +{% /multicode %} + +You can read uncommitted changes back inside the same transaction by passing `transactionId` to `getDocument`. A plain read without `transactionId` still returns the committed document. + +{% multicode %} +```server-nodejs +// Read your own staged write +const staged = await vectorsDB.getDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +}); +``` +```deno +// Read your own staged write +const staged = await vectorsDB.getDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +}); +``` +```php +// Read your own staged write +$staged = $vectorsDB->getDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: $tx['$id'] +); +``` +```python +# Read your own staged write +staged = vectors_db.get_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = '<DOCUMENT_ID>', + transaction_id = tx['$id'] +) +``` +```ruby +# Read your own staged write +staged = vectors_db.get_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: '<DOCUMENT_ID>', + transaction_id: tx['$id'] +) +``` +```csharp +// Read your own staged write +var staged = await vectorsDB.GetDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + transactionId: tx.Id +); +``` +```dart +// Read your own staged write +final staged = await vectorsDB.getDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID>', + transactionId: tx.$id +); +``` +```kotlin +// Read your own staged write +val staged = vectorsDB.getDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = "<DOCUMENT_ID>", + transactionId = tx.id +) +``` +```java +// Read your own staged write (asynchronous) +vectorsDB.getDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + listOf(), + "<TRANSACTION_ID>", + new CoroutineCallback<>((document, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(document); + }) +); +``` +```swift +// Read your own staged write +let staged = try await vectorsDB.getDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: "<DOCUMENT_ID>", + transactionId: tx.id +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let tx = vectors_db.create_transaction(None).await?; + + // Read your own staged write + let staged = vectors_db.get_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "<DOCUMENT_ID>", + None, + Some(&tx.id), + ).await?; + + Ok(()) +} +``` +```bash +appwrite vectors-db get-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id <DOCUMENT_ID> \ + --transaction-id <TRANSACTION_ID> +``` +{% /multicode %} + +## Stage many with createOperations {% #create-operations %} + +Use the `createOperations` method to stage multiple operations across databases and collections in a single request. Provide an array of operation objects: + +```json +[ + { + "action": "create|update|upsert|increment|decrement|delete|bulkCreate|bulkUpdate|bulkUpsert|bulkDelete", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID>", + "data": {} + } +] +``` + +For `create`, `update`, and `upsert` actions, pass the document `data` (an `embeddings` vector and optional `metadata`). For `delete`, the `documentId` is enough. + +{% multicode %} +```server-nodejs +// Stage multiple operations at once +await vectorsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'update', + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_1>', + data: { metadata: { title: 'Macbeth' } } + }, + { + action: 'delete', + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_2>' + } + ] +}); +``` +```deno +// Stage multiple operations at once +await vectorsDB.createOperations({ + transactionId: tx.$id, + operations: [ + { + action: 'update', + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_1>', + data: { metadata: { title: 'Macbeth' } } + }, + { + action: 'delete', + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: '<DOCUMENT_ID_2>' + } + ] +}); +``` +```php +$vectorsDB->createOperations( + transactionId: $tx['$id'], + operations: [ + [ + 'action' => 'update', + 'databaseId' => '<DATABASE_ID>', + 'collectionId' => '<COLLECTION_ID>', + 'documentId' => '<DOCUMENT_ID_1>', + 'data' => [ 'metadata' => [ 'title' => 'Macbeth' ] ] + ], + [ + 'action' => 'delete', + 'databaseId' => '<DATABASE_ID>', + 'collectionId' => '<COLLECTION_ID>', + 'documentId' => '<DOCUMENT_ID_2>' + ] + ] +); +``` +```python +vectors_db.create_operations( + transaction_id = tx['$id'], + operations = [ + { + 'action': 'update', + 'databaseId': '<DATABASE_ID>', + 'collectionId': '<COLLECTION_ID>', + 'documentId': '<DOCUMENT_ID_1>', + 'data': { 'metadata': { 'title': 'Macbeth' } } + }, + { + 'action': 'delete', + 'databaseId': '<DATABASE_ID>', + 'collectionId': '<COLLECTION_ID>', + 'documentId': '<DOCUMENT_ID_2>' + } + ] +) +``` +```ruby +vectors_db.create_operations( + transaction_id: tx['$id'], + operations: [ + { + 'action' => 'update', + 'databaseId' => '<DATABASE_ID>', + 'collectionId' => '<COLLECTION_ID>', + 'documentId' => '<DOCUMENT_ID_1>', + 'data' => { 'metadata' => { 'title' => 'Macbeth' } } + }, + { + 'action' => 'delete', + 'databaseId' => '<DATABASE_ID>', + 'collectionId' => '<COLLECTION_ID>', + 'documentId' => '<DOCUMENT_ID_2>' + } + ] +) +``` +```csharp +await vectorsDB.CreateOperations( + transactionId: tx.Id, + operations: new List<object> + { + new Dictionary<string, object> + { + ["action"] = "update", + ["databaseId"] = "<DATABASE_ID>", + ["collectionId"] = "<COLLECTION_ID>", + ["documentId"] = "<DOCUMENT_ID_1>", + ["data"] = new Dictionary<string, object> { + ["metadata"] = new Dictionary<string, object> { ["title"] = "Macbeth" } + } + }, + new Dictionary<string, object> + { + ["action"] = "delete", + ["databaseId"] = "<DATABASE_ID>", + ["collectionId"] = "<COLLECTION_ID>", + ["documentId"] = "<DOCUMENT_ID_2>" + } + } +); +``` +```dart +await vectorsDB.createOperations( + transactionId: tx.$id, + operations: [ + { + 'action': 'update', + 'databaseId': '<DATABASE_ID>', + 'collectionId': '<COLLECTION_ID>', + 'documentId': '<DOCUMENT_ID_1>', + 'data': { 'metadata': { 'title': 'Macbeth' } } + }, + { + 'action': 'delete', + 'databaseId': '<DATABASE_ID>', + 'collectionId': '<COLLECTION_ID>', + 'documentId': '<DOCUMENT_ID_2>' + } + ] +); +``` +```kotlin +vectorsDB.createOperations( + transactionId = tx.id, + operations = listOf( + mapOf( + "action" to "update", + "databaseId" to "<DATABASE_ID>", + "collectionId" to "<COLLECTION_ID>", + "documentId" to "<DOCUMENT_ID_1>", + "data" to mapOf("metadata" to mapOf("title" to "Macbeth")) + ), + mapOf( + "action" to "delete", + "databaseId" to "<DATABASE_ID>", + "collectionId" to "<COLLECTION_ID>", + "documentId" to "<DOCUMENT_ID_2>" + ) + ) +) +``` +```java +// Stage multiple operations at once (asynchronous) +List<Map<String, Object>> operations = Arrays.asList( + Map.of( + "action", "update", + "databaseId", "<DATABASE_ID>", + "collectionId", "<COLLECTION_ID>", + "documentId", "<DOCUMENT_ID_1>", + "data", Map.of("metadata", Map.of("title", "Macbeth")) + ), + Map.of( + "action", "delete", + "databaseId", "<DATABASE_ID>", + "collectionId", "<COLLECTION_ID>", + "documentId", "<DOCUMENT_ID_2>" + ) +); + +vectorsDB.createOperations( + "<TRANSACTION_ID>", + operations, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +try await vectorsDB.createOperations( + transactionId: tx.id, + operations: [ + [ + "action": "update", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID_1>", + "data": ["metadata": ["title": "Macbeth"]] + ], + [ + "action": "delete", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID_2>" + ] + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let tx = vectors_db.create_transaction(None).await?; + + // Stage multiple operations at once + vectors_db.create_operations( + &tx.id, + Some(vec![ + json!({ + "action": "update", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID_1>", + "data": { "metadata": { "title": "Macbeth" } } + }), + json!({ + "action": "delete", + "databaseId": "<DATABASE_ID>", + "collectionId": "<COLLECTION_ID>", + "documentId": "<DOCUMENT_ID_2>" + }), + ]), + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Commit or roll back {% #commit-or-rollback %} + +When you are done staging operations, call the `updateTransaction` method to finalize the transaction. Set `commit` to `true` to apply the staged operations, or `rollback` to `true` to discard them. + +{% multicode %} +```server-nodejs +// Commit +await vectorsDB.updateTransaction({ + transactionId: tx.$id, + commit: true +}); + +// Or roll back +await vectorsDB.updateTransaction({ + transactionId: tx.$id, + rollback: true +}); +``` +```deno +// Commit +await vectorsDB.updateTransaction({ + transactionId: tx.$id, + commit: true +}); + +// Or roll back +await vectorsDB.updateTransaction({ + transactionId: tx.$id, + rollback: true +}); +``` +```php +// Commit +$vectorsDB->updateTransaction( + transactionId: $tx['$id'], + commit: true +); + +// Roll back +$vectorsDB->updateTransaction( + transactionId: $tx['$id'], + rollback: true +); +``` +```python +# Commit +vectors_db.update_transaction( + transaction_id = tx['$id'], + commit = True +) + +# Roll back +vectors_db.update_transaction( + transaction_id = tx['$id'], + rollback = True +) +``` +```ruby +# Commit +vectors_db.update_transaction( + transaction_id: tx['$id'], + commit: true +) + +# Roll back +vectors_db.update_transaction( + transaction_id: tx['$id'], + rollback: true +) +``` +```csharp +// Commit +await vectorsDB.UpdateTransaction( + transactionId: tx.Id, + commit: true +); + +// Roll back +await vectorsDB.UpdateTransaction( + transactionId: tx.Id, + rollback: true +); +``` +```dart +// Commit +await vectorsDB.updateTransaction( + transactionId: tx.$id, + commit: true +); + +// Roll back +await vectorsDB.updateTransaction( + transactionId: tx.$id, + rollback: true +); +``` +```kotlin +// Commit +vectorsDB.updateTransaction( + transactionId = tx.id, + commit = true +) + +// Roll back +vectorsDB.updateTransaction( + transactionId = tx.id, + rollback = true +) +``` +```java +// Commit (asynchronous) +vectorsDB.updateTransaction( + "<TRANSACTION_ID>", + true, + false, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +// Roll back (asynchronous) +vectorsDB.updateTransaction( + "<TRANSACTION_ID>", + false, + true, + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +// Commit +try await vectorsDB.updateTransaction( + transactionId: tx.id, + commit: true +) + +// Roll back +try await vectorsDB.updateTransaction( + transactionId: tx.id, + rollback: true +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + // Commit + vectors_db.update_transaction( + "<TRANSACTION_ID>", + Some(true), + None, + ).await?; + + // Roll back + vectors_db.update_transaction( + "<TRANSACTION_ID>", + None, + Some(true), + ).await?; + + Ok(()) +} +``` +```bash +# Commit +appwrite vectors-db update-transaction \ + --transaction-id <TRANSACTION_ID> \ + --commit true + +# Roll back +appwrite vectors-db update-transaction \ + --transaction-id <TRANSACTION_ID> \ + --rollback true +``` +{% /multicode %} + +# Inspect and delete transactions {% #inspect-and-delete %} + +Use `getTransaction` to check a transaction's status and operation count, `listTransactions` to list transactions across all databases, and `deleteTransaction` to discard a transaction without committing it. + +{% multicode %} +```server-nodejs +// Get one transaction +const tx = await vectorsDB.getTransaction({ transactionId: '<TRANSACTION_ID>' }); + +// List transactions +const list = await vectorsDB.listTransactions(); + +// Delete a transaction +await vectorsDB.deleteTransaction({ transactionId: '<TRANSACTION_ID>' }); +``` +```deno +// Get one transaction +const tx = await vectorsDB.getTransaction({ transactionId: '<TRANSACTION_ID>' }); + +// List transactions +const list = await vectorsDB.listTransactions(); + +// Delete a transaction +await vectorsDB.deleteTransaction({ transactionId: '<TRANSACTION_ID>' }); +``` +```php +// Get one transaction +$tx = $vectorsDB->getTransaction(transactionId: '<TRANSACTION_ID>'); + +// List transactions +$list = $vectorsDB->listTransactions(); + +// Delete a transaction +$vectorsDB->deleteTransaction(transactionId: '<TRANSACTION_ID>'); +``` +```python +# Get one transaction +tx = vectors_db.get_transaction(transaction_id = '<TRANSACTION_ID>') + +# List transactions +list = vectors_db.list_transactions() + +# Delete a transaction +vectors_db.delete_transaction(transaction_id = '<TRANSACTION_ID>') +``` +```ruby +# Get one transaction +tx = vectors_db.get_transaction(transaction_id: '<TRANSACTION_ID>') + +# List transactions +list = vectors_db.list_transactions + +# Delete a transaction +vectors_db.delete_transaction(transaction_id: '<TRANSACTION_ID>') +``` +```csharp +// Get one transaction +var tx = await vectorsDB.GetTransaction(transactionId: "<TRANSACTION_ID>"); + +// List transactions +var list = await vectorsDB.ListTransactions(); + +// Delete a transaction +await vectorsDB.DeleteTransaction(transactionId: "<TRANSACTION_ID>"); +``` +```dart +// Get one transaction +final tx = await vectorsDB.getTransaction(transactionId: '<TRANSACTION_ID>'); + +// List transactions +final list = await vectorsDB.listTransactions(); + +// Delete a transaction +await vectorsDB.deleteTransaction(transactionId: '<TRANSACTION_ID>'); +``` +```kotlin +// Get one transaction +val tx = vectorsDB.getTransaction(transactionId = "<TRANSACTION_ID>") + +// List transactions +val list = vectorsDB.listTransactions() + +// Delete a transaction +vectorsDB.deleteTransaction(transactionId = "<TRANSACTION_ID>") +``` +```java +// Get one transaction (asynchronous) +vectorsDB.getTransaction( + "<TRANSACTION_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +// List transactions (asynchronous) +vectorsDB.listTransactions(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); +})); + +// Delete a transaction (asynchronous) +vectorsDB.deleteTransaction( + "<TRANSACTION_ID>", + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +// Get one transaction +let tx = try await vectorsDB.getTransaction(transactionId: "<TRANSACTION_ID>") + +// List transactions +let list = try await vectorsDB.listTransactions() + +// Delete a transaction +try await vectorsDB.deleteTransaction(transactionId: "<TRANSACTION_ID>") +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + // Get one transaction + let tx = vectors_db.get_transaction("<TRANSACTION_ID>").await?; + + // List transactions + let list = vectors_db.list_transactions(None).await?; + + // Delete a transaction + vectors_db.delete_transaction("<TRANSACTION_ID>").await?; + + Ok(()) +} +``` +```bash +# Get one transaction +appwrite vectors-db get-transaction \ + --transaction-id <TRANSACTION_ID> + +# List transactions +appwrite vectors-db list-transactions + +# Delete a transaction +appwrite vectors-db delete-transaction \ + --transaction-id <TRANSACTION_ID> +``` +{% /multicode %} + +# Handle conflicts {% #handle-conflicts %} + +On commit, Appwrite verifies that documents affected by your transaction haven't changed externally since they were staged. If a conflicting change is detected, the commit fails with a conflict error. Resolve the conflict (for example, refetch and re-stage) and try again. + +{% info title="Best practices" %} +Keep transactions short-lived to reduce the likelihood of conflicts. Stage related updates in the order they must be applied. Prefer `createOperations` when you need to stage many changes across multiple collections. +{% /info %} + +{% arrow_link href="/docs/references" %} +Explore the API references +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/vectorsdb/vector-search/+page.markdoc b/src/routes/docs/products/databases/vectorsdb/vector-search/+page.markdoc new file mode 100644 index 0000000000..a663dcb045 --- /dev/null +++ b/src/routes/docs/products/databases/vectorsdb/vector-search/+page.markdoc @@ -0,0 +1,556 @@ +--- +layout: article +title: Vector search +description: Run similarity search over your documents with Appwrite VectorsDB. Create an HNSW index on the embeddings field and rank documents by cosine, dot product, or Euclidean distance. +--- +Vector search finds the documents whose `embeddings` are closest to a query vector. +Instead of matching exact values, it ranks documents by similarity, so you can build features like semantic search, recommendations, and retrieval for AI applications. + +There are two steps: create an [index](/docs/products/databases/vectorsdb/collections) on the `embeddings` field so searches are fast, then pass a vector query to `listDocuments` to get documents ranked by similarity. + +# Create an index {% #create-an-index %} +Before you search, create an HNSW index on the `embeddings` field with `createIndex`. HNSW (Hierarchical Navigable Small World) is an approximate nearest neighbor index that keeps similarity search fast as your collection grows. + +The index `type` decides how similarity is measured. Use the `VectorsDBIndexType` enum to pick one: + +| Index type | Enum | Use when | +| --- | --- | --- | +| `hnsw_cosine` | `VectorsDBIndexType.HnswCosine` | You care about the direction of the vectors, not their magnitude. A common default for text embeddings. | +| `hnsw_dot` | `VectorsDBIndexType.HnswDot` | You want the dot product, which factors in both direction and magnitude. | +| `hnsw_euclidean` | `VectorsDBIndexType.HnswEuclidean` | You want the straight-line distance between vectors. | + +Match the index type to the search query you plan to run. A `hnsw_cosine` index serves `Query.vectorCosine` searches, `hnsw_dot` serves `Query.vectorDot`, and `hnsw_euclidean` serves `Query.vectorEuclidean`. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createIndex({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + key: 'embeddings_index', + type: sdk.VectorsDBIndexType.HnswCosine, + attributes: ['embeddings'] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createIndex({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + key: 'embeddings_index', + type: sdk.VectorsDBIndexType.HnswCosine, + attributes: ['embeddings'] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Enums\VectorsDBIndexType; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createIndex( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + key: 'embeddings_index', + type: VectorsDBIndexType::HNSWCOSINE(), + attributes: ['embeddings'] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.enums import VectorsDBIndexType + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_index( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + key = 'embeddings_index', + type = VectorsDBIndexType.HNSW_COSINE, + attributes = ['embeddings'] +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_index( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + key: 'embeddings_index', + type: VectorsDBIndexType::HNSW_COSINE, + attributes: ['embeddings'] +) +``` +```csharp +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +Index result = await vectorsDB.CreateIndex( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + key: "embeddings_index", + type: VectorsDBIndexType.HnswCosine, + attributes: new List<string> { "embeddings" } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +Index result = await vectorsDB.createIndex( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + key: 'embeddings_index', + type: VectorsDBIndexType.hnswCosine, + attributes: ['embeddings'], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.enums.VectorsDBIndexType +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val result = vectorsDB.createIndex( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + key = "embeddings_index", + type = VectorsDBIndexType.HNSW_COSINE, + attributes = listOf("embeddings"), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.enums.VectorsDBIndexType; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createIndex( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "embeddings_index", + VectorsDBIndexType.HNSW_COSINE, + List.of("embeddings"), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let index = try await vectorsDB.createIndex( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + key: "embeddings_index", + type: .hnswCosine, + attributes: ["embeddings"] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::enums::VectorsDBIndexType; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_index( + "<DATABASE_ID>", + "<COLLECTION_ID>", + "embeddings_index", + VectorsDBIndexType::HnswCosine, + vec!["embeddings"], + None, // orders (optional) + None, // lengths (optional) + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-index \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --key 'embeddings_index' \ + --type 'hnsw_cosine' \ + --attributes 'embeddings' +``` +{% /multicode %} + +The index is built in the background. New documents are added to the index as you create them, so you can keep writing while it builds. + +# Run a similarity search {% #run-a-similarity-search %} +To search, pass a vector query to `listDocuments`. Build the query with one of the `Query` vector methods, passing the field name `embeddings` and the query vector. The response returns documents ranked from most to least similar. + +| Query method | Use with index type | +| --- | --- | +| `Query.vectorCosine('embeddings', vector)` | `hnsw_cosine` | +| `Query.vectorDot('embeddings', vector)` | `hnsw_dot` | +| `Query.vectorEuclidean('embeddings', vector)` | `hnsw_euclidean` | + +The query vector must have the same `dimension` as the collection. You can combine the vector query with other queries, such as `Query.limit()` to cap how many results you get back. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + sdk.Query.limit(3) + ] +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + sdk.Query.limit(3) + ] +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Query; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query::limit(3) + ] +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.query import Query + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.vector_cosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.vector_cosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; +using Appwrite.Queries; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.VectorCosine("embeddings", new List<object> { 0.11, 0.21, 0.30, 0.40 }), + Query.Limit(3) + } +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ], +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val result = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.vectorCosine("embeddings", listOf(0.11, 0.21, 0.30, 0.40)), + Query.limit(3) + ), +) +``` +```java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.vectorCosine("embeddings", List.of(0.11, 0.21, 0.30, 0.40)), + Query.limit(3) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let result = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.vectorCosine("embeddings", [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::query::Query; +use serde_json::json; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::vector_cosine("embeddings", json!([0.11, 0.21, 0.30, 0.40])).to_string(), + Query::limit(3).to_string(), + ]), + None, // transaction_id + None, // total + None, // ttl + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"vectorCosine","attribute":"embeddings","values":[[0.11,0.21,0.30,0.40]]}' '{"method":"limit","values":[3]}' +``` +{% /multicode %} + +To rank by dot product or Euclidean distance instead, swap `vectorCosine` for `vectorDot` or `vectorEuclidean`, and make sure your index uses the matching type. + +{% info title="One vector query per request" %} +A single `listDocuments` call accepts at most one vector query. You can still add non-vector queries such as `Query.limit()` to the same request, but combining two vector queries in one call is not supported. +{% /info %} + +{% info title="Vector search currently works with low dimensions only" %} +Vector queries are sent on a `GET` request, and each query string is capped at 4096 characters. A serialized query vector grows with its dimension, so once a vector reaches a few hundred dimensions it pushes the query past that limit and the request is rejected with a `400 general_argument_invalid` error: *"Value must be a valid string and at least 1 chars and no longer than 4096 chars"*. The exact cutoff depends on the precision of the numbers in your vector, but in practice it falls somewhere around 200 to 270 dimensions. + +This means vector search through the SDK currently works for low-dimensional vectors only. The built-in [embedding models](/docs/products/databases/vectorsdb/embeddings) produce 384- and 768-dimensional vectors, which exceed this limit, so you cannot yet search over those embeddings directly. Keep your search vectors small enough to stay under the 4096-character limit. +{% /info %} + +# Next steps {% #next-steps %} +Vector search ranks documents by similarity. To filter those results by the data stored alongside each vector, combine search with metadata queries. + +{% arrow_link href="/docs/products/databases/vectorsdb/queries" %} +Learn about querying metadata +{% /arrow_link %} From 1739db52271574e5692fc52016045ebcbcc3bce8 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 1 Jul 2026 19:19:53 +0530 Subject: [PATCH 05/38] Add JSON import and export docs for DocumentsDB --- .optimize-cache.json | 2 + .../databases/documentsdb/+layout.svelte | 8 ++ .../documentsdb/json-exports/+page.markdoc | 96 ++++++++++++++++++ .../documentsdb/json-imports/+page.markdoc | 94 +++++++++++++++++ .../dark/documentsdb-import-export.avif | Bin 0 -> 35245 bytes .../databases/documentsdb-import-export.avif | Bin 0 -> 33739 bytes 6 files changed, 200 insertions(+) create mode 100644 src/routes/docs/products/databases/documentsdb/json-exports/+page.markdoc create mode 100644 src/routes/docs/products/databases/documentsdb/json-imports/+page.markdoc create mode 100644 static/images/docs/databases/dark/documentsdb-import-export.avif create mode 100644 static/images/docs/databases/documentsdb-import-export.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index babde58ee4..1d753d17ce 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1449,12 +1449,14 @@ "static/images/docs/databases/dark/csv-export.png": "8d2fbffbdc4b1e6e443d61a93fe4a331ecd91c66ae1457270f51f296c406aeb9", "static/images/docs/databases/dark/csv-import.png": "bdd1e700c747e703ac75b744a8e1caa7e0704ac3439e4ed1077ee0a8e76389d3", "static/images/docs/databases/dark/databases.png": "2cc14bcda3d289c3fb77f8ee4f432d93b46bd0b9755cbf26a53fcadbca3cf32b", + "static/images/docs/databases/dark/documentsdb-import-export.png": "8e87428ef2f5698bd041d398de165ac5063aa7db951901913ec4b7b1674073bc", "static/images/docs/databases/dark/manual-backup.png": "539bdf15bf654a1a696951f4447465b286566460b311ce3db82eb010502a7e03", "static/images/docs/databases/dark/pro-policy.png": "7f74b6eae525187faa9f34a12a0804b227ba9cb2bbd9300f5e8337e9512a6f14", "static/images/docs/databases/dark/restore.png": "f2605303eba4c528bf0041b0e37bb64e61c66503b2d753716b224f66b8f62ecf", "static/images/docs/databases/dark/scale-custom-policies.png": "0013e987e9b8b917cb9be4c28048f851f2d188f3bfa5ff17a11a7ac7cf9c3ade", "static/images/docs/databases/dark/scale-policies.png": "9ca9523f2e20e9aa993f0ad933cdf1dcd12adbaa35ecb2a0b8b3d2fd65877e1f", "static/images/docs/databases/databases.png": "0278a6bc5672684653f74bcf3c0d022fdd82a08d7a7fd438b28e21bd81b5e5d5", + "static/images/docs/databases/documentsdb-import-export.png": "4456efce983bfe6aebaafde0b119801cf35173a036bd0ddd06be4a74afd14778", "static/images/docs/databases/documentsdb/backup-policy.png": "913cacbe957847f8a71efa2d2e704754e52cf9c276dce8978f6c473a9ba6595b", "static/images/docs/databases/documentsdb/backups-tab.png": "231163729496618d26863c6fa7ad88069875f78a3c320033d4bddc3c2f8da376", "static/images/docs/databases/documentsdb/create-database.png": "49ba017dcec96631a87f924b13b6b93478add7b516cc62947e87230b5a0d5de1", diff --git a/src/routes/docs/products/databases/documentsdb/+layout.svelte b/src/routes/docs/products/databases/documentsdb/+layout.svelte index 3f63cab9b0..6d43eae704 100644 --- a/src/routes/docs/products/databases/documentsdb/+layout.svelte +++ b/src/routes/docs/products/databases/documentsdb/+layout.svelte @@ -78,6 +78,14 @@ { label: 'Timestamp overrides', href: '/docs/products/databases/documentsdb/timestamp-overrides' + }, + { + label: 'JSON imports', + href: '/docs/products/databases/documentsdb/json-imports' + }, + { + label: 'JSON exports', + href: '/docs/products/databases/documentsdb/json-exports' } ] } diff --git a/src/routes/docs/products/databases/documentsdb/json-exports/+page.markdoc b/src/routes/docs/products/databases/documentsdb/json-exports/+page.markdoc new file mode 100644 index 0000000000..05d23aae41 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/json-exports/+page.markdoc @@ -0,0 +1,96 @@ +--- +layout: article +title: JSON exports +description: Export documents from a DocumentsDB collection to a JSON file. Share datasets, create custom backups, or move data to another system without writing custom scripts. +--- + +Appwrite's JSON Export feature allows you to export documents from a collection to a JSON file. This is especially useful for creating custom backups, sharing data with other teams, or moving datasets to another system. + +# Export configuration {% #export-configuration %} + +Before exporting, you can configure a few options to control the contents of the output. These settings let you export exactly the data you need. + +## Select fields {% #select-fields %} + +You can choose which fields to include in your export. By default, every field is exported, but selecting specific fields creates cleaner, more focused datasets that are easier to work with. + +{% info title="Good to know" %} +System fields like `$id`, `$permissions`, `$createdAt`, and `$updatedAt` are always included in the export. +{% /info %} + +## Filter documents {% #filter-documents %} + +You can apply queries to export only the documents you need. This is especially useful when you want to export a subset of a collection for a specific use case. + +# Export format {% #export-format %} + +Each document is exported as a JSON object that includes its system fields and data fields. The output file is an array of these objects. + +An example of exported data: + +```json +[ + { + "$id": "book-1", + "$permissions": ["read(\"any\")"], + "$createdAt": "2025-08-10T12:34:56.000Z", + "$updatedAt": "2025-08-10T12:34:56.000Z", + "title": "Harry Potter and the Sorcerer's Stone", + "author": "J.K. Rowling", + "year": 1997, + "available": true + } +] +``` + +# Timestamps {% #timestamps %} + +The `$createdAt` and `$updatedAt` fields are exported in ISO 8601 format, making them compatible with most tools that consume JSON. + +# Permissions {% #permissions %} + +If document level security is enabled for your collection, the `$permissions` field contains the permission strings for each document. Permission strings are formatted as an array of role definitions. + +The roles used are API strings that can be found in the [permissions documentation](/docs/apis/rest#roles). + +# Background processing {% #background-processing %} + +Large exports run as background tasks to avoid blocking your workflow. When an export completes, you'll receive an email with a short-lived download link to retrieve your JSON file. + +This means you can start an export, close the Console, and return later to download your file. The Console displays a floating progress bar while the export is active. + +# Export documents from the Console {% #export-console %} + +{% only_dark %} +![JSON export from the collection toolbar](/images/docs/databases/dark/documentsdb-import-export.avif) +{% /only_dark %} +{% only_light %} +![JSON export from the collection toolbar](/images/docs/databases/documentsdb-import-export.avif) +{% /only_light %} + +To export documents using the Appwrite Console: + +1. Go to your project and navigate to **Databases** +2. Select your database and open the target collection +3. Click the export (download) icon in the collection toolbar +4. Configure your export options: + - Choose which fields to include (optional) + - Apply queries to filter documents (optional) +5. Start the export + +The export begins processing in the background. You'll see a progress indicator and receive an email when the export is ready to download. + +# Use cases {% #use-cases %} + +JSON exports are useful for many common workflows: + +- **Custom backups**: Archive specific data subsets for record-keeping +- **Data sharing**: Hand off datasets to other teams +- **Migration preparation**: Extract data for migration to other systems +- **Reporting**: Feed data into tools that consume JSON + +# Additional resources {% #additional-resources %} + +- [JSON imports](/docs/products/databases/documentsdb/json-imports) +- [Documents](/docs/products/databases/documentsdb/documents) +- [Database permissions](/docs/products/databases/documentsdb/permissions) diff --git a/src/routes/docs/products/databases/documentsdb/json-imports/+page.markdoc b/src/routes/docs/products/databases/documentsdb/json-imports/+page.markdoc new file mode 100644 index 0000000000..5749ebf282 --- /dev/null +++ b/src/routes/docs/products/databases/documentsdb/json-imports/+page.markdoc @@ -0,0 +1,94 @@ +--- +layout: article +title: JSON imports +description: Create documents in a DocumentsDB collection by uploading a JSON file. Seed test data, restore a dataset, or migrate from another system without writing custom scripts. +--- + +Appwrite's JSON Import feature allows you to create multiple documents in a collection by uploading a single JSON file. This is especially useful for importing existing data, seeding test environments, or migrating from other systems. + +# Prepare your JSON file {% #prepare-file %} + +Your JSON file is an array of objects, where each object becomes one document in the collection. DocumentsDB is schemaless, so each object can hold its own set of fields. + +An example of a valid JSON file: + +```json +[ + { + "title": "Harry Potter and the Sorcerer's Stone", + "author": "J.K. Rowling", + "year": 1997, + "available": true + }, + { + "title": "The Fellowship of the Ring", + "author": "J.R.R. Tolkien", + "year": 1954, + "available": true + } +] +``` + +Each object is validated before being imported. + +# Custom document IDs {% #custom-ids %} + +You can include a `$id` field on any object to set a custom document ID. If you omit it, Appwrite generates a unique ID for the document automatically. + +```json +[ + { + "$id": "book-1", + "title": "Harry Potter and the Sorcerer's Stone", + "author": "J.K. Rowling" + } +] +``` + +# Handle duplicate IDs {% #duplicate-ids %} + +When an imported document uses a `$id` that already exists in the collection, Appwrite decides what to do based on the duplicate handling you choose: + +- **Fail** (default): the import stops at the first conflicting ID. +- **Skip**: conflicting documents are ignored, and the rest are imported. +- **Overwrite**: existing documents are replaced with the imported version. + +# Permissions {% #permissions %} + +You can set document level permissions by including a `$permissions` field with an array of permission strings. Make sure document level security is enabled for your collection. + +```json +[ + { + "$id": "book-1", + "$permissions": ["read(\"any\")", "update(\"users\")", "delete(\"user:user_id\")"], + "title": "Harry Potter and the Sorcerer's Stone" + } +] +``` + +The roles used are API strings that can be found in the [permissions documentation](/docs/apis/rest#roles). + +# Import documents from the Console {% #import-console %} + +{% only_dark %} +![JSON import from the collection toolbar](/images/docs/databases/dark/documentsdb-import-export.avif) +{% /only_dark %} +{% only_light %} +![JSON import from the collection toolbar](/images/docs/databases/documentsdb-import-export.avif) +{% /only_light %} + +To import documents using the Appwrite Console: + +1. Go to your project and navigate to **Databases** +2. Select your database and open the target collection +3. Click the import (upload) icon in the collection toolbar +4. Upload a new JSON file or choose an existing file from your Storage bucket + +JSON imports run as background tasks. The Console displays a floating progress bar while the import is active. + +# Additional resources {% #additional-resources %} + +- [JSON exports](/docs/products/databases/documentsdb/json-exports) +- [Documents](/docs/products/databases/documentsdb/documents) +- [Database permissions](/docs/products/databases/documentsdb/permissions) diff --git a/static/images/docs/databases/dark/documentsdb-import-export.avif b/static/images/docs/databases/dark/documentsdb-import-export.avif new file mode 100644 index 0000000000000000000000000000000000000000..de937ff4c6a8ae6695545ea784c286fc39de878c GIT binary patch literal 35245 zcmXu|Q;;xB(=3XPZQHhO+qP}bJY(CoZQHhO+va}1|D07FU71;t5nUG@eNhbn0DxoW z;^|=MW@!fSU)WljG5(L+S{nXOuiBcr82+#RUl3ZD*f{<FC;)(irLoKZ<Npug94uXI z|4#t^mx(NG?2Z4YL<9f;|6Biy&;LIHgg5=Ch%GJc{_oKLtD^oVOo9IA`p;|V#=!VL zs%Gin<nSMISUMQn|A#P!Zj8bKr2l6_v2=DY{htW{0QA2NwD4a-aIo~S{9gqa0s`Vc zK(lnP{eS)c*933?5HJ8hc$ck-p$ifK6cneG`A@+h5Ed)}Q$YfdxF8Jxf&hpD043oE z3~Q}oNxuWr#7Lpu7V@bJNSz<5Ku$Vf;`BoxpV18p^^o(Q%#m`Dc5#OO`yB*kxhN!` z<=GLoaH-eb7jY<V{^wriD1iTykapD4%;;gEx5{woEM1`>C~n~KNF`o(sXt9@lqOKn zn|%pW6ql$oJOeMYuG`4!w5^FdxHfYZ@53V^u5o6EP?Ielz%&6mvA1<-U5=<fO|Bu` z-WtvJg&+L0aszLRq30PJI^Ko0%&)>n&8S{C#0E67s^e04S~^U*-N!zq#n4<XqCGjc z`f9%6#Cl-E0L9`02{y&cB+5YmSc)Ih2dhpElj(BABImVgIrmL67Pw%5W*aDKWR?}f zr4J>gl)A$MJ&aaah?qp@yn`O$2$%*R`md9K88}@o7hj-R!ZsWr3R_h`8scqdOwT<? z7$t+=tf7iMAs@t2DRU#7|LD6W%AsNZ`}ZqS>Qm!N5`QbmH^Zisp9q*9`EfkN?))Na zy(=8JzGtTNDFM@%8vnRv12t;Fv6ess`a?K3cSrMgsqh?H^~|E3Kg%{2<M`|=3vz63 z>zVFI2lcsqJOX{}a9oI_>!X^uJ&u=;@Bq&&<CqIa+iq?*jSEsfUOl`aweIqr07A0F zBEvr*VUhcz1?I5mZlU#c{D0SKeP5i9vZQ2A?)?*kLOcKwD{-_suTtz4cnarMte6hG z(0jR@EbuoFjh4<t14wfUVPFrTM&0vUZw&jq5CqZ1;m@1pckJ??{%yQbFrwH@(Ec)> z?vJ3vKvcBx{$gnm1Ni~>ipBMrYy3E<y0sY0@6FUaZe^KQH*0}#agsk6HJpCrR>>DB ztir^Ur0qFLz)Pw_tbBa9L>9;NnVI3yTV2mY%NoPuF{1wh5NTufj3+1nG<u${yT5L3 z`E(ym0!l%mWtgghJkNkhYZA^!pdZbyzGu;bUk9jPUBc#hXBHp;Vh#ASN<yc%?2Rqy zN@A<?-y4A|{f*R|6los`qSYlQDmdz-`e@k&E!dNI^=s3!c{fzqFCh4@kw7WS05gj< z^hKhw4)}J%?LSw0VG4T(4kL)(qyj_VohGNoA(xP0IgJ2{%i(OgOTAX7sdCny@TsB7 zp9DJw2h{Tfh%{-XEAPsM+v8bYL59Xr89FKkRPA%SskVR!n47NCvkpwa;@$k60@YOA zl)<3DOPsCztju>?MZIw0`{4~9651ZkmXbfHxbV1vmk$Hiw20k*QaAsMDw<Uy{`Gda zg0c&Q-KHaD6LUZ>*@++ZY=zoeKFwY?FmjNTNjGH}M8+e&vjn|DYs9Fj&!!B{U>isd zRZd=;0IkA3G}O3hCHC&_z`C)LjNlz{4+n-p;zqs3>Fq_x+V{kYHzCX2Z*6pYTO5Bu znu9=X9Z0uPe-mwWyb$OAN=4sOnc$kBlSx_xfd29Y%Srp~`)O)y@axI6a6W+%YwEPC z8$Vd5wY>o<iJ&Vj0Ij)d+?xMX13AkP8xxf|JB;=>9dW|4KNI-y4d=h+<h6BT=LNJ; z0jnYt)u}FzA%Qv%Q6Geo^&)*6)2cPWj$j?$_(9H4I<Yte<hfT(nT|C2O?p*egFN<l ze5DM=9j!gcc>X3KF3UDEmcJ=`tbhFz^~`=XY3W0HK%C#f{t!=j5eQNTAH@nEPT?Ud z^!(RL&DGo{@_^x#d1DoCw+tinFpc48Q*;Gb6PxRdLQHrG{jku;K`noWjQB;9Ef!?d z$jZSW%D}o=08&Q5Qqn?k9=l`NnVN0({S#0gENK^ziP}A87TU?N{YjB@Iuv>t-Xz1b z(4o+FzRb8s61GU3z6IU%HiReePvu?J>5`sw5nkWCuYaSJgol*|_%X+JF|J?u%Ued9 z=xp$WNTkfVTm(2r`!zVg1idxxo-b3+{6XK2d$!-Yh#za4Ko7h&-=&uKBXfNz7zgu@ zg04u<7le(TSPm<(zr#u^6P)55q!QBf<Jc5L%DQf?$lIR165N|x!}-MzPdh7hHJ~_i zSffA=xkK1XbSjkc{T+T72!^+kOa94oWvPQH+eqdc?{!Ft#n=lI02Qnb&eOA<5XV@C z?wI88mFf(^81Kh!>xaQ|r(F9lz|Yi#B6pnV7mBE*ZM1#r8Ab<6wMw#kz)q2nX4m`0 zj|PfLf2H8_5Nzb$sT`ci`lT6gwT}hZ&T~9Xwm}(K7)6{ogp4TndYmCG-7;^x^PUH% zQzwcRQ5^ZhEB&xX<MN_AHOVqGNKW=NjenjyHO{f8b+Zw;-n!0}43)p{pXc=E<212{ zSQs-EY?B_5-9V2OGlsMG<k6nIR+pyifKrHwT0>P8tp+u(+)3jSh=5-_K}f&xHLRo= zFSHJKl#7?*M4VjdF{zRDZBv!HA&wS%9!i7VQ*b{C@!LK#@xMp*$W!gZ&yK~TuQR3U zdguWHQ2_KocXkvJpr;z~(FS9Dgm3H$bWX`V6S~@fSY%I07#K<E8lUq(ip4c1h1^v$ z3h%2IK^msuLI4-=+=kHNgKGu~VZ78UmAF2PCW$?`(W`O6ZUTMEL^|Bju$@cuLbWl7 zf$jNyU{@9gz4NIMKdeUn+~VwkRond7tQN659ipQH?{Clwo*|wGq|xbwI;(&fXI$9% zzt8w%|7fML*x{7A<I%H7>8kR)A0sJ5b`4dt&q4IM_~3scr{Z<OynU$o$8uP#QqL}^ zEU16TQsha~VWK&jT>IUs2f>8UY!l7=zxD(E47x*vB0_>I*I^O|C>1N;Or+rDax;=H z*J79T_(atnr6v8hT5Eey^UkB2hub~x3+BoK(Nv9Zo@9)%bGu`8Xo!5Hs0toGFD1#( zF_^y!R{5^wg%m<Gi%lVMUZS)qHY;|EOZdhi4LiP_2Jt>(07<j$Y*9$pv6<4NF#QFs z97DP{e@IQ`N1P}(<P9W*Xr5DdsN<Qiav(7Mj7n<tv|F2n*^R6en!d-x_#s?JD0E#G z{-4szC;4iNWN?|<1CN3cfYzY-zFGJzAhkV3C~rE(0X1#WCJtTns8MeM5+$(uP?J(A zr`5LZDP1QNjFw9$CC#~2<?L$AN|r%&L0>epy9+M%6<_V;mW+lNcr4zsoQ2ruHHz;e zj-z;0DgI;tr2jMxD=pgs8y~*S^^U)4xvNm<@R=940Uhmpmmz}7_aKqmd7A&bJB4AC zozbu(6@0J1FnG~>|FR~G1TnD+S_GJ~@ft2=0`e%GWH(yZQWuZq)CaG=TIN{MsjVkU zHB9FOtsgq;<QCAuN^IK*Wu5G!6KX}D8rTAZ&n{(B$&ZC_Me!RfMpgh8D5U}CD;rHV z1RL6pc(>{~S<JZzG+sz<BDppWV<A<4Y@|Q6yIA+yadFchhM2^<jsj_DtCkjjdMG8F zfIT_wUF-GB641TZjPM=yh9TXCmy&%^Wn#`)nt84JDK3LK!N<CI?-s$(!SzkE&sUGO zB`&oqt=^0C5)?!h)iHLT&?w(FJFY?1eEjByV7VL2c_ic_@9Y`ortNM10HN@Ddc1vT zuns_bS71Jq)Z?@~T}NrP9;p%7y02zHuHliQYtHGLcIj|oLHg#ofAReHfu{_4k0n^o z)^YwiC~2O5p#DPHK;=Gv#vU}B9sxw^aQ-3FGA&4xuhMy@z#5X&GBW9b)yoVPq+XR{ z;U@|H^yYZ(@*gyf0gfRF?2W=Lxi7(%AN*@X`0=bk7Wd3B(Y6+%B#_6}a)ll60RO_k z`birKX=us+beP-4*oGQ)pqX&`nutBNfWT-*>oP(k9La_C;biy~z<b+jPhKsuM7LU{ zb6WcTGXc|WH!+fa-1ECthZ%7*B?P2B_Q0sm9gD*$2*XI&P;U1$BmS5tgNurScqm|a zrHr*TPEBJ_D2~gPLVCP_?)k1KqSB1`a`HV#2W_mggoeqQ++ecsFBb0i^SKa|265mM z|1x8D7BUvJQ80sZrUO+oE9g8k9nTg>oG*O7apqI{yrzH9iwEc=ay_G^eE|{EsFV!E zqeAnx@jhU6Edyhh;$;peG6(g~OLRBO8wepkhm2H3iS_cL{Bd}4gg>x*IBv$X6uMEv z9+L|UBiY`%_N>vkU~6G0#Ii>Rs-AiD+BrPpxCCn;_=aq!MU%n^YvtLUwN0^9GS2;= zsq^o6XYq-sS{X-Z+=|6{IwzMgA@a$IALkS{-fpKcjvVkUHlMK2Bl2d|E`|&}L|8Nz zcl%U4U9i60g8hk!hGEfIgx7nvpQ;vS@s#0-pU|<h0zw3Rv6T=1#C?%$cnbEpv^70} zGP)gMcGwDsBOAW*+3r!=i)Z^9^IAQFYz?Ee7<Q&=G5)O0&M*_uFm^E<E!^8lLOupz z4^aUVuvCER9@}1|Gc|aJg&N9k`gypYrfrrc{Plqeyl5og4|T`Pm#4xsZseO?Y8AY$ zH<UOCMES72TjT5vTsNF_O(dvCWe!sI00t3)qFN}SK%VqKF>vTom@77FTDZ5LscVp@ zdL~1JFJEJv8`0ppF}MfzJ}dF(O!WZ?>xxL$&7lGi<@`txqwC7W1y)C!O<ST>DkjPn zdfC-~YFr+@g&vdIcTlVRhA<MVK{h_xNtnd8Us_u_kw6C?reD|Tdef3E2;A2Rc>jQz zE6HsMh2QeSJ~A(qO;*AlXv04Xxm&@X3kQ@A>eqbjkU}0XoK2rqIZt;`h}*Av9aX39 zNOUiYhJ*c3ePbKl$zl?%{}cLt^q1rtqt2A}Jba|Z<q&1;Jd0=#v9~Bbxaue`Hz&g< zQ^KXD@nWjIG<wcLnqBQRwKN}wTMD2RN;y#^J;wF_kh|os4Bd}XVY7ow@rV8mKbt(= zs#Ak6gv^OIz1T;~ZI8M9Y8#JxE;Cv`1P-1ti$=j>E0On1oY$*d)+p*L%QQKszxZlt zmmKg$*B<Kd5OY=O&Yd|>@X2Lr5x(4Sau{C6gFo?Q-i2IpG=y;+Q-N$(oq5U&z-&k= z)Shs>s0&_X_}!FinpR%X)ki$<cVjMW*)mCQok9gF;9Ql)h#vcS{d#N-6=GotBPX$> znP?=$`~Lgh<-;*5Xh%aQ(7VoDe63(IOXQ2o`Ppf5Me+1Dh5@NPOK!q~6-CyPd9>x@ zoZ!i<7?P<tWak;UI@fwUkSWpUVWtARud1#D9#l8otwEC~BBMq4(dbDC%+ldUz_fHy z_}rd$fO(RN4|<y(mp>0HG`%DNn5KCp{F0?D&x9G@3bS=kI+spT0o~07n1%_4G;C&) zcF9@<pnZT0<;0t<v~8rGm7tA01KNg%t{g*$U@kp=Q@TzaxoObbuG2Wc4uysg1*C-h zoB&gPlq`Z@3l3@bAL+z~a$7GQ14|Q6UcWH9yKcu7Wy)E$v)yqtTcU2fp@H%!cm;cx z?8}b7gN~*Bs83#mMuY%Atb+IMq+&*Y@MWQPFMHgDR_?`QR1O=isue<Fc9j-^CUuZz zbS+9(0u@qAD4Ip=%{<t5=5+vE3pO@yp>K3~y9Y7v6yGNx@@e<Dio!O^rZ8EVt#%0Z z_`^kXMRvs7{casyu`O>Gm;c3kuIyrR@urNhhdiXu18Jyr&JEZZ_gH`6wA?6_a9X0R z0`%KVS1g@87sF)`J2V$KF6l^34W1{`ikyx_2}H$%KA#`S*TjQov^jUinYYV{9Y~8= zqCu+y6K_AI83=7SN6q;eF#PMzXw?HNrTXp03u~N$nRzeFX)w_bT6K9G5wpDp<=-8~ z7l_jYg{Y)80Hx<=e2FA$uGq{MY!e1g^?~I20VTkpPnihZ|Hu0y_u5_r0h9w1V4HZR zoTHusKgN1F<vn6H_Cap984d(Fyy*3lC(H_yTv<KgFO&%x4yLWa)5KrdzGWS5K>`}5 z_KklM<Fv~Pd@iaYBS@{M&1tX(E6K@ci$tfh2QepCBxGEsYCyghAo+Ha2*{$nPosDA z_=s~mu4W22$G`@DCD|apqp(J5Nh-Llo83YFxzKyb(Uj)oN--L}P@B?o_afY4)bQhO zK;~ytL{VmGYb?u+VgCuhasr1QYdU>=6UTN<smvNIug?Q!89FdpH(e<SrZ|NUS~5zI zpni#H2w5O3l6?uh`_6BTR=Ph*hO}SRI5Xax@!b?P{mJP+4H~V&+af(@cZ=XU6UE__ zZe<Q7#B2c;O<FX^E(RZDjKj@c57VlDAd@^9BvI)&Y|VPfU5D>R0gVVOF;p@VPKPH_ z7BvfXE|e_h#E*Z3W}3<lRFa7DjgWSYllzHaA4KEdADPm?J-2)T?z*Qc0Au4Rl|2mC zt^uK=;ysci$3S6;g3P;(VpD#qP-~Jmugar0Siqy00cyYHVcxx_R=y#VEiV=$-OW{x zk3HNxS%RUj!tC%OVi(SNMw9{PT*Dh>)ENkjV2-T?a>8o|eEzDKOccc8(l_MGmYD;o zOMd0EMp6)tw>Qo&CA*~MX=1oqePkZpFX`B8=b;)}Ad;dq)7lCyHI}mUn_-%<gGxFq z#XfnI>3`;a5qcHFa9_F~V)jS$7Ky!pB0<!wFsdRPjeqAqmxYi|WHqNwhcJ2F_gdLp zE!auYp-1L8>13aFv|!O^9GKE262&~`xu-6fxBnyHq||35Ah6w$Osvp`kw!8i(DG75 zKF_*zmZ)(jjcW&+0T9{bHaf_dV_b{yo*DzC%T-;6ty-a5d-yEexw?gMlt#wzI=iVS zP?T`fE_oG7ZDN)>BwPmRo-|k7PsZs|A;oQP9Z1IJPGpc<2O4$Kk0q{Iw~2eriG(>r zQ2LQdaBS)HC@etD-QbZRZJcHI<-Yy_iTfO<EI_;s66n2aC*^&vTdm}?IIL}UDr$(W zm=o&gWEl*F<-ma*=1P*I2x^|RF(9F`jG(sdA?S@TlCc$EMNQUZ%9FtJ?=uA5=NFsq zO79M3gZwszl_lZS#I>ZGc<4t8rW#II0P`DJI$77V@~^On^j(i?=L)6YNyFj<Zoo;^ zWO^<5{BEWuzPCHIip|bqz8-YE-Gzhfy)q`dPyTl_=r5dm(T<X5kc}fK39Zr1a@wd3 zL+`Wm*KZ4+aBv=>qpPK>*>_<YJy?dXk5hJ2r*%#X=FNNa>hX0p#V#n3E_t(QV-ncy zWgI1S$4V0<Dzp?GY@=cJfK?^EvZtBMf2AmDcL!{SD_jM<te)Lt0+L=%hWm~k8qy84 zcPj3V6Gm$}{Ts%*sB^H9O+tK|n-s^AzkorI6(Y>m<7L{6gB_sz+EG<Fd`5nVL_M=v zaF!Klp4$ldzX#>dX4NZ?3|FGN0G#zC#y^Vw+qpM>;2Z8#FL+4^>u4z6xR>Tw)nSz( z!f(|VmS<P-R%E4|D*GuRh?|sDA3J>O6~mgQ0Ffklj}T!TlFKP?(?D9+$u|4xUeSos zvQXF7lp3@go%q<tko6fFWE8im79BIAM}A1ptXbJ(lUr5~tz)W9D0DC=$Ch11RJHE= z4D=d-JE0MmPkj>~e;zVQnN&N6-pHkFb?Ts$#6vOW>ru*F9B;4SF)&6#lku&B>e|%O zL8i4}DJ5P;W^^!l{pn#Mk0?VrtH~i6TYbV82gnGneCYIVkGV+V<fRNfe5VGv>w!@a z98CAwX}`~mtTgKUkdHYZ+oPBYEXO8AIL2Av{OHuAc?)c7Ny_4UQpkaRB;Gv9$;L6~ zI<_QgEg_K`KpEG>bjHQ!u$EghYRVlp@0`PMzl0BVGZXT2f2#{ohUQ@SU^J?%3As9_ zJ-pU8p-?Q{R|w_0@oGT*e(~jP0v0k8qs)FI@@+;X^J6$znx5dESw56%=j=whpUx64 zu~HMgRP|?vsY}n~E#GBxei{9zrvILgo=RKAVVB8qa1+3{|F-yEPxl9b?am-zi4LDe z?hgy;Qb7n<5htf|+sT2w!iOmc>F7K%6I_;_Aj>tK<p_lk<YQMYz{I54SM4FBO+-kI z?cf?#7oB01EOY^O@Q!Zm*&#F0%dBlLG85yH&QNoAnX#DHz>$sI#CrY!_JbZ}N<Q=) zaztQ&%2KPC@nfJuRC{3ZqY#59=(p^#f)@0y?6Dya-Sf^X!JY(+yJr2DQKvD43dKFv zOi-9i^mcqU0N}!Z67qfK58B^G;@y^@Qq)2sSJfQ+*G8`(8pa{K?8-A2t0rF%Vsg`i zKRS0<F!EVeK{SE_f?q5v2cmkAsTzjmIfM(AJ9fIT5_4T!66iGz9q*~Mi@@d6@v$UU zh9uceK8|2tw6sRkr)`H<4LhQi=Mzt$(n<1>B(y);!jOLQ({193p71BD$e$dc^se8* zuP|^Utt-x5KD3>xbNkP?d{`HtUkSQ(RPMId5A#;&!b&^J(#P6Mt{S_r6Xo71D1+Tp zT)+q+n{p=qIph?qW54+_lNLb4@cARB8|26VY_3^a^6HuyNW1NQ!&`{vIIpOt0OKxl z9g{YC3j;R{SxmED`*E<dwbHded`9wo^((r)C#=)-V0Nd`9Q=-IKwRmQD%N|&Ya;jJ zO}v7MHF%9{R+{RsOT4of3z1e4R2~aF)CkNFyphaK{CTCbT47iX%Nb;Roj{sI!E(cq zv5x?MFasl_dj8fSD~xBSKX0`+_f=4x*+W{EW-0TSo%{x1Tmg90PXccBghF8bc%Ub$ zqqG=~_gbqiTfzok=Kjg>gt9$fqlp;26JsmOimFEEDbP=ft;D5Uk|A}<L7S4EF_O=F z^QB>9j(#i2;SY3;(x+HTqHv<JQRW$Rt&&JFsOMFKPGW4{wtl=Yi9jel4Wo4p)@i#3 z3U6)W4zr2WFMZoOds0Lm%uEM7J&|Sk<S^0Z&t+h}UE4OALRut-%ZuyPAMv^y3G<)g z5cQi|mlQ~o6R0bQ${WU}%Q`mwx$_5t){k#;-n`WszNF(T?kr^lN!~#-VCtyU7JA{M ziBbiq-rxtk?RfIKk~Bu|A-$SJvh}^`4`A&ym*bcSa_A8aV2nVS-~5YzVx(bO)+Mou zDz`gKD0IQNj)vtY<Tc{7jYUp70SfGx#cpdfHJ*sB6(L^#rIH<}i6R3Tiv38C%O-#o z1{|u^M{fMem()5(KL>&KQgY+F$gnfUb4m7fXWADq8DC&Tn{S*dj+Q^IZcHBWpbuR- z6$SbIMW)m&Ej;e?ujVYb9s#G6V};9g;}6W$<Ly&0v${ME<jqVmj(h|0>K~b3p2Gu> z@hXf+jrnkrOfrn1Xby58u%OFUM$ij^zN45r**f&Mqo{GU{qxJkihe|jAM{U*b<w+o z4y4@g41;6JE*(JIJlbk8x2MHggx!S5MN{~bsMaRuvzt4c`=88f9$XQYz9{D8b=K(; znN0wRKF($qilWYQHE#48#d0k?BP6uPSHOc<f13uz%8fP8x~B6GNiR%%9XjiLe5K0_ z-?0VcrAO`Vk9(HAP!dl{$@w|TVIT-A&=nY0g&T_@$`!W8_>|Xd!KSO(#4fFfWfx~a zYdL~)O`srjCZu%bVH)#pa|ge9#u9a5`r-Sj_NI@J=nhlU?+({8y!rLVBeHL#jo@&B z?PV+&RO4CQT&9!d9CQsUghm|IZNdb#d|dw3ya3TjRk;Sw%q-(hoKTV~|5fNMQ4x$W zmOp^&XAL!vB*labcz74lw;A;BG3W(-sYU~Bi+$qgSWeDJY5jx4lHdsKv6E)0F@iqg zK)ZECziJr`83+;3R$|e0;D*H#RxGMFhSdz6g4V1h$0sLO16z0Z@-*1R@Eku7Z2)q- zfbQgOJH+uIpGN3XAEi3kfjepG3T)@A31>mUZT%@lqQwcxrqdE2zHD+g%8qd)R)M4! z&`Sj+PF}MmwVx*^-$^$~xZ#8$mlH&G=z<QW5XTDeKRDR<HPF-BQU{O?z2W&VBx-hM zItrV~e<wwQU`*4F;u{;5%k&KcuV+3`I5vB9T+1QSt;JR31qYlkdD%l<WJ&p<`>1$A z6?b7tr!4I@Ho9&ADBpG#kf=W|x600Y_I-r`T*~GwW1CH*RR1JuO){>SYVLi1RJ_hu zVxo0jRTN08bo?8>m+Lr+%RCe6-{*SkXx90I-wt&LAB6Jb>9$W;GO!016gTK=t0MR| zebxM`{T)0GSFC)}PijeDR%cnEsMVnO8osC2J5}$0{Ax|J12Nd!0~y>B!+9W530BbK zdx^RR>`W6KAL#z(__Vx#n;Fj(<&<8T{0cv|l=~ZH6O14Q!K<E$$BpSnAfvtcVhZ)f z683C6MDwybPM|aYQWDsOI3=mKvrN@VVU};`xwj~Se<L=s=SI@_w*?TGyaFzkO-2Ej zpXU#xFkxT_G&ZRUNVh3;6GF1Yqr4vmvjuk+k~_D9cjnD!1+DNjt>+kvbWZgoz9l;C zx!y+-`@a&_ka<yBPm8rhdsPI0`<kzPz?{_b5SD_UMZ++oGRu3wz!Bxwb7+toh|<Mm z0EhacXg}HiS*THr;r1zDulri&N#|OxH*lk=vG)p4KWRyys6rIWgu^J@<`u?vgj|*B zU5af;5)2;U_@hV{&5K5k|HAs&=tLUEUStBdgP-(N4*V1I{z7~NOt6ILY)$(5Ga-6F z4$J*fdRKFq41p<Eb3Nd^T&3PUjV2C1ZDZ%j8(j06?gZ&soMTFSs&X%M9mb%z;OB1) zN>63-pBIz7j!crp*#rq!gl0C#G<}Y%H5McQ09sdzN#s!bDH0v*SYu<)j4vYbJ&Qlm zZ9F_&W~?YQo%DYlX8_F|#9Zu%J9>!P?9v~fz(%Pgn*$UtjeA$xhqRbSABU&-`D!6i zfq3%D8>jFIDS;EHcC_6dVwtY<&i$nEAX;<ejqnCvAoH%X$$QSx`yebg>-oUja&=TJ zlvIOyQ7M&3D69Qpy^%|kOQ`nM%<q}R=i*6%J*qbx0q3v<wHLpFWbxUba}9uDt1`&V zYw<Ez6m(T^QK7M=hd*Y6MH&*ntBs5RUr%2FB~{hB+rQ$1QdDOB9&~;+PO<UEu8lT9 z(x6KpBy6cX4K@AE*et@8bS~q-RaL@rIN4_brxxuh#`^`M*`-GuFSbfbrHM=#5;XOe z502|5ZILmRgan2+#>Uj6m#Umza52L_=iS3RWFWvFY6?n_#A}x~G=^|G!j?Q%GK^Wk zf_D1Xk&_Dh^iIcQM*T4*<$}Q*;UgFXN(1Wy2B&3=+!Mi1w=hi<bqVvMl~#QVCdyrI z$mp#svOBdZfyF`EgTa2`wH!i}Nx#i43H1QKS~9M0;_CfR@gfx*vkcQy6c^QbwB=5D zIzr(<@-NU%o=mfUsw8Jy1>+-!sjNoBW|U0Fy3vs+t3zb-#alNj*3KS3<|hD|4W_Q2 zZyW-;PQMfMPEc|nvwBs0A#>3=;ItH7ciT3Q3uQ0alz3>n#I!SEoD|0Xdk$8WFm5B% z61nYpv1EGJy2M*G3K4*Z##AO;AIP$AMb!*%1#%ghp%`NgKu`Eh4*l0iwrP%pju*G? zM@<H)!2GNz@Ru1wWR`-+e$_@x&XJu~bSc#O%U_}XBEd%Q3m^RfdebAQv@RHLAya3t z$hOq70>9ZlJd&x?W+?y&_2s25XCzE+h7>bx=<$)o>Cb|+oXVtS!=q6)!$jZHP8J;Q zyJ`yUOpm7MA>pxTqFC|e2{B}pNLAQ0es0O(1{4_vAmVs;e)<NWJZlUC)eRdEAe7&U z{>E-Hej!`<OdI>}gA#>RMx>*Ni8koRoivw$vnB=;{IzPiI92+J8o{n9C2zn(z2^ru z>%$H4dn{lnv!%<ezAuayxGX2;@?|t&iK1enCYfZEaV=dAwL0mCeKmNFS&&|Q0*@4Y z1dteU9R;D6jJBT%*1qJW8wth+pjtCF2LZbH_nt>n>Z%Oxp#Btzq_{59DDcYx-aj*5 z$Wn)E1;Is8d5(t70ACXD;~mh3p0G-MmSM_7(g8UkC=(l*EA+{g{I@~LtNPb1+Wzrs z@L#i<V6hoEc7dV|uQEk#{OkfQcB>5ICe*PMO7Hu)s4K%-w^1I2>wR2=q*AsEcINLc zJgM`#4LKSvdDZ<czOXr;(>y1<;OSu^Ugu=1`__0y=Zw_a9S8}s;<|v5nn+)k^=1<) zBv*y_V~C7_u;Ay~V5n%1o8y!(sg`KqU-7F;ZV#YLcQT)<@q!;-A1^(oYxw(;P-y@n zWx#E3*pETdc`J)5>)b7<wm)qT8poOVt$`XJg(u|1xMxT+OcsAv2+iht6eQ?9MIUAS zkwl?;_ju`xF*5o-{RH>tsJl`t;2O#E!c-)`-Bt{0`#WLG{`8j0s7)A{)XifzvkWU} z2|E#P>e}QrOvcg}>TI!+THiHLEz?`BsQV>Xi4d6Uc52=LfPl&g4;1G6Rd&TpnSgNm zlwYO|PE}U&T=6*hP|gOT$Z4ng*IHgmyuGm`KSl-Y@MDn41eUN-V$`q(mfADS{WLt$ ztzrHyNiZw)sEev2Ysm%cJT<(1sPX(db>;J)hSI)0m8}=b7uK+nOtho0$c`1eJTw$% z$kJyorm|wY`$QpGzomVsHGrhY{9HF6EUp%wrTh~enc_P_b3OY)(2l=uSdNdKzQowN z3UlkWj4jd;>ECY>$&$X4P?swWqLYE0*iRl?TnmPBQz=Bwf|(#fY!eHlMbMGSVWgi3 z_3CU1=4I0GQPlcHj<eI?lZe~f!oABsG09q~cSPeByFt&1ijULPmySc}9ZkjY0ZM0w zisHXsr5|gThw_q^uHq*+^;KFjDA2@Y?8KhF7YJBKXoFYYY#3)H2-qLVxa}3REs7du zikqs)sRmVEt>~zq<k=dVD|8$i=ishJVVD8gEYkK>%*$I&aAAf}hqMFOfbOl=SZPTg z*tmk|;6vsZ3a%~|X{F51xypuNn~EPMS(9It>Jq@UIBYnqf`MGj1)G);@|qDWsh`Lv zQtIvV?O-tcGHA~*6#raxNQ}IJH(-}ce2HLVWYfV3?BBJv#x*|&4Ec#3<5;ks9+39H zri~J}jV+HQ`D9SDMZQGaqepedf2$R1&XJWgYFLPmei#dgQSpMoftva8m)fIY?H0JE z@>skxf4^`$V@rN!*u}Y{^N_Y^px|Mx7-`o$i&4SoO$nd>jhU^8s*QiFsl<2aTG&?~ zQ*rHf^pCb(GLHhAuCg)vY({8YC2$co2h8+s4=McrUI*zwr?{^qEDtG#{NnBw)Mt+f z+5*l|!ZBM9PcWoBV_}p$h2fG7Y4`Pw9tfhFg$XMAV?aA|-Q~=B(9!b^mqZ*C8CSte zR0P=h;%vPP9Bhdixd14x8wwc^4!(2J7nqE8v540aYZt&Y1z1ATX{?krsQt0y2#Jx` zZ)EUxtA7gCR{f+h_k?TLhzjYBA}v;6?DsYqb9PW8DXA_><=W?lhdlLZgwf+w3n#B@ zya1AR@Z<O!YQcB^0GZF3|H#!sPN<hZIEFDK%Xd6J^^^hb`wKmOD`G74-ZHU(iy-9^ zQ`pTOX%6(kH0elJ*O>xaH_r~>SQ^W8xWe8uHNObB#ccF)+8pfJfy{YpeooQt8+;H% z&cu1mqO!i%fj|teR-!Kuyr#}7){VZIxF>jGa0G>~%~eXj{5Z83;UI;h*ki^?d*Tft zySanS6G^V<DEdG0`GI6Jp8>K#D#yT~X1`<fKhpD<W|aGI!vgQKh|~|cgm_HLaqo*E zkw;>E47%c$p91jp9JFhXQC5;PG^(?qO<r4-YNnbW5qU0@m$Ljixh1yYshR$WN_{}Z z(1G}5=JdbMxSp$i{Jic^&&mdRo(w!=6AQQ#AI0c>h(Yu(l3W@i_|m5v3|syiL&i8F zVE*cV7cxv^Hz5^e8y*1<nYPU&-|67!ZWq9E@tzL#j0I@W1CX6S7~%rtWc`jxFbj+2 z8}QlDBZ2gt)(4DpMlBE<VmYAdW5pl())r)*D6$yG+^FGuT<32_v4EZ|lCuQ7(uXpE z&Vo`|Lem^J*OlIZQd2&4+P1pz7JgNV<36$LL!WKE?rM%9^vyUdKvWn$_y0Bt9Dy2l zm9usZxMq+mJWcSPlmMy)Z8l1y<nrKUu_8SQG_<G+;x|VwOxorK9*N>Z`7AGyPGy>^ zM1|Gv&ee=`XmmCU6YYgh9EqVt#fC{o*H}$#4CG5v<8TZTs+Y3&A!T&!PwEI51GrEQ z3=7eMdil@~-Bn>E&k>!GQ!`QOpR;N>Yk~5Ja1h@&NjLU@!iI7);V~{^md%LON^nSP zgFACvWIN$YV`2U)rV0)*@AE9HoAx)phy0{fs6dK$rTvP%0j0FeSfHkuB$>rRHJ^%v z&mu!x(psv0|6|7Gu(^H{t_H_#vFJyWV!NsQ$04dgHR79oR66Y8ia$uXuVlm<GJj*S zN=%sP!P%K{=(O^i@UsSihs9&_4>Bst<*MCnCkkRM42yM&IsCWMSZP|4g5-7(Lf;Nw zH-P4YiJ+9US5({82(Hu!K`Z#1B=T6C{9{3I{U7(Z_N1HzhcHIzm~-fuX^YnCm=A(V z1}4{e|GMnFX!z#_<+{GQ)=>eH!F(gkM30PN=N9mQ(+!fXcSO^SpgeD5GSxf5pN@ql z)L`Xo8FmUBPcBBPiC>P?rM7NQB6Qmp#z}_j`LnfIWO-H0q96MuUjG43<p7)Xgr*g5 z&Z1IU%1oh@ZkM_^nx0r`y<LO1ayS}vID2i=gg-uQw4bjJQmefJ?LyAO>}V;~$EN;E zG9JB_<}Zg7CwK#a(4{!cMW)Zxvp+uM9<e|#iAwcjE7=~DhY@g=b}j~&%j-G8j`bOS z;Spo#RqX<c{}%_Ve9;721yO}UY8jaR`;!Dwj5y8c?Jt6(wN@^l%6r2U^y+JSui7O) z+h=Do|B%^n``CnceJhA<cpQ$#P%tDfX!6>cwmqU-SH-m*H|{6L>qy+Uk2e1BeS9|q zAu9D`x`=1QZl>Rw4SmhEex%&n5~rGMb!)S3NFxLkbj=&4`ZE71L44H)7Y~OLkmwhS z?(zZ-Ogplpr%dS3%mXN^X<j#;2jIYu`{T|9lFz{mp$0vYH#DShvPhzUO1>01PJC|o z$<G1tI+Za+e7qcxat^oCYx%I$&1{L-vk|!7xl3o0U>Fni)mrGJQcIxwrFS295T2p_ z1X|Z22sSIi%jGtzufls&X-V{84Dh`jVrv)OMmG8OZj;+pS3M~`z<E4KFzB1g$sq8A zr=nsSEo%<?U|?qYRMIlx0aC^DM=)kUB)NYN$95t8+ryD;f}-znB$p=V0ikR`2GDAQ zZvRuk6NTvB6I@E=YNeyye4I+Dm}S8y#ZSnq$AUF0RosxGXKQQWfR3`UF^}Fc-tC3y zpuEuxwUd?xutygo{P)O|e4sE1`1(?0PNX!0O(sc+wWx4?L@N7WQpJb{M%q?pl7fou zSMY?qPPmS*2N5Zh@`3U6WP7~<?KRcqmHiIt69)WTwl{;Zf44eZr9DS-O%+Pu(aO@t zmmbHMLE6sLU5RkLvE<#{fYAQg_-ZCyACM`sX^L@T<A53(>$(&!S13G!;gM(2W;}Z# zt=+MvWym5V|MmNVVpn|P3`6`2Jl&D!Yj*!wK?W2*!$3MVZu#2df@i>H+26IWjsvpf z2kiFyYptdK!^pfXQK$Mt&^u8BT=|ZkN*+HA{N4u=O-<hTz6Njc1(1mUc8MyETYs>( zG7EVO0jV#aAQyEgiBgh<bl>sx-qdoXtF8!c@b8X0I(mD2lFj(b$qqU9Z>248!`7$I z>aI%W<OvRHjTAucY{r77;d}=nM1q@}rqDbP*v%SO2Nwm*gj+9Re$;xB_&1Mc|Gk^* zCR!v%hnN=@Y!Hk)=?)rd$3qpwVuaKO;24LNObcYz3&~q~3LEUDQ8#Z;(L+Z)G7bi# zjUL2s^!H1RfF>81o?e!-WJ7jH3|3Pri_-C@aF-HHhBr?`oDq!yV!z^%OsiMAxs<>g zG>|hwmfOA#SmlXtr>_AcZl5g?GLJAh))V&8acLJDNZ_qnhCo84KltZQTCXUJc-25? zGoS1Qq%@7~9p1iYSiQbPDDhEgJ@M_py1bpmr%*0a><82(&M}+#O0u<oWu1YAKFHP` z_zDiIjMG09mD^S-%FOji|Bxt7_%!vm@AEnwntAETw%@b&ei584l(d3Ooy+!HIL?lK zMsT!Sp>0!F-ien`P%St02uJ4tzc0(YM?y`v<n$|Kz)D4Sj7jN>ok~zf5Iv8r=O0!A z$pp~GUM*jEaE>VvC(IkE_2PpOk>cwN2{dgVy1Qg{`#`1ZjeA38XTEvfsT-sNGRxW2 zl-IWJLV&(S-oMI+v47ZzYW<o4ch`*6_4Hw)PkRF@8&Kw#l%HoGL{>M0+VtWw6V5?z zX5H~UvH2ikI-Z`nq*I<kU$7lGC7mpt8Ig12@XJFJ0}@_kdxhC1DL>emhAJr9U~6!f z{R+dj*m8V6(@Mlm70G;l()B3p<r(;|uUc2z@+f%9rbD-OArDeKFRKP!ez>$X)<3@~ zbsJ<<oOsYGSb>sJjh&GDT-W2njG$mAkgKYT`B)(%>-b^G>Op(`PP&d{rQM7L2<dH9 zJpB!O&qlx4(Ab3H(2CJa8)&F`G5mJO3)?Vp`5(TxJH=wWBH;#iH}hc9|B~tq!~hp4 z<IX4YAf?bz2K%uMB^N)tAaxc*puN?EgmYf)cqz{~;U#5GW?8ykL|{j?96BvTk}?Vd z&9$r4<NmBD-Yv%-BVo}4-LX$jA})L6RrnN>S2p)?7W$_YptmQiM7+Zvf!ReKb=gh^ z67fBX$T4S+A9sI{+T)d*hXi<8@~^8DGWQ();OAb@ZC;vlYKGcJJ638;(xiZm=x=Ru z3VBT8Vvs?=FRYU*N56fKewkr6`X&+VvEy?A-cdrHf=DQ{upk=LZB*=qHM{A{ef`v< z%&<~j>?(0e_z72B5|7=RtKFrETZ-QxLoX`I&v)sKkw?8m&_*gJJctRo3SOhGY~Fdf z@{G$Cc0_F(3ChN{C}fMBLDI;PFBCMpf7BS0;0P<ki0#a3uy{s@M^^070&+0W57T#4 z)-Wka8V0LtE;HvpC6JGP0Q`PpB#NBI&_zd2$tN%A(<Kq*XK<KqbX3;!H<dLqPuamz za`YLuLLHLy+>yib)iAsu!+$6ZUwt~)=ot(FYHaSAT?w?*2#(=W>F=VkiM?N5mhf2* z0)8KL<=0-VSo2!AB754f8H>M5mBXCXtyj@OGwsywx^aDAvOos03X#w~su@XpbTPE| z?wbDMsCG-kRBl%dE>EGG=rN3s3fvjpH~C8Ryz|_i`Ob%R8Gc5%_F-PDLm3ug#znXa zPlYl}fFC*}SE-+_3^gU!__{E`AsGF9ujT<|YAb|X*9@CMVNq`Q%LfUJU4i}9)A4lI zVz|-wcAb{yd&@|cmDRp)Gp11+F!x5wKE8F^EJceUS$Y!DZ$zL1UG{j^E!(MRLk@Gh zQHs;k71lP6=&6~YI|Yxc;c_VBFlhA$BxAG#Ed*Y6i#vG^z*MV_Dd#z|F<6oSubxQn z%~WWOl`feZz*g%L>2<6+(krC1Ehbnv`CK>`rEo)wOVmUQ%0C(VYz@?(2;$*A4*8X1 zE?hU0TF_t=)zuO_Rokm|>7r!-ywR+0xi3Ww(K((Xg*fzqwHlX><z!_NK^UkfHD7lX z@#f@8K2MHZgwn`frOj-h%p;t}4$nc`l^=Tk&hiM=z1obweH%Rw2Y;)Y|M0QuWf;Nf zTwB)YS=!g3MQ|Qy=lf41Ln?A;`L?OSH<o^p?H$x*`Hvi(=c|M#J8?N4q0kyn%^;hf zirV?oNjA{ku%rD0Oxj4PSFWfpW6c-9^Fj!x7*cY}m0jxiiX|@t<nSB(73#KtJb0Ui z8R>rW_zB&$$GSbpF$SW%GkjX4GMB2a_Q-yFNtyf0aAMfhNu~fDaHW3;<q9p#<{Re) z<9Q<tstOp*-ut3s*)W?v<LGdc)A;~;*avBuN^jSI+ySq-fm8wg>qvAZ5|(Nfs}L=t z`+)w88&k^Mciw2)#qX8%L--Lz{!SFFtlLP_i)B8;isWu^9JZ;f42M(k!><)f%_1*8 zrJgyXpB?0YjjLvlvo@;#E!t9qQRt0aQFk@gj1?25-Nd1AAHHu><&PY_PFR?;7L~b% zeVA^fJY8y`aPDz0DKEyb(C<A%8L={<Cw|SUHGyy%Yd$gH#^NHRd@Qvk%hK+plf8{U z`TG!!=QVmvmM2NVC)vN^^SE|*TaqZjrpunrMK_{XD}5$WTdc}SGs<{&i^u;$FZlUt zT+oe&);_^5?69O)<$)wP7KC04_ITr0SY@%PCN&UP&M<=}dZ(@1$IM4<{ZK)oh)`}r zn8NbF;eWsHu&#)=pNy&!^q-b|@$_?msMd4lU96m6%d5nXN@U;oQ!hP9WFrA|-dzh3 zmE0>z%HQ_TZIU9k5`vMsSHCj!?21fCT8CMV2#G)z^$OBKW{qY|AhImFqdp9f>^<t6 zF$DVmK!8B+?$(2OIr5x&bQl3zT(O!&5gDziZ+Ut;16dP(ux?Wd0l?YzxuSN7e(>eg zkshlTfxH4*{97!eRA4uqbR`MO2Fb~zr3{bsgMafL!X)T(%Nd>Mq*V$F)Bb{%o6D3G z#KtN^S7m~<ul3HWM#-P{E-MS64Yp5eceeT2)Qms-F6jdQ6y5o!hvYB8476-svX_(4 z7;BKSVb5K`cQ1C$a0E)&(Pn^Q=n_nA2N3{EW?O4A_@pJOYN`(kpQ4C3o>uOw?WDP? zrm#Rv3%oj|Z>Fb8f<*nn((lZ1LTu4t)W|)GuBKy++Yr3I836xQyQvoeH`adn-)|~r z-(h<fd7METaD1e{yJK_%x%EVSVY)VDvnj#9Z-|-Z)PPZg%Z<<9fT_Cju&W9kekT@Q z2KTO2tzMMSgiL{s2pbAeR+UaK(MhM=q_62p>fg!j?T1{7355o1hrT@oJ#u&?Tt(mI zxy{YFk{pi5mmgE#0Mz2reen>S98XtBv^#Nx96m><m}9)(fbLu0cEE=KazVF06_OAM z*r~vDhPL_|6Kc4oih%G$>9_%g;LzuP^mw#Fv)ffWWEI<u+`c{=Eeddzudh5MME<2+ z5psL@e)~qTr@0%_Ja1)Y-zbu|HKKu5di2E^ck2V-wNc%NUc@=&y=|ZNhl|JWwCB{V zQ>#XN9r4$5P-^-A$f+bp%ytMQPvKOgh4^ySDC;wDA@Mn(c3LbjtAnp50>9{wlw(mr zL)D`hl%r!HnEAx`a0DDc-O$_#^HAxgM$=M+47DOA#>mS1G3kt#)s-A<undqEoA7UE zx1*TRq}oLuAXU^6p-1a&bX<X~a)YUh+5b(Snm!cegVG;3mQGJ!3B_&^|32|L)B9Ne zy5{CgiX)oq=_&8j9;aZ&`9AD9qXheH8JzqM$`YK#RuB}uw>L*_3_Wy^x|U8BXM50A zgUsW2ZQIWAV_`kow5~6zs2&96GW7HtogT!P76K~Wm70DW)~6v6UcYEX>WcU34)~Gj zR#{{>^Ykdo79W6r;~x8)Deblc#OmbZ7hE1=|GLP|@f7Lomwoc_Y}+4-H`*(;P6mPY zX)DQ5XZH#ezeb7&v8vC2S!YK+JqB(jIyH`x`^xAZq5C$ty1zG`hGYEM?U0i1YF;*! zQxWJw7{KQZ3W;>+eIz<#$lgQxh9}x$*+hyqUh<xITcK1}h6P}BGfHh08w)sdN)2o* z(zEgUDU-SKE|aINf5@hVVys>=+I%O-$|zKbO}gyu3s&J*U~tx0g*rko9l7-5R-4aK ztcnw7RmY7_|6cnEoJE971>W2<n7fz&3m+K|3s>N6rs>zJu|bi7tgsLdwHU8v+>Vq} z1E^|CKYR)B?M^K2mU6iVV!?6bLqwEjv5v5ToF>}iEQfEytnrk|`IEebL&k(Hx#4^B zB0n@>+q*D)nOz!1L@T>!1v6Bf@ESd+`R*+mshaxeXd~hq$ol(pmjP4t?+`0J%%@iJ z?$I9WceGZf0RZd_W+qVqt+>TAwf)Y#7;<dBOU^He)WdfCX?W$SUn?U9E(xX=yRack zk&fM>c+U+-U980uU#81@;=dMDHV%oLE}rQ;9V_M?yPyAZ&eBS_cJlU{6v+7q63LJu z9iSF|I`Dom-Ov5QiaN~R_#|hycrBjW+|J=3i{G#mp-SN^Ve1$BiC=?BAF$|V{qR0d z8^=1re~FFqxMr2a7ke4>cb{i99OR<ZiulHm%2@$nn<dMiH$J1pB{Mj3w=^z9_4dP| zW7n3<lzd4Y_mAN5ec*6+F7bD-=i?s6iMFmfTA;4tML&;wINVPPRM(E3H|0i)LP+WQ zUI3Djo|8>ZsM?Pl0`TN&5=k$%2;89k^Aw3(;CJl`^r&V|aV&p$=qaVaDn~^8fWmAR z?eh0dEHKx{8RX^KSeLFQkK-1-eVgnotMLX0Ky8A(CDOl{O%3KsUtU&=<F1pe*F=t- z36K{PF!M+)o9VnkK2Qk8h=S0VQ~P=1u;r~nlvUcT*gmZUSO2^%gGh!F&_wh`K#gIJ zQ3vW9>AkJFtZy9SANGUyA!YaPgu~&bw{^CRvGGhp!B#MJ2_JI9e>J+$0qrp+s8-n( zc!R+V<$5#e*&&>JJ4vN&U|zZDKqs_KwdAqdnvQ2S*65ly#<5sHKZJ9vPQ~<>kDfxF zn*yF`mKA3wlCph!L_@eli-UVK>=zfP64md7Kp0YHE?l^Y8tB8(!GhC#6Ith%qj~58 z4291W2J~jBUEw&H?}MtrfjJ$*aNT$(-qFjZZSpE1FDyt~d&zZ%>0UPZ3}asF5DbxA z075UZy~0O{XCviaNI@|p{(`{vZ<{u!G`ydM$x?l}ikv8>{{0b)B4@c)hu@8gu33|k z$l&t1Ao!74pTSho!bxxg65K~P@VDz%?<^LLGONt0YiZAg9Sw$1kXaN`@SPPbj+|gD zFZx$dmMMwZFSg8vk_wiHxtZDf)V*|a_a-nutYQ!F_)UwDm;pDZEcL^bgkK`yeAdY; zo+T>g@0bX<`vJn{9&1{Q4z+{1t_*pR9{f(u0Td4*u&k%`0e_vx9p)IcS)qX7);2h> z7L5>be?pK(`PWnbac{*M5hQp@Jzj&Id3z`mW{FaBvCRQ_Llw4rDc1wPK+^$|6HP$s zePfRSo`ssfi8<IUjEU@+?!Z982+%+9T$!-)b@i6X2jpi#vp}<~p*HEKR(;wpR^`CQ z^CPL1g2cIRZ~S2Kn^i5qq5r}Iez~C1>PKQR1dbN+_261f`LGGlZ~vjXCxfNmT?%&~ zr?OL;7jxNpYSL-wJh#O(9_*Fw`0si(mZmAwr$F=?)!5GvWmNi~I-NXzptub{(b-!- zI0s|wfxGAy&m-fjwF^O;vxxVp8_AbzU+NnDThO<nr_?c(4d)dem_)7o1g&&A^=1<- z`-JX&pqtl|N`lN9@7zZUx(}RPE7tWx159znHc{TYgxFt#bBOp6W(j@bc9V_9{|7BV z(!Wq5zdQJ?|K|*?ylZHDyhYTlHGTw#qXNW2-39MPiGecUnTzTXk}U^U+Xv=^`2kS% z5;1$-!W=j<2nNcZ=O5c97`DpM-HX!{(N6M~t7qVO9-1O6LbbGnh`j#fX85L(zQ+y6 zD(w}F@cT*Yn_BL*OTh>ie?stl;sg)5q&$($+UX_5HMpEP=n6_uW;;IKcZgH#@a1)k z1zgr1AlK)$J({fCX$$Z2vruRzS~u(}bkdIP`O|8i6KJ!JO&Q?y&>t}jfBvuo0#2XO zN|6V^WT_Ya?>gQd0!w1264>h^T;puz06P%$@RJd@sYL}DSobm|F;{&*zP25y)BCyn z6Y?o#Tyc8o%|HDBEg(Dx$cBf7McwiTUzYsRC=RDK63Pu%xp5eF5OxlqDcBwh6JDC5 z^>62^;YoWTNyyu0lLBN{+1(HCznaPfw>P?i-DQ%6T;;QdXQvV*N`L{R#7DF)DPTEJ z!e^GlC1@Y9A|?4U!uRaA|3+iXzCkDRetNe?oXB04?W`P|O2`nkTe1mr&kh11yI!Wv z5rp<{B5f@<vS-GYp=Qm9(9E5qY?)BL@A8AS6^|dBYDd{ykO&a#bVh7v%Mw3}Yyq(? zC$HXP`!Gra@q3%Ko#)%eXqvc_QCu=jzVuU`D=Hr)^8VVUS=^{=#$k3L5N|_AE{nuE z$VEPGUA~>D`ULq5HLg*mz-URikXjbDmPQB8F0p#XOC?h2Xb|Ln!&b@IU?ZLGUMv>@ zlY|EJ(a!F<J3aFSbm&WT$X1o1b2L?qbeYsH5_J9%OxddU&LOO9(@2G)J@*-fVH1r8 zFqDqBrG@N)7A(i*WlPIN^vL6*y(gV$&DoSVbhjM9u_om}10S6z0wAy__%v<oHB1l2 z{&X1j4t8RtUn=)@xMNz16Qwx|qa{~O$7F%+@1BSYBU!hyQm!rH;TE8^g1r>KV;-qC zz7SJ_N+2`qKMw>?y-}Sn7Cp2EK_PdMK+q06W(PQ{RLKz32#BlAVlQL;p0~B)$7JN* zYpD7o@Mf&o60?qDdUYj@-GfC$WP;|JZU?P5(7PtY@aH>Ni8>)+BMA|AG1vUR8f0G0 z!i0-56~7ChPpnce%8y-7(<_Zr+4=F8Mab*Bnr>hTydWM}f8nQX|A6f4@>Ivdm^D#k zSI#Nr&^Lj+-Tn15ED-^inyo$F;=TO*{J9i;a^*b)ao8nVQHiEHM%ud+GbOQrM$MTG zC6v;lf>*KYy%xsSA1pu1bUHxeBA8D&0Y_n`8s-9%hb3o5sqmDRd8m=*Xh|kpjC}QA z;mLuXt7&(STwZnAxt0j}cbq+ebBaQ}R4c`mk>Z&Ay->2FB$}{^Z}#pK=63)LX@U~6 z(Z*si^n>;H0ytxaeDv&GHx31WT|4P>rx`t}vyh<nOn$Kmi5KigxX&aOZ5zQHT`JB9 z*A97?f8nq!8pn7R<pj{se)3np_+omxi*G)!NsiG|H*41~1?~5e1rNQQcd4Rc9iRWD z*M+=dAO-Hq<6nWbF4{&AOr-0dfqv5Mp%O&zYh@HrUi{UXOMz!jSsiMya#(Xt*E%8J zir5h3;o7y+GCY-=TRUb9QtuZu@2iXnyj$GQ)Elc2qDh8Dn%wRU^Cz@;aoID1s(8}I zhiVWrieuW>&rJoQXwanDPZ>vf`^P9)m{m8`=!c1l$E<~I`5j_id{5!i+P;l5!LV4i z?}2Tff(Vt95ZG@BuY%SG><U&G@O`c|FtVG99!O^qm+yQPom!<Tenw96mtLCsC*q?M z8O+djnrEcz{=MKiu^!fFKtbeeadwhFtSjd|H(~Rue?J5v6;E4N14NAO=@>M)%J(o= z)Fn?&&?&hYHhQ>!b501KVlt|d19KFwY`!KG6xO5W`a=xxVh6#=2w3PX&a=b@T<*6~ zdbv#+cm4%3ICYwub-ZkBd+6cy@s)}TU=^;=<W$G}2E(bwrVO`Sh^>6NT!W>-ZWFP~ z5jQkNUT0IsNlsNJ_8KBlV>Dde#x!<PO=c|c{SDJXYWQOsbN!bH`gu>kd??%jAmva= zfH8CGH!J&|<Xp0BI}@sHbn;!b7ozEBE(h6b0=@A#HqMM4)?_=Zkr22_R++SgE;0^@ zddB&~&i5-u=I<O<;}K>Gw5hO}*VvQ9WP*V}RJSmjdd)S>37T=K#P(yKTN_7N{{-)R z3SfaGT^hFB0N%U#Gy#^!l=A%Eq`EH&_pf5V=vjb<XKayl*Ww8(lB&#u@H4p$(id)1 za8~2Uxi!d{jqa7nrgMW~eD_??GPcTA71`cHp*;`Ez!g!E`0PRI64OqgrrnRILENHw zQ98!oEkBY%$Y~E2)Y#_p5b$J{K8crKM?Cgi^5#1Z8^9$^nCcw)cI^E~ro6YW<;kp& zRWnHAKkc^HZ5%5z*VCy(wL)Api*#=;290F2-;6nsZg^u?9o`cbnb%?9KTFg`M;KsP z@N?pdi$RN7o&hNWf=cGKN|L(|O#<o_t}$2awY#qZCcCA8os){$&%n7H3*jGK^?}JH zWbGwVn;tWi(iy_7m0$LKZ<eUW=W3bMNNqzrw)X$`ej`#k1c<-&m%)(XC|Drx&5IyH zs1^trU)eZk;5(m(AgyD7HW<&D*As!((cOn_>))$~fNw2`4}bN^l)EFuxJhkuHJjnZ z#KAWgZx^+1FI#67u~30AUX>z~_E&%DRJ}?xYa>N%mxjy`7Qmb(sa601WA={Fg`hbB zw6_5Wl4MaiV93A3?QZUuA%`{OU|YK-91TTGhEjVTF*HG35Etz3<HhU&NUwgfl(*$f za<as3)Ftt;YbcqJerWoK$Nm)(hNPU(Z9HsM1vmp4&onaZMR%m+3V8<AJqFc%ECRu! zM7XzuYJ1S4*=~*HUzDX@s>~04@-RM1KL9gh7Z|dNE15c6B5Wy@HGryyLHRUj8bg!X z-G)(Eb@!d9mX&K8GfVx+AqD`cO#opoi<n@MNNe*Ra;>yVdRu?5#3!W^Ftz&&HNHtL zi6{f(z?}!1-lrcn2lr@7yzu&!H_K~2QuR`zQHz!rZO|<u??tylhuxxzrt%a@M|suk z@L^!zyvj#P*{J-FhPN(kn~jSPF1q85nzGVkC|qVc6C9}Rg486-z(F%5TW_b^VmT}^ zA5;;~9&+vtdb+3rlB&aUAD_`{f%_gZt#SeO8*M&|pdd>I_POTQBvY$*!=>uaNkY+J z%ldL>%Tt8C*}FW`PRop(b+-A=@`#<k3P$p}#6xhMWLS<>1_%22X_VloUm5GGL`}xB zD!BF(wrHj7r)!0d)SbXWwUn2t^iF}*Tes0MS5{D(W2?t@ji1=_2-DbW<(VccYYz0t z^K!I4H_9Z~9KkO7yujNd=$)>)Xu&Ur!JvZUV~77sZZEzUw1bD&J~*D*SlVRuK=v~H z*o$;k^`YGSib9t&?N&G-uY%FLDq~n?>a><@<Mx?Up9}4S*UKF(to<e1+9j&jl(vs; zF-Vk66q!S>gI-K&TVPF*9jE+pbu{mtkL;1Ffl-cQ&4rmh{ZN8WmL{^^Yk9@QS9e)) z^9t}(>4q|qey^`uMyEX}e4YvhxCpG@CBxWlIJCs?Vw_efmcA`V<JRcs8grR&RWW!^ zuc5Jg9zTA>^PHaw(yBE_&C$Ls_X3S?`H?Jj^Y|yCA67T+tyEln&ZQFF&OIO@ZLfBA zPOjalV{vPDM-e%zHCc1anBR>^f2)#sv~)QC7h*sWQH}%7qjnkUI7Oj#Qcl;Rt2=1S zUqm&o+#FEq|D?;@Dz<l7I7LIok(TgRfpR`UA1G|CQM-#oT{exEwa@dmrEYH@>~OpW zga!2r$mG4Hr2_B+SeceM>#gt15y`I!P&->ck5qP?aDI(+&k{HJKtDo)H!<C0Ipp-B zED-*r<b+-PE=)wEr<gO;SM?oBGvy-}#zaRLXu1!jbet%O7-z;DX=^*uB3#mDaIL$1 z7kZVn1eb2@f<!@|$$20%BjI?h8cF)mA^s1mB`I(x6Ce5(+FKtcuu_PBJVmANRBgIS z?I2SY6NdK<U``!SYE53RL<1C^Q%2z<&*LN^mJmNCfDrJR+=2|SrzAw65jkXFC0^>h zb1rb6qxWA?E#(c9^F7m4e}QlkMtFuyRRlc-6=W{R*Dx-Ccw<??V%PGKkF+COe&Jwy zT5L6e&R7S#S5eE6g}NAjj@ZI}p#A>S-(z@(NUy(TXcgWD3pTLHy4QYhPArA$AiQ{Y z&4Lf3-s!-&v`i1bF$SAoZf!*=0XSS0d#Vm9F)sxX&W6Sas|7bp?#?lb4(q4t*zd>Q zwLH5&;+3z?zO!AYK-?3IpGPb}Oo0)ci2Y0m8KFoyyR$^`nSLksLiFY+K~LHlu>r^< zkyvy_@oJ~r3B)g)bHH5z4(dJqYZU2@jV1^7Mxz{zNWRq&sJ?P&=IbvD=QI@1u2N8a zwJ*3Z4OeuCF7&i;ipUXtH%|tRjF^8yAre>sj$pPQqd2K>Y8KBvAaus!li-8dPL8qO ztdiPCo{=~eJ&*m#5tZV_&sMtvKi=e-p4K7j%gnv*<O`-JKygBmty_nF#sW*hN#%~d zojB~dsWC!qo8~B+f!GI0Mh|$4Ov}e^F_$Z~4wDd=d33pzkmZr?c2Qj4tzS#Z1MM68 z!NsM&TiYV5Z%R+-r8ImxDx(9D>i4VLJr2x$r;YhSN>w0j$kg<d$}GGX@k3)8`8-;k z?+cXISEb%<gIf&F8cDOXYyuzH%j<$SI-XZn*7YBiq{5x@ewugZd*zD}!w}w}2(QTg zdVGgpSrkb8lt}VXkU=3TVG%z^t0ETUgV6*V0#7OZfpA@4OF@ZBe?~$3-2i#t0zT~| zm9%g#Po(4AO8Up{;kE1)3r&j(!cH)<t{uF|tP3loBZy~>s84>Bdx)2euNdev5!T^- z(IV{Y^4Ne6moRgtSzW)aa!SjkkXHj852_~(KZ%wNEWXZaX)!`ml<MJDtI|shpHzHK z32m025{$#Imsl0UMpuDLnm<x_Jlt!nqA`Ky^RdoUk~Q%L#;@*^n*Ml`pkLW$NvQ5i zpqe?}6+LNv{<5`{C$J94HIGauQn4Crm$ouk^iUk$PYt10_c*%pJ%;+U=uvMnR^lKm zdz2m`$Jcji24=BqlqS^*(kl2@#xaUSOzzJkyqphIQ|Tic!3nv60}lmnZ(}83ELq&` zOu!^tJe6g2Dz4!DFmA@6FJ?Mcx7_f9x)fPFi;^(YlOCaJ2374T<fGy%o8K`IAu&o5 z#1*nD9nkSQ>BTN%4f@g~!~)eHXTKa>xRW1X#j65o8E)KtDOHQv)@b~Rdpu7u6iGZz zACNlwS@~3L-Mc};4Ke>3bS41_;LAu<2iM2}F2BedB%>GY9saSBW69IS{*3U?hCp+> zMFRCx9|$P(2U}2rdkVU!P>~bYf6O?qvCR2QRkm`_a_~Ids}X@_i{3sInb%*9u`ZOg zDySn@Bh>*?@Ryt)hO36PY&6)ewziPoc~ldEJJ1Uh=c7P>kAVa#PC<Z{lS5;5-UaY% zWq;5OXzQ0^jq;P%B5atPamWO3^}=eHUupHNI#=CP3CFL_TEgfyXK(?1qbmPFIgs8X z!P&1rm1pI$mq}D5jMzNe@0h4~UoyI)MU=ZjY1llWjA!T7O5I;(BZQ&_aLCgveu{Ag zUHY;R*({|KX5VU+EJ9S402T<hE+>OHI|ZHhgzPGK`G($Xifg-WUWrUHpU+^^Al3Mx z^l`qXZBt=6fhToEEv>H6J8Ct#WP?NyS_1<StHgH+3b{7b6#wwsqisJUnP+a;S(Xb> zWhykr*FJv3gG%THt}{MWW$)}UVk}1lMrQ`9_algeodLH_)jeYXPAato3#Q(aVW&JP z-}v)~RICfpQnDPO^mp3uR!=n$AGkXCgSnjSe?B~T{HGJB(6a%E*}i1}nb9VAh+Y}7 zNU|)Mu|c+-XHlAO4f;ne7sCUe0ncDF{!_}vC$iZA$~o~N>qCllwMMnUp1_kZEj8g$ z$UfAeBB{gUT~k_ks!bX68+JRb-T5#26$Xe{`$v7|1h;aWK)UJYjj4cq{cyd!K8i!+ z3Sydf^3NV_7`+9gW14S~O3($N*$nHO$e|qZ-}SPPPcrIMK#o>5n94a>|05gzi_>P6 zKHVv8_7fX(a8roeZuAr4!T43RK^hkLm$^`$5_35P22C&L>u<d#8OqV}+gAH76n36` zpcg<mo($u6upQF}m%C|fmLxu+KDdpEU<=&C(riLUZi8u}IT&rIN?(sNSMI)%8!-+{ zGfwx$cKmsGjg((tqk=?_O-UG9j_gd1^_1^6ufk#Q;0kSmCz@nS@z>3Lrd+?j|74z1 zpmuLqZMb_bl)(VBH*Y)5|38B~9UH?k0eQVq(Ve{Er4;$-`CFj;<fg?{1;mDhQ*Psm zq4J*<vk8v_Hgor!)~OJ5#kbpouWDoeoid>GYtZ}NI6nz~DP1Ms%*v;oUv=LohL5C% zZ;8oj-)&T_1i`Vdr*N_(nB<^(A=1_cKKu=T=G}Nq4YMZc=4y(m?_4NO<_YJeVmFEW z(%(+#vr||<uE3lFs*Im-;PP=PV_e#DZZ=r;U?!Zrz+H_;W}}mLvKD5_y*Kzxwt-@8 zn<}#KEmH!5JFhQ!?ItYhzTR-=0r2{X0TFN=d4{tZO-`ZeReOnpka<LVo#L;=54)U~ zpL4!h&o2u3JG;)e>#wD}R!R9ZJx%ZIF<twn4`idlsU{p^lBneR?l)54$v<_>QuAs3 z{26A?JDMDQ#H9p3y)E}ocY)Sh+=;Hrq{ZX&10k1>EEn!l?nljl(n*=1<7|T4p(5ca z3onze7WC1LBP7hulntpP=OP!ibZ@2^q%A|!^QLpMB29T6xEs>VI*pW|1G{80rcS#$ zJ8|d6kYkApY0GmRG|Q6Td=~_~64N~1O0WG5<|j3j9`)seee9N+9=QNh%gt$Bc68*z zN4)`wkHOERIQ4o6$jr~aB!OM_*#i563km60ZeJ;Vc7}kKbWM6s!OrPa!SnL~Q{G&y ze!2t9E8UUIcn}q|Z;tFgdfbI#456!LTDec*3bSK&0C^Ay7Q&X<%V`wxz$iM|B>P)6 z8<oXtM@u|Q|B;t#O;)mZlxE62P)cdzGPrM=4|RFu`g;3dU?<oFx!sY?cM4u>5V%Zz zN$=d(Lg=Oz1gT?=ts~}|IrOe-|M&ew`~#94%#_GbHWN9D{Us#m3rssWw1Mg32Pf52 z_n{DP;3bMHs0^EpAZLBEO=Op~h(BJo$ZLLw<2Oq|eTDr^i;5rc`%4J_dibM2E!wL7 zr;UDl#kw&BaEZ>{>YoIGtspmE2W}v&fMj}Pc|$U#naJeM8T)--079SHz?U|`)Q_9V z;6CG$7Q|PwiAJ?qcu|9b2>~Hl8E`3*cjggEhy!#*Me<DG?d*NEekxt)WPK_JF~&E) zs$A%A8E<fwUsW4|tB$$;qT!&*B4E3yEP2HOr&D8VqMrZjQ(tCLtZPuax((;yg$B`* z1nkIKlDgSeTDUmEdnn{0xv^E*KD(fo+7mb0&_@o9C`56*TzM6-lhipxidx-e$~rV% zJ5rw$J&50&0m+(=MGwsSE8F-xb*Fx$p)xhHi5Nop@}g5HoobDs<aKDjX#{Y%Ay!a= zPh$ZTxP*l&ixW%$y0=jKc1h5}N4{ok4OqWn1DDh?q}Vv`)r`F%+Rme<Ns~S?pIT%y zwvm-`Li#qX+|j^m;b-zxS2ihu0tcH6DrKtRM}R3!cqIZm?OVtb`KP_$?h-?GBu<T{ zc`0S18l2*a-sIobb<?Wq6*ky`*wYG;{d$KXe+Ww|x|i-aSKm3zjfx*#`!O9<sBYLj znk4S#SY6AiL|{e4FL@^gF9$7ozepvETX5|(-MSGv9vH<zGMRi@akLta9xrjZ>fgDg z@^lQh8J&k}Xz(3Z8X2pmD;oGr#cMew)z=A-<)q9OfRG=kHL&aPl!GG^w4=_*Izu{z zr`wfaAZ6(GiE4VJemo;w&<u2yUa@6PWO<fd@)O}EnfL=Y?}R^DJ*o#z(=fth@wjwY zF1?~tm`z-v5(e3756xz()<PvBWA?ok7+`-J%{2prO#nfYT-&rh&%^=IjXlJl^Z>fB z#>C=f$8!U;dz&@Hec@3|0@^wAI^!DvJ90~Y&Y|B1N!2nK@OapMb#J5FaIe#Tk56t; zZ8>qEbLG?gORGSFGikB7u=KyXtob5g)#AG-@{rtSNP*my6RijvAhHt({<NpaVoz&) z{P*L*#4*10bh)^l(E_j*_g^jG+oFLvG$uo5>a96**o3dN0u3X(gfsHTJYUKRef9D0 zJI8t?+U6M_7i#^;qs~r^eGSI`Vk3E-L1&K)FC5qo>oVyeiRCBz;9XDhm;aM3iH?Sg z7nTzJISX6WYB9yun#m<ox*M4O<xff^k&A~6Aq#9mtbF7X^9U5o$mx3r0f0YkLA&b0 zR{ZVEuk7n_&~-$uiP%W^BA`7Em;P$oo8}4p*xb^-C<%|&%=3GHtu3xLM8J-*yBjcA z*VpZjv6g<zZ3AtQ<Xa+Q46V`@>5v@zMCZJa65@;)`9ID$#g0yhPK|6uq{~XIl`&n+ zznwBEO^;W;S_iqIPk7~@?qQtlD&0(ds+;USEFR-=fCKfL=F19Nb#CQKP;nICs3d== zmPAP~u5Z*(4eY^O;)SH{7!4cQm%0TxcCTNRyJ*=6p}4pmsry39|I5%O6-asdAV(-j zCeCcEkVk8qpB7k9lc?*;1TFdU3bPS{k}k=bP%l88P}ESnFslTdbEFyDIfuLavZK<8 zC!Gc@ZUu4lXO=%6KrjZQxEknsnr<^r#>(<Kw0Y{%Je%%U7RTyzI0GewiIPDsZ`hk? z#;8favwoUGQiWuowwm)CyJkwAhXDot*_>edNH*#+g%i)mjRu25jQ?;NxIrv`L}_gB z6+9k?=CY?=lu#x4s&!$zvCQj5p-y_2A{oU}4$~$9{v0^iG>XHInLGGdYhB#j?bZOk zk;ux$HGl^-xxypxJXg?%SC>~WN6uIm_$n##aDSl1&aI5GTjW|T0E`jBSD30<)-kGa z{^4>6q1+EM4;v(jjZMpRpe(_?cB0I4?!&PZ@+Jig^hd#ofQp@Bw{+482SSCtDXs)> z11bIlkdH&i0rYm>vj{<jU=2tAC@_W-9{D1Qmo}|mePJm2Hdo$kv=%AYYJl>`0rM96 zi*6C|M9;fBGTQCQz?@~G$ablx^?PQLQfZ6uM1n;^uC+VpSv-3rm$V!E;)uz6V7}&L z4VtT3dnl>ze5b%GgIogauLCINU>5EU{tp*%)^ty$Z@$<U*<)e6J)LGz<k+Qc8@%Yx zVPRHbtGn>WYOf}(1K6}`c5iR;oz;uz<zDLAV<IpK^4r=lX(Dq7ki={$9j!T9@DY5U z*BOK|q(=%tQwh1T$=`&s;;nc7oCYG~Eux*$fhoO|#j#AELXgRE%%cvqv*^DFUwJV% zP;vE3Jbsm07#5l&$|C96_Bedd1`0V>h3GgsCtx8}Fc>N?Qyz`M-GnL^B0z;h!%oyW zV}i1VuyaZ3(MFg!tg%(v%a=v{F<jm{Hm$C)i(G~`h=6?rHj(T+XeU7kL6v_EQ0Ni{ zza-TQyzmejJ6mNRdruFDTi;4RHEAdHm9+H+E6Dg|mohI3`FyTnW=%oPfn)K6Xa=1q zP_?<!u2tD}rHiu?+YeM-{hID7KgmAqnu?i7#q)<ieA>d_`EM3Y@60J7&eto*DSvmg zUo;j5Si{YF;`Zm=LosDkU2|7+2m{$z<|^430riaT_9H07G8I59dR)Bz9=hM^6di*w zsIkYs2b84I*TPIKhc$g6*Y3$eu@T)YA5rG%4#A*Y%YmrO_F}d0Z*ib|UaSG3R|b9R z*6$ZuVvh*z-#Rujdu*OLTat0#O=dP2T?T18lG;U)Pqn4j+$UE*MG+?kP_)kbaIZ*H zHl{re*3q9H>uxCllhZ_mX2rKAuf?2BND9P)zD3yzd&IWY4r8xiT6~tEjpr7xE2SQ) zgL(SwG5Ohh8=bPRtwha?7kCs8)Py#YlU&~k8u1fJt|z$`#pcj}+e0+CMK4%frVcj$ z-X6fHS^<|A5xfuzba@Qe%c+;X0B|MA=9@34(%LqPlfaK0{uWD(txHGD?eyE>5r`Xt zO+;!Vx-W(v&Zai$RLghRIXV&pzsYZXqZS_>Q;cKbE42I;zDj2VsncT;l-w#?e>TNd za!9<6aB2~YAnayS<GPDg++f&eShAL%xOkQyopSr+U5~(1v!1;qaKy=Nx`iX2sHNTC zloKY<0}?h}XT?Y(POvpf16<V(bB@j6jFmX^i}iF=0CiPKHY{)9dss7XXcdENh}!`W zaR+2M1p8BxsarLF1S65GZdbK}RRSwd9!eEE7!4faZkDr{Ra13zI^|*!rCMO%kGaHs z6*Yerj*FDaprRziXN!l>gQE?6<HU5LNRe2;wW6R_$8+SFRpe^W0DKmBBv#X?R8nAs z07d2PY2Hi0hK4NN%ogP_G{a)eiJ9MfrV4kIA3n|f`1!Xe3_+r6%1rYd%{ACljla9L zpSZbc%A^*`8<AaiexJW2tkQY<=ORS>7102NvPkyvTXR*<n{6<h^MXU3X#Ez(fA$F} znRAFp?w*tEga)Jx2LP%UrsGt~yE5;rij)fQzltNj5uUe)()#ImI$CTo|38NdW(N__ z+D?fb#uC-S%sG<6vMGk&G@?_BA0`@f%E{h2$8Zbme~a^seIp0VfYn`tJKI2H`rOU6 z*rPQGfo1XsLq8OjO_0_R!Rgu+XnIT%3Pj?CVB?E#;pE;3bh3Q8LAogOyUMfVd#OF? zVuiiiC3O0z(k0sqZ?Y#7DY&*QEZ1sBdRRBM0v0OJHxtC|ZCNBjuC)m$L~eE|TK`LX zYy!K@xN6gFJq^VmB$H~7%BC#eaBXI&W4)Z0={YHvPB)L8xVFH00pb8?wT{LJ=Z)<^ zid4T&kyiVh-oU)Yy|WW44$W<okDM`%GfE=08n>7G(yxSRS1`so7Pks3YeYp>DZ{HW zW2;#cDsg*~#nQS0SfNSg=s)j!n1Ureu>+|nF<IXapI~6>yvw0CHK8h9CU03;R|M6) zvsNW{F-%?q<HORLliR@U;Fck&@radEJnm87H3j*OtISVp5h$Tb@9fEGLLLRWT9V<< z{EWdyU5pel>Pb*S5!COW4qUrmbefpJ%YT>j{~vJS;Dvhm(oKkzYcii%PqemHb@R}2 zUBhXeJtQrz?0;7Hz}YHd{Vj7P9fP|utjn|R+%&n%lma2*`V-aT{@<{BFxJb4M|ZzH zVY8*$;9+T`NcUc^EUuG`Fn&X3RHh6mv`0BWyy~>CUsE7RqOMh>6i+H^^Pt*C01Uoq zP_6Ls;Ge2;$MtqKh#sZt@}x9G6i1IUD#CYu<zVg0ELXd2wmn<z+Y37<ybj<QU;U6$ z%N@M*rz$ut#}<gf3E%N=P(L$1=qwmfua`{LzJg5znp_gF%nJKeHB@QsYkvgw39CCt zn2B>hFCh*Igf~*=+Qct?(A^a!o@j6?kTA=zN0_EJazQ+GPB;yqD_pU{T+hsB73qZe z<Q$`+9!eTL51y|%C}Tp6+FNpzZkgE)i?I#FVVF&|_jaXW!_vazC$=^fa{Hj8KyjB& zvXd5E5Eb{60C-?<*Ar5#$b+=oO~?Afq8y%Xx8gSbQm;dsjpdyP4aw;nlg__f_*6f$ zx4eG?)Nq!7>g?Zc&{THz#3vy%vw7c)348x}rU|EywZh~ym$?>;>r?+u|9TTMNEQE5 z^b|FNKnfHP<!$vw0WG=6c^0LjnEg?0QcXVoTzbhDLXNiL_Y}cZgJA^J&{+<AnM~x7 z8eN3@R2GLV;aiB~%6P2Q?bsVzn2tcC3dQ&da18hU0i-DuF8l1LlC;@Jvv)K)82OYp z!1Sb>phmSrEDQ|-g@K>sDV;qGjCWIU`k!8^R(Ze-9h*;l922Pylt!&>D7qsOLS%>T zZ~236Y~E{|R@S&t2faEpT9XP)2svfDK)qB?sp9^z&fR`!oE^W+ac=$s5?VMRMYNNW zdZj_Gxcd+m`7o?QC@o-hSjZX!{N@0X5B$RtgtAOfbF<$jPnof^jhL?u-TT_?SY`mU zOSfIQ5rlgie=cY}K>ZQaGQmiGu3Lq%lUGx=eDcAHfWKb{V%JDT?2TW92VHkCNW1+W zq9zA{mXoTSD)=J94Gkl*I2Vz;E?i+4y}Ux%Xgz7dP=uCbNxX`*Nl`hS#0I*NE9rQK z^&DjH6TS;PDIq}ml*<tN4=q`5x>sR{>H1M3^EW(dx3Pq|*jrumDb8=e@Z|nO=N7&A zvUiXjGb*Rw;k{?Vw2k;PN3I@5oh8eUgFnGv`uRNYSiAo*#9HxuN1pfs;H*TJ%;Q0X z?c$lXy!l5ms%bu^@DT#<JbB7FAa`M)jFI4Gd({j2gGXK{l4bLrl+K;>H@N9JVUIGK z>~dQOFO9$axRiJyW-xIYpof%Ku>8&cEs1L3mjTkSvL-e|Iu4GG;`vzD_bg)ZXxvRu zZJQ27Y*=8^zR?lS<XRG&d@!pYsBf@S*aL#twu;k>^@vJ{l;)p{xU3>?zafqtA|D}9 z$Fj5ai-bKj=Q^29u&HD_m~Lo%7T<jWh(_-s8IdmlPn^30yXzyjrOpN32A{*NM5b-{ z=gci<fz(hzk+rhF;z86jViR4iv?2@cQT0FJ_(;n<r$Pz<F*^U>4*_AE-~dfXD@8>B zkEyRV*4E&xYI;5i@+%|UD8-_y><JcmC|j67q240kTMQvQ4Pzn?XY;tAyIFr@0J%=Z zw~o%aupS_e`nj*U9uidF6Ks!9q$z)?@bV5nwHMSAIE8WYF-TiowS!xl{_fid$(U44 z11DK)Rj`SX%udIqel{|5n9p5g8?@oeaEW7^J%owW)##7)e^%&q=e4uVBND(B-_tOH zGfjd?TmSCb-uEtNvr?h9kirSupmBqZZ!#G5g=IX-DcmUEVkLTuc)vcdwmcF)D$=JW z;}$M}G*SM^&zT|GwuDg;FNNZk{Qe;ZqSaYRmtms`OdWGZZh-CKqk?O#Jk+1AFYE@I zh45(6gAp4Bmp6EC)!ntJ9T2!Am{Cb|Pbj9#uuxj$iO?Kt;0E^MWuWHwmbMU7@BMjA z<RM3E3w3V3*TCBqq0hc{;D`4pw@TquC$XL(cW`aI(Ny0|VeMc9u@N9Jf~_MHh>7^a zRRbM!mJ&JK)?7<9qH0Sic<+?xOGWv}sOS3t$P7|%l$=~%j1a%6g2gY~yt`Zm_u6%* zCy6BA+1&2%AVZRP+1yDM_NUw-?;DXJPv5OuD;xFGnX!etO-ViTAe5487%)Fn)kY@r ztC>&IPF(r{gYB8)%$WNAT&*)GHM60@E5x34q}Wy%TlEtL$^cnwi??Y=hmlX5V8zx! zrG<XJFiQ_THUBUMlv~mD3jaCZFjHPpMkI6qkiXlmzf92#&ie5}SU~~Jk3N+pbl=s4 zi!(8zM|wK%L0Isj+v3_Sn@{g<dLz8mw^;7e%^LkB3RSbOvSnmioE-sjp~QCUBsC#S z&rbG10)^%*|8{*6TjX^^^l_eah2KFM+F62>zYn=NgkdFz0YYMbkk`ESrwQmJI^3R{ zGkbEf(N2@$-XCA{O~S<0-ecLBnz)G8ibfHmr)my4PcWrUZJ_cujOF_PD?!5U#njBy zZra%(PCW7$`eP|gDr~31xY?Fv_34ZooSnNgf~V!g)3s5CKCAfI+Q`MahbuX6h1xS) zx(=O<h6Q<(a1wlQn!593moE=7z9vxcg`i^*MO9uCO$#}`FQrk{$9>w}jZ?A+ga2n6 z*uxpgSu`<^?n_)boZ7s7JcXLus*r@4KcApBb766W6LQe*yvd)z*}~}LOPQC)#|nD3 zHmNs_0zSj0@83$y64F$%>ejQ^8{Y>G^_3iZcNJUT#JFqlvI`#rGtS6yGOp9alDNt- zz)%^wODt*g1HP}Oc6gZ$h&9m|Y~))X!Spny3yq>@YSvYqJR-fuiWXdUVdnbLN)-I& z<Myg$7Hg*3hJ*pfP`SYZNN40}0`;a1Z}le?Sl+Q!_Nlw^a4VRi&E^-;>z<v|<I(2& zsowR3_pQ!j`VC#Dd5lMoh)Z&$ly=ssTXH6`&#_-*#$vHH_MS=ec3($06`m2;pyoWm zeH<fGv}}e98x=adKMj!utyC+*!t`k0{Tg3jy&$lLnX>pfBv=Ef@xtn~%)9Dm6z8?N z%IMt59PMt9v)#UFZsHI>88y!y>+OnDT_Nw+fSV+7&cxMJpKMszJk~uoF(T5#on>r1 zG1AZV@!nRT35OJ>px#yt6#;p=Jh3wKIr=M3)H6FGO>UzI7?c0#0D6GjI}snRNYHaJ zl_B$28Pg}a`wIxSM)fug;e_lKIRy@eE(=sd9Kxu9w(gCB<r^9l@|FVv0#2x4TUy*m zVosP6oJz{NP>k?G$~>)zb~i+exT2Xq9XD;5uzE;Oe|w}nY+HC00IiCd(vv)vp@X|$ z*g}8p2f!pOJzdUq4Jpj9>t9*2e4U1B^p%GzAeIWhm-UA3c44~YpInK*c;biTLE?8W zMTP(l`M2QMViUlh{vEDuIl`LYj;-xr%e|+gUv&>;npPrIN#prl2wcEF&4@|@kB|f5 zYqpkJf0Ud5K6nl=q<5nmbod{k07(LA)f;Eb;W#=8!xw?S$%Q+eLi(0Q-<(d!ZD+Q# z`kSR^b4)HU6|6${HY(vk06ix1QsZsPI3E~aT7G_yvPK;T>KVZYh*O0AGN@3Aj5%ZX zr}M0(QfkHD_b(NB+`=Wy&~>M<Nb>8}tiROn)cLw5PSutc^UG%JKXwpi1=?$fcHNbb z)NZ)7Um!@l$Th;>+?G_H>yHr#neHclUEC(!Zo{<aMqHp}8A9U%>Ev4%>mzl*zRH7~ zl|oo+1|}<_ko%s0A?mMzFvSZ65!Km6%q=3rs)uxwKWqMco$7p$n3?K@P~G<(hV%~@ zX2)8O>+p2@Uh!~#54r%`F74;(wQ9f64M!LWU{{Gu(`)x(ASfhBA-A(L2LVJ#W$lYu z+F<k87Apr}YiK>l&xpZnN`g)vlBRRxHaMO-&;hnsWCpfr8A;|nYLQKd^C<Sq!qP5# z{!c?w2^&;D*|7h)gB`IC%}<v>2v-TY6rhhbg0Vinrp~=;`Q`VjnU-JmDr#LOzckaR z431sVTM7k?Ki0<b0VM&)b2Asy>X4sWi7#!n+G$Va9r|WpBvD|vIrP;voBt3Tk_vjO zq~F?tp;c*@i5hl}Z1GD%qq=P13P)N*z?4Cx2BV(fHO2Bb!w^kR^a@TxieWsa-3oZQ zN1f9<m@cE)pF*=&z|Wuoh{VCUtP_H`7#QExmz3^}@2zoYtN;Iu9V1*;D+(^2I}Q1E z=7;}fdGKevUwgop?52O`9w}b~^;dI*9T#97sL)g4(jJ>>Bf29#GWntG`^);90`3y^ z)EXy)gn)E`l_S5A+rm}4`qJqdpms0RElFy?6EBryKLN&<)0>sW74f5LmGUbQR*f;} ze-tAct5sXhVw7dU_fu#Q;eUBpdIV~^E7fJS$H|k0jke)$Y@t6(d)YG3<tD@IbqmG? zr~ff~cY$3F)CMX9su8DK8*z>I_-)2+7yvni@eAGTvl1X95}p`h{s5%-%WkA?II=jj zV@VUIOA9H=V|NYRZj?yk#tm#2HI+7|T_@nfaxJcXkVJr2mT7R+_FQ+22Oo#|fnQDG zX5`o@R<L1ULzYF*DjEzX8pzu2tz+$j$E4$aHGSgZib$c0Ff!DzKFgiH4`9nNl@U6z z=;b>d-a%CX%Z_^1sRn!}5!mo7@M2W6z(8)~!kVpYJ+$yhK$kXdGlZXXyexXDsvFG7 z`{u1FT%tvDQ=QBO{gyZl9pL_5h{*9!jlb%)@VS)E@Ee11tjR|<%ue{#c-L|WU!F+M zns%eD?zvsW87-rbxe@Y_!XSmezbU8&D|<93dA3!f=t(&bsKgNPitg0Ee&W4q67|<; z1OvOj9+?AXYyIf+9z#-3Y$TKx<8aFIpMZU)FyrSXJ&>{D8X9Iu70yHF$XVM?)&}D$ zjagkMv9L}W5;F1uv{;4zIfL-R<wzn?_}yfUJi;2X-nAIIEge=5I2MrS$kJq_``$J? z?D<mZYPe4=OPYu+u;`*&B?knrrq<#EA77{4$fOd^j%i336M85o8{NvbHP8A+>)eD) z%&v%BPx7`KMT{-o86ad3v*7h;$6Hj(P~&&JPOoYij0YQ@egHUa16PhAqtRMUQT*i` zO@NpKc#S|}sm85ovVyYY%z=C1EDg!lUfS^=xhZ*3IBjzTf~&Yegj4Br>|&E?&K_YB z+0MUT>8^*A!S^+0B-N^7jKb69IKLA-<Gr}cNQGh4IXZUDQmq_?&$k}cjwz-Z1AmAJ zy~j&0?#=CW=DhFHn$khVb(*Y@XZ?+lij1jAe(Xbh5f&8z4n75Uho=G87nm<B<`8W% z(nC5%r&jAoc3v;b4-t?IhlK}1<=i-YaM^YB`_Fu0TM=uxOa(l3*F%2Xb^p}1BqF6t z__fyVZGI5V^kHe$X+U__+Uxp1?5zt|NHCE7kV7TVDHSAYN2bPY-}La7SAuXI_V-ej z-ADOP{C->;$6d6&Z*2?wvK2&r<{vi&)$LH<tPVnF^+O+E8%An>lV}`WjAxxVhuj|b z5o>TiIo=0Er2Q*)(+Qb!Jb#J${5+#~3A^Zq`|W&l*jejqJQ{ba|A#d-Psc;#OB44m zuJ}`b7bNb0gvqKFqJ^4VV|uECp(tX)Sh7i6vxR*)ti0WflY1R2nO1F}kl)(wErC7d zQI<zj24<GPke;kBad&|M$+5|Xf-HfS+w{};-e}kAhI?&B8jG=7jCH9<$cpLz8Q?r4 z)tMcz`dy;>H0s#u@yN}I73x*1qNji2sDWT~azVTG*c(}Gox{;IP7S1$j><UvNN1zP zz)@=?X>eMv0;@7lc<pV*jNY}G93#XFI42r){X{sqtWteA3s1{yGs2>|Z}m?wLs|*- z)tc}vU09W*JzLtB#xgyZuTWl14s_iC_UJjf$)Z5o40{^=w?F5!1k>2?0NCPcvT@{5 z{SA*bm&Fc;g)py9evR2)@qupM=#L|RhxDQUip0@P>iS08qVYTEbLC%j-DvIVJZjR+ z(V6Ck|J%eWcgZqjyZ`TmZyj7vqk|H;^5&EM=m^+FSnYDZ97g;y3c=LP)yI<zq89n@ z7sr^u;~qv(7fe~ZwA(2mxEq!rB?f{S%Tj&~5iZOX$i;kO>{Eg{RU%6ou5)%62hy!V z?)8xs_=RGThbAk5uTE>z{PA*gPWUkzV!bbD=9@joszB-zLNhs_vRkw{jh`>~jL=0X zZTIPpY!ZhLKJNK2zHRxTWb5z9pPjZ~tNEQTx<A^WdGGbbGBqVS8)LK!-uRY*))tqs z8%hAoEs}J0ui*3RpGD0HcM4uy2YM;Vi<&~3IyfWi^-%|EY4*?VDe)y!R%A}JxZ2m7 zYKox9H`%%f^%o1<VN#H_0xR#^Fo3^rsvzPFtH4W}x2=c8g_jd{K2iAYG*P}kB!VT@ zSQwNQ*&`opABb$zGEb$5ETsj*Xdy8-quw{@5>|I1_Gdl|L-dOvHwGE5<Zfw5E2rlw z){MaY@+h5?yN0?OLsowJ|Fgo<`dTCg&?zY14fi^Rl0;}Ll07##-YwvSIq^y=ggV>t z;Y)6YHIa#v%`>>LNOrh2!T@a-f|06XYZYkQ{sFg{7Q<79n^qxNy@!n&L)lY`0&p2y zl46;%2YRx2wp$RS^HPE5rkKGoA>}tt*C^dio+x@?5v5vorf7@I`S83TYy5*!-K+md z%tO{Lr(Oy*jLkAXm0b><!%(x^to0%+jUmy4NvYu?{_iyc&j~^-n|FOowKf8=6_l5` zgUtTy7w!ji-Nedk4C+i7P`SKt4~YVt$=?XHz-Qgodi1A*uyFnTkpa|ekf9t|Owdv= zq*xd|u0&@1AXzA<PoSu)J}ebJJFULWe5_0|dCR><)^;nL|30FI$Kqrs+A$^UdY(X^ zHVQGZQRQko-ZR$sS-m~VqW1C3ZILzzjS6k-X4TK|{ST<_cnWF_{{wv6qo+4RnQTx@ zV*nQf+FQgT&0w8`XP^v>>W@C<x`o{}$6^0_m@q&{Z*^pi-7{+}#F&&+4h`4`;&W64 zh}KBPk6~Z&wxd8gsPL=Z$y#y2to1u{kx0&FbSQ3{s5GtGKPFlg$1Z5=>kP51R(}H} z4Kw;A-HD_b)tNb;(9`a_7CJHT1}3Dw{|Lr46)|2*^_;Y*+;*?38Rh>_ZX`<2pM}72 zq3>Rxahf1FDu)vb@~^cM;EjDSN+w3MT*p9EBL??E6C)!_fXDQOiN3q#kf(onM8JqM z`cb%Yip<CV^Jw5{=5ga28k^U(P0VPBd9MxSpaTD!jN!7^S3f(XlMZaHQ?vU;0HnXK zC;)0g3-RXxx<_if;caTEGFxnpoI#VxrMwkbl)HKb$p1g=4O@Gh)8(DY!W-5VzERO8 zi{@x`kZ>sas=>7l+8=7dGgD(vj&PS)OwENdqiJaJtOWSjj)a{1wP}}4*kLtw)uYd2 z77A|-PAqSF84qi0-6*Tnds;#S2eILe8p$JYC|k1fs}y=WtAgn`D3V)PgdJ~k%O6d` z6$>mUp(Hb~7OKo)XWH0ARnd9dam-S0Vqxs95W^7_;Co29w{jwKK-1V<<d$VXMFwZW z?aw2^ET1nw7aZR+)Z~}Xla`0S$CKYTb$(q6$IA=0Z5D{Irstquzf=_n9h@UNi(k?g z(@nRrlX}89;?%A1AtRN*0EOLEBVx*r0{`$fod60k1$kP7_>3!O(FVr1l*IEMD88h6 z!jbFBRMR$WC@$_D<78d`=Gh1DZEl-`7WRnMv$7!`6;3OanH`?VT@EFsMuZRBp$aCy z$b<75%(hY8!3;>b-(ZNFA+zI}k2sLN113De>D;J-H!|M@`v#PWkWCrLBHCeJ)huxt zm<9N}$-^4}6X$%ksVWLBOzh44K=(vSk=~XXIm7=Rv&s~si6v11;qnoiE*M(GltOr2 zKC>?>qVTSpCaKWPyhACp|A(Yxzd5*iQGFF8+#>D~N@<d!nKYvg7y6i7oo}-ZLSbm& zaBjZu8%NOnMhu|b<}SD`Z?qGjD2E@GdeS3<1;KEcv_r14W~X+t0V?@JU05*0Qb-f? zJ_IU&{RJKQ+PPYd3&sxr_2ZZ~hYLY`h;zU5N%0#-QZ8V%q|2=<(7tLT5Sd=UsoV;p zG9Q{PK8d6)(enz}sxubYso#@>r>|5WlPOO~S&}E6fOdq<0L?Fg&?(6eV;6d`xuj}0 zj9#Ow^=#t#`6Ap+W=4jIf{f_+T(DR5Wxh3g?K}ofBJT%lL8S%`8v*W*6fWz4YL5-2 z+BIN11*f$_t0}#m0+g!U7U%2HF(6smcc2y=3jB9G=ALyhTtx_&#?=k<xTNWffbgY9 zXn)JQfF$AV1C6Ds;xnSU3nr>Rdx!l2May4&<^cm2%uTog>_e);#}QL97Q$i&Rag^m zeVyo6_^ZUG;zqeTZ4@>HZ9sq>27wx6gxFjQy7VXaWql=gQruE1NFXqLO}N#A&C^u3 zuoj<`6OAkWY(_{wbUuL`1G^TILnl=Ae59ZkPDrCHVKLn48%ih8mIhPX>49*-<!R_> zTdZD#6sawQc|Nyv?+$oF&gOM31MZca7?$_doN!k)0TJ3<ck3b^w5019O2(R?k~X8n zGp1`k4d45_F}$ty$KGJMy1zuOJ2w;Faa`O!?_ve>9SBXL_a2J(-nHGqR@7eCd@n|^ zt<R0@0BTnUJY|~kS9E|$b&&)Z7}j9){@#QL7>No)eAmeb=G3Ki;_DZ;I@?~Wz1O`K z93(WA79xIAH&Zqr|3oUu#9ABF;kTlck>s!yklY*zcMd?$%@dltLFWfr$=?_k0gcp1 zc^a!zoUd7o>Ree4uFV$5UmR_2u)Ta4L3ki(yG2vmFJY!Jt}y)&hQ+WV@IA$+Kq%=n zAp~Rpkb#L{iVxY<`<_QdXu|3neurf8y4{Xu^2_NBG1rYno>K6S&vRo4|BwOBECZ|= zvuw-Mvee{rx|q*biY_Cs#x6UrJ?RLpGLOqJ%AJ5*1P}>~D~mp5YZxnd;w#qr57W{U zuB(NpQUDs&MwU!OsiA}2u35TXOx}ykARu=d2tG@ZaHh7vTTSx@hDG)r#Xij5T??uf zJSnN2YiSi-fz3be-sI9BgGAXP3K6JdEFH3N2mCy2|322;b<E!Yw_}BHv!S-O{6wc2 z=#;81Pr3y8Ba&~ew=7d!mMG>0VMlO7Au~-#cQ{m}2d6ls?38^Ay1sR){xMS4g<*T} zOpzb`!N)259V$_l^Aq0_%pmG>CMq%o=8!CR^a@G!832ESBdfQD$s*%*n1oG$2WVNC z%DbKKC2jmDQ(FLz39Zz*ft56z+{pcYx#%Z|$_d9#Mh?zyjoh6ua|L%f?K){$m1IbI z&6YPc{NyT&)2#G*Mz$?q9#M;g^2TS*#@v0bQJ57$s?f`C54bk7Y0~2;%!U7>lQPk3 zBg}x;<=8v|iYq^mQ{iTq2ivl;FBfZn^6fI5jfQ5t?d$3e{q;oPOKRT9#-OVO3?ipG zBAYNU#SErnxn=M`<(%3Wc|Mf--*$I-K%1vTitPK+?v1mRm%+9ueoYMl9tKvFo?@G% z&$=lFO}A~8Z%c~UL0!UZE&p$&{-|d<EbNV0KTgI@hhbB%((S)#BClv;&c7J7=E@8j zodf2fK1OrwmNZ&MfH|^8usw=|)wPJ9xt!*>W0iZ}O9~^@KSNQ?#I7B*>4}&!Kyhd> zYO;O}-4^(f*nDRk@Gm3_y`>p8L&5!J<Y-qN&!-Q>_J20<8|gwexxbAfv16M==lRPY zkT|oDVaKQFaw6`y#j$iMqtHzsRu@A#kpaks!j}$;;8>4PQEv+a5&>g@B)KHq%Sw`J z8?tE_ulg#_3WpRTp|r=gIW-F7f+0_zC;WT5C@Q>2@!8M1$gyL&_{RzJID3kITS(8n zWv+UKs8ul9P(j3OfFBid5M^?4BFed*@j(@}LQ4omonyk;-gs&3XM(5eBmL$!A<>sg zEjqI1YwZub+oRy-sn~s_vm6F~w$Z=umhZ$u@5y}KXe|^;y+B%@>Os?URr+`}P+5f~ z>3P$6-ZE7?HF*uNc+d^xPre$&_Aa~DM6+Mq163ero%o#OGC^d5rfkA9)r#mAqgYr= zgd*pNQI;M`v3?LLEcGRlUB{j+tT2wDUquNtEo?iQCv#yMRCHc>Ri+7K=c@tCd?&m3 zf@Pb@f!M*9sV8f4LlztrCEi}n>jQU2)G)uLY(SO?-I<zV1R4}q)pPyf$2zjs`yDAy zXbPS`vWUHlXdr9vx(%+t0s*1%p(ch@Jn~V)uNsd5?4Nl_>ys>??Y|LzFUX}+2uM(C zf6kfq!NyC%;gQ!Ok09`vy!=ij_N=hS+UbL}>OPfx_2{y3f0$ASLrg@9rNU8{IvuD1 z5((}0SnB_9Qs%&6NsKarf08ZJ6RP-~at5~5AbqKxlU>G4Dnii5zi1Ge<>!}S8o}0< zw;X^tpQbRa?)_FZ>gNF=iFmJevNY0WRwm=02!^Q)=-?7SLf=>`#%ZaQcpOJCB}?QP zPi~S?aKy$Y)w568OYBaIn@v<;#%^6M#D#MFYDZ|2HM4<sYlt|;QF2NRmaJ2pLUqiX zbYR3WQx=vFu=i>KNK?5|OuA2cgnDXZowr_QQ6Jb;DZ<ZlZ&d_=rg@U}er+c=p&o8< zS-$nMzmfGCk#(Yp83-R+Eskcx4!{6@U&%eNbR6f)Fmm4-1<*X|yuVW>1!95AJoors z1DD`63Y%rF6d<OC>s}D%iqZRqe@>Oi7y`$8(R{S?HIv3-(L+%_S>D%QZoC@vA3{4r z&jkQ{(^Ag@|4;|pa~pjXmX=CaIx`PfXnS}&s|@Y`V7=JiuVGO$@`>z&8nEzU*Dv4J z=_>l{D-)w{Fo*VSMhePYpfGwm{W~MJiF^FdPn%iYSyD01Z=r40PWP>ASdlYhXPUe2 zcWYeETTE^+03v*E#R^60Ju}NrIgN(&Fnf*0LEQkCGDN02N^Zz-n{T52rm|SvX~_0w zE1~d;<3&SiYdKSQ+SBHQ(dVMVDR<#r4w@U_EXPUZ%RA860OLdd7u@=zpYEP{4;v2e zIwHONM6m^c2o)C?6(``L4#&|brxFE#&1=Z$c`E6f&GihZ#Nh}}hGYSrGnxxlff#*B zWPyBw%a7Kf*mBbCp`TQd!iW`!+!ysh->Zx5UKDQ@)wft_W@#}`kn!X6yx|zPg~@ln zRtDjD8ho{t3ii_mxnfQ$Ofqih=?~Hleil27!prQZCH%rhSLpR&`*;L5*I>8EHd>?h zg&H~w5;EG(aFQlX!=B3?SQ9sVz<}Q-fJ5!qC%qekQr*a%T(?_!bE8J`#~$f{L-g#E zq5J?eO4xwNN`O5mq|a4DWyD{G%nt-+kEB^0v#QUISX{mMkJ$7r3H#86I$n^Sb;G%Z z<>wqG68&Nl?1epb9X(|_?b^&oeuIt-)yL)<uqe!a-71~%QQY^gCmu+$H{D|xXf{qf z&HUM_sD{4d6y9!gfUo4mOo$<J91)3<h*>vYA<g1QI3mA`4xTo<OX6Cyo3OG`6n9%i zrgVZA(41jbXYcXLCfR?)c9@QKLC`S4XcjKf_uzF`ffUu7$wZ`m3kTu!)y%x%OF+mZ z4o7{7p@!YhQ>vN;g7-nT+QX^<Y60xi%v6k%ux_{IEogcXpcv`BiSQ_|%6D{3TAv6p zU6RV#Jwi4ZpjhfJXUyE(uJ87wTpxV322SI6SGE+!`Ay5aqIhWvGAd=o4^kgTR7)xn zNwq3lecE_3eiH?MMafN_u^9~$YgoxwjbGq1{g7=TubUUoATfv%)?Ugg(>fU;2SYaH zNZ0;L3uqk}XYUG8fgqXYhUHep3M$(rd<<ZWjeFT@#&Q_b$!sm>&-)L?quIUK4MZz2 zql9ZVfdIap*G4rXU$UmS%Vsi#<dJpQIkW)oktJ16-v3?uNbyk5cz!Gb0WsV^+nZ1q z+1HuF-{SzS$&;UUWIZ9~=dZjZXs{q32ku^4rxRc$mljCz=nGi_aqHxfUH+}tK1KQJ zL##+{Ff4IZ&sisvBGXP%GQ+A0kYu_M5B-J3Grkd++_&k;cTu}mG9A}L(s>{zI#;NR z32uWN_T%@bQM#{l`S`A!a&8aBRWX1?Xb|*?xYB11&-T6#;=O}3bRM||Nz0EptEi%r zO5j+13D_I3W@iC8Z$GTyKu=p4G4S=kYEfczB~g6c(h=MtUmm{akJ9+OsAPj(A1+r5 z)V^oqmrlp}$HSBtb3~yjBo1QhC>V3Pl0rR&O-pm7*oOd-X5yR}dnS<W)be82Hb7M_ zq)rbydnz(e#<~^@F*t+g27y;6PREzQcso82m<%K2rG`x9&PBqP_w%fs2MHP_87YC^ zYi&eZFIHur0KaB<6jcU%G{(O0w+)JzU3>iL!2fxVJzj=b;9$8^b(PwAvEA+82Sv$= z(C}ac;%Fjy?VN+uvY*Aa^2x_@dN-OkM@pW;vT8bgQ1PGlLhwzY`D9H*^P)8UgyW`V zKvVn~)!Sp_^FaI;V<4|(<Viij#RqZ2R!%SuqFJN#!xVQT9TEdO2Y96*Y8W(7A4mol z1WM3)eCOJKBoFxq?xCmI%LbdofRF41$T<i*`NxQvyNB!4e;D_Id4s-{*{;pBrg}yk z0000GX)ibA+b_cbdX1CM&dNb=5a57xp$P5sahk4J?(WV^$+a}nXbXo2R$Ro@`{XVT zY2cEX9oal$;SjlaZwb<fq6GCYm=wd29AUrV=tKoPZ5W#Rre#C60o?v-Rh3xaE+Fk< z;UQ_s>ZCcDsMAg4n2P=%oTaGb4quWaHz(JyU*2@fT1d<KM1$rm|4&?ZTu0&%#V4f} zs=X{ZNLm)b1mPYM0KacJcocAieTzYf`<Z$|dWt6%gT}gtG8QlFFU92vHb-iy&cBye zCamh8OSrL;^l~}GeIg{%jlR=aa)9XFJsr8%*UO+E%E6u%nZSEAr{rBqT@{S5Wdp1s zcz_I8_RPN{5p6=vpkd#2P8Cqw+=5W?e-qDni0*_Mamk}jds3iMR&A{SbSX0l8BoRJ zYu?FO7uFON0LBTD1GO_0$3ArT8EN&Jh&<&y%8NxHY%X4fo(2;YnVK?rAJ@o(-)9e( z(NbhI2fwQ2??S7agxANs_fvBX4oFy)jfa?Vx>dJQk10lU#DPj}dsGYzYlF9VO>?2u zl?*0G@h(AzQM(c9(d(seM==sybIDO`(q|v#rK=w@kds&m5OLqPS0NtO*<?Uk^2{Ga zTjx8%Mp$0Uc%IHRAOV<K@;}Tm9ECr!8Z05&G@ms(PMDihpGf*ubGJNh{RVHry^67l z>OxVDj&H)UuH0{nI9X+m@#VX9bq1cSzl1GW0k27~(fL0aIjVK0(JwL-CGm~E%B=kz pbySlhJ0WkPs%^ze+5OHof)saI=4>l;{5`;zilT*;<eWD}YEU$v|0Mtb literal 0 HcmV?d00001 diff --git a/static/images/docs/databases/documentsdb-import-export.avif b/static/images/docs/databases/documentsdb-import-export.avif new file mode 100644 index 0000000000000000000000000000000000000000..9bdce2ba3bb7ea964fca78b1b16994b4961b561f GIT binary patch literal 33739 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 literal 0 HcmV?d00001 From faff2981ee64afa80baf482af45820de08eae9c3 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 1 Jul 2026 19:19:53 +0530 Subject: [PATCH 06/38] Address review feedback on DocumentsDB docs --- .../products/databases/documentsdb/backups/+page.markdoc | 7 +++---- .../databases/documentsdb/bulk-operations/+page.markdoc | 2 +- .../products/databases/documentsdb/order/+page.markdoc | 4 ++-- .../databases/documentsdb/pagination/+page.markdoc | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc b/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc index a5930313c7..629bab646c 100644 --- a/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc +++ b/src/routes/docs/products/databases/documentsdb/backups/+page.markdoc @@ -1,13 +1,12 @@ --- layout: article title: Backups -description: Learn how to back up and restore your DocumentsDB databases on Appwrite Cloud, ensuring data security and seamless recovery. +description: Learn how to back up and restore your DocumentsDB databases, ensuring data security and seamless recovery. --- -Appwrite Backups enable seamless, **encrypted** database backups on Cloud. -All backups are **hot** backups, ensuring zero downtime and fast recovery. +Backups protect your DocumentsDB data by capturing a full copy of a database that you can restore later. Every backup is **encrypted** and taken as a **hot** backup, so your database keeps serving traffic with zero downtime and recovery stays fast. -{% info title="Backups are available on Appwrite Cloud for all Pro and Enterprise customers." %} +{% info title="Backups are available for all Pro and Enterprise customers." %} {% /info %} You manage backups from a database's **Backups** tab, where you can automate backups with policies or create manual backups on demand. diff --git a/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc b/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc index 6522e3bde6..e83d69316b 100644 --- a/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc +++ b/src/routes/docs/products/databases/documentsdb/bulk-operations/+page.markdoc @@ -4,7 +4,7 @@ title: Bulk operations description: Perform bulk operations on documents within your collections for efficient data handling. --- -Appwrite Databases supports bulk operations for documents, allowing you to create, update, or delete multiple documents in a single request. This can significantly improve performance for apps as it allows you to reduce the number of API calls needed while working with large data sets. +Appwrite DocumentsDB supports bulk operations for documents, allowing you to create, update, or delete multiple documents in a single request. This can significantly improve performance for apps as it allows you to reduce the number of API calls needed while working with large data sets. Bulk operations can only be performed via the server-side SDKs. The client-side SDKs do not support bulk operations by design to prevent abuse and protect against unexpected costs. This ensures that only trusted server environments can perform large-scale data operations. diff --git a/src/routes/docs/products/databases/documentsdb/order/+page.markdoc b/src/routes/docs/products/databases/documentsdb/order/+page.markdoc index c8dfeba16c..cf7bb7a1f7 100644 --- a/src/routes/docs/products/databases/documentsdb/order/+page.markdoc +++ b/src/routes/docs/products/databases/documentsdb/order/+page.markdoc @@ -1,10 +1,10 @@ --- layout: article title: Order -description: Understand how to do data ordering in Appwrite Databases. Learn how to order and sort your database records for efficient data retrieval. +description: Understand how to do data ordering in Appwrite DocumentsDB. Learn how to order and sort your database records for efficient data retrieval. --- -You can order results returned by Appwrite Databases by using an order query. +You can order results returned by Appwrite DocumentsDB by using an order query. For best performance, create an [index](/docs/products/databases/documentsdb/collections#indexes) on the field you plan to order by. # Ordering one field {% #one-field %} diff --git a/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc b/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc index 1f310e8ffe..918642e682 100644 --- a/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc +++ b/src/routes/docs/products/databases/documentsdb/pagination/+page.markdoc @@ -1,7 +1,7 @@ --- layout: article title: Pagination -description: Implement pagination for large data sets in Appwrite Databases. Explore techniques for splitting and displaying data across multiple pages. +description: Implement pagination for large data sets in Appwrite DocumentsDB. Explore techniques for splitting and displaying data across multiple pages. --- As your collection grows in size, you'll need to paginate the documents returned. From e313aa183551808e4dfc28444f25ff7aea8c944e Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Sat, 4 Jul 2026 02:49:48 +0530 Subject: [PATCH 07/38] Storage stardust docs --- .../docs/products/storage/+layout.svelte | 4 + .../docs/products/storage/s3/+page.markdoc | 240 ++++++++++++++++++ 2 files changed, 244 insertions(+) create mode 100644 src/routes/docs/products/storage/s3/+page.markdoc diff --git a/src/routes/docs/products/storage/+layout.svelte b/src/routes/docs/products/storage/+layout.svelte index 122404835c..dd84bb33e9 100644 --- a/src/routes/docs/products/storage/+layout.svelte +++ b/src/routes/docs/products/storage/+layout.svelte @@ -48,6 +48,10 @@ { label: 'Image transformations', href: '/docs/products/storage/images' + }, + { + label: 'S3 API', + href: '/docs/products/storage/s3' } ] }, diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc new file mode 100644 index 0000000000..4f16bf087e --- /dev/null +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -0,0 +1,240 @@ +--- +layout: article +title: S3 API +description: Connect any S3-compatible client, SDK, or tool to Appwrite Storage. Configure credentials, then manage buckets, objects, and multipart uploads over the S3 API. +--- + +Appwrite Storage exposes an S3-compatible API, so you can use the AWS CLI, the AWS SDKs, and third-party tools like rclone or s3cmd to work with your buckets and files. The API speaks AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, which means most existing S3 code and tooling works after you change three settings: the endpoint, the credentials, and the region. + +{% info title="What you need" %} +The S3 API is available on Appwrite Cloud. To connect, you need a project ID and an [API key](/docs/advanced/security/api-keys) with the storage scopes listed below. No changes to your existing buckets or files are required, they are addressable over both the native Storage API and the S3 API at the same time. +{% /info %} + +# Endpoint and credentials {% #endpoint-and-credentials %} + +S3 clients authenticate with an access key ID and a secret access key. Appwrite maps these to your project ID and an API key secret. Configure your client with the following values. + +| Setting | Value | +| --- | --- | +| Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | +| Access key ID | Your Appwrite project ID | +| Secret access key | An Appwrite API key secret | +| Region | `us-east-1` | +| Signature version | AWS Signature Version 4 (SigV4) | +| Addressing style | Path-style only | + +The `<REGION>` in the endpoint is your Appwrite Cloud region (for example `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate. Set it to `us-east-1`, which is the region Appwrite reports for your buckets (`GetBucketLocation`) and keeps clients that require a region value consistent. + +{% info title="API key scopes" %} +Create an API key in your project's **Overview** settings, then grant it the storage scopes your workload needs: + +- `buckets.read` and `files.read` for read-only access (list and download). +- `buckets.write` and `files.write` to also create buckets and upload or delete objects. + +Copying an object reads the source and writes the destination, so `CopyObject` and `UploadPartCopy` need both `files.read` and `files.write`. Grant all four scopes for full read and write access. + +The project ID identifies your project, and the API key secret both authenticates the request and determines what it is allowed to do. Requests signed with a secret that does not match a project API key, or a key missing the required scope, are rejected with `AccessDenied` (HTTP 403). +{% /info %} + +# Configure your S3 client {% #configure-your-s3-client %} + +Point your client at the Appwrite endpoint, set the region to `us-east-1`, enable path-style addressing, and pass your project ID and API key secret as the credentials. + +{% multicode %} +```bash +# AWS CLI +aws configure set aws_access_key_id <PROJECT_ID> +aws configure set aws_secret_access_key <API_KEY_SECRET> +aws configure set region us-east-1 + +# Appwrite serves path-style URLs only, so force path addressing +aws configure set default.s3.addressing_style path + +# Pass the Appwrite endpoint on every command +aws s3 ls --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + +```js +// Node.js: @aws-sdk/client-s3 (v3) +import { S3Client } from '@aws-sdk/client-s3'; + +const client = new S3Client({ + endpoint: 'https://<REGION>.cloud.appwrite.io/v1/s3', + region: 'us-east-1', + forcePathStyle: true, + credentials: { + accessKeyId: '<PROJECT_ID>', + secretAccessKey: '<API_KEY_SECRET>' + } +}); +``` + +```python +# Python: boto3 +import boto3 +from botocore.config import Config + +s3 = boto3.client( + 's3', + endpoint_url='https://<REGION>.cloud.appwrite.io/v1/s3', + region_name='us-east-1', + aws_access_key_id='<PROJECT_ID>', + aws_secret_access_key='<API_KEY_SECRET>', + config=Config(signature_version='s3v4', s3={'addressing_style': 'path'}) +) +``` + +```go +// Go: aws-sdk-go-v2 +cfg, err := config.LoadDefaultConfig(context.TODO(), + config.WithRegion("us-east-1"), + config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( + "<PROJECT_ID>", "<API_KEY_SECRET>", "", + )), +) +if err != nil { + log.Fatal(err) +} + +client := s3.NewFromConfig(cfg, func(o *s3.Options) { + o.BaseEndpoint = aws.String("https://<REGION>.cloud.appwrite.io/v1/s3") + o.UsePathStyle = true +}) +``` + +```php +// PHP: aws/aws-sdk-php +use Aws\S3\S3Client; + +$client = new S3Client([ + 'version' => 'latest', + 'region' => 'us-east-1', + 'endpoint' => 'https://<REGION>.cloud.appwrite.io/v1/s3', + 'use_path_style_endpoint' => true, + 'credentials' => [ + 'key' => '<PROJECT_ID>', + 'secret' => '<API_KEY_SECRET>', + ], +]); +``` +{% /multicode %} + +# How buckets and objects map to Appwrite {% #how-buckets-and-objects-map %} + +S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files. Creating a bucket over S3 creates an Appwrite bucket with the bucket name set to the ID you provided and Appwrite's default settings. Any bucket you already have in your project is usable over S3 immediately. + +Every object maps to a file. When you upload an object, Appwrite stores it as a file with an automatically generated file ID and uses the object key you provided as the file's name. The **canonical key**, the key returned by list operations and expected by read, copy, and delete operations, is: + +```text +{fileId}-{fileName} +``` + +For example, uploading to the key `reports/january.pdf` creates a file whose name is `reports/january.pdf`, and the object is then listed under a canonical key such as `6710e2...f3-reports/january.pdf`. + +{% info title="Reading back what you upload" %} +Because a new file ID is generated on every plain upload, uploading twice with the same key creates two distinct objects instead of overwriting. To read, copy, overwrite, or delete an object, use its canonical key from a list operation. Uploading to a canonical key that already exists overwrites that object in place. + +This also lets the S3 API interoperate with files created through the native Storage API and Console: list the bucket to discover the `{fileId}-{fileName}` key, then address the file over S3 with it. +{% /info %} + +# Supported operations {% #supported-operations %} + +The API covers the bucket, object, and multipart operations that standard S3 clients and SDKs rely on. Operations are addressed with path-style URLs under `/v1/s3`. + +## Buckets {% #buckets %} + +| Operation | Description | +| --- | --- | +| `ListBuckets` | List the project's buckets. | +| `CreateBucket` | Create a bucket. The bucket ID becomes the bucket name, with Appwrite's default settings. | +| `HeadBucket` | Check that a bucket exists and is accessible. | +| `DeleteBucket` | Delete an empty bucket. Deleting a bucket that still contains objects returns `BucketNotEmpty` (HTTP 409). | +| `GetBucketLocation` | Returns `us-east-1`. | +| `GetBucketAcl`, `PutBucketAcl` | Compatibility responses only. See [Compatibility and limitations](#compatibility-and-limitations). | + +## Objects {% #objects %} + +| Operation | Description | +| --- | --- | +| `PutObject` | Upload an object. Returns an `ETag`. Honors `Content-Type`, `x-amz-meta-*` user metadata, and `x-amz-server-side-encryption`. | +| `GetObject` | Download an object. Supports `Range` requests (HTTP 206), and the `If-None-Match` (HTTP 304) and `If-Match` (HTTP 412) conditional headers. | +| `HeadObject` | Retrieve an object's metadata (size, content type, `ETag`, user metadata) without the body. | +| `CopyObject` | Copy an object using the `x-amz-copy-source` header. Supports `x-amz-metadata-directive: REPLACE` to replace metadata. | +| `DeleteObject` | Delete a single object. | +| `DeleteObjects` | Delete multiple objects in one request, including quiet mode. | +| `ListObjects` | List objects in a bucket, with `prefix` filtering. | +| `ListObjectsV2` | List objects with `prefix`, `delimiter`, `max-keys`, `continuation-token`, and `start-after`. | +| `GetObjectAcl`, `PutObjectAcl` | Compatibility responses only. See [Compatibility and limitations](#compatibility-and-limitations). | + +Content type is taken from the `Content-Type` you send. When that is missing or generic (`application/octet-stream`), Appwrite infers a type from the file extension. Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and disabled buckets are treated as not found. + +## Multipart uploads {% #multipart-uploads %} + +Large files are uploaded in parts. Standard SDK multipart helpers, such as the AWS CLI's `aws s3 cp` and the SDK transfer managers, use these operations automatically. + +| Operation | Description | +| --- | --- | +| `CreateMultipartUpload` | Begin a multipart upload and receive an `UploadId`. | +| `UploadPart` | Upload a single part. Returns the part's `ETag`. | +| `UploadPartCopy` | Upload a part by copying a byte range from another object, using `x-amz-copy-source` and `x-amz-copy-source-range`. | +| `CompleteMultipartUpload` | Assemble the uploaded parts into the final object. | +| `AbortMultipartUpload` | Discard an in-progress multipart upload and its parts. | +| `ListMultipartUploads` | List in-progress multipart uploads in a bucket. | +| `ListParts` | List the parts already uploaded for an `UploadId`. | + +{% info title="Multipart requirements" %} +Parts must be contiguous and start at part number 1. Completing an upload with non-contiguous part numbers (for example parts 1, 5, and 100) is rejected. Sequential uploads, which is what SDK multipart flows produce, are unaffected. In-progress uploads are kept for 24 hours before they are cleaned up, so complete or abort within that window. +{% /info %} + +# Examples {% #examples %} + +Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above and set an alias or environment default for the endpoint. + +```bash +# Create a bucket +aws s3api create-bucket --bucket my-bucket \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Upload a file (uses multipart automatically for large files) +aws s3 cp ./january.pdf s3://my-bucket/reports/january.pdf \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# List objects to discover canonical keys +aws s3 ls s3://my-bucket --recursive \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Download using the canonical {fileId}-{fileName} key from the listing +aws s3api get-object --bucket my-bucket \ + --key 6710e2f3-reports/january.pdf ./january.pdf \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + +# Compatibility and limitations {% #compatibility-and-limitations %} + +The S3 API targets the operations most clients depend on. Keep the following in mind. + +- **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in the configuration examples. +- **Signature Version 4 only.** Requests are authenticated with SigV4, and the request timestamp must be within 15 minutes of the server's clock. +- **Reading back objects.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [How buckets and objects map to Appwrite](#how-buckets-and-objects-map). +- **ACLs are compatibility responses.** `GetObjectAcl`, `PutObjectAcl`, `GetBucketAcl`, and `PutBucketAcl` return a canned private ACL and are accepted for tooling compatibility. They do not change access. Manage access with [Appwrite permissions](/docs/products/storage/permissions) and API key scopes instead. +- **Folders are not supported.** Uploading a folder marker (a key ending in `/`) returns `NotImplemented` (HTTP 501). Object keys can still contain `/`, so prefixes behave as expected. +- **Object listings are built in memory.** `ListObjects` and `ListObjectsV2` load the matching objects from the database and order them in the API. `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped, but listing very large buckets increases per-request latency and memory. +- **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. +- **Unsupported S3 features.** Object tagging, CORS, lifecycle, bucket policies and policy status, encryption configuration, ownership controls, notifications, and versioning are not supported. Requests to these sub-resources return `NotImplemented` (HTTP 501). + +## Error responses {% #error-responses %} + +Errors are returned as standard S3 XML error documents with an S3 error code and HTTP status. + +| S3 error code | HTTP status | Meaning | +| --- | --- | --- | +| `NoSuchBucket` | 404 | The bucket does not exist, is disabled, or is not accessible. | +| `NoSuchKey` | 404 | The object key does not exist. | +| `BucketNotEmpty` | 409 | The bucket still contains objects and cannot be deleted. | +| `BucketAlreadyOwnedByYou` | 409 | A bucket with that ID already exists in your project. | +| `AccessDenied` | 403 | The signature is invalid, or the API key is expired or missing a required scope. | +| `InvalidRange` | 416 | The requested `Range` cannot be satisfied. | +| `PreconditionFailed` | 412 | An `If-Match` precondition did not hold. | +| `NotImplemented` | 501 | The requested S3 feature is not supported. | +| `InvalidRequest` | 400 | The request was malformed or violated a bucket constraint. | +| `InternalError` | 500 | An unexpected server error occurred. | From 228badddfd3ea25a9f5cd9066ad8934f0afce89c Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Tue, 7 Jul 2026 01:33:54 +0530 Subject: [PATCH 08/38] Simplify new docs --- .../docs/products/storage/s3/+page.markdoc | 130 +++++++++--------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc index 4f16bf087e..33f185f8a4 100644 --- a/src/routes/docs/products/storage/s3/+page.markdoc +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -1,51 +1,38 @@ --- layout: article title: S3 API -description: Connect any S3-compatible client, SDK, or tool to Appwrite Storage. Configure credentials, then manage buckets, objects, and multipart uploads over the S3 API. +description: Connect any S3-compatible client, SDK, or tool to Appwrite Storage. Configure credentials once, then manage buckets, objects, and multipart uploads over the S3 API. --- -Appwrite Storage exposes an S3-compatible API, so you can use the AWS CLI, the AWS SDKs, and third-party tools like rclone or s3cmd to work with your buckets and files. The API speaks AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, which means most existing S3 code and tooling works after you change three settings: the endpoint, the credentials, and the region. +Appwrite Storage exposes an S3-compatible API, so you can point the AWS CLI, the AWS SDKs, and third-party tools like rclone or s3cmd at your buckets and files. The API speaks AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, so most existing S3 code works after you change three settings: the endpoint, the credentials, and the region. -{% info title="What you need" %} -The S3 API is available on Appwrite Cloud. To connect, you need a project ID and an [API key](/docs/advanced/security/api-keys) with the storage scopes listed below. No changes to your existing buckets or files are required, they are addressable over both the native Storage API and the S3 API at the same time. -{% /info %} +The S3 API is available on Appwrite Cloud. It needs a project ID and an [API key](/docs/advanced/security/api-keys) with the storage scopes described below, and it works alongside your existing data: buckets and files are addressable over both the native Storage API and the S3 API at the same time, with no migration required. -# Endpoint and credentials {% #endpoint-and-credentials %} +# Connect an S3 client {% #connect-an-s3-client %} -S3 clients authenticate with an access key ID and a secret access key. Appwrite maps these to your project ID and an API key secret. Configure your client with the following values. +Configure your client with the following values. S3 clients authenticate with an access key ID and a secret access key, which Appwrite maps to your project ID and an API key secret. | Setting | Value | | --- | --- | | Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | | Access key ID | Your Appwrite project ID | | Secret access key | An Appwrite API key secret | -| Region | `us-east-1` | +| Region | `auto` or `us-east-1` | | Signature version | AWS Signature Version 4 (SigV4) | | Addressing style | Path-style only | -The `<REGION>` in the endpoint is your Appwrite Cloud region (for example `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate. Set it to `us-east-1`, which is the region Appwrite reports for your buckets (`GetBucketLocation`) and keeps clients that require a region value consistent. - -{% info title="API key scopes" %} -Create an API key in your project's **Overview** settings, then grant it the storage scopes your workload needs: - -- `buckets.read` and `files.read` for read-only access (list and download). -- `buckets.write` and `files.write` to also create buckets and upload or delete objects. - -Copying an object reads the source and writes the destination, so `CopyObject` and `UploadPartCopy` need both `files.read` and `files.write`. Grant all four scopes for full read and write access. +The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate, and Appwrite ignores it. Set it to `auto` or `us-east-1` and leave it alone. Some S3 clients require a region to sign requests, but the value has no effect. -The project ID identifies your project, and the API key secret both authenticates the request and determines what it is allowed to do. Requests signed with a secret that does not match a project API key, or a key missing the required scope, are rejected with `AccessDenied` (HTTP 403). -{% /info %} - -# Configure your S3 client {% #configure-your-s3-client %} +# Configure your client {% #configure-your-client %} -Point your client at the Appwrite endpoint, set the region to `us-east-1`, enable path-style addressing, and pass your project ID and API key secret as the credentials. +Point your client at the endpoint from the table above, set the region to `auto`, enable path-style addressing, and pass your project ID and API key secret as the credentials. {% multicode %} ```bash # AWS CLI aws configure set aws_access_key_id <PROJECT_ID> aws configure set aws_secret_access_key <API_KEY_SECRET> -aws configure set region us-east-1 +aws configure set region auto # Appwrite serves path-style URLs only, so force path addressing aws configure set default.s3.addressing_style path @@ -60,7 +47,7 @@ import { S3Client } from '@aws-sdk/client-s3'; const client = new S3Client({ endpoint: 'https://<REGION>.cloud.appwrite.io/v1/s3', - region: 'us-east-1', + region: 'auto', forcePathStyle: true, credentials: { accessKeyId: '<PROJECT_ID>', @@ -77,7 +64,7 @@ from botocore.config import Config s3 = boto3.client( 's3', endpoint_url='https://<REGION>.cloud.appwrite.io/v1/s3', - region_name='us-east-1', + region_name='auto', aws_access_key_id='<PROJECT_ID>', aws_secret_access_key='<API_KEY_SECRET>', config=Config(signature_version='s3v4', s3={'addressing_style': 'path'}) @@ -87,7 +74,7 @@ s3 = boto3.client( ```go // Go: aws-sdk-go-v2 cfg, err := config.LoadDefaultConfig(context.TODO(), - config.WithRegion("us-east-1"), + config.WithRegion("auto"), config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( "<PROJECT_ID>", "<API_KEY_SECRET>", "", )), @@ -108,7 +95,7 @@ use Aws\S3\S3Client; $client = new S3Client([ 'version' => 'latest', - 'region' => 'us-east-1', + 'region' => 'auto', 'endpoint' => 'https://<REGION>.cloud.appwrite.io/v1/s3', 'use_path_style_endpoint' => true, 'credentials' => [ @@ -119,7 +106,20 @@ $client = new S3Client([ ``` {% /multicode %} -# How buckets and objects map to Appwrite {% #how-buckets-and-objects-map %} +# API key scopes {% #api-key-scopes %} + +Create an API key in your project's **Overview** settings, then grant the storage scopes your workload needs. The project ID identifies your project, while the API key secret both authenticates the request and determines what it is allowed to do. + +| Access level | Required scopes | +| --- | --- | +| Read-only (list and download) | `buckets.read`, `files.read` | +| Write (create buckets, upload, delete) | `buckets.write`, `files.write` | +| Copy (`CopyObject`, `UploadPartCopy`) | `files.read` and `files.write` | +| Full read and write | `buckets.read`, `files.read`, `buckets.write`, `files.write` | + +Copying an object reads the source and writes the destination, so `CopyObject` and `UploadPartCopy` need both `files.read` and `files.write`. A request signed with a secret that does not match a project API key, or a key missing the required scope, is rejected with `AccessDenied` (HTTP 403). + +# Object key mapping {% #object-key-mapping %} S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files. Creating a bucket over S3 creates an Appwrite bucket with the bucket name set to the ID you provided and Appwrite's default settings. Any bucket you already have in your project is usable over S3 immediately. @@ -131,17 +131,38 @@ Every object maps to a file. When you upload an object, Appwrite stores it as a For example, uploading to the key `reports/january.pdf` creates a file whose name is `reports/january.pdf`, and the object is then listed under a canonical key such as `6710e2...f3-reports/january.pdf`. -{% info title="Reading back what you upload" %} -Because a new file ID is generated on every plain upload, uploading twice with the same key creates two distinct objects instead of overwriting. To read, copy, overwrite, or delete an object, use its canonical key from a list operation. Uploading to a canonical key that already exists overwrites that object in place. +Listing a bucket to discover the `{fileId}-{fileName}` key is also how the S3 API interoperates with files created through the native Storage API and Console: list the bucket, then address the file over S3 with its canonical key. -This also lets the S3 API interoperate with files created through the native Storage API and Console: list the bucket to discover the `{fileId}-{fileName}` key, then address the file over S3 with it. +{% info title="Uploads never overwrite by key" %} +Because a new file ID is generated on every plain upload, uploading twice with the same key creates two distinct objects instead of overwriting. To read, copy, overwrite, or delete an object, use its canonical key from a list operation. Uploading to a canonical key that already exists overwrites that object in place. {% /info %} -# Supported operations {% #supported-operations %} +# Example commands {% #example-commands %} -The API covers the bucket, object, and multipart operations that standard S3 clients and SDKs rely on. Operations are addressed with path-style URLs under `/v1/s3`. +Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above and set an alias or environment default for the endpoint. -## Buckets {% #buckets %} +```bash +# Create a bucket +aws s3api create-bucket --bucket my-bucket \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Upload a file (uses multipart automatically for large files) +aws s3 cp ./january.pdf s3://my-bucket/reports/january.pdf \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# List objects to discover canonical keys +aws s3 ls s3://my-bucket --recursive \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Download using the canonical {fileId}-{fileName} key from the listing +aws s3api get-object --bucket my-bucket \ + --key 6710e2f3-reports/january.pdf ./january.pdf \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + +# Bucket operations {% #bucket-operations %} + +All operations are addressed with path-style URLs under `/v1/s3`. The following bucket operations are supported. | Operation | Description | | --- | --- | @@ -150,9 +171,11 @@ The API covers the bucket, object, and multipart operations that standard S3 cli | `HeadBucket` | Check that a bucket exists and is accessible. | | `DeleteBucket` | Delete an empty bucket. Deleting a bucket that still contains objects returns `BucketNotEmpty` (HTTP 409). | | `GetBucketLocation` | Returns `us-east-1`. | -| `GetBucketAcl`, `PutBucketAcl` | Compatibility responses only. See [Compatibility and limitations](#compatibility-and-limitations). | +| `GetBucketAcl`, `PutBucketAcl` | Compatibility responses only. See [Limitations](#limitations). | + +# Object operations {% #object-operations %} -## Objects {% #objects %} +The following object operations are supported. | Operation | Description | | --- | --- | @@ -164,11 +187,11 @@ The API covers the bucket, object, and multipart operations that standard S3 cli | `DeleteObjects` | Delete multiple objects in one request, including quiet mode. | | `ListObjects` | List objects in a bucket, with `prefix` filtering. | | `ListObjectsV2` | List objects with `prefix`, `delimiter`, `max-keys`, `continuation-token`, and `start-after`. | -| `GetObjectAcl`, `PutObjectAcl` | Compatibility responses only. See [Compatibility and limitations](#compatibility-and-limitations). | +| `GetObjectAcl`, `PutObjectAcl` | Compatibility responses only. See [Limitations](#limitations). | Content type is taken from the `Content-Type` you send. When that is missing or generic (`application/octet-stream`), Appwrite infers a type from the file extension. Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and disabled buckets are treated as not found. -## Multipart uploads {% #multipart-uploads %} +# Multipart uploads {% #multipart-uploads %} Large files are uploaded in parts. Standard SDK multipart helpers, such as the AWS CLI's `aws s3 cp` and the SDK transfer managers, use these operations automatically. @@ -186,43 +209,20 @@ Large files are uploaded in parts. Standard SDK multipart helpers, such as the A Parts must be contiguous and start at part number 1. Completing an upload with non-contiguous part numbers (for example parts 1, 5, and 100) is rejected. Sequential uploads, which is what SDK multipart flows produce, are unaffected. In-progress uploads are kept for 24 hours before they are cleaned up, so complete or abort within that window. {% /info %} -# Examples {% #examples %} - -Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above and set an alias or environment default for the endpoint. - -```bash -# Create a bucket -aws s3api create-bucket --bucket my-bucket \ - --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 - -# Upload a file (uses multipart automatically for large files) -aws s3 cp ./january.pdf s3://my-bucket/reports/january.pdf \ - --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 - -# List objects to discover canonical keys -aws s3 ls s3://my-bucket --recursive \ - --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 - -# Download using the canonical {fileId}-{fileName} key from the listing -aws s3api get-object --bucket my-bucket \ - --key 6710e2f3-reports/january.pdf ./january.pdf \ - --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 -``` - -# Compatibility and limitations {% #compatibility-and-limitations %} +# Limitations {% #limitations %} The S3 API targets the operations most clients depend on. Keep the following in mind. -- **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in the configuration examples. +- **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in [Configure your client](#configure-your-client). - **Signature Version 4 only.** Requests are authenticated with SigV4, and the request timestamp must be within 15 minutes of the server's clock. -- **Reading back objects.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [How buckets and objects map to Appwrite](#how-buckets-and-objects-map). +- **Reading back objects.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [Object key mapping](#object-key-mapping). - **ACLs are compatibility responses.** `GetObjectAcl`, `PutObjectAcl`, `GetBucketAcl`, and `PutBucketAcl` return a canned private ACL and are accepted for tooling compatibility. They do not change access. Manage access with [Appwrite permissions](/docs/products/storage/permissions) and API key scopes instead. - **Folders are not supported.** Uploading a folder marker (a key ending in `/`) returns `NotImplemented` (HTTP 501). Object keys can still contain `/`, so prefixes behave as expected. - **Object listings are built in memory.** `ListObjects` and `ListObjectsV2` load the matching objects from the database and order them in the API. `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped, but listing very large buckets increases per-request latency and memory. - **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. - **Unsupported S3 features.** Object tagging, CORS, lifecycle, bucket policies and policy status, encryption configuration, ownership controls, notifications, and versioning are not supported. Requests to these sub-resources return `NotImplemented` (HTTP 501). -## Error responses {% #error-responses %} +# Error responses {% #error-responses %} Errors are returned as standard S3 XML error documents with an S3 error code and HTTP status. From 99deb376576805642444340a7d5f30c0830ea772 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 9 Jul 2026 00:54:15 +0530 Subject: [PATCH 09/38] Add PostgreSQL native database docs with integrations --- .optimize-cache.json | 28 + src/lib/utils/code.ts | 9 +- .../databases/postgresql/+layout.svelte | 129 +- .../databases/postgresql/+page.markdoc | 103 +- .../postgresql/backups/+page.markdoc | 1299 +++++++++++++++++ .../postgresql/branches/+page.markdoc | 677 +++++++++ .../connection-pooling/+page.markdoc | 276 ++++ .../postgresql/connections/+page.markdoc | 541 +++++++ .../postgresql/extensions/+page.markdoc | 630 ++++++++ .../high-availability/+page.markdoc | 638 ++++++++ .../integrations/auth-js/+page.markdoc | 229 +++ .../integrations/better-auth/+page.markdoc | 147 ++ .../postgresql/integrations/dbt/+page.markdoc | 114 ++ .../integrations/django/+page.markdoc | 145 ++ .../integrations/drivers/+page.markdoc | 197 +++ .../integrations/drizzle/+page.markdoc | 193 +++ .../integrations/ef-core/+page.markdoc | 168 +++ .../integrations/fastapi/+page.markdoc | 189 +++ .../integrations/gorm/+page.markdoc | 168 +++ .../integrations/grafana/+page.markdoc | 105 ++ .../integrations/laravel/+page.markdoc | 204 +++ .../integrations/metabase/+page.markdoc | 80 + .../integrations/nextjs/+page.markdoc | 150 ++ .../integrations/prisma/+page.markdoc | 222 +++ .../integrations/rails/+page.markdoc | 168 +++ .../integrations/retool/+page.markdoc | 95 ++ .../integrations/spring-boot/+page.markdoc | 182 +++ .../postgresql/maintenance/+page.markdoc | 651 +++++++++ .../postgresql/monitoring/+page.markdoc | 235 +++ .../postgresql/network-security/+page.markdoc | 463 ++++++ .../postgresql/quick-start/+page.markdoc | 96 ++ .../postgresql/scaling/+page.markdoc | 658 +++++++++ .../databases/postgresql/connections.avif | Bin 0 -> 33091 bytes .../postgresql/create-database-specs.avif | Bin 0 -> 32500 bytes .../postgresql/create-database-type.avif | Bin 0 -> 38925 bytes .../databases/postgresql/credentials.avif | Bin 0 -> 16596 bytes .../postgresql/dark/connections.avif | Bin 0 -> 36103 bytes .../dark/create-database-specs.avif | Bin 0 -> 34502 bytes .../postgresql/dark/create-database-type.avif | Bin 0 -> 42082 bytes .../postgresql/dark/credentials.avif | Bin 0 -> 16894 bytes .../databases/postgresql/dark/monitor.avif | Bin 0 -> 48949 bytes .../databases/postgresql/dark/roles-tab.avif | Bin 0 -> 28297 bytes .../dark/settings-compute-tier.avif | Bin 0 -> 43887 bytes .../dark/settings-high-availability.avif | Bin 0 -> 42591 bytes .../postgresql/dark/settings-network.avif | Bin 0 -> 32262 bytes .../postgresql/dark/settings-pitr.avif | Bin 0 -> 33959 bytes .../databases/postgresql/dark/settings.avif | Bin 0 -> 34735 bytes .../databases/postgresql/dark/sql-editor.avif | Bin 0 -> 26576 bytes .../databases/postgresql/monitor.avif | Bin 0 -> 44865 bytes .../databases/postgresql/roles-tab.avif | Bin 0 -> 26872 bytes .../postgresql/settings-compute-tier.avif | Bin 0 -> 41167 bytes .../settings-high-availability.avif | Bin 0 -> 38977 bytes .../postgresql/settings-network.avif | Bin 0 -> 30323 bytes .../databases/postgresql/settings-pitr.avif | Bin 0 -> 31699 bytes .../databases/postgresql/settings.avif | Bin 0 -> 32840 bytes .../databases/postgresql/sql-editor.avif | Bin 0 -> 24588 bytes 56 files changed, 9184 insertions(+), 5 deletions(-) create mode 100644 src/routes/docs/products/databases/postgresql/backups/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/branches/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/connection-pooling/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/connections/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/extensions/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/high-availability/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/auth-js/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/better-auth/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/dbt/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/django/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/drivers/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/drizzle/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/ef-core/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/gorm/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/grafana/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/metabase/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/nextjs/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/prisma/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/retool/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/maintenance/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/monitoring/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/network-security/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/quick-start/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/scaling/+page.markdoc create mode 100644 static/images/docs/products/databases/postgresql/connections.avif create mode 100644 static/images/docs/products/databases/postgresql/create-database-specs.avif create mode 100644 static/images/docs/products/databases/postgresql/create-database-type.avif create mode 100644 static/images/docs/products/databases/postgresql/credentials.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/connections.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/create-database-specs.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/create-database-type.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/credentials.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/monitor.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/roles-tab.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/settings-compute-tier.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/settings-high-availability.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/settings-network.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/settings-pitr.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/settings.avif create mode 100644 static/images/docs/products/databases/postgresql/dark/sql-editor.avif create mode 100644 static/images/docs/products/databases/postgresql/monitor.avif create mode 100644 static/images/docs/products/databases/postgresql/roles-tab.avif create mode 100644 static/images/docs/products/databases/postgresql/settings-compute-tier.avif create mode 100644 static/images/docs/products/databases/postgresql/settings-high-availability.avif create mode 100644 static/images/docs/products/databases/postgresql/settings-network.avif create mode 100644 static/images/docs/products/databases/postgresql/settings-pitr.avif create mode 100644 static/images/docs/products/databases/postgresql/settings.avif create mode 100644 static/images/docs/products/databases/postgresql/sql-editor.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 1d753d17ce..5aa7281391 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1593,6 +1593,34 @@ "static/images/docs/platform/dark/execution-details.png": "c0481ddc206447460f9d317ba8d421615066f67a50bc9ef41a8f71766ecffb14", "static/images/docs/platform/env-variables.png": "16f95151e4f6ee9fb8056f075b9f5027fd91f0c2a28586c5624c3ffe9b7a1ee8", "static/images/docs/platform/execution-details.png": "ece1364b8b00254bbd982421b6eed6d7f519d34c4e80377fcaaa4cb5d5dd3f89", + "static/images/docs/products/databases/mysql/create-database-specs.png": "623282bddd45eb245adb20166fd336089718a91bb7207a4f22b9811e13b96ba7", + "static/images/docs/products/databases/mysql/create-database-type.png": "0ff2c521f3f40f467587954120339572bcac0c6d6f76f0f2e6935e640d7adba3", + "static/images/docs/products/databases/mysql/dark/create-database-specs.png": "41bcda64b5cfac906639e077549c1429ec3701f8af9f49c4d1548e4716a23028", + "static/images/docs/products/databases/mysql/dark/create-database-type.png": "2a212e8322d6475dfdd2a1599021bd94f5fef42414e76ff13d0a59aca431b287", + "static/images/docs/products/databases/postgresql/connections.png": "e3096521fc169b41bed8a01c77afc923d1fd1ef53939940b90c3bbabeb3294b3", + "static/images/docs/products/databases/postgresql/create-database-specs.png": "80c5136b2df7f9636f230cda64efd024e5a0867d283d5d6750b05b1da8514b25", + "static/images/docs/products/databases/postgresql/create-database-type.png": "dbfb5e319e8ff5cdefb2691d0ab8a9a4a97edb94a62e52fedee726b1585f56f7", + "static/images/docs/products/databases/postgresql/credentials.png": "45d224d28771564581ccb4c4ae8d733fa192e3c8121fd4fefd63e28b91b9b764", + "static/images/docs/products/databases/postgresql/dark/connections.png": "c4a9abd58079668afd131627e8625811bc2d9b902a395050720a8cfafabc341f", + "static/images/docs/products/databases/postgresql/dark/create-database-specs.png": "07d067e17932689a9e014262c6315e46dd8bb2edd4e4619bf112dd743eca7936", + "static/images/docs/products/databases/postgresql/dark/create-database-type.png": "de3281805c2193d8f82ec81b53e1031bdcb6bfdfda875832d041e07d8f407579", + "static/images/docs/products/databases/postgresql/dark/credentials.png": "b44c3e27fe3e217ac048f5207ec55cba75a34ffe0a056290899ab62b70536491", + "static/images/docs/products/databases/postgresql/dark/monitor.png": "f8921ca48411bab35403b13894a8cd05216c931c206f86b853a3d236302660ad", + "static/images/docs/products/databases/postgresql/dark/roles-tab.png": "2fa52745b9e2c6e072332aa4050d4995fe10a779af931f01ad22dd280e337b9e", + "static/images/docs/products/databases/postgresql/dark/settings-compute-tier.png": "8efccefed72b6543f5a62ef64990a150425fad02aaecc531c42d51ac900fb210", + "static/images/docs/products/databases/postgresql/dark/settings-high-availability.png": "d8f12ff6c9b1e6ac1911323ec2ad4591e6bbcdc6bc56f0bc96e9344ff9e5aa5c", + "static/images/docs/products/databases/postgresql/dark/settings-network.png": "cd2924cdfa1457338a0f53a5055f62abf13350b722ef4b788693f1d7861e2631", + "static/images/docs/products/databases/postgresql/dark/settings-pitr.png": "773fc9622de3299b5d94c6de1fda0de53233143be5acc032f6eac65f044434ce", + "static/images/docs/products/databases/postgresql/dark/settings.png": "51ecfdd292149a4b010704b2a21d2f0cad00a5bd3aed1f6f88d9efb35be46f09", + "static/images/docs/products/databases/postgresql/dark/sql-editor.png": "128fa75d8518612915df4a4b5de6c096ab05dd7df48bb89414e3330977ea5a17", + "static/images/docs/products/databases/postgresql/monitor.png": "da2160f8c22ae0dba29619672d04adea9e553e07e342931775fb432cd000c69a", + "static/images/docs/products/databases/postgresql/roles-tab.png": "b13d5caaf9a839ee5dabcbcb156fda3594ed38f7c30c4f092d1095bb5a895edb", + "static/images/docs/products/databases/postgresql/settings-compute-tier.png": "a4a7ed1d2ad3fb01ca8adac0497d075fd58cc11e0f53ece7ed2257eca0828fd8", + "static/images/docs/products/databases/postgresql/settings-high-availability.png": "1a84efe9e0132012d009eac1b52a67739fbf471761ff0cce323f7b160f3aff5b", + "static/images/docs/products/databases/postgresql/settings-network.png": "ef685f1b56c80259c944d39033a895bbddf6aa8744964d47677863b9c94f0ceb", + "static/images/docs/products/databases/postgresql/settings-pitr.png": "267a9f4b60667e618f8c6ff09615c19423cfec7e182421fc929339e537d861cf", + "static/images/docs/products/databases/postgresql/settings.png": "ded8f34bcd1b812ea5a9ddcb48a34db8678ae696a9b03ab16c934b29621b395a", + "static/images/docs/products/databases/postgresql/sql-editor.png": "595b73cbd6f712d31b015ac224f6cb606875fe3a98cb7bf3c09ac6cbec25720a", "static/images/docs/quick-starts/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", "static/images/docs/quick-starts/create-project.png": "7fdb25def02c5dbdb08cd38c2d03b7b454c930194a900553e3e68d51cb28a1d5", "static/images/docs/quick-starts/dark/add-platform.png": "b12a85b64b136589268831b9cb26a664ec97418ad25a38be5273baab8253aa16", diff --git a/src/lib/utils/code.ts b/src/lib/utils/code.ts index 87503c1066..41a9a3089a 100644 --- a/src/lib/utils/code.ts +++ b/src/lib/utils/code.ts @@ -29,6 +29,8 @@ import groovy from 'highlight.js/lib/languages/groovy'; import rust from 'highlight.js/lib/languages/rust'; import ini from 'highlight.js/lib/languages/ini'; import dockerfile from 'highlight.js/lib/languages/dockerfile'; +import sql from 'highlight.js/lib/languages/sql'; +import pgsql from 'highlight.js/lib/languages/pgsql'; import { Platform } from './references'; import { writable } from 'svelte/store'; @@ -71,7 +73,9 @@ const languages = { env: ini, dotenv: ini, dockerfile: dockerfile, - docker: dockerfile + docker: dockerfile, + sql: sql, + pgsql: pgsql } as const satisfies Record<string, LanguageFn>; const platformAliases: Record<string, keyof typeof languages> = { @@ -114,6 +118,9 @@ Object.entries(platformAliases).forEach(([key, value]) => { /** HashiCorp Configuration Language (Terraform); core highlight.js has no HCL grammar */ hljs.registerAliases(['hcl', 'terraform', 'tf'], { languageName: 'ini' }); +/** Prisma schema language; core highlight.js has no Prisma grammar, GraphQL is the closest match */ +hljs.registerAliases(['prisma'], { languageName: 'graphql' }); + export type Language = keyof typeof languages | Platform; type Args = { diff --git a/src/routes/docs/products/databases/postgresql/+layout.svelte b/src/routes/docs/products/databases/postgresql/+layout.svelte index de7adff91d..1ae57a78eb 100644 --- a/src/routes/docs/products/databases/postgresql/+layout.svelte +++ b/src/routes/docs/products/databases/postgresql/+layout.svelte @@ -6,7 +6,7 @@ const parent: NavParent = { href: '/docs/products/databases', - label: 'Databases' + label: 'PostgreSQL' }; const navigation: NavTree = [ @@ -16,6 +16,133 @@ { label: 'Overview', href: '/docs/products/databases/postgresql' + }, + { + label: 'Quick start', + href: '/docs/products/databases/postgresql/quick-start' + } + ] + }, + { + label: 'Connecting', + items: [ + { + label: 'Connections', + href: '/docs/products/databases/postgresql/connections' + }, + { + label: 'Connection pooling', + href: '/docs/products/databases/postgresql/connection-pooling' + } + ] + }, + { + label: 'Manage', + items: [ + { + label: 'Extensions', + href: '/docs/products/databases/postgresql/extensions' + }, + { + label: 'Backups', + href: '/docs/products/databases/postgresql/backups' + }, + { + label: 'Branches', + href: '/docs/products/databases/postgresql/branches' + }, + { + label: 'High availability', + href: '/docs/products/databases/postgresql/high-availability' + }, + { + label: 'Scaling', + href: '/docs/products/databases/postgresql/scaling' + }, + { + label: 'Network security', + href: '/docs/products/databases/postgresql/network-security' + }, + { + label: 'Monitoring', + href: '/docs/products/databases/postgresql/monitoring' + }, + { + label: 'Maintenance', + href: '/docs/products/databases/postgresql/maintenance' + } + ] + }, + { + label: 'Integrations', + items: [ + { + label: 'Node.js drivers', + href: '/docs/products/databases/postgresql/integrations/drivers' + }, + { + label: 'Prisma', + href: '/docs/products/databases/postgresql/integrations/prisma' + }, + { + label: 'Drizzle', + href: '/docs/products/databases/postgresql/integrations/drizzle' + }, + { + label: 'Auth.js', + href: '/docs/products/databases/postgresql/integrations/auth-js' + }, + { + label: 'Better Auth', + href: '/docs/products/databases/postgresql/integrations/better-auth' + }, + { + label: 'Laravel', + href: '/docs/products/databases/postgresql/integrations/laravel' + }, + { + label: 'Rails', + href: '/docs/products/databases/postgresql/integrations/rails' + }, + { + label: 'Django', + href: '/docs/products/databases/postgresql/integrations/django' + }, + { + label: 'FastAPI', + href: '/docs/products/databases/postgresql/integrations/fastapi' + }, + { + label: 'Spring Boot', + href: '/docs/products/databases/postgresql/integrations/spring-boot' + }, + { + label: 'EF Core', + href: '/docs/products/databases/postgresql/integrations/ef-core' + }, + { + label: 'GORM', + href: '/docs/products/databases/postgresql/integrations/gorm' + }, + { + label: 'Next.js', + href: '/docs/products/databases/postgresql/integrations/nextjs' + }, + { + label: 'dbt', + href: '/docs/products/databases/postgresql/integrations/dbt' + }, + { + label: 'Metabase', + href: '/docs/products/databases/postgresql/integrations/metabase' + }, + { + label: 'Grafana', + href: '/docs/products/databases/postgresql/integrations/grafana' + }, + { + label: 'Retool', + href: '/docs/products/databases/postgresql/integrations/retool' } ] } diff --git a/src/routes/docs/products/databases/postgresql/+page.markdoc b/src/routes/docs/products/databases/postgresql/+page.markdoc index 4e7c251d8d..1b4f62973a 100644 --- a/src/routes/docs/products/databases/postgresql/+page.markdoc +++ b/src/routes/docs/products/databases/postgresql/+page.markdoc @@ -4,8 +4,105 @@ title: PostgreSQL description: Run a dedicated, native PostgreSQL database provisioned for your project and connect to it directly with standard PostgreSQL clients. --- -Run a dedicated, native PostgreSQL database provisioned for your project. Connect to it directly with standard PostgreSQL clients and tools, with no Appwrite abstraction layer in between. Native databases are available on dedicated infrastructure. +Appwrite native PostgreSQL databases give you a managed PostgreSQL instance provisioned for your project. You pick the compute specification, and Appwrite provisions the engine in your project's region with its own storage, networking, and credentials, exposed through a per-database public hostname secured with TLS. -{% info title="Documentation in progress" %} -Detailed PostgreSQL setup and connection guides are on the way. +Native databases are different from Appwrite databases like [TablesDB](/docs/products/databases/tablesdb), [DocumentsDB](/docs/products/databases/documentsdb), and [VectorsDB](/docs/products/databases/vectorsdb), which are accessed through Appwrite SDKs and platform APIs. A native PostgreSQL database gives you the raw engine. You connect with `psql` or any PostgreSQL driver and use the full feature set of PostgreSQL, with no Appwrite abstraction layer in between. + +{% info title="Looking for Appwrite data APIs?" %} +If you want Appwrite SDKs, platform permissions, and serverless scaling for app data, start with [Appwrite Databases](/docs/products/databases). Native PostgreSQL is for teams who want a managed PostgreSQL engine they can talk to directly with their own ORM, migrations, and drivers. {% /info %} + +# Supported versions {% #versions %} + +Appwrite manages the database container, storage, backups, and networking. You bring the application. + +| Engine | Default version | Other supported versions | Default port | +|------------|-----------------|--------------------------|--------------| +| PostgreSQL | 18 | 17 | 5432 | + +The version is selected on create and can be upgraded later. Upgrades run online: a second instance is provisioned on the new version, data is streamed over with logical replication, and traffic cuts over once replication is caught up, with no read or write outages and no manual dump-and-restore. + +A new database starts in a `provisioning` state and becomes `ready` within a few minutes. Large specifications or high-availability configurations take longer to schedule; poll the database status or watch the Console until it reports `ready`. + +# Regions {% #regions %} + +A native database lives in the same region as the project that owns it. There is no per-database region selector. Each database gets a unique hostname in the form `db-<hash>.<region>.appwrite.center`, and data does not leave the region. + +# Feature overview {% #features %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Connect with `psql` or any driver. Credentials are rotatable from the Console and API. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooling" %} +Per-database connection pooler with automatic read/write split when high availability is enabled. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/extensions" title="Extensions" %} +Install PostgreSQL extensions like PostGIS, pgvector, and pg_trgm. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/backups" title="Backups" %} +Scheduled backups, manual backups, restores, and point-in-time recovery. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Spin up an ephemeral copy of your database in seconds from a storage snapshot. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/high-availability" title="High availability" %} +Up to five synchronous, semi-synchronous, or asynchronous replicas with automatic failover. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/scaling" title="Scaling" %} +Resize compute online and grow storage automatically as your data grows. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS by default, optional IP allowlists, and a dedicated hostname per database. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/monitoring" title="Monitoring" %} +Live compute, connection, storage, and workload metrics, with an active-connections inspector. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/maintenance" title="Maintenance" %} +Maintenance windows, online version upgrades, and pause and resume. +{% /cards_item %} +{% /cards %} + +# Specifications and pricing {% #specifications %} + +Each database runs against one of the following compute specifications, billed monthly: + +| Tier | Specification | CPU | Memory | Storage | Bandwidth | Connections | Price | +|-----------------|----------------|---------|--------|---------|-----------|-------------|---------| +| Starter | `s-1vcpu-1gb` | 1 core | 1 GB | 10 GB | 50 GB | 100 | $10/mo | +| Standard | `s-2vcpu-2gb` | 2 cores | 2 GB | 25 GB | 200 GB | 200 | $20/mo | +| Standard Plus | `s-2vcpu-4gb` | 2 cores | 4 GB | 50 GB | 400 GB | 500 | $49/mo | +| Professional | `s-4vcpu-8gb` | 4 cores | 8 GB | 200 GB | 1 TB | 1,000 | $85/mo | +| Business | `s-4vcpu-16gb` | 4 cores | 16 GB | 500 GB | 2 TB | 2,000 | $160/mo | +| Business Plus | `s-4vcpu-32gb` | 4 cores | 32 GB | 1 TB | 5 TB | 4,000 | $299/mo | +| Enterprise | `s-8vcpu-32gb` | 8 cores | 32 GB | 2 TB | 7.5 TB | 5,000 | $425/mo | +| Enterprise Plus | `s-8vcpu-64gb` | 8 cores | 64 GB | 3 TB | 10 TB | 10,000 | $699/mo | + +The Storage and Bandwidth columns are the monthly allowances included with each tier. Usage beyond them is billed as overage, and optional features are billed as add-ons on top of the tier price: + +| Add-on | Price | +|----------------------------|---------------------------------| +| Storage overage | $0.125 per GB per month | +| Bandwidth overage | $0.08 per GB per month | +| High availability replica | 50% of the tier price, per replica | +| Point-in-time recovery | 20% of the tier price | + +You can [resize between tiers](/docs/products/databases/postgresql/scaling) at any time with zero downtime. + +# Limits {% #limits %} + +The following limits apply per database: + +| Limit | Value | +|--------------------------------|-----------------------------------------------------------| +| Databases per project | 10 | +| High availability replicas | 0 - 5 | +| IP allowlist entries | 100 | +| Backup retention | 1 - 365 days | +| Point-in-time recovery window | 1 - 35 days | +| Extensions installed | 50 | +| Max simultaneous connections | 10,000 platform cap, lower on smaller specifications | + +# Billing and plan requirements {% #plans %} + +Native databases are available on paid plans, and a payment method must be attached to your organization. Each database is billed by the hour against its [compute specification](#specifications), with separate line items for overages and add-ons. See [pricing](/pricing) for details. diff --git a/src/routes/docs/products/databases/postgresql/backups/+page.markdoc b/src/routes/docs/products/databases/postgresql/backups/+page.markdoc new file mode 100644 index 0000000000..22e538a271 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/backups/+page.markdoc @@ -0,0 +1,1299 @@ +--- +layout: article +title: Backups +description: Scheduled backups, manual backups, restores, and point-in-time recovery for your PostgreSQL database. +--- + +Native databases are backed up automatically. Backups are stored off the database instance and restorable from the API. For finer recovery granularity than scheduled backups, enable point-in-time recovery. + +# Automatic backups {% #automatic %} + +Every database gets a default backup policy when it is provisioned, so you have scheduled backups from day one. You can adjust the default policy, or add more policies with different schedules and retention windows. + +# Backup policies {% #policies %} + +A policy defines a schedule (cron expression) and a retention period in days. Create one with: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createBackupPolicy({ + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createBackupPolicy({ + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createBackupPolicy( + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_backup_policy( + database_id='<DATABASE_ID>', + policy_id='hourly', + name='Hourly', + schedule='0 * * * *', + retention=30, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_backup_policy( + database_id: '<DATABASE_ID>', + policy_id: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateBackupPolicy( + databaseId: "<DATABASE_ID>", + policyId: "hourly", + name: "Hourly", + schedule: "0 * * * *", + retention: 30 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createBackupPolicy( + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createBackupPolicy( + databaseId = "<DATABASE_ID>", + policyId = "hourly", + name = "Hourly", + schedule = "0 * * * *", + retention = 30, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createBackupPolicy( + databaseId: "<DATABASE_ID>", + policyId: "hourly", + name: "Hourly", + schedule: "0 * * * *", + retention: 30 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateBackupPolicy("<DATABASE_ID>", "hourly", "Hourly", "0 * * * *", 30) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_backup_policy("<DATABASE_ID>", "hourly", "Hourly", "0 * * * *", "<ETENTION>", None, None).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "policyId": "hourly", + "name": "Hourly", + "schedule": "0 * * * *", + "retention": 30 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/backups/policies +``` +{% /multicode %} + +| Parameter | Value | Description | +|-------------|-------------------------------------|-----------------------------------------------| +| `policyId` | custom ID or `unique()` | Policy identifier | +| `name` | text | Display name | +| `schedule` | cron expression | When backups run, for example `0 3 * * *` | +| `retention` | 1 - 365 days | How long backups from this policy are kept | + +List, update, and delete policies with `listBackupPolicies`, `updateBackupPolicy`, and `deleteBackupPolicy`. The number of policies you can create depends on your plan. + +# Manual backups {% #manual %} + +Take an on-demand backup before a risky change: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const backup = await postgresql.createBackup({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const backup = await postgresql.createBackup({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$backup = $postgresql->createBackup( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +backup = postgresql.create_backup( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +backup = postgresql.create_backup( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var backup = await postgresql.CreateBackup( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final backup = await postgresql.createBackup( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val backup = postgresql.createBackup( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let backup = try await postgresql.createBackup( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.CreateBackup("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let backup = postgresql.create_backup("<DATABASE_ID>", None).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/backups +``` +{% /multicode %} + +The backup runs asynchronously with status `pending` until it completes. List backups and check their status with `listBackups`, or fetch one with `getBackup`. + +# Restore from a backup {% #restore %} + +Restoring replaces the database's current data with the backup's contents. The database status moves to `restoring` and returns to `ready` when the restore completes; connections are unavailable during the restore. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createRestoration( + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_restoration( + database_id='<DATABASE_ID>', + type='backup', + backup_id='<BACKUP_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_restoration( + database_id: '<DATABASE_ID>', + type: 'backup', + backup_id: '<BACKUP_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateRestoration( + databaseId: "<DATABASE_ID>", + type: "backup", + backupId: "<BACKUP_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createRestoration( + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createRestoration( + databaseId = "<DATABASE_ID>", + type = "backup", + backupId = "<BACKUP_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createRestoration( + databaseId: "<DATABASE_ID>", + type: "backup", + backupId: "<BACKUP_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateRestoration( + "<DATABASE_ID>", + postgresql.WithCreateRestorationType("backup"), + postgresql.WithCreateRestorationBackupId("<BACKUP_ID>"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_restoration("<DATABASE_ID>", Some("backup"), Some("<BACKUP_ID>"), None).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "backup" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/restorations +``` +{% /multicode %} + +Track progress with `getRestoration` or the database status. + +{% info title="Restores overwrite current data" %} +Everything written after the backup was taken is lost when you restore it. If you need the current state too, take a manual backup first, or use a [branch](/docs/products/databases/postgresql/branches) to inspect data without touching the live database. +{% /info %} + +# Point-in-time recovery {% #pitr %} + +{% only_dark %} +![Point-in-time recovery settings](/images/docs/products/databases/postgresql/dark/settings-pitr.avif) +{% /only_dark %} +{% only_light %} +![Point-in-time recovery settings](/images/docs/products/databases/postgresql/settings-pitr.avif) +{% /only_light %} + +Scheduled backups recover to fixed snapshots. Point-in-time recovery (PITR) continuously archives the write-ahead log, so you can restore to any moment inside the retention window, for example the second before a bad migration ran. + +Enable PITR when creating the database, from **Settings** > **PITR** in the Console, or through the API: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + pitr=True, + pitr_retention_days=7, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + pitr: true, + pitr_retention_days: 7, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + pitr: true, + pitrRetentionDays: 7 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + pitr = true, + pitrRetentionDays = 7, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + pitr: true, + pitrRetentionDays: 7 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdatePitr(true), + postgresql.WithUpdatePitrRetentionDays(7), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, None, None, None, None, None, None, Some(true), Some(7), None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "pitr": true, + "pitrRetentionDays": 7 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +`pitrRetentionDays` accepts 1 to 35 days. PITR is billed as an add-on on top of your specification; see [pricing](/pricing). + +## Check the recovery window {% #pitr-windows %} + +You can retrieve the time ranges you can restore to. Right after enabling PITR, no recovery window is available yet; the window opens once continuous archiving has captured its first segment. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const windows = await postgresql.getPitr({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const windows = await postgresql.getPitr({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$windows = $postgresql->getPitr( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +windows = postgresql.get_pitr( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +windows = postgresql.get_pitr( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var windows = await postgresql.GetPitr( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final windows = await postgresql.getPitr( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val windows = postgresql.getPitr( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let windows = try await postgresql.getPitr( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.GetPitr("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let windows = postgresql.get_pitr("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/pitr +``` +{% /multicode %} + +## Restore to a point in time {% #pitr-restore %} + +Pass a Unix timestamp inside the recovery window: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createRestoration( + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_restoration( + database_id='<DATABASE_ID>', + type='pitr', + target_time=1767225600, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_restoration( + database_id: '<DATABASE_ID>', + type: 'pitr', + target_time: 1767225600, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateRestoration( + databaseId: "<DATABASE_ID>", + type: "pitr", + targetTime: 1767225600 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createRestoration( + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createRestoration( + databaseId = "<DATABASE_ID>", + type = "pitr", + targetTime = 1767225600, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createRestoration( + databaseId: "<DATABASE_ID>", + type: "pitr", + targetTime: 1767225600 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateRestoration( + "<DATABASE_ID>", + postgresql.WithCreateRestorationType("pitr"), + postgresql.WithCreateRestorationTargetTime(1767225600), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_restoration("<DATABASE_ID>", Some("pitr"), None, Some(1767225600)).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "pitr", + "targetTime": 1767225600 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/restorations +``` +{% /multicode %} + +Like a backup restore, a PITR restore is in-place: the database is unavailable while restoring and everything after the target time is discarded. + +# Limits {% #limits %} + +| Limit | Value | +|------------------|-----------------| +| Backup retention | 1 - 365 days | +| PITR retention | 1 - 35 days | +| Backup policies | Plan-dependent | diff --git a/src/routes/docs/products/databases/postgresql/branches/+page.markdoc b/src/routes/docs/products/databases/postgresql/branches/+page.markdoc new file mode 100644 index 0000000000..dd3f350d48 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/branches/+page.markdoc @@ -0,0 +1,677 @@ +--- +layout: article +title: Branches +description: Spin up an ephemeral, isolated copy of your PostgreSQL database in seconds from a storage snapshot. Use branches for previews, migrations, and testing. +--- + +A branch is a short-lived, isolated copy of your database. It has its own endpoint and reuses the parent's credentials, because it is a snapshot copy of the parent's storage volume taken at a point in time. Branches are not replicas: once created, they diverge from the parent and never sync back. + +{% info title="Branches do not merge back" %} +There is no branch merge operation. Use a branch to validate a migration, data repair, or application change, then intentionally cut application traffic over to the validated database or copy the data you want back with engine-native tools. Appwrite does not reconcile two diverged database histories for you. +{% /info %} + +Use cases: + +- **Preview environments**: one branch per pull request, destroyed when the PR closes +- **Test migrations**: apply a destructive `ALTER` against the branch first, observe the behavior, then run it against the source +- **Reproduce a bug**: branch the database, attach a debugger, throw the branch away when done +- **Heavy analytical queries**: `EXPLAIN ANALYZE` experiments against a branch cannot slow down the primary + +# How it works {% #how %} + +Creating a branch takes a fast `CHECKPOINT` on the parent, snapshots the parent's storage volume with a near-instant copy-on-write operation, and provisions a branch instance from the snapshot on the same engine version with its own isolated storage. Branch compute is fixed and lightweight, enough to validate a change rather than carry production load, and is not configurable. The parent and the branch share storage at the moment of branching; storage cost grows as the two diverge. + +# Create a branch {% #create %} + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_branch( + database_id='<DATABASE_ID>', + branch_id='preview', + ttl=86400, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_branch( + database_id: '<DATABASE_ID>', + branch_id: 'preview', + ttl: 86400, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview", + ttl: 86400 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createBranch( + databaseId = "<DATABASE_ID>", + branchId = "preview", + ttl = 86400, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview", + ttl: 86400 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateBranch( + "<DATABASE_ID>", + postgresql.WithCreateBranchBranchId("preview"), + postgresql.WithCreateBranchTtl(86400), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_branch("<DATABASE_ID>", Some("preview"), Some(86400)).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "branchId": "preview", + "ttl": 86400 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/branches +``` +{% /multicode %} + +Both fields are optional: + +| Field | Default | Purpose | +|------------|--------------------|-----------------------------------------------------------------------| +| `branchId` | auto-generated | Custom ID (`a-z`, `A-Z`, `0-9`, `.`, `-`, `_`, max 36 chars) | +| `ttl` | `86400` (24 hours) | Lifetime in seconds before the branch expires (min 300, max 604800) | + +The call is asynchronous and returns immediately while the branch provisions in the background. When the TTL elapses, the branch and its storage are removed automatically. + +# List branches and connect {% #list %} + +Each entry carries its metadata and connection details, so there is no separate credentials call: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const branches = await postgresql.listBranches({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const branches = await postgresql.listBranches({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$branches = $postgresql->listBranches( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +branches = postgresql.list_branches( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +branches = postgresql.list_branches( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var branches = await postgresql.ListBranches( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final branches = await postgresql.listBranches( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val branches = postgresql.listBranches( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let branches = try await postgresql.listBranches( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.ListBranches("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let branches = postgresql.list_branches("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/branches +``` +{% /multicode %} + +A branch gets its own hostname, and reuses the parent's username and password because it is a snapshot copy of the parent's storage. The port is the standard `5432`; branches have no connection pooler. Connect with the branch's `connectionString` straight from the response: + +```bash +psql "<branch connectionString>" +``` + +# Delete a branch {% #delete %} + +Deleting a branch removes the branch's instance, its storage volume, and the underlying snapshot. There is no soft delete: once the branch is gone, the data is gone. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.deleteBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.deleteBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->deleteBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.delete_branch( + database_id='<DATABASE_ID>', + branch_id='preview', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.delete_branch( + database_id: '<DATABASE_ID>', + branch_id: 'preview', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.DeleteBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.deleteBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.deleteBranch( + databaseId = "<DATABASE_ID>", + branchId = "preview", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.deleteBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.DeleteBranch("<DATABASE_ID>", "preview") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.delete_branch("<DATABASE_ID>", "preview").await?; + + Ok(()) +} +``` +```bash +curl -X DELETE \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/branches/preview +``` +{% /multicode %} + +# Billing {% #billing %} + +A branch runs on fixed, lightweight compute, so its cost is dominated by storage. The snapshot is free at the moment of branching; storage cost accumulates as the branch's data diverges from the parent. There is no separate branch line item, branches roll into your regular database storage and compute totals. + +# Use case: per-PR preview database {% #ci-example %} + +A CI pipeline that branches on every pull request and tears down on close: + +```yaml +name: preview-database + +on: + pull_request: + types: [opened, reopened, closed] + +jobs: + branch: + if: github.event.action != 'closed' + runs-on: ubuntu-latest + steps: + - name: Create branch + run: | + curl -X POST \ + -H "X-Appwrite-Project: ${{ vars.APPWRITE_PROJECT_ID }}" \ + -H "X-Appwrite-Key: ${{ secrets.APPWRITE_API_KEY }}" \ + -H "Content-Type: application/json" \ + -d '{"branchId": "pr-${{ github.event.number }}", "ttl": 604800}' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/${{ vars.DATABASE_ID }}/branches || true + + teardown: + if: github.event.action == 'closed' + runs-on: ubuntu-latest + steps: + - name: Delete branch + run: | + curl -X DELETE \ + -H "X-Appwrite-Project: ${{ vars.APPWRITE_PROJECT_ID }}" \ + -H "X-Appwrite-Key: ${{ secrets.APPWRITE_API_KEY }}" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/${{ vars.DATABASE_ID }}/branches/pr-${{ github.event.number }} +``` + +The `|| true` on the create call makes the workflow idempotent: if the branch already exists, the call is a no-op. diff --git a/src/routes/docs/products/databases/postgresql/connection-pooling/+page.markdoc b/src/routes/docs/products/databases/postgresql/connection-pooling/+page.markdoc new file mode 100644 index 0000000000..63fa48e364 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/connection-pooling/+page.markdoc @@ -0,0 +1,276 @@ +--- +layout: article +title: Connection pooling +description: Configure the per-database connection pooler to serve many short-lived clients, with automatic read/write splitting when high availability is enabled. +--- + +PostgreSQL creates one backend process per connection, which makes each connection relatively expensive. Serverless functions, edge runtimes, and horizontally scaled application servers can easily exhaust the connection limit of your specification. The connection pooler sits in front of your database and multiplexes many client connections onto a small pool of server connections. + +The pooler runs next to your database and is reachable on port `6432` on the same hostname. Your application connects to the pooler exactly like it would connect to PostgreSQL directly, same credentials, same TLS. The pooler is available on specifications that run on dedicated compute; the smallest specifications run on shared capacity and do not include it. + +# Pool modes {% #modes %} + +| Mode | Behavior | Use for | +|---------------|-----------------------------------------------------------------------------|------------------------------------------------| +| `transaction` | A server connection is assigned for the duration of a transaction, then returned to the pool | Serverless and most applications (default) | +| `session` | A server connection is held for the entire client session | Session-level features: prepared statements, advisory locks, `LISTEN/NOTIFY`, temporary tables | + +Transaction mode gives the highest connection multiplexing but does not support session-level state. If your framework prepares statements at the session level, either switch the driver to unnamed prepared statements or use session mode. + +# Configure the pooler {% #configure %} + +Read the current pooler configuration with `getPooler`, and tune the pool mode and sizes with `updatePooler`. All parameters are optional; omitted values keep their current setting. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const pooler = await postgresql.updatePooler({ + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const pooler = await postgresql.updatePooler({ + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$pooler = $postgresql->updatePooler( + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +pooler = postgresql.update_pooler( + database_id='<DATABASE_ID>', + mode='transaction', + max_connections=500, + default_pool_size=25, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +pooler = postgresql.update_pooler( + database_id: '<DATABASE_ID>', + mode: 'transaction', + max_connections: 500, + default_pool_size: 25, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var pooler = await postgresql.UpdatePooler( + databaseId: "<DATABASE_ID>", + mode: "transaction", + maxConnections: 500, + defaultPoolSize: 25 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final pooler = await postgresql.updatePooler( + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val pooler = postgresql.updatePooler( + databaseId = "<DATABASE_ID>", + mode = "transaction", + maxConnections = 500, + defaultPoolSize = 25, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let pooler = try await postgresql.updatePooler( + databaseId: "<DATABASE_ID>", + mode: "transaction", + maxConnections: 500, + defaultPoolSize: 25 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.UpdatePooler( + "<DATABASE_ID>", + postgresql.WithUpdatePoolerMode("transaction"), + postgresql.WithUpdatePoolerMaxConnections(500), + postgresql.WithUpdatePoolerDefaultPoolSize(25), + ) + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let pooler = postgresql.update_pooler("<DATABASE_ID>", Some("transaction"), Some(500), Some(25), None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "mode": "transaction", + "maxConnections": 500, + "defaultPoolSize": 25 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/pooler +``` +{% /multicode %} + +| Parameter | Range | Description | +|----------------------|----------------|--------------------------------------------------------------------------------| +| `mode` | `transaction`, `session` | How long a server connection stays assigned to a client | +| `maxConnections` | 10 - 10,000 | Maximum pooled client connections. Cannot exceed the connection cap of your specification | +| `defaultPoolSize` | 1 - 1,000 | Server connections per user in the pool | +| `readWriteSplitting` | boolean | Route `SELECT`s to replicas, writes and locked reads to the primary. Defaults to on when high availability is enabled | + +The same settings are available in the Console under **Settings** > **Connection pooler**. + +# Connect through the pooler {% #connect %} + +Take your normal connection string and change the port to `6432`: + +```bash +postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database> +``` + +Point your application's runtime traffic at the pooler port. Keep migrations and long-lived administrative sessions on the direct port `5432`, schema changes and tools like `pg_dump` expect session semantics and can misbehave in transaction mode. + +# Read/write splitting {% #read-write-splitting %} + +When [high availability](/docs/products/databases/postgresql/high-availability) is enabled, the pooler can route read-only statements to replicas and everything else to the primary. `SELECT ... FOR UPDATE` and statements inside explicit transactions go to the primary. Replicas replicate asynchronously by default, so a read that immediately follows a write can be stale; use `sync` or `quorum` replication mode if you need read-your-writes consistency through the pooler. + +# Sizing guidance {% #sizing %} + +A useful starting point for `defaultPoolSize` is `4 x CPU cores` of your specification, and it rarely helps to go above your specification's connection cap divided by the number of databases sharing the workload. Watch the connection metrics in the [Monitor tab](/docs/products/databases/postgresql/monitoring) and increase the pool only when clients queue for a connection. + +# When not to use the pooler {% #when-not %} + +Skip the pooler when you have a small, fixed number of long-lived application servers that each maintain their own driver-level pool, and their combined connection count fits comfortably in your specification's limit. Adding a pooler in that setup only adds a hop. diff --git a/src/routes/docs/products/databases/postgresql/connections/+page.markdoc b/src/routes/docs/products/databases/postgresql/connections/+page.markdoc new file mode 100644 index 0000000000..300a2cc205 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/connections/+page.markdoc @@ -0,0 +1,541 @@ +--- +layout: article +title: Connections +description: Connect to your PostgreSQL database with psql or any standard driver. Retrieve connection details and rotate the primary password. +--- + +A native PostgreSQL database exposes a PostgreSQL endpoint over TLS. You connect to it the same way you would connect to any PostgreSQL server: with `psql`, any driver in any language, or any ORM. + +# Get connection details in the Console {% #console %} + +{% only_dark %} +![Database credentials dialog](/images/docs/products/databases/postgresql/dark/credentials.avif) +{% /only_dark %} +{% only_light %} +![Database credentials dialog](/images/docs/products/databases/postgresql/credentials.avif) +{% /only_light %} + +The fastest way to connect is through the Appwrite Console: + +1. In your project, go to **Databases** and select your PostgreSQL database. +2. Click **Credentials** to open the credentials dialog. +3. Copy the individual values from the **Details** tab, or switch to the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab for a ready-made snippet. +4. Paste it into `psql`, your ORM, or your database client. + +Use the API flow below when you need to fetch connection details from automation or inject them into your deployment pipeline. + +# Get connection details with the API {% #credentials %} + +The connection details are returned on the database object itself. Fetch the database with an API key that has the `databases.read` scope: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const database = await postgresql.get({ + databaseId: '<DATABASE_ID>', +}); + +console.log(database.connectionString); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const database = await postgresql.get({ + databaseId: '<DATABASE_ID>', +}); + +console.log(database.connectionString); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$database = $postgresql->get(databaseId: '<DATABASE_ID>'); + +echo $database['connectionString']; +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +database = postgresql.get(database_id='<DATABASE_ID>') + +print(database.connection_string) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +database = postgresql.get(database_id: '<DATABASE_ID>') + +puts database.connection_string +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var database = await postgresql.Get(databaseId: "<DATABASE_ID>"); + +Console.WriteLine(database.ConnectionString); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final database = await postgresql.get( + databaseId: '<DATABASE_ID>', +); + +print(database.connectionString); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val database = postgresql.get( + databaseId = "<DATABASE_ID>", +) + +println(database.connectionString) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let database = try await postgresql.get( + databaseId: "<DATABASE_ID>" +) + +print(database.connectionString) +``` +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + postgresql := appwrite.NewPostgresql(client) + + database, err := postgresql.Get("<DATABASE_ID>") + if err != nil { + panic(err) + } + fmt.Println(database.ConnectionString) +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let database = postgresql.get("<DATABASE_ID>").await?; + + println!("{}", database.connection_string); + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +The response includes the connection fields alongside the database configuration: + +```json +{ + "$id": "<DATABASE_ID>", + "name": "main", + "engine": "postgresql", + "version": "18", + "status": "ready", + "hostname": "db-<hash>.<region>.appwrite.center", + "connectionPort": 5432, + "connectionUser": "admin", + "connectionPassword": "<password>", + "connectionString": "postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>" +} +``` + +The primary user is `admin` and the database name is generated per database. + +# Connect with psql {% #psql %} + +Pass the connection string, or the individual values, to `psql`. The Console credentials dialog also has a **psql** tab with the command ready to copy. + +```bash +psql "postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>" +``` + +Or with individual flags: + +```bash +psql -h db-<hash>.<region>.appwrite.center -p 5432 -U admin -d <database> +``` + +# Rotate the primary password {% #rotate %} + +If your password is compromised, or your security policy requires regular rotation, you can issue a new password for the primary user. The change is applied atomically in the engine, and the response carries the new connection details. Existing sessions stay alive until they disconnect, then have to authenticate with the new password. The API key needs the `databases.write` scope. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const database = await postgresql.updateCredentials({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const database = await postgresql.updateCredentials({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$database = $postgresql->updateCredentials(databaseId: '<DATABASE_ID>'); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +database = postgresql.update_credentials(database_id='<DATABASE_ID>') +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +database = postgresql.update_credentials(database_id: '<DATABASE_ID>') +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var database = await postgresql.UpdateCredentials(databaseId: "<DATABASE_ID>"); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final database = await postgresql.updateCredentials( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val database = postgresql.updateCredentials( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let database = try await postgresql.updateCredentials( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + postgresql := appwrite.NewPostgresql(client) + + _, err := postgresql.UpdateCredentials("<DATABASE_ID>") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let database = postgresql.update_credentials("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/credentials +``` +{% /multicode %} + +# Database roles {% #roles %} + +{% only_dark %} +![Database roles tab](/images/docs/products/databases/postgresql/dark/roles-tab.avif) +{% /only_dark %} +{% only_light %} +![Database roles tab](/images/docs/products/databases/postgresql/roles-tab.avif) +{% /only_light %} + +The primary `admin` role owns the default database. For applications that need narrower access, such as a read-only reporting user or a write-only ingestion user, create additional PostgreSQL roles from the **Roles** tab of your database in the Console. The list shows each role's login, role-creation, and database-creation privileges, its connection limit, and its role memberships. + +Roles are standard PostgreSQL roles, so `GRANT` and `REVOKE` statements in the [SQL editor](/docs/products/databases/postgresql/quick-start#first-queries) or `psql` work on them like on any PostgreSQL server. The `postgres` superuser is managed by Appwrite and cannot be modified. + +# TLS {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at the edge and forwarded to your database over the internal network. The connection string from the credentials dialog carries the right SSL settings for your environment, so drivers need no extra configuration. + +For IP allowlists and other network controls, see [network security](/docs/products/databases/postgresql/network-security). + +# Connecting from an application {% #drivers %} + +There is nothing Appwrite-specific about the driver setup. A few example snippets: + +{% multicode %} +```server-nodejs +import { Client } from 'pg'; + +const client = new Client({ + connectionString: process.env.DATABASE_URL, +}); + +await client.connect(); +const { rows } = await client.query('SELECT now()'); +console.log(rows); +``` +```server-python +import os +import psycopg + +with psycopg.connect(os.environ['DATABASE_URL']) as conn: + with conn.cursor() as cur: + cur.execute('SELECT now()') + print(cur.fetchone()) +``` +```server-php +<?php + +$pdo = new PDO(getenv('DATABASE_DSN')); + +$rows = $pdo->query('SELECT now()')->fetchAll(); +print_r($rows); +``` +```server-go +package main + +import ( + "context" + "fmt" + "os" + + "github.com/jackc/pgx/v5" +) + +func main() { + conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL")) + if err != nil { + panic(err) + } + defer conn.Close(context.Background()) + + var now string + if err := conn.QueryRow(context.Background(), "SELECT now()").Scan(&now); err != nil { + panic(err) + } + fmt.Println(now) +} +``` +```server-rust +use tokio_postgres::NoTls; + +#[tokio::main] +async fn main() -> Result<(), tokio_postgres::Error> { + let url = std::env::var("DATABASE_URL").expect("DATABASE_URL"); + let (client, connection) = tokio_postgres::connect(&url, NoTls).await?; + + tokio::spawn(async move { + if let Err(e) = connection.await { + eprintln!("connection error: {e}"); + } + }); + + let row = client.query_one("SELECT now()::text", &[]).await?; + let now: &str = row.get(0); + println!("{now}"); + + Ok(()) +} +``` +{% /multicode %} + +Set `DATABASE_URL` to the connection string from the credentials dialog. Once you can run a query, you can use any tool that talks the PostgreSQL wire protocol: pgAdmin, DataGrip, your ORM of choice, your migration tool of choice. Appwrite gets out of the way. diff --git a/src/routes/docs/products/databases/postgresql/extensions/+page.markdoc b/src/routes/docs/products/databases/postgresql/extensions/+page.markdoc new file mode 100644 index 0000000000..0d9c0e155f --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/extensions/+page.markdoc @@ -0,0 +1,630 @@ +--- +layout: article +title: Extensions +description: Install and manage PostgreSQL extensions like PostGIS, pgvector, and pg_trgm on your database, at no extra cost. +--- + +PostgreSQL exposes a rich extension ecosystem: PostGIS for geospatial data, pgvector for embeddings, pg_trgm for fuzzy search, and more. Native PostgreSQL databases on Appwrite support managing extensions through the API, at no extra cost. + +# Install an extension {% #install %} + +Pass the extension name as it appears in the [extension catalog](#list). The install runs asynchronously: the request returns immediately and a worker runs `CREATE EXTENSION` inside the database, typically within a few seconds. The database must be in the `ready` state. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createExtension({ + databaseId: '<DATABASE_ID>', + name: 'vector', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createExtension({ + databaseId: '<DATABASE_ID>', + name: 'vector', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createExtension( + databaseId: '<DATABASE_ID>', + name: 'vector', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_extension( + database_id='<DATABASE_ID>', + name='vector', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_extension( + database_id: '<DATABASE_ID>', + name: 'vector', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateExtension( + databaseId: "<DATABASE_ID>", + name: "vector" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createExtension( + databaseId: '<DATABASE_ID>', + name: 'vector', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createExtension( + databaseId = "<DATABASE_ID>", + name = "vector", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createExtension( + databaseId: "<DATABASE_ID>", + name: "vector" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateExtension("<DATABASE_ID>", "vector") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_extension("<DATABASE_ID>", "vector").await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "name": "vector" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/extensions +``` +{% /multicode %} + +Requesting an extension that is not available fails with an error listing the supported extension names. + +# List extensions {% #list %} + +Lists the extensions installed on the database and the extensions available to install: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const extensions = await postgresql.listExtensions({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const extensions = await postgresql.listExtensions({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$extensions = $postgresql->listExtensions( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +extensions = postgresql.list_extensions( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +extensions = postgresql.list_extensions( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var extensions = await postgresql.ListExtensions( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final extensions = await postgresql.listExtensions( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val extensions = postgresql.listExtensions( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let extensions = try await postgresql.listExtensions( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.ListExtensions("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let extensions = postgresql.list_extensions("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/extensions +``` +{% /multicode %} + +The response contains two arrays of extension names: + +```json +{ + "installed": ["plpgsql", "vector"], + "available": ["postgis", "pg_trgm", "pgcrypto", "hstore", "citext", "..."] +} +``` + +The available list is reported by the engine for your PostgreSQL version, so it always reflects what can actually be installed on your database. + +# Remove an extension {% #remove %} + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.deleteExtension({ + databaseId: '<DATABASE_ID>', + extensionName: 'vector', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.deleteExtension({ + databaseId: '<DATABASE_ID>', + extensionName: 'vector', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->deleteExtension( + databaseId: '<DATABASE_ID>', + extensionName: 'vector', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.delete_extension( + database_id='<DATABASE_ID>', + extension_name='vector', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.delete_extension( + database_id: '<DATABASE_ID>', + extension_name: 'vector', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.DeleteExtension( + databaseId: "<DATABASE_ID>", + extensionName: "vector" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.deleteExtension( + databaseId: '<DATABASE_ID>', + extensionName: 'vector', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.deleteExtension( + databaseId = "<DATABASE_ID>", + extensionName = "vector", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.deleteExtension( + databaseId: "<DATABASE_ID>", + extensionName: "vector" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.DeleteExtension("<DATABASE_ID>", "vector") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.delete_extension("<DATABASE_ID>", "vector").await?; + + Ok(()) +} +``` +```bash +curl -X DELETE \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/extensions/vector +``` +{% /multicode %} + +If there are objects that depend on the extension (tables, indexes, columns), the drop fails. Drop the dependents first, or run `DROP EXTENSION ... CASCADE` yourself through SQL to acknowledge what gets removed. + +# Common extensions {% #common %} + +A few extensions worth knowing about: + +| Name | Use case | +|-------------|-----------------------------------------------------------------------| +| `vector` | Vector data type and similarity search for embeddings (pgvector) | +| `postgis` | Spatial data types, indexes, and functions for geographic objects | +| `pg_trgm` | Trigram matching for fuzzy string search and similarity | +| `pgcrypto` | Cryptographic functions for hashing and encryption | +| `uuid-ossp` | Generate universally unique identifiers (UUIDs) | +| `hstore` | Store sets of key/value pairs within a single column | +| `citext` | Case-insensitive character string data type | +| `ltree` | Represent and query hierarchical tree-like data | + +List the extensions on your database for the full catalog available to it. + +# Limits {% #limits %} + +| Limit | Value | +|---------------------------------|------------| +| Maximum extensions per database | 50 | +| Extension install and uninstall | Free | + +Extensions are installed at their default version for your database's PostgreSQL major version. diff --git a/src/routes/docs/products/databases/postgresql/high-availability/+page.markdoc b/src/routes/docs/products/databases/postgresql/high-availability/+page.markdoc new file mode 100644 index 0000000000..f5036f1f6e --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/high-availability/+page.markdoc @@ -0,0 +1,638 @@ +--- +layout: article +title: High availability +description: Run up to five read replicas with asynchronous, synchronous, or quorum replication and automatic failover for your PostgreSQL database. +--- + +A single database instance is a single point of failure. High availability (HA) adds streaming replicas next to your primary: they replicate continuously, serve read traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling), and take over automatically when the primary becomes unhealthy. + +High availability requires a specification that runs on dedicated compute; the smallest specifications run on shared capacity and do not support replicas. + +# How it works {% #how-it-works %} + +Replicas receive changes from the primary through PostgreSQL streaming replication (WAL shipping). Each replica is a full copy of the database on its own compute. When the primary fails, the most caught-up replica is promoted to primary and the hostname is repointed, your application keeps connecting to the same host and port. + +# Replication modes {% #sync-modes %} + +| Mode | Behavior | Trade-off | +|----------|----------------------------------------------------------------------------------|--------------------------------------------------| +| `async` | The primary commits without waiting for replicas | Fastest writes; a failover can lose the last moments of writes | +| `sync` | The primary waits for one replica to confirm each commit | No data loss on single failure; slightly higher write latency | +| `quorum` | The primary waits for a majority of replicas to confirm each commit | Strongest durability; highest write latency | + +`async` is the default. For production workloads that cannot lose acknowledged writes, use `sync` with at least two replicas. + +# Enable high availability {% #enable %} + +{% only_dark %} +![High availability settings](/images/docs/products/databases/postgresql/dark/settings-high-availability.avif) +{% /only_dark %} +{% only_light %} +![High availability settings](/images/docs/products/databases/postgresql/settings-high-availability.avif) +{% /only_light %} + +Set the replica count and replication mode on the database, from **Settings** > **High availability** in the Console or through the API: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + replicas=2, + sync_mode='sync', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + replicas: 2, + sync_mode: 'sync', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + replicas: 2, + syncMode: "sync" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + replicas = 2, + syncMode = "sync", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + replicas: 2, + syncMode: "sync" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateReplicas(2), + postgresql.WithUpdateSyncMode("sync"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, None, None, Some("sync"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "replicas": 2, + "syncMode": "sync" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +Adding replicas provisions them online; the primary keeps serving traffic while each replica seeds from a snapshot and catches up. Setting `replicas` back to `0` disables HA. + +# Check replication status {% #status %} + +You can check each replica's role, health, and replication lag: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const replicas = await postgresql.getReplicas({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const replicas = await postgresql.getReplicas({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$replicas = $postgresql->getReplicas( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +replicas = postgresql.get_replicas( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +replicas = postgresql.get_replicas( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var replicas = await postgresql.GetReplicas( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final replicas = await postgresql.getReplicas( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val replicas = postgresql.getReplicas( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let replicas = try await postgresql.getReplicas( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.GetReplicas("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let replicas = postgresql.get_replicas("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/replicas +``` +{% /multicode %} + +# Automatic failover {% #automatic-failover %} + +Appwrite continuously health-checks the primary. When it becomes unresponsive, the platform promotes the replica with the least replication lag, repoints the database hostname, and marks the old primary for replacement. Your application reconnects to the same hostname; a well-configured driver pool retries and recovers without intervention. + +With `async` replication, writes that had not yet reached the promoted replica are lost in a failover. Use `sync` or `quorum` if that is unacceptable. + +# Manual failover {% #manual-failover %} + +Trigger a failover yourself, for example to test your application's recovery behavior. Optionally pass `targetReplicaId` to promote a specific replica. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createFailover({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createFailover({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createFailover( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_failover( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_failover( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateFailover( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createFailover( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createFailover( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createFailover( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateFailover("<DATABASE_ID>") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_failover("<DATABASE_ID>", None).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/failovers +``` +{% /multicode %} + +# Reading from replicas {% #reads %} + +Replicas serve read traffic when [read/write splitting](/docs/products/databases/postgresql/connection-pooling#read-write-splitting) is enabled on the connection pooler. With `async` replication, a read that immediately follows a write can return stale data. Route reads that must see the latest write to the primary, or use `sync` replication. + +# Limits and billing {% #limits %} + +- Up to 5 replicas per database; the maximum depends on your plan. +- Each replica runs on the same specification as the primary and is billed as an add-on. See [pricing](/pricing). +- Replicas live in the same region as the primary. diff --git a/src/routes/docs/products/databases/postgresql/integrations/auth-js/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/auth-js/+page.markdoc new file mode 100644 index 0000000000..f2feae0ebd --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/auth-js/+page.markdoc @@ -0,0 +1,229 @@ +--- +layout: article +title: Auth.js +description: Use an Appwrite native PostgreSQL database as the backing store for Auth.js (NextAuth.js). Persist users, accounts, and sessions through a Prisma or Drizzle adapter, pooled from serverless runtimes. +--- + +[Auth.js](https://authjs.dev/) (formerly NextAuth.js) persists users, accounts, sessions, and verification tokens through a database adapter. When you configure an adapter, those records live in your own database instead of only in a cookie, which is what makes database sessions, account linking, and email sign-in possible. An Appwrite [native PostgreSQL database](/docs/products/databases/postgresql) is a standard PostgreSQL engine, so any Auth.js adapter built on a PostgreSQL ORM works against it with no Appwrite-specific configuration. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [native PostgreSQL databases](/docs/products/databases/postgresql) to create one, then open the database in the Console and click **Credentials**. The primary user is `admin`, and each database has its own generated database name. +{% /info %} + +# Choose an adapter {% #adapter %} + +Auth.js doesn't talk to the database directly, it goes through an official adapter. For a native PostgreSQL database, use whichever ORM you already run: + +- **Prisma** through [`@auth/prisma-adapter`](https://authjs.dev/getting-started/adapters/prisma). See the [Prisma guide](/docs/products/databases/postgresql/integrations/prisma) for the full datasource, pooling, and migration setup. +- **Drizzle** through [`@auth/drizzle-adapter`](https://authjs.dev/getting-started/adapters/drizzle). See the [Drizzle guide](/docs/products/databases/postgresql/integrations/drizzle) for the driver connection and `drizzle-kit` migration setup. + +The connection details, ports, and pooling behaviour are the same for both. The rest of this page shows the Prisma path and notes the Drizzle equivalents. + +# Set the connection string {% #connection-string %} + +Auth.js adapters read the database URL from the environment, exactly like any other ORM workload. Copy the connection string from the Console **Credentials** dialog or from `postgresql.get()` in the [API](/docs/products/databases/postgresql/connections#credentials), and give the adapter two URLs: a **pooled** one for the running app and a **direct** one for migrations. + +```env +# Runtime: pooled, transaction mode (prepared statements off) +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?sslmode=require&pgbouncer=true" + +# Migrations: direct connection to the engine +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" + +# Development migrations: separate branch or database used only by Prisma Migrate +SHADOW_DATABASE_URL="postgresql://admin:<password>@db-<shadow-hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +The app runtime connects on the [pooler](/docs/products/databases/postgresql/connection-pooling) port (`6432`), and schema migrations run over the direct engine port (`5432`). The TLS parameter (`sslmode=require`) is already part of the string Appwrite returns. The edge proxy terminates TLS, so no certificate setup is needed. For full certificate verification (`verify-full`) or mTLS, see the [Network](/docs/products/databases/postgresql/network-security) page. + +`SHADOW_DATABASE_URL` must point at a separate PostgreSQL database or branch. Prisma Migrate uses it during `migrate dev` to detect schema drift. It can reset the shadow target, so never set it to the same value as `DIRECT_URL`. `migrate deploy` does not use the shadow database. + +# Create the adapter schema {% #schema %} + +Auth.js ships a [canonical schema](https://authjs.dev/getting-started/database#models) of four core models, `User`, `Account`, `Session`, and `VerificationToken`. With Prisma, add them to `prisma/schema.prisma` and keep connection URLs in `prisma.config.ts` and your Prisma Client setup: + +```prisma +datasource db { + provider = "postgresql" +} +``` + +The generator and models are engine-agnostic: + +```prisma +generator client { + provider = "prisma-client-js" +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + image String? + accounts Account[] + sessions Session[] +} + +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? @db.Text + access_token String? @db.Text + expires_at Int? + token_type String? + scope String? + id_token String? @db.Text + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) +} + +model VerificationToken { + identifier String + token String + expires DateTime + + @@unique([identifier, token]) +} +``` + +Configure Prisma CLI commands in `prisma.config.ts`. The CLI uses `DIRECT_URL` because migrations need a direct session connection, while Prisma Client uses the pooled `DATABASE_URL` at runtime. + +```ts +import 'dotenv/config'; +import { defineConfig, env } from 'prisma/config'; + +export default defineConfig({ + schema: 'prisma/schema.prisma', + migrations: { + path: 'prisma/migrations', + }, + datasource: { + url: env('DIRECT_URL'), + shadowDatabaseUrl: process.env.SHADOW_DATABASE_URL, + }, +}); +``` + +With Drizzle, define the equivalent PostgreSQL tables in your schema file and generate a `drizzle-kit` migration instead. The table shapes are the same, and the official adapter docs include a ready-made PostgreSQL schema. + +# Run the migration over the direct connection {% #migrate %} + +Create the tables before the app serves any traffic. Prisma Migrate connects with `DIRECT_URL` (the engine port), so it gets a real session connection with full DDL privileges: + +```bash +npx prisma migrate dev --name authjs-init +``` + +In CI or production, apply already-generated migrations without prompting: + +```bash +npx prisma migrate deploy +``` + +If your build does not run `migrate dev`, generate Prisma Client explicitly: + +```bash +npx prisma generate +``` + +With Drizzle, run `drizzle-kit push` (or `migrate()`) against the same direct URL. The primary `admin` user owns the default database and can run schema changes. Narrower [connection users](/docs/products/databases/postgresql/connections#roles) (`readonly` / `readwrite`) intentionally cannot run DDL, so always migrate as `admin`. + +# Wire the adapter into Auth.js {% #config %} + +Create one Prisma Client with the PostgreSQL driver adapter, pointed at the pooled `DATABASE_URL`: + +```ts +import { PrismaPg } from '@prisma/adapter-pg'; +import { PrismaClient } from '@prisma/client'; + +const connectionString = process.env.DATABASE_URL; +if (!connectionString) throw new Error('DATABASE_URL is required'); + +const adapter = new PrismaPg({ connectionString }); + +export const prisma = new PrismaClient({ adapter }); +``` + +Pass the adapter to your Auth.js config through the `adapter` key. The adapter uses Prisma Client for every runtime read and write: + +```ts +import NextAuth from 'next-auth'; +import { PrismaAdapter } from '@auth/prisma-adapter'; +import { prisma } from '@/prisma'; + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: PrismaAdapter(prisma), + providers: [ + // your providers, e.g. GitHub, Google, Resend + ], +}); +``` + +The Drizzle equivalent is identical apart from the import, `adapter: DrizzleAdapter(db)` from `@auth/drizzle-adapter`, where `db` is your Drizzle instance. + +# Database vs JWT sessions {% #sessions %} + +Auth.js has two session strategies, and the adapter changes the default: + +- **`database`**: the default *once an adapter is configured*. A session row is written to the `Session` table and only an opaque session ID is stored in an `HttpOnly` cookie. Each request looks the session up in the native PostgreSQL database. Sessions can be revoked server-side. +- **`jwt`**: the default when no adapter is set. Session state lives entirely in a signed cookie, and the database is not read on the session path. + +You can set it explicitly: + +```ts +export const { handlers, auth } = NextAuth({ + adapter: PrismaAdapter(prisma), + session: { strategy: 'database' }, + providers: [], +}); +``` + +Even with `strategy: 'jwt'`, the adapter still persists users and linked accounts, so account linking and the admin view of users keep working; only the per-request session read moves off the database. + +# Pooling note {% #pooling %} + +On serverless and edge platforms (Vercel, Netlify, Cloudflare) every invocation is a fresh instance, so connecting straight to the engine fans out into more backend connections than it allows. Routing through the pooler in **transaction mode** (the default) absorbs that churn. Auth.js tables are write-light and read-heavy, exactly the access pattern transaction-mode pooling handles best, so the pooled `DATABASE_URL` above is the right default for the app runtime. + +Transaction mode does not hold a backend connection across statements, so server-side prepared statements are unavailable. The pooled Prisma URL carries `pgbouncer=true`, and Drizzle's `postgres.js` client should be created with `prepare: false`. Migrations always use the direct connection, so they keep a full session connection. If you need session-bound features, switch the pooler to **session mode**, see the [pooler modes](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string, ideal for a pull-request preview or an integration-test job that signs users in and out against throwaway data: + +1. Create a branch from the API and read its `connectionString`. +2. Export the direct variant as `DIRECT_URL` and the pooled variant as `DATABASE_URL`. +3. Run `prisma migrate deploy` (or `drizzle-kit push`) and your auth flow against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the Auth.js tables already exist with realistic data, so preview sign-ins behave like production without touching it. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/integrations/prisma" title="Prisma" %} +Datasource, pooled and direct URLs, and migrations for the Prisma adapter. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/integrations/drizzle" title="Drizzle" %} +Driver connection, pooler settings, and drizzle-kit migrations for PostgreSQL. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Transaction vs session mode, ports, and serverless connection handling. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/integrations/better-auth" title="Better Auth" %} +The same pattern for Better Auth on a native PostgreSQL database. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/better-auth/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/better-auth/+page.markdoc new file mode 100644 index 0000000000..84a6f425d5 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/better-auth/+page.markdoc @@ -0,0 +1,147 @@ +--- +layout: article +title: Better Auth +description: Use an Appwrite native PostgreSQL database as the database for Better Auth. Point runtime traffic at the pooler, run schema generation and migrations over a direct connection, and store users and sessions in PostgreSQL. +--- + +[Better Auth](https://www.better-auth.com/) is a framework-agnostic authentication library for TypeScript that keeps its state, including users, sessions, accounts, and verification tokens, in a database you own. A native PostgreSQL database gives Better Auth a standard PostgreSQL engine, so you can use the connection string from the [Connections](/docs/products/databases/postgresql/connections) page and run the Better Auth CLI to create the schema. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [PostgreSQL databases](/docs/products/databases/postgresql) to create one, then open the database and click **Credentials** to copy values from the **Details**, **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. The primary user is `admin`, and each database has its own generated database name. +{% /info %} + +# Set the connection strings {% #connection-strings %} + +Better Auth needs two connection strings for the same database: a **pooled** URL for your application runtime and a **direct** URL for schema work. Copy the values from the Console **Credentials** dialog, or fetch them with [`postgresql.get()`](/docs/products/databases/postgresql/connections#credentials), and put both in your environment. Never commit them. + +```env +# Runtime: pooler port (transaction mode), absorbs serverless connection churn +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?sslmode=require" + +# Schema generation & migrations: direct connection to the engine +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +Use `sslmode=require` for Appwrite Cloud connections. The edge proxy terminates TLS for every native PostgreSQL database, so drivers need no extra certificate configuration. See the [Network security](/docs/products/databases/postgresql/network-security) page for TLS and network controls. + +The PostgreSQL pooler runs on port `6432`, and the engine runs on port `5432`. See [Connections](/docs/products/databases/postgresql/connections) for connection details and the [connection pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the pool modes. + +# Configure Better Auth {% #configure %} + +Better Auth accepts either a **database instance** (a driver connection pool, which it drives through its built-in Kysely adapter) or an **ORM adapter** (Prisma, Drizzle, Kysely). Both work against a native PostgreSQL database. + +## With a driver pool {% #pool %} + +Pass a `pg` `Pool` pointed at the **pooled** URL so runtime traffic is multiplexed. Set `ssl: { rejectUnauthorized: true }` so the driver verifies the proxy's certificate: + +```ts +import { betterAuth } from 'better-auth'; +import { Pool } from 'pg'; + +export const auth = betterAuth({ + database: new Pool({ + connectionString: process.env.DATABASE_URL, + ssl: { rejectUnauthorized: true } + }), + emailAndPassword: { enabled: true } +}); +``` + +This is the simplest path: Better Auth manages the schema for you and can both generate and apply migrations through the CLI below. + +## With an ORM adapter {% #adapter %} + +If you already use an ORM, hand Better Auth an adapter instead of a raw `Pool`. Configure the ORM's own client against the native PostgreSQL database (pooled URL for the runtime client, direct URL for migrations), then wrap it: + +```ts +import { betterAuth } from 'better-auth'; +import { drizzleAdapter } from 'better-auth/adapters/drizzle'; +import { db } from './db'; + +export const auth = betterAuth({ + database: drizzleAdapter(db, { provider: 'pg' }), + emailAndPassword: { enabled: true } +}); +``` + +Set the ORM up against the native PostgreSQL database first, then return here for the schema steps. The [Prisma](/docs/products/databases/postgresql/integrations/prisma) and [Drizzle](/docs/products/databases/postgresql/integrations/drizzle) guides cover the `datasource`/client config, the pooled-vs-direct URL split, and how transaction-mode pooling affects prepared statements. + +# Generate and migrate the schema {% #migrate %} + +The [Better Auth CLI](https://www.better-auth.com/docs/concepts/cli) reads your `auth` config and creates the tables it needs. Run it with the **direct** URL so it gets a session connection with DDL privileges. Transaction-mode pooling is designed for short application transactions, not schema changes. + +Generate the schema for your setup. With a driver pool (built-in Kysely adapter) this produces a SQL file; with an ORM adapter it produces that ORM's schema (a Prisma schema, a Drizzle `schema.ts`): + +```bash +DATABASE_URL="$DIRECT_URL" npx @better-auth/cli@latest generate +``` + +If you're using the built-in adapter (a driver pool), apply the generated schema directly: + +```bash +DATABASE_URL="$DIRECT_URL" npx @better-auth/cli@latest migrate +``` + +`migrate` is only available for the built-in Kysely adapter. With a **Prisma** or **Drizzle** adapter, run `generate` to produce the schema, then apply it with that ORM's own migration tool, `prisma migrate deploy` or `drizzle-kit migrate`, again over `DIRECT_URL`. See the [Prisma](/docs/products/databases/postgresql/integrations/prisma#migrate) and [Drizzle](/docs/products/databases/postgresql/integrations/drizzle) guides for the exact commands. + +Both commands connect over the engine port, so they get full DDL privileges. The primary `admin` user owns the database and can run schema changes; narrower [database roles](/docs/products/databases/postgresql/connections#roles) (`readonly` / `readwrite`) intentionally cannot run DDL. + +# A minimal example {% #example %} + +After the schema exists, your runtime connects on the pooler URL and Better Auth handles the rest. Mount the handler for your framework and start creating users: + +```ts +import { auth } from './auth'; + +const result = await auth.api.signUpEmail({ + body: { + email: 'ada@example.com', + password: 'a-strong-password', + name: 'Ada Lovelace' + } +}); + +console.log(result.user.id); +``` + +On a long-running server, instantiate `auth` once and reuse it. On serverless, keep a single instance per module scope so warm invocations reuse it, and rely on the pooler to absorb cold-start connection churn. + +# Pooling and prepared statements {% #pooling %} + +Auth workloads, including sign-up, login, and session lookups, are short transactions, which is exactly what the pooler's default **transaction mode** is built for. Pointing your runtime pool at port `6432` lets a large number of serverless instances share a small backend pool. + +The one constraint of transaction mode is that it does not hold a backend connection across statements, so **server-side prepared statements are unavailable**. On PostgreSQL, the node-postgres `Pool` is fine with this out of the box. If you drive Better Auth through an ORM, disable prepared statements on the runtime client: with `postgres.js`, set `prepare: false`; with Prisma, add `pgbouncer=true` to the pooled URL. If your app needs prepared statements, advisory locks, or `LISTEN`/`NOTIFY`, switch the pooler to **session mode**. See the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are isolated copies of a database with their own hostname and connection string, ideal for running auth migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL` (and the pooled variant as `DATABASE_URL`). +3. Run the Better Auth CLI (or your ORM migration) and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so auth flows run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/integrations/prisma" title="Prisma" %} +Drive the Better Auth Prisma adapter with pooled and direct URLs. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/integrations/drizzle" title="Drizzle" %} +Drive the Better Auth Drizzle adapter against a native PostgreSQL database. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/integrations/auth-js" title="Auth.js" %} +Use a native PostgreSQL database as the Auth.js (NextAuth) database. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/dbt/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/dbt/+page.markdoc new file mode 100644 index 0000000000..2165f8b329 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/dbt/+page.markdoc @@ -0,0 +1,114 @@ +--- +layout: article +title: dbt +description: Run dbt transformations against an Appwrite native PostgreSQL database. Configure profiles.yml for the direct engine port, size threads to your connection budget, and test models against a branch in CI. +--- + +An Appwrite native PostgreSQL database is a standard PostgreSQL server, so [dbt](https://docs.getdbt.com/) works against it through the standard [`dbt-postgres`](https://docs.getdbt.com/docs/local/connect-data-platform/postgres-setup) adapter with no Appwrite-specific configuration. Point a `profiles.yml` target at the connection details from the [Connections](/docs/products/databases/postgresql/connections) page and use `dbt debug`, `dbt run`, and `dbt build` the same way you would against any self-hosted PostgreSQL warehouse. + +dbt compiles your models into `CREATE TABLE` / `CREATE VIEW` statements and runs them in dependency order, materializing a transformed analytics layer inside a schema you control. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [PostgreSQL](/docs/products/databases/postgresql) to create one and [Connections](/docs/products/databases/postgresql/connections) to retrieve them. The primary user is `admin`, the database name is generated for each database, and the engine listens on port `5432`. +{% /info %} + +# Create a build schema {% #build-schema %} + +dbt issues DDL (`CREATE`, `DROP`, `ALTER`) to build your models, so connect with the primary `admin` user and build into a schema reserved for dbt, for example `analytics`. The `admin` user owns the generated database and can create the schema, tables, and views dbt needs. + +Keep transformed tables separate from source data by setting the `schema` field in `profiles.yml`. You can use different schema names per environment, such as `analytics_dev`, `analytics_ci`, and `analytics_prod`. + +# Configure profiles.yml {% #profiles %} + +dbt reads connection details from `~/.dbt/profiles.yml` or the project directory. Configure a `postgres` target against the database host on port `5432`, and set `sslmode: require` so the connection is encrypted: + +```yaml +analytics: + target: dev + outputs: + dev: + type: postgres + host: db-<hash>.<region>.appwrite.center + port: 5432 + user: admin + password: "{{ env_var('APPWRITE_DB_PASSWORD') }}" + dbname: <database> + schema: analytics + sslmode: require + threads: 4 +``` + +The dbt-postgres adapter uses `password` (not `pass`) and `dbname` (you may also write `database`). Read the password from an environment variable with `env_var` rather than committing it. The `schema` key is where dbt materializes models, set it to the build schema your user owns. + +The edge proxy terminates TLS for every native PostgreSQL database, so `sslmode: require` needs no extra certificate files. For full certificate verification, set `sslmode: verify-full` with `sslrootcert` pointing at a trusted root store, `system` on libpq 16+, or your OS bundle such as `/etc/ssl/certs/ca-certificates.crt`. The proxy's certificate is signed by a public CA, so there is no Appwrite-specific CA to download. + +# Test the connection {% #debug %} + +`dbt debug` validates your project files and opens a connection to confirm the credentials and host are correct: + +```bash +dbt debug +``` + +A successful run reports `Connection test: OK connection ok`. If it fails, recheck the host, port, `sslmode`, and password. + +# Run transformations {% #run %} + +Build your models into the analytics schema: + +```bash +dbt run +``` + +`dbt run` executes models only, materializing each as a table or view. Use `dbt build` to run models, tests, seeds, and snapshots together in DAG order, a failing test on an upstream model then skips its dependents: + +```bash +dbt build +``` + +# Choose the right connection {% #connection %} + +dbt opens one database connection per thread and uses each to run DDL and rely on session state (search paths, temporary objects, transactions spanning multiple statements). Point dbt at a connection that preserves that session: + +- **Direct engine port (`5432`)** is the simplest and recommended target. Each thread gets a backend session with full DDL privileges. This is what the `profiles.yml` above uses. +- **Session-mode pooler** also works, because it holds a backend connection for the whole client session. Connect on the pooler port (`6432`) and switch the pool to `session` mode. + +Do **not** point dbt at the **transaction-mode** pooler, which is the pooler default. Transaction mode returns the backend connection to the pool after every statement, so the session state and multi-statement DDL that dbt depends on can break. See the [connection pooling](/docs/products/databases/postgresql/connection-pooling#modes) page for the mode trade-offs. + +# Size threads to your connection budget {% #threads %} + +The `threads` setting controls how many models dbt builds in parallel, and dbt opens one connection per thread. A `threads: 8` run can hold up to eight backend connections at once. dbt also respects model dependencies, so it never runs more models concurrently than your DAG allows, regardless of the thread count. + +Pick a `threads` value that fits the connection budget for your database spec, and leave headroom for any application traffic sharing the same database. If you connect through a session-mode pooler, the same per-thread connections apply at the backend, so size against the pool, not the client side. Start at the adapter default of `4` and raise it only while connections stay within budget. + +# Test transformations against a branch {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are isolated copies of a database with their own hostname and connection string. Because a branch starts from a storage snapshot, its schema and data match the source at branch time, so dbt models run against production-like data without touching production. That makes branches ideal for validating transformations in CI: + +1. Create a branch from the API and read its `connectionString`. +2. Set the branch host and credentials as the `profiles.yml` target (or export them as `env_var` values). +3. Run `dbt build` against the branch so models and tests execute on realistic data. +4. Delete the branch when the job finishes. + +This gives every pull request a clean, production-shaped warehouse to build against without touching live analytics tables. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes and ports. Use session mode for dbt, never transaction mode. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for CI and preview environments. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="https://docs.getdbt.com/docs/local/connect-data-platform/postgres-setup" %} +dbt-postgres adapter reference +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/django/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/django/+page.markdoc new file mode 100644 index 0000000000..717b7ebdfd --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/django/+page.markdoc @@ -0,0 +1,145 @@ +--- +layout: article +title: Django +description: Use Django's ORM with an Appwrite native PostgreSQL database. Configure the DATABASES setting with TLS options, run migrations on the direct PostgreSQL port, and tune persistent connections for pooling. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so Django's ORM works against it with no Appwrite-specific configuration. Point the `DATABASES` setting at the credentials from the [Connections](/docs/products/databases/postgresql/connections) page, then use migrations, models, and the rest of Django exactly as you would against any PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [native PostgreSQL databases](/docs/products/databases/postgresql) to create one and [Connections](/docs/products/databases/postgresql/connections) to retrieve the connection details. The primary user is `admin`, and the database name is generated for each database. +{% /info %} + +# Install a driver {% #driver %} + +Django talks to PostgreSQL through a driver. Use [psycopg 3](https://www.psycopg.org/psycopg3/): + +```bash +pip install "psycopg[binary]" +``` + +Django's PostgreSQL backend uses the `ENGINE` value `django.db.backends.postgresql`. + +# Configure `DATABASES` {% #databases %} + +In `settings.py`, point the `default` connection at your native PostgreSQL database and require TLS through `OPTIONS`. Appwrite Cloud terminates TLS at the edge, and the certificate is signed by a public certificate authority. Read every value from the environment so credentials stay out of source control: + +```python +import os + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.postgresql", + "NAME": os.environ["DB_NAME"], + "USER": os.environ["DB_USER"], + "PASSWORD": os.environ["DB_PASSWORD"], + "HOST": os.environ["DB_HOST"], + "PORT": os.environ["DB_PORT"], + "OPTIONS": { + "sslmode": "require", + }, + } +} +``` + +The PostgreSQL backend forwards everything in `OPTIONS` to the driver's connection, so `sslmode` is honored the same way `psql` honors it in a connection string. For full certificate verification, set `"sslmode": "verify-full"` with `"sslrootcert"` pointing at a trusted root store or your OS bundle, such as `/etc/ssl/certs/ca-certificates.crt`. See [Network security](/docs/products/databases/postgresql/network-security) for TLS and IP allowlist guidance. + +Populate the environment from the Console **Credentials** dialog or from `postgresql.get()` in the [API credentials flow](/docs/products/databases/postgresql/connections#credentials): + +```env +DB_NAME=<database> +DB_USER=admin +DB_PASSWORD=<password> +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=5432 +``` + +Port `5432` is the direct PostgreSQL port. Keep migrations on this port, and see [pooling](#pooling) below for when to add the pooler. + +# Run migrations {% #migrate %} + +Generate migrations from your models, then apply them against the direct PostgreSQL port: + +```bash +python manage.py makemigrations +python manage.py migrate +``` + +`migrate` needs a session connection with DDL privileges. The primary `admin` user owns the database and can run schema changes. Narrower [database roles](/docs/products/databases/postgresql/connections#roles) (`readonly` or `readwrite`) are intended for application traffic with reduced privileges. Always run `migrate` on the direct PostgreSQL port, not through the transaction-mode pooler. + +# Define a model {% #model %} + +Models map to tables in your native PostgreSQL database. Define one in an app's `models.py`: + +```python +from django.db import models + +class Article(models.Model): + title = models.CharField(max_length=200) + body = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ["-created_at"] +``` + +Run `makemigrations` and `migrate` again to create the table, then query it through the ORM: + +```python +from blog.models import Article + +Article.objects.create(title="Hello", body="First post") + +recent = Article.objects.order_by("-created_at")[:10] +``` + +# Persistent connections and pooling {% #pooling %} + +By default Django opens a new connection per request (`CONN_MAX_AGE = 0`). On a long-running WSGI server (Gunicorn, uWSGI) you can reuse connections by raising it. Each worker thread keeps its own connection, so the database must allow at least as many connections as you run worker threads: + +```python +DATABASES["default"]["CONN_MAX_AGE"] = 60 +DATABASES["default"]["CONN_HEALTH_CHECKS"] = True +``` + +`CONN_HEALTH_CHECKS` revalidates a reused connection once per request, avoiding errors after an engine restart. Do not enable persistent connections under the development server, it spawns a thread per request and gains nothing, and disable them under ASGI. + +{% info title="Persistent connections need a session" %} +A worker holding a connection across requests behaves like a long-lived session. Connect it to the direct PostgreSQL port or the **session-mode** pooler. The default **transaction-mode** pooler can hand each statement a different backend connection, which makes it a better fit for serverless and short-lived runtimes that open and close a connection per invocation. +{% /info %} + +If you front the database with the transaction-mode [connection pooler](/docs/products/databases/postgresql/connection-pooling), point `HOST` and `PORT` at the PostgreSQL pooler on port `6432`. Also set `DISABLE_SERVER_SIDE_CURSORS = True`, since server-side cursors can't survive being moved between backend connections: + +```python +DATABASES["default"]["DISABLE_SERVER_SIDE_CURSORS"] = True +``` + +For prepared statements, advisory locks, `LISTEN`/`NOTIFY`, or temporary tables, use **session mode** instead, see the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection details. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its connection details. +2. Export them as the `DB_*` environment variables your settings read. +3. Run `python manage.py migrate` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, its schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create scoped database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS, certificate verification, IP allowlists, and idle timeout settings. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/drivers/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/drivers/+page.markdoc new file mode 100644 index 0000000000..39897535fb --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/drivers/+page.markdoc @@ -0,0 +1,197 @@ +--- +layout: article +title: Node.js drivers +description: Connect to an Appwrite native PostgreSQL database from Node.js with node-postgres or postgres.js. Configure pools, TLS verification, serverless connection management, and troubleshooting. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so any Node.js driver that speaks the PostgreSQL wire protocol can connect over TLS without an Appwrite-specific adapter. The [Connections](/docs/products/databases/postgresql/connections#drivers) page shows the minimal snippet to run your first query. This page covers production pool configuration, certificate verification, serverless connection management, and common connection errors. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. In the Console, open the database and click **Credentials**. Use the **Details** tab for individual values, or the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab for a ready-made snippet. The primary user is `admin`, and the database name is generated for each database. Keep the password in an environment variable and never commit it. +{% /info %} + +# Raw driver, ORM, or SQL API? {% #choosing %} + +There are three common ways to reach a native PostgreSQL database from Node.js. Pick by workload: + +| Approach | Use it when | +|------------------------------|----------------------------------------------------------------------------------------------| +| **Raw driver** (this page) | You want a connection pool you control, hot-path queries, or a thin data layer with little overhead. | +| **ORM** ([Prisma](/docs/products/databases/postgresql/integrations/prisma), [Drizzle](/docs/products/databases/postgresql/integrations/drizzle)) | You want migrations, a typed schema, and query building. The ORM still uses a PostgreSQL driver underneath. | +| **[SQL API](/docs/products/databases/postgresql/quick-start#first-queries)** | You're on an edge runtime that cannot hold a TCP socket, or scripting a one-off query over HTTPS. | + +The rest of this page is about raw drivers on a long-running or serverless Node.js server that can open TCP connections. + +# node-postgres (pg) {% #node-postgres %} + +For a long-running server, create one `Pool` at startup and reuse it for every request. The pool opens connections lazily up to `max` and hands them back to your handlers. + +```js +import { Pool } from 'pg'; +import process from 'node:process'; + +const pool = new Pool({ + host: 'db-<hash>.<region>.appwrite.center', + port: 5432, + user: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: { rejectUnauthorized: true }, + max: 10, + idleTimeoutMillis: 30000, + connectionTimeoutMillis: 5000, +}); + +const { rows } = await pool.query('SELECT id, email FROM users WHERE id = $1', [userId]); +``` + +Pool sizing is a budget. Each connection in `max`, across every running instance, counts against your specification's connection cap. A single app server with `max: 10` is fine; ten replicas with `max: 50` each is 500 connections and can exhaust many specifications. Size `max` to the connection cap divided by replica count, then put the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in front if you need more client concurrency than that allows. + +`ssl: { rejectUnauthorized: true }` validates the server certificate against Node's built-in CA store. The edge proxy presents a certificate signed by a well-known public CA, so this works without supplying your own bundle. See [TLS and CA verification](#tls) for custom CA bundles and mTLS. + +## Pooled port vs direct port {% #pg-ports %} + +The pooler defaults to **transaction mode**, which does not hold a backend connection across statements, so server-side prepared statements are unavailable. In node-postgres, a query becomes a server-side prepared statement only when you pass a `name` field on the query config: + +```js +// Safe on the pooler (port 6432, transaction mode): no `name`, no server-side prepared statement. +await pool.query('SELECT * FROM events WHERE user_id = $1', [userId]); + +// Use the direct port or session-mode pooler for named prepared statements. +await pool.query({ name: 'fetch-events', text: 'SELECT * FROM events WHERE user_id = $1', values: [userId] }); +``` + +Parameterized queries without a `name` are sent fresh each time and work on the pooled port. If you rely on named prepared statements, advisory locks, `LISTEN`/`NOTIFY`, temporary tables, or `SET LOCAL`, connect on the direct port (`5432`) or switch the pooler to **session mode**. See the [pooler modes](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. Run migrations on the direct port. + +# postgres.js {% #postgres-js %} + +`postgres.js` (the `postgres` package) takes its own option names. Create the client once at module scope: + +```js +import postgres from 'postgres'; +import process from 'node:process'; + +const sql = postgres({ + host: 'db-<hash>.<region>.appwrite.center', + port: 5432, + username: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: 'verify-full', + max: 10, + idle_timeout: 30, + connect_timeout: 10, +}); + +const users = await sql`SELECT id, email FROM users WHERE id = ${userId}`; +``` + +`ssl: 'verify-full'` enables TLS and verifies the server certificate against the system CA store. If your runtime image ships without one, pass an object with a public CA bundle instead: `ssl: { rejectUnauthorized: true, ca: fs.readFileSync('./ca-bundle.crt') }`. + +When you point `postgres.js` at the **pooler port** (`6432`) in transaction mode, disable prepared statements. The library uses prepared statements by default, and documents `prepare: false` for PgBouncer transaction mode: + +```js +const sql = postgres({ + host: 'db-<hash>.<region>.appwrite.center', + port: 6432, + username: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: 'verify-full', + prepare: false, + max: 5, +}); +``` + +Leave `prepare` at its default when you connect on the direct port or use the pooler in session mode. + +# TLS and CA verification {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at the edge and forwarded to your database over the internal network. The connection string from the credentials dialog carries the right SSL settings for your environment, and the examples above use strict certificate verification. + +| Level | node-postgres | postgres.js | +|----------------------------------------------|-------------------------------------------------|--------------------------------------------------| +| **Encrypt and verify CA** | `ssl: { rejectUnauthorized: true }` | `ssl: 'verify-full'` | +| **Custom CA bundle** (no system trust store) | `ssl: { rejectUnauthorized: true, ca: fs.readFileSync('./ca-bundle.crt') }` | `ssl: { rejectUnauthorized: true, ca: fs.readFileSync('./ca-bundle.crt') }` | + +The certificate behind every database hostname is signed by a well-known public CA, so Appwrite does not require a custom CA download. The `ca` option is useful for runtimes without a system trust store, such as distroless or scratch images. Point it at a standard public CA bundle from your base image's `ca-certificates` package or [Mozilla's bundle](https://curl.se/docs/caextract.html): + +```js +import fs from 'node:fs'; + +const ssl = { + rejectUnauthorized: true, + ca: fs.readFileSync('./ca-bundle.crt'), +}; +``` + +When the CA comes from an environment variable, restore the newlines the variable strips: + +```js +const ssl = { + rejectUnauthorized: true, + ca: process.env.DB_SSL_CA?.replace(/\\n/g, '\n'), +}; +``` + +Do not ship `rejectUnauthorized: false` to production. It disables certificate validation and exposes the connection to interception. To require **mTLS**, where the client also presents a certificate, see the [Network security](/docs/products/databases/postgresql/network-security) page. Then add `key` and `cert` alongside `ca` in the same `ssl` object. + +# Serverless connection management {% #serverless %} + +On Lambda, Cloud Run, Vercel, and similar platforms, every cold start is a fresh instance with its own pool. A `max: 10` pool times 200 concurrent instances is 2,000 backend connections, which is more than most specifications allow. Let Appwrite's pooler absorb the fan-out: + +- **Connect on the pooler port** (`6432`) in transaction mode. +- **Keep the per-instance pool tiny**, usually `max: 1` or `2`. One invocation rarely needs more than one connection at a time. +- **Create the client once per module scope** so warm invocations reuse it. +- **Disable per-connection prepared statements** on the pooled port: `prepare: false` for postgres.js, and avoid `name` on node-postgres query configs. + +```js +import postgres from 'postgres'; +import process from 'node:process'; + +// Module scope: reused across warm invocations. +const sql = postgres({ + host: 'db-<hash>.<region>.appwrite.center', + port: 6432, + username: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: 'verify-full', + prepare: false, + max: 1, +}); + +export async function handler(event) { + const rows = await sql`SELECT id FROM users WHERE email = ${event.email}`; + return rows[0] ?? null; +} +``` + +On **edge runtimes** (Cloudflare Workers, Vercel Edge, Deno Deploy), raw TCP sockets are usually unavailable. Use the [SQL API](/docs/products/databases/postgresql/quick-start#first-queries) for these workloads. + +# Troubleshooting {% #troubleshooting %} + +| Symptom | Cause and fix | +|-------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| +| `self-signed certificate` / `unable to verify the first certificate` | TLS is reaching the wrong host, or the runtime has a stale or incomplete `ca` bundle. The proxy's certificate is signed by a public CA. Use driver certificate verification with the system trust store, and supply a current public CA bundle only when the runtime has no system trust store. | +| `sorry, too many clients already` / connection attempts rejected at the proxy | Aggregate pool size across all instances exceeds the database specification's connection cap. Lower `max`, or move to the [pooler](/docs/products/databases/postgresql/connection-pooling) port and shrink the per-instance pool to 1 or 2. | +| `prepared statement "S_1" does not exist` / `unnamed prepared statement does not exist` | Server-side prepared statements on the pooler in transaction mode. Set `prepare: false` for postgres.js, drop the `name` field for node-postgres, or use the direct port or [session mode](/docs/products/databases/postgresql/connection-pooling#modes). | +| `ETIMEDOUT` / `connection timed out` on connect | The database may be cold-starting on smaller specifications or blocked by an [IP allowlist](/docs/products/databases/postgresql/network-security#ip-allowlist). Confirm your egress IP is allowed and raise `connectionTimeoutMillis` or `connect_timeout` to absorb cold starts. | +| Connections drop after a period of inactivity | The proxy closes idle connections after `networkIdleTimeoutSeconds`. Keep `idleTimeoutMillis` and `idle_timeout` below that window so the driver recycles before the proxy does, or enable keep-alive. | + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/quick-start#first-queries" title="SQL API" %} +Run SQL over HTTPS with no TCP connection for edge runtimes and scripts. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/drizzle/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/drizzle/+page.markdoc new file mode 100644 index 0000000000..09c9b64105 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/drizzle/+page.markdoc @@ -0,0 +1,193 @@ +--- +layout: article +title: Drizzle +description: Use Drizzle ORM with an Appwrite native PostgreSQL database. Configure the driver, run migrations against the direct connection, and pool runtime traffic from serverless environments. +--- + +Appwrite's native PostgreSQL database is a standard PostgreSQL engine, so [Drizzle ORM](https://orm.drizzle.team/) works against it with no Appwrite-specific configuration. Point Drizzle's driver at the connection string from the [Connections](/docs/products/databases/postgresql/connections) page and use Drizzle Kit, the query builder, and the rest of the toolchain as you would against any PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [native PostgreSQL databases](/docs/products/databases/postgresql) to create one and [Connections](/docs/products/databases/postgresql/connections) to retrieve the connection string. The primary user is `admin`, and the database name is generated per database. +{% /info %} + +# Set the connection string {% #connection-string %} + +In the Console, open your database and click **Credentials**. Copy the connection string from the **DSN**, **.env**, or **Drizzle** tab, or fetch it with [`postgresql.get()`](/docs/products/databases/postgresql/connections#credentials). Put it in your environment, never commit it: + +```env +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +The TLS parameter (`sslmode=require`) is part of the connection string Appwrite returns. Appwrite Cloud terminates TLS at the edge and forwards traffic to your database over the internal network, so no extra certificate configuration is needed. For full certificate verification (`verify-full`) or mTLS, see [Network security](/docs/products/databases/postgresql/network-security). + +# Install and configure the driver {% #driver %} + +Drizzle talks to PostgreSQL through one of two driver packages. Pick the one already in your stack: + +```bash +# node-postgres +npm install drizzle-orm pg +npm install -D drizzle-kit @types/pg + +# or postgres.js +npm install drizzle-orm postgres +npm install -D drizzle-kit +``` + +With **node-postgres**, import `drizzle` from `drizzle-orm/node-postgres` and hand it the connection string: + +```ts +import { drizzle } from 'drizzle-orm/node-postgres'; + +export const db = drizzle(process.env.DATABASE_URL!); +``` + +With **postgres.js**, import `drizzle` from `drizzle-orm/postgres-js`. For a direct connection to the engine you can pass the URL straight through: + +```ts +import { drizzle } from 'drizzle-orm/postgres-js'; + +export const db = drizzle(process.env.DATABASE_URL!); +``` + +When you pool through the connection pooler in transaction mode (see [Pool connections from serverless](#pooling)), postgres.js must disable prepared statements. Build the client yourself with `prepare: false` and pass it to `drizzle`: + +```ts +import { drizzle } from 'drizzle-orm/postgres-js'; +import postgres from 'postgres'; + +const client = postgres(process.env.DATABASE_URL!, { prepare: false }); + +export const db = drizzle({ client }); +``` + +Define your tables in a schema file Drizzle Kit can read: + +```ts +import { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core'; + +export const users = pgTable('users', { + id: serial('id').primaryKey(), + email: text('email').notNull().unique(), + createdAt: timestamp('created_at').notNull().defaultNow() +}); +``` + +# Configure Drizzle Kit {% #config %} + +Drizzle Kit reads `drizzle.config.ts` for migrations and introspection. Set the `dialect`, point `schema` at your table definitions, and pass the connection string through `dbCredentials`: + +```ts +import { defineConfig } from 'drizzle-kit'; + +export default defineConfig({ + dialect: 'postgresql', + schema: './src/schema.ts', + out: './drizzle', + dbCredentials: { + url: process.env.DATABASE_URL! + } +}); +``` + +# Run migrations {% #migrate %} + +Generate SQL migration files from your schema, then apply them: + +```bash +npx drizzle-kit generate +npx drizzle-kit migrate +``` + +`generate` diffs your schema against the last snapshot and writes a timestamped `.sql` file into the `out` directory; `migrate` applies any pending files to the database. Point Drizzle Kit at the **direct** engine port (`5432`), not the pooler, because migrations issue DDL that needs a session-level connection. The primary `admin` user owns the generated database and can run schema changes. Use narrower [database roles](/docs/products/databases/postgresql/connections#roles) for application traffic that does not need DDL privileges. + +To apply migrations from your application at startup instead of the CLI, use the matching `migrate` helper for your driver: + +```ts +import { migrate } from 'drizzle-orm/node-postgres/migrator'; +import { db } from './db'; + +await migrate(db, { migrationsFolder: './drizzle' }); +``` + +# Query with Drizzle {% #query %} + +Once the schema is migrated, use the query builder: + +```ts +import { desc } from 'drizzle-orm'; +import { db } from './db'; +import { users } from './schema'; + +const [user] = await db + .insert(users) + .values({ email: 'ada@example.com' }) + .returning(); + +const recent = await db + .select() + .from(users) + .orderBy(desc(users.createdAt)) + .limit(10); +``` + +On long-running servers, create the `db` instance once at module scope and reuse it. On serverless, keep a single instance per module scope so warm invocations reuse it, and rely on the pooler to absorb cold-start connection churn. + +# Pool connections from serverless {% #pooling %} + +Each running instance opens its own connections to the engine. On serverless and edge platforms (Vercel, Netlify, Cloudflare), short-lived instances can fan out into more backend connections than the engine allows. Route runtime traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) by connecting on the pooler port (`6432`) on the same hostname. + +The pooler defaults to **transaction mode**, which does not keep a backend connection across statements, so server-side prepared statements are unavailable. Keep `drizzle.config.ts` and the startup migrator pointed at `DIRECT_URL` so DDL still runs over a session-level connection: + +```env +# Runtime: pooled, transaction mode +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?sslmode=require" + +# Migrations & introspection: direct connection to the engine +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +With **postgres.js**, disable prepared statements by building the client with `prepare: false`, as shown in [Install and configure the driver](#driver). + +```ts +import { defineConfig } from 'drizzle-kit'; + +export default defineConfig({ + dialect: 'postgresql', + schema: './src/schema.ts', + out: './drizzle', + dbCredentials: { + url: process.env.DIRECT_URL! + } +}); +``` + +If your application relies on prepared statements, advisory locks, `LISTEN`/`NOTIFY`, temporary tables, or `SET LOCAL`, switch the pooler to **session mode** and remove `prepare: false` with postgres.js. See the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL` (and the pooled variant as `DATABASE_URL`). +3. Run `drizzle-kit migrate` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/ef-core/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/ef-core/+page.markdoc new file mode 100644 index 0000000000..b362344b0d --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/ef-core/+page.markdoc @@ -0,0 +1,168 @@ +--- +layout: article +title: EF Core +description: Use Entity Framework Core with an Appwrite native PostgreSQL database. Configure the Npgsql connection string, run migrations against the direct PostgreSQL host, and rely on the driver's built-in connection pool from an ASP.NET server. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so [Entity Framework Core](https://learn.microsoft.com/ef/core/) works against it with no Appwrite-specific configuration. Point the Npgsql EF Core provider at the connection string from the [Connections](/docs/products/databases/postgresql/connections) page and use `DbContext`, migrations, and the rest of the toolchain exactly as you would against any self-hosted PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [native PostgreSQL databases](/docs/products/databases/postgresql) to create one and [Connections](/docs/products/databases/postgresql/connections) to retrieve the connection details. Appwrite provides the generated database name, primary username `admin`, and password in the Console. +{% /info %} + +# Install the provider {% #install %} + +Add the EF Core provider for PostgreSQL: + +```bash +dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL +``` + +Then add the EF Core design-time package (used by the `dotnet ef` tools) and install the CLI tool: + +```bash +dotnet add package Microsoft.EntityFrameworkCore.Design + +dotnet tool install --global dotnet-ef +``` + +If your app targets an older framework than the current .NET release, pin the packages to the matching major version instead, for example `--version 8.*` for a .NET 8 app. + +# Set the connection string {% #connection-string %} + +ADO.NET providers use key/value connection strings rather than a URL. Store it in `appsettings.json` under `ConnectionStrings`, and keep the password out of source control (use [user secrets](https://learn.microsoft.com/aspnet/core/security/app-secrets) or an environment variable in deployments): + +```json +{ + "ConnectionStrings": { + "Default": "Host=db-<hash>.<region>.appwrite.center;Port=5432;Database=<database>;Username=admin;Password=<password>;SSL Mode=Require" + } +} +``` + +The edge proxy terminates TLS for every native PostgreSQL database, so `SSL Mode=Require` is all you need. `Require` encrypts the connection without validating the server certificate hostname. For full certificate verification, set `SSL Mode=VerifyFull`: Npgsql validates the chain and hostname against the operating system's trusted roots, and the proxy's certificate is signed by a public CA those roots already include, so no `Root Certificate` parameter is needed: + +```text +Host=...;Port=5432;Database=<database>;Username=admin;Password=<password>;SSL Mode=VerifyFull +``` + +# Configure the DbContext {% #dbcontext %} + +Define your model and a `DbContext`. The model is ordinary EF Core code, and the provider-specific call comes when you register the context in `Program.cs`: + +```csharp +using Microsoft.EntityFrameworkCore; + +public class User +{ + public int Id { get; set; } + public string Email { get; set; } = string.Empty; + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; +} + +public class AppDbContext : DbContext +{ + public AppDbContext(DbContextOptions<AppDbContext> options) + : base(options) { } + + public DbSet<User> Users => Set<User>(); +} +``` + +# Run migrations {% #migrate %} + +Migrations need a session connection and full DDL privileges, so always run them against the direct PostgreSQL host on port `5432`, not the [pooler](/docs/products/databases/postgresql/connection-pooling). The primary `admin` user owns the database; narrower [connection users](/docs/products/databases/postgresql/connections) (`readonly` / `readwrite`) intentionally cannot run DDL. + +Create the first migration, then apply it: + +```bash +dotnet ef migrations add InitialCreate + +dotnet ef database update +``` + +`dotnet ef database update` reads the same `Default` connection string and applies any pending migrations, recording each in the `__EFMigrationsHistory` table so it only applies new ones next time. In CI or production, prefer generating an idempotent SQL script with `dotnet ef migrations script --idempotent` and applying it as a deploy step. + +# Wire up an ASP.NET server {% #aspnet %} + +Register the `DbContext` in `Program.cs`, reading the connection string with `GetConnectionString`. A long-running ASP.NET server should connect to the direct PostgreSQL host and let the provider manage its own pool: + +Call `UseNpgsql(...)` with the connection string. This is the single entry point for all Npgsql options: + +```csharp +using Microsoft.EntityFrameworkCore; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddDbContext<AppDbContext>(options => + options.UseNpgsql(builder.Configuration.GetConnectionString("Default"))); +``` + +The route handlers use ordinary EF Core queries: + +```csharp +var app = builder.Build(); + +app.MapGet("/users", async (AppDbContext db) => + await db.Users.OrderByDescending(u => u.CreatedAt).Take(10).ToListAsync()); + +app.MapPost("/users", async (AppDbContext db, string email) => +{ + var user = new User { Email = email }; + db.Users.Add(user); + await db.SaveChangesAsync(); + return Results.Created($"/users/{user.Id}", user); +}); + +app.Run(); +``` + +# Connection pooling {% #pooling %} + +Npgsql has a built-in connection pool, enabled by default. Each process keeps its own pool keyed on the connection string, so a long-running ASP.NET server usually connects directly to PostgreSQL and tunes the driver pool with the connection string: + +```text +Host=...;Port=5432;Database=<database>;Username=admin;Password=<password>;SSL Mode=Require;Maximum Pool Size=50 +``` + +Set `Maximum Pool Size` to cap concurrent backend connections per process (Npgsql defaults to `100`). + +Keep the sum across all your processes under the engine's connection limit for the database's specification. + +If you instead run many short-lived instances (serverless functions, per-request containers) that each open their own pool, route them through the Appwrite [connection pooler](/docs/products/databases/postgresql/connection-pooling) on port `6432` to fan many clients onto a small backend pool. The pooler defaults to **transaction mode**, which doesn't hold a backend connection across statements, so server-side prepared statements aren't available: + +Disable Npgsql's automatic prepared statements with `Max Auto Prepare=0` when connecting to the transaction-mode pooler: + +```text +Host=...;Port=6432;Database=<database>;Username=admin;Password=<password>;SSL Mode=Require;Max Auto Prepare=0 +``` + +If your application relies on prepared statements, advisory locks, or `LISTEN`/`NOTIFY`, switch the pooler to **session mode** instead, see the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +Database [branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and credentials. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its connection details. +2. Build the connection string for the branch host and pass it as the `Default` connection string. +3. Run `dotnet ef database update` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against representative data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc new file mode 100644 index 0000000000..78c582017e --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc @@ -0,0 +1,189 @@ +--- +layout: article +title: FastAPI +description: Use FastAPI and SQLAlchemy 2.x with an Appwrite native PostgreSQL database. Configure the async asyncpg engine, pass TLS through connect_args, inject a session per request, and run Alembic migrations against the direct database port. +--- + +An Appwrite native PostgreSQL database is a standard PostgreSQL engine, so [FastAPI](https://fastapi.tiangolo.com/) with [SQLAlchemy](https://docs.sqlalchemy.org/) and an async driver works against it with no Appwrite-specific configuration. You point `create_async_engine` at the connection string from the [connections](/docs/products/databases/postgresql/connections) page and use the SQLAlchemy ORM, the FastAPI dependency system, and Alembic exactly as you would against any self-hosted PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [native PostgreSQL databases](/docs/products/databases/postgresql) to create one and [connections](/docs/products/databases/postgresql/connections) to retrieve the connection string. The primary user is `admin`, and the database name is generated for each database. +{% /info %} + +# Install dependencies {% #install %} + +```bash +pip install "fastapi[standard]" "sqlalchemy[asyncio]" asyncpg alembic +``` + +# Set the connection string {% #connection-string %} + +Copy the connection string from the Console **Credentials** dialog, or fetch it with the [API](/docs/products/databases/postgresql/connections#credentials). Put it in your environment, never commit it. SQLAlchemy's asyncpg dialect uses the `postgresql+asyncpg://` scheme, so swap the leading `postgresql://` for it: + +```env +DATABASE_URL="postgresql+asyncpg://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>" +``` + +The string Appwrite returns ends with `?sslmode=require`. Drop that query parameter for asyncpg, asyncpg does not read `sslmode` from the URL. TLS is configured through `connect_args` instead, shown below. + +This guide uses the [asyncpg](https://magicstack.github.io/asyncpg/current/) driver; the same patterns apply to the async `postgresql+psycopg` dialect by changing the URL scheme. + +# Create the async engine {% #engine %} + +The edge proxy terminates TLS for every native PostgreSQL database, so encryption is mandatory. asyncpg's `ssl` argument accepts the libpq-style strings (`require`, `verify-ca`, `verify-full`), `True`, or an `ssl.SSLContext`. Pass it through `connect_args`: + +```python +from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine + +engine = create_async_engine( + settings.database_url, + connect_args={"ssl": "require"}, + pool_size=10, + max_overflow=5, + pool_pre_ping=True, +) + +SessionLocal = async_sessionmaker(engine, expire_on_commit=False) +``` + +`ssl="require"` encrypts the connection without validating the certificate chain. For full verification, pass `ssl="verify-full"` instead; the server certificate is signed by a well-known public CA, so validation succeeds against the system trust store without a custom CA bundle, see the [Network](/docs/products/databases/postgresql/network-security) page. + +# Define a model {% #model %} + +```python +from datetime import datetime + +from sqlalchemy import func +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + +class Base(DeclarativeBase): + pass + +class User(Base): + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) + email: Mapped[str] = mapped_column(unique=True) + created_at: Mapped[datetime] = mapped_column(server_default=func.now()) +``` + +# Inject a session per request {% #session %} + +FastAPI's dependency system gives each request its own `AsyncSession` and closes it when the request finishes. Define a dependency that yields a session, then annotate path operations with it: + +```python +from typing import Annotated + +from fastapi import Depends, FastAPI +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +app = FastAPI() + +async def get_session(): + async with SessionLocal() as session: + yield session + +SessionDep = Annotated[AsyncSession, Depends(get_session)] + +@app.post("/users") +async def create_user(email: str, session: SessionDep): + user = User(email=email) + session.add(user) + await session.commit() + await session.refresh(user) + return user + +@app.get("/users") +async def list_users(session: SessionDep): + result = await session.scalars(select(User).order_by(User.created_at.desc())) + return result.all() +``` + +Create the engine once at module scope and reuse it for the whole process, the pool lives inside it. Don't open a new engine per request. + +# Run migrations {% #migrate %} + +Generate Alembic's async scaffold, which opens the connection asynchronously and hands a sync connection to the migration context: + +```bash +alembic init -t async migrations +``` + +Point `target_metadata` at `Base.metadata` in `migrations/env.py`, then autogenerate and apply: + +```bash +alembic revision --autogenerate -m "init" +alembic upgrade head +``` + +Run migrations against the **direct** engine port (`5432`), not the pooler. DDL needs a real session-level connection, and Alembic's async template already uses a `NullPool`, so a fresh connection is opened and closed per run. The primary `admin` user owns the default database and can run schema changes. Narrower [database roles](/docs/products/databases/postgresql/connections#roles) should only receive the privileges your application needs. + +# Pool sizing {% #sizing %} + +A long-running `uvicorn` server holds a SQLAlchemy pool for its lifetime, so connect to the **direct** engine port (`5432`) with a sized pool. Keep `pool_size` × the number of server processes under the connection limit of your [specification](/docs/products/databases/postgresql#specifications), and let `max_overflow` absorb short bursts: + +```python +engine = create_async_engine( + settings.database_url, + connect_args={"ssl": "require"}, + pool_size=10, + max_overflow=5, +) +``` + +When the same app runs on a serverless platform (for example an Appwrite [function](/docs/products/functions)) where each invocation is a fresh instance, that fans out into far more backend connections than the engine allows. Route runtime traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) on port `6432` instead, and size the pool small per instance: + +```env +DATABASE_URL="postgresql+asyncpg://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>" +``` + +# Disable prepared statements on the transaction pooler {% #prepared-statements %} + +The pooler defaults to **transaction mode**, which does not keep a backend connection across statements. asyncpg relies on server-side prepared statements, which transaction mode cannot support, so turn the caches off. This needs **two** settings: asyncpg's own `statement_cache_size` in `connect_args` and SQLAlchemy's dialect-level `prepared_statement_cache_size` in the connection URL: + +```env +DATABASE_URL="postgresql+asyncpg://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?prepared_statement_cache_size=0" +``` + +```python +from sqlalchemy import NullPool + +engine = create_async_engine( + settings.database_url, + connect_args={"ssl": "require", "statement_cache_size": 0}, + poolclass=NullPool, +) +``` + +`statement_cache_size=0` disables asyncpg's prepared statement cache, and `prepared_statement_cache_size=0` disables the dialect's own per-connection statement cache. Use `NullPool` so SQLAlchemy doesn't keep its own pool on top of the pooler's. + +If your application relies on prepared statements, advisory locks, `LISTEN`/`NOTIFY`, or temporary tables, switch the pooler to **session mode** instead and keep statement caching on, see the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Rewrite the scheme to `postgresql+asyncpg://` and export it as `DATABASE_URL`. +3. Run `alembic upgrade head` against the branch's direct port, then your test suite. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create scoped database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/gorm/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/gorm/+page.markdoc new file mode 100644 index 0000000000..c2c31d100a --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/gorm/+page.markdoc @@ -0,0 +1,168 @@ +--- +layout: article +title: GORM +description: Use GORM with an Appwrite native PostgreSQL database in Go. Build the DSN, open a connection, size the database/sql pool against the direct connection, and run migrations with AutoMigrate or golang-migrate. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so [GORM](https://gorm.io/) talks to it with no Appwrite-specific configuration. You build a connection string from the credentials in the Console, hand it to the GORM PostgreSQL driver, and use models, `AutoMigrate`, and the query API exactly as you would against any self-hosted PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [PostgreSQL databases](/docs/products/databases/postgresql) to create one. To retrieve the hostname, password, database name, and connection string, open the database in the Console and click **Credentials**. The **Credentials** page includes **Details**, **DSN**, **.env**, **Prisma**, **Drizzle**, and **psql** tabs. The primary user is `admin`, and Appwrite generates the database name for each database. +{% /info %} + +# Build the DSN {% #dsn %} + +The edge proxy terminates TLS for every native PostgreSQL database, so no certificate file is needed. Keep the password out of source and read the connection details from the environment: + +```env +DB_HOST="db-<hash>.<region>.appwrite.center" +DB_NAME="<database>" +DB_PASSWORD="<password>" +``` + +GORM's PostgreSQL driver accepts the pgx key/value DSN. Set `sslmode=require`: + +```go +dsn := fmt.Sprintf( + "host=%s user=admin password=%s dbname=%s port=5432 sslmode=require", + os.Getenv("DB_HOST"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_NAME"), +) +``` + +The URL form from the **DSN** tab works too, and the driver parses either format: `postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require`. For full certificate verification, add `sslmode=verify-full`, no CA file needed: Go's drivers validate against the system certificate pool, and the proxy's certificate is signed by a public CA. + +For mTLS, see the [Network](/docs/products/databases/postgresql/network-security) page. + +# Open a connection {% #open %} + +Pass the DSN to the driver's `Open` function and call `gorm.Open`: + +```go +package main + +import ( + "fmt" + "os" + + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +func main() { + dsn := fmt.Sprintf( + "host=%s user=admin password=%s dbname=%s port=5432 sslmode=require", + os.Getenv("DB_HOST"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_NAME"), + ) + + db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) + if err != nil { + panic(err) + } + + _ = db +} +``` + +Connect to the **direct** engine port (`5432`) for a long-running server, see [pool sizing](#pool) below. If you route through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in its default transaction mode, use `postgres.New` with `PreferSimpleProtocol: true` so the driver stops issuing implicit prepared statements, which transaction mode cannot keep across statements: + +```go +db, err := gorm.Open(postgres.New(postgres.Config{ + DSN: dsn, // pooler host, port 6432 + PreferSimpleProtocol: true, +}), &gorm.Config{}) +``` + +# Define a model and migrate {% #model %} + +Declare your models as Go structs and let GORM create the tables with `AutoMigrate`: + +```go +type User struct { + ID uint `gorm:"primaryKey"` + Email string `gorm:"uniqueIndex"` + CreatedAt time.Time +} + +if err := db.AutoMigrate(&User{}); err != nil { + panic(err) +} +``` + +`AutoMigrate` creates the table if it's missing and adds any missing columns and indexes. It does not drop columns or change existing column types, so it's convenient in development but not a substitute for versioned migrations in production. Either way, run schema changes against the **direct** engine port: DDL needs a real session connection, and the primary `admin` user owns the generated database. Scoped connection users (`readonly` / `readwrite`) intentionally cannot run DDL. + +For versioned migrations, [golang-migrate](https://github.com/golang-migrate/migrate) runs ordered up/down files. Point it at the direct engine port: + +```bash +migrate -path ./migrations \ + -database "postgresql://admin:$DB_PASSWORD@$DB_HOST:5432/$DB_NAME?sslmode=require" \ + up +``` + +# Size the connection pool {% #pool %} + +GORM manages a `database/sql` pool under the hood. A long-running Go server holds that pool for its whole lifetime, so connect to the **direct** engine port and cap the pool yourself against the engine's connection limit. Reach the underlying `*sql.DB` with `db.DB()`: + +```go +sqlDB, err := db.DB() +if err != nil { + panic(err) +} + +sqlDB.SetMaxOpenConns(25) +sqlDB.SetMaxIdleConns(25) +sqlDB.SetConnMaxLifetime(time.Hour) +``` + +Keep the sum of `SetMaxOpenConns` across every instance below the specification's `maxConnections`. If you run many instances or a serverless/edge runtime that opens a fresh pool per invocation, route through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) and keep each instance's pool small. The pooler multiplexes them onto a handful of backend connections. + +# Use sqlx instead {% #sqlx %} + +If you prefer raw SQL with light struct scanning, [sqlx](https://github.com/jmoiron/sqlx) wraps `database/sql` and uses the same DSN. + +Register the `pgx` stdlib driver (or `lib/pq`) and connect: + +```go +import ( + _ "github.com/jackc/pgx/v5/stdlib" + "github.com/jmoiron/sqlx" +) + +db, err := sqlx.Connect("pgx", + fmt.Sprintf("host=%s user=admin password=%s dbname=%s port=5432 sslmode=require", + os.Getenv("DB_HOST"), os.Getenv("DB_PASSWORD"), os.Getenv("DB_NAME"))) +if err != nil { + panic(err) +} + +db.SetMaxOpenConns(25) +``` + +The same pooler caveat applies: in transaction mode, disable implicit prepared statements (the pgx stdlib driver exposes a simple-protocol option, and `lib/pq` can be told to skip prepares), or use [session mode](/docs/products/databases/postgresql/connection-pooling#modes). `sslmode=require` needs no CA file, and neither does `verify-full`: Go's drivers fall back to the system certificate pool when `sslrootcert` is unset, and the proxy's certificate is signed by a public CA that pool already trusts. Set `sslrootcert` only when the container image ships without CA certificates. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string, ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export the host and password into the environment your tests read. +3. Run `migrate ... up` (or `AutoMigrate`) and your test suite against the branch's direct port. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/grafana/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/grafana/+page.markdoc new file mode 100644 index 0000000000..b243e714a9 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/grafana/+page.markdoc @@ -0,0 +1,105 @@ +--- +layout: article +title: Grafana +description: Connect Grafana to an Appwrite native PostgreSQL database as a data source and build dashboards. Create a read-only reporting role, configure the PostgreSQL data source with TLS, and provision it from YAML. +--- + +An Appwrite [native PostgreSQL database](/docs/products/databases/postgresql) exposes a standard managed PostgreSQL 18 or 17 engine, so [Grafana](https://grafana.com/) connects to it through the built-in **PostgreSQL data source** with no Appwrite-specific configuration. Point the data source at your database hostname, authenticate with a read-only reporting role, and query your tables to build dashboards and alerts. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. In the Console, open the database and click **Credentials**. Use the **Details** tab for individual values, or copy a ready-made string from the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. You can also call `postgresql.get()` from the Appwrite API to read `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. The primary user is `admin`, and Appwrite generates the database name for each database. +{% /info %} + +# Create a reporting role {% #reporting-role %} + +Dashboards should not connect as the primary `admin` user, which owns the database and can run schema changes. Create a PostgreSQL role for Grafana from the **Roles** tab of your database in the Console, then grant it the `SELECT` privileges your dashboards need from the SQL editor or `psql`. + +Use that role's name and password in the Grafana data source below. For more about retrieving credentials, rotating the primary password, and managing database roles, see [Connections](/docs/products/databases/postgresql/connections). + +# Choose a connection target {% #target %} + +Grafana holds its data source connections open for the lifetime of the process. Long-lived connections should use either the direct PostgreSQL port `5432` or a [connection pooler](/docs/products/databases/postgresql/connection-pooling) running in **session mode**. + +Do not point Grafana at the **transaction-mode** pooler. Transaction mode hands a backend connection back to the pool after every statement, which breaks the session assumptions Grafana relies on for connection reuse and prepared statements. For a typical dashboard workload the direct PostgreSQL port is the simplest choice. See the [pooler modes](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Add the PostgreSQL data source {% #data-source %} + +In Grafana, open **Connections** > **Data sources** > **Add data source** and select **PostgreSQL**. Fill in the connection details using the values from your native PostgreSQL database: + +| Field | Value | +| --- | --- | +| **Host URL** | `db-<hash>.<region>.appwrite.center:5432` | +| **Database name** | `<database>` | +| **Username** | `grafana_ro` | +| **Password** | the password for the reporting role | +| **TLS/SSL Mode** | `require` | +| **Version** | PostgreSQL 10+; Grafana auto-detects the server version on save when it can connect | + +Regions are `fra`, `nyc`, `sfo`, `sgp`, `syd`, and `tor`. The edge proxy terminates TLS for every native PostgreSQL database, so **TLS/SSL Mode** `require` works with no certificate upload. + +If you use Grafana Cloud and restrict database access with an IP allowlist, add the Grafana Cloud outbound IP ranges for your stack to the database allowlist. Grafana Cloud can reach the public Appwrite database hostname directly. Private connectivity features are only needed when the database is on a private network. + +Under **Connection limits**, keep the connection counts modest so Grafana doesn't exhaust the engine's connection budget. **Max open** caps total connections from this Grafana instance, **Max idle** caps pooled idle connections, and **Max lifetime** recycles connections after the given number of seconds. Select **Save & test** to verify connectivity. + +# Provision from YAML {% #provisioning %} + +Instead of configuring the data source by hand, you can [provision](https://grafana.com/docs/grafana/latest/administration/provisioning/) it declaratively. Drop a file into Grafana's `provisioning/datasources/` directory and read the password from an environment variable so it never lands in source control: + +```yaml +apiVersion: 1 + +datasources: + - name: Appwrite native PostgreSQL + type: postgres + url: db-<hash>.<region>.appwrite.center:5432 + user: grafana_ro + jsonData: + database: <database> + sslmode: require + postgresVersion: 1500 + maxOpenConns: 5 + maxIdleConns: 2 + maxIdleConnsAuto: true + connMaxLifetime: 14400 + secureJsonData: + password: $GRAFANA_DB_PASSWORD + editable: false +``` + +`postgresVersion` takes Grafana's encoded version values (`1500` for PostgreSQL 15, currently the highest option), so pick the highest value available for a native PostgreSQL database. The `database` key lives under `jsonData` in current Grafana releases, and Grafana expands `$GRAFANA_DB_PASSWORD` from the process environment when it loads the provisioning file. See the [PostgreSQL data source](https://grafana.com/docs/grafana/latest/datasources/postgres/configure/) docs for every available field. + +# Build a panel {% #panel %} + +With the data source connected, create a dashboard and add a panel backed by it. Switch the query editor to code mode and write a read-only query against your tables. For example, to plot daily sign-ups from a `users` table over time: + +```text +SELECT + date_trunc('day', created_at) AS time, + count(*) AS signups +FROM users +GROUP BY 1 +ORDER BY 1 +``` + +Grafana maps the `time` column to the panel's time axis and `signups` to the value. Because the data source authenticates as a read-only reporting role, any query that attempts to write fails at the database, which keeps a misconfigured panel from mutating production data. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql" title="PostgreSQL databases" %} +Overview of native PostgreSQL database engines, versions, and regions. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and manage database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes and ports. Use the direct PostgreSQL port or session mode for Grafana. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="/docs/products/databases/postgresql/connections" %} +Connect to a native PostgreSQL database +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc new file mode 100644 index 0000000000..7d3075b20a --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc @@ -0,0 +1,204 @@ +--- +layout: article +title: Laravel +description: Use Laravel and Eloquent with an Appwrite native PostgreSQL database. Configure the connection, run migrations against the direct port, and pool serverless traffic through the connection pooler. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so [Laravel](https://laravel.com/docs) works against it with no Appwrite-specific configuration. Point the `pgsql` connection in `config/database.php` at the credentials from the [Connections](/docs/products/databases/postgresql/connections) page, then use Eloquent, the query builder, migrations, and queues as you would against any PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [PostgreSQL databases](/docs/products/databases/postgresql) to create one. To retrieve credentials, open the database in the Console, click **Credentials**, and use the **Details**, **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. The primary username is `admin`, and the database name is generated per database. +{% /info %} + +# Configure the connection {% #connection %} + +Laravel reads database credentials from `.env`. Copy the values from the Console credentials dialog, or fetch them with [`postgresql.get()`](/docs/products/databases/postgresql/connections#credentials), and set the matching connection. Never commit `.env`: + +```env +DB_CONNECTION=pgsql +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=5432 +DB_DATABASE=<database> +DB_USERNAME=admin +DB_PASSWORD=<password> +DB_SSLMODE=require +``` + +The scaffolded `config/database.php` wires these variables into the `pgsql` connection, including SSL: + +```php +'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => env('DB_SSLMODE', 'prefer'), +], +``` + +`sslmode` is a top-level key on the PostgreSQL connection. Setting `DB_SSLMODE=require` matches the `sslmode=require` that Appwrite uses. Appwrite Cloud terminates TLS for every native PostgreSQL database, so certificate files are not needed for `require`. For full certificate verification, set `DB_SSLMODE=verify-full` and point `sslrootcert` at a trusted root store, `system` on libpq 16+, or your OS bundle such as `/etc/ssl/certs/ca-certificates.crt`. The proxy certificate is signed by a public CA, so there is no Appwrite-specific CA to download: + +```php +'sslmode' => env('DB_SSLMODE', 'prefer'), +'sslrootcert' => env('DB_SSLROOTCERT'), +``` + +# Run migrations {% #migrate %} + +Define your schema with a migration: + +```php +Schema::create('posts', function (Blueprint $table) { + $table->id(); + $table->string('title'); + $table->text('body'); + $table->timestamps(); +}); +``` + +Apply migrations from your machine or a deploy step: + +```bash +php artisan migrate + +# non-interactive, for CI and production deploys +php artisan migrate --force +``` + +Run `migrate` against the **direct** PostgreSQL port (`5432`), not the pooler. Migrations issue DDL that needs a session-level connection, and the transaction-mode pooler can't keep state across statements. The primary `admin` user owns the default database and can run schema changes. Narrower [connection users](/docs/products/databases/postgresql/connections#roles), such as read-only reporting roles, should not run DDL. + +# Query with Eloquent {% #query %} + +Once the schema is migrated, use Eloquent models and the query builder as usual: + +```php +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; + +class Post extends Model +{ + protected $fillable = [ + 'title', + 'body', + ]; +} +``` + +```php +use App\Models\Post; + +$post = Post::create([ + 'title' => 'Hello from a native PostgreSQL database', + 'body' => 'Stored in a native PostgreSQL database.', +]); + +$recent = Post::query() + ->orderByDesc('created_at') + ->limit(10) + ->get(); +``` + +Nothing about the native PostgreSQL database changes how Eloquent, relationships, transactions, or the query builder behave. It is a standard PostgreSQL server behind a TLS connection. + +# Pool connections from serverless {% #pooling %} + +The right port depends on how your app runs. + +A **long-running** PHP process, traditional PHP-FPM with persistent connections, [Laravel Octane](https://laravel.com/docs/octane), or a queue worker, holds its own backend connection for its lifetime. Point these at the **direct** PostgreSQL port (`5432`), or at the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in **session mode**. Don't put a long-lived process behind the transaction-mode pooler. + +A **serverless** or per-request deployment (Vercel, AWS Lambda, Cloud Run) opens a fresh connection on every invocation and fans out into far more backend connections than the engine allows. Route that traffic through the pooler's **transaction-mode** port (`6432`) on the same hostname, and give Laravel direct connection details for migrations and other schema operations: + +```env +# Runtime: pooled, transaction mode +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=6432 +DB_DATABASE=<database> +DB_USERNAME=admin +DB_PASSWORD=<password> +DB_POOLED=true + +# Migrations and schema operations: direct PostgreSQL port +DB_DIRECT_HOST=db-<hash>.<region>.appwrite.center +DB_DIRECT_PORT=5432 +DB_DIRECT_USERNAME=admin +DB_DIRECT_PASSWORD=<password> +DB_DIRECT_SSLMODE=require +``` + +Extend the `pgsql` connection in `config/database.php` with Laravel's pooled connection keys: + +```php +'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => env('DB_SSLMODE', 'prefer'), + 'pooled' => env('DB_POOLED', false), + 'direct' => array_filter([ + 'host' => env('DB_DIRECT_HOST'), + 'port' => env('DB_DIRECT_PORT'), + 'username' => env('DB_DIRECT_USERNAME'), + 'password' => env('DB_DIRECT_PASSWORD'), + 'sslmode' => env('DB_DIRECT_SSLMODE'), + ]), +], +``` + +Laravel uses the direct connection for migrations, schema dumps, restores, and database inspection commands when pooled mode is enabled. You can also call `DB::connection('pgsql::direct')` for schema operations that need the direct port. The transaction-mode pooler does not keep a backend connection across statements, so server-side prepared statements, advisory locks, `LISTEN`/`NOTIFY`, and `SET LOCAL` are unavailable. If your app relies on those, use **session mode**. See the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the trade-offs. + +# Queues and Horizon {% #queues %} + +A queue worker is a long-running process. `php artisan queue:work` boots once and processes jobs for its whole lifetime, holding a persistent database connection the entire time. The same applies to every worker that [Laravel Horizon](https://laravel.com/docs/horizon) supervises. Treat workers like any other long-lived process: + +- Connect them to the **direct** PostgreSQL port (`5432`) or the **session-mode** pooler, never the transaction-mode pooler. +- Restart workers periodically with `--max-time` or `--max-jobs` so a fresh process reclaims memory and reopens its connection. Supervisor or Horizon restarts them automatically. + +```bash +php artisan queue:work --max-time=3600 --max-jobs=500 +``` + +Each worker counts as one backend connection, so size your worker pool (and Horizon's `maxProcesses`) against the connection budget of your [specification](/docs/products/databases/postgresql). Horizon itself requires Redis for the queue backend; only your application's data connection touches the native PostgreSQL database. + +# Use a branch for previews and CI {% #branches %} + +PostgreSQL [branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname. Create them from the API for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its connection details. +2. Export them as the `DB_*` variables for the job. +3. Run `php artisan migrate --force` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations and tests run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/metabase/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/metabase/+page.markdoc new file mode 100644 index 0000000000..6a85f4d58e --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/metabase/+page.markdoc @@ -0,0 +1,80 @@ +--- +layout: article +title: Metabase +description: Connect Metabase to an Appwrite native PostgreSQL database for analytics. Use a read-only PostgreSQL role, configure SSL, and build dashboards on a session-safe connection. +--- + +Appwrite's native PostgreSQL database is a standard PostgreSQL engine, so [Metabase](https://www.metabase.com/) can connect to it without an Appwrite-specific adapter. Add the database in Metabase, point it at the host from the [Connections](/docs/products/databases/postgresql/connections) page, and Metabase will sync the schema so your team can build questions and dashboards. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. In the Console, open the database and click **Credentials**. Copy the individual values from the **Details** tab, or use the **DSN**, **.env**, or **psql** tab. You can also fetch the same values with [`postgresql.get()`](/docs/products/databases/postgresql/connections#credentials). The primary user is `admin`, and the database name is generated per database. +{% /info %} + +# Use a read-only PostgreSQL role {% #read-only-role %} + +Dashboards should not connect as the primary `admin` user. That role owns the database and can run schema changes. For analytics, create a read-only PostgreSQL role for Metabase from the database **Roles** tab in the Console, then grant it access only to the schemas and tables Metabase should query. + +At minimum, a reporting role needs permission to connect to the database, usage on the schemas you want to expose, and `SELECT` on the tables and views in those schemas. Use the [SQL editor](/docs/products/databases/postgresql/quick-start#first-queries), `psql`, or your migration workflow to apply the grants after you create the role. See [Database roles](/docs/products/databases/postgresql/connections#roles) for how roles work with native PostgreSQL databases. + +If you plan to use Metabase features that write data, such as editable table data, use a separate connection with the specific write privileges that feature needs. Keep the analytics connection read-only. + +# Add the database in Metabase {% #add-database %} + +In Metabase, click the grid icon, then open **Admin > Databases > Add a database**. Choose **PostgreSQL** as the database type and fill in the connection form with the values from the [Connections](/docs/products/databases/postgresql/connections) page. + +| Field | Value | +|-------|-------| +| Host | `db-<hash>.<region>.appwrite.center` | +| Port | `5432` | +| Database name | `<database>` | +| Username | your read-only PostgreSQL role | +| Password | the role password | + +Turn on **Use a secure connection (SSL)** and set **SSL Mode** to `require`. Appwrite Cloud requires TLS for native PostgreSQL connections. If you choose `verify-ca` or `verify-full`, Metabase also requires a root certificate in PEM format. See [Network security](/docs/products/databases/postgresql/network-security) for Appwrite TLS and network controls. + +{% info title="Use a session-safe connection" %} +Metabase keeps database sessions open and can use session-level PostgreSQL behavior while exploring data. Connect it to the direct PostgreSQL port (`5432`) or to the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in `session` mode. Transaction-mode pooling can break session-level features because a client session is not bound to one backend connection. +{% /info %} + +Click **Save changes**. Metabase verifies the connection and starts its first schema sync. + +# Build a question or dashboard {% #build %} + +Once the first sync finishes, your tables appear in the data picker. To build your first chart: + +1. Click **+ New > Question** and pick your Appwrite PostgreSQL database as the data source. +2. Choose a table, add a summary such as count, sum, or average, and group by a column such as a timestamp. +3. Switch the visualization to a line, bar, or table view, then save the question. +4. Add saved questions to a dashboard and use filters to slice data across cards. + +Because the analytics connection is read-only, native SQL questions can inspect data without changing it. Queries that attempt writes will fail unless you intentionally connect Metabase with a role that has write privileges. + +# How Metabase syncs your schema {% #sync %} + +After you connect, Metabase scans the database to discover tables, columns, constraints, and field metadata, then keeps that metadata current on a schedule: + +- A lightweight schema sync runs hourly by default. +- A more intensive field-value scan runs daily by default to populate filter dropdowns. + +New tables and columns appear after the next sync. To pull them in immediately, open **Admin > Databases > your database** and click **Sync database schema**. You can also restrict which schemas Metabase tracks and adjust the sync and scan cadence from the database settings. Refer to the [Metabase documentation](https://www.metabase.com/docs/latest/databases/sync-scan) for the full set of sync and scan options. + +# Use a branch for testing {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are isolated copies of a native PostgreSQL database with their own host and credentials. Point a second Metabase database connection at a branch when you want to validate a dashboard against a snapshot of production data without querying the live database. Branches are managed through the API, and you can delete the branch when testing is complete. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql" title="PostgreSQL" %} +Provision and manage a native PostgreSQL database for your project. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the primary password, and manage PostgreSQL roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooling" %} +Pool modes and ports, including why BI tools need session or direct connections. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS, certificate verification, IP allowlists, and idle connection timeouts. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/nextjs/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/nextjs/+page.markdoc new file mode 100644 index 0000000000..ede902ded1 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/nextjs/+page.markdoc @@ -0,0 +1,150 @@ +--- +layout: article +title: Next.js +description: Connect a Next.js App Router application to an Appwrite native PostgreSQL database from Route Handlers, Server Actions, and Server Components, pool from serverless, and fall back to the SQL API on the Edge runtime. +--- + +An Appwrite native PostgreSQL database works with standard PostgreSQL drivers and ORMs, so a [Next.js](https://nextjs.org/) App Router application can query it from server-side code. Point your driver at the connection string from the [Connections](/docs/products/databases/postgresql/connections) page and keep all database access on the server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. See [PostgreSQL](/docs/products/databases/postgresql) to create one and [Connections](/docs/products/databases/postgresql/connections) to retrieve the connection string. The primary user is `admin`, and Appwrite generates the database name for each database. +{% /info %} + +# Where to connect {% #where %} + +In the App Router, every server-side execution context runs on the **Node.js runtime by default**, and the Node.js runtime can open raw TCP sockets. That means you can use a standard database driver from any of these: + +- **Route Handlers** (`app/api/.../route.ts`) for public endpoints, webhooks, and REST-style APIs. +- **Server Actions** (`'use server'` functions) for form submissions and app-internal mutations. +- **Server Components** (`async` components) for read queries that render straight into the page. + +Never import a database driver into a Client Component (`'use client'`) or ship the connection string to the browser. Keep all database access on the server. + +The one exception is the **Edge runtime** (`export const runtime = 'edge'`), which runs on a constrained environment that **cannot open TCP database sockets**. If a route opts into Edge, use the [SQL API](/docs/products/databases/postgresql/quick-start#first-queries) over HTTPS instead, see [the Edge runtime section](#edge) below. + +# Environment variables {% #env %} + +Put the connection string in your environment and never commit it. For local development, use `.env.local` (Next.js loads it automatically and it's git-ignored by default): + +```env +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?sslmode=require" +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +`DATABASE_URL` points at the [connection pooler](/docs/products/databases/postgresql/connection-pooling) port (`6432`) for runtime traffic, and `DIRECT_URL` points at the PostgreSQL engine port (`5432`) for migrations. The next section explains why. The `sslmode=require` parameter is already part of the string Appwrite returns, so no extra certificate configuration is needed. For full verification (`verify-full`) or mTLS, see the [Network security](/docs/products/databases/postgresql/network-security) page. + +# Pool serverless connections {% #pooling %} + +When you deploy to Vercel, Netlify, or any serverless platform, each invocation can spin up a fresh instance with its own connection pool. Hundreds of concurrent invocations fan out into far more backend connections than the engine allows. Route runtime traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) on the pooler port so it can multiplex those instances over a small number of backend connections. + +The pooler defaults to **transaction mode**, which does not keep a backend connection across statements, so server-side prepared statements aren't available. Reserve the engine port for migrations, which need a session-level connection. The two-URL split above (`DATABASE_URL` pooled, `DIRECT_URL` direct) is exactly what an ORM like Prisma expects. + +# Use a singleton client {% #singleton %} + +Instantiate one client per module scope and reuse it across invocations, so warm serverless instances don't reconnect on every request. In development, Next.js hot-reload re-evaluates modules, which can leak connections, so cache the client on `globalThis`. + +With [postgres.js](https://github.com/porsager/postgres) (note `prepare: false` for transaction-mode pooling): + +```ts +// lib/db.ts +import postgres from 'postgres'; + +const globalForDb = globalThis as unknown as { sql?: ReturnType<typeof postgres> }; + +export const sql = + globalForDb.sql ?? + postgres(process.env.DATABASE_URL!, { + prepare: false, // required: pooler transaction mode has no server-side prepared statements + }); + +if (process.env.NODE_ENV !== 'production') globalForDb.sql = sql; +``` + +Query it from a Server Component or Route Handler: + +```ts +// app/users/route.ts +import { sql } from '@/lib/db'; + +export async function GET() { + const users = await sql`SELECT id, email FROM users ORDER BY created_at DESC LIMIT 10`; + return Response.json(users); +} +``` + +# Use Prisma or Drizzle {% #orm %} + +For a typed schema, migrations, and a query builder, reach for an ORM. Both integrate with the pooled `DATABASE_URL` plus direct `DIRECT_URL` pattern above. + +- **Prisma**: point the runtime at the pooled connection string and keep the Prisma CLI on the engine port for migrations, then run `prisma migrate deploy`. See the [Prisma](/docs/products/databases/postgresql/integrations/prisma) guide for the full config and migration flow. +- **Drizzle**: use a pooled client (`prepare: false` on postgres.js) for runtime and the direct URL for `drizzle-kit` migrations. See the [Drizzle](/docs/products/databases/postgresql/integrations/drizzle) guide. + +{% arrow_link href="/docs/products/databases/postgresql/integrations/prisma" %} +Set up Prisma against native PostgreSQL +{% /arrow_link %} + +# Edge runtime: use the SQL API {% #edge %} + +If a Route Handler or route segment opts into the Edge runtime, it can't open a TCP socket, so no engine driver will work there: + +```ts +export const runtime = 'edge'; // no TCP sockets available +``` + +From the Edge runtime, you can execute one parameterised SQL statement over HTTPS and get JSON back. `SELECT`, `INSERT`, `UPDATE`, and `DELETE` statements are allowed by default. Use the global `fetch` available in the Edge runtime: + +```ts +// app/edge-users/route.ts +export const runtime = 'edge'; + +export async function GET() { + const response = await fetch( + 'https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/executions', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Appwrite-Project': process.env.APPWRITE_PROJECT_ID!, + 'X-Appwrite-Key': process.env.APPWRITE_API_KEY!, + }, + body: JSON.stringify({ + sql: 'SELECT id, email FROM users WHERE created_at > $1 ORDER BY created_at DESC LIMIT $2', + bindings: ['2026-05-01T00:00:00Z', 10], + }), + }, + ); + + const { rows } = await response.json(); + return Response.json(rows); +} +``` + +The response is `{ rows, rowCount, columns, durationMs, truncated, bytes }`. Bindings are sent separately and never interpolated into the SQL string. Add `APPWRITE_PROJECT_ID` and `APPWRITE_API_KEY` (a key with the `databases.read` scope) to your environment alongside the database URLs. + +{% arrow_link href="/docs/products/databases/postgresql/quick-start#first-queries" %} +Read the SQL API reference +{% /arrow_link %} + +# Local development {% #local %} + +`next dev` runs on the Node.js runtime, so a local server connects to the native PostgreSQL database over TLS exactly like production. Keep `DATABASE_URL` and `DIRECT_URL` in `.env.local`. + +For throwaway data in tests or experiments, create a [branch](/docs/products/databases/postgresql/branches), an instant, isolated copy with its own connection string, and point `.env.local` at it. Delete the branch when you're done. + +# Deploy {% #deploy %} + +When you deploy, set the same `DATABASE_URL` (pooled) and `DIRECT_URL` (direct) as environment variables on your hosting platform, run your migrations in the build step, and fall back to the SQL API from any Edge Functions. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/integrations/prisma" title="Prisma" %} +Datasource config, pooled and direct URLs, and the migration workflow. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/quick-start#first-queries" title="SQL API" %} +Query over HTTPS from the Edge runtime without a TCP connection. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/prisma/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/prisma/+page.markdoc new file mode 100644 index 0000000000..074c16c40f --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/prisma/+page.markdoc @@ -0,0 +1,222 @@ +--- +layout: article +title: Prisma +description: Use Prisma ORM with an Appwrite native PostgreSQL database. Configure the Prisma 7 datasource, run migrations through the direct connection, and route serverless runtime traffic through the connection pooler. +--- + +[Prisma ORM](https://www.prisma.io/) works with Appwrite's native PostgreSQL database as a standard PostgreSQL target. Configure Prisma with the connection string from Appwrite, run Prisma Migrate against the direct database connection, and use Prisma Client from your application code. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. Open the database in the Console and click **Credentials** to copy values from the **Details**, **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tabs. You can also call `postgresql.get()` from the Appwrite API to read `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. +{% /info %} + +# Initialize Prisma {% #initialize %} + +Install Prisma, Prisma Client, the PostgreSQL driver adapter, and the TypeScript tools used by the examples: + +```bash +npm install -D prisma typescript tsx @types/node @types/pg +npm install @prisma/client @prisma/adapter-pg dotenv pg +``` + +Initialize Prisma for PostgreSQL: + +```bash +npx prisma init --datasource-provider postgresql --output ../generated/prisma +``` + +Prisma 7 generates a `prisma.config.ts` file and a `prisma/schema.prisma` file. Set `"type": "module"` in `package.json` if your project does not already use ECMAScript modules. + +# Configure connection strings {% #connection-strings %} + +Copy the connection string from the Console **Credentials** view. Keep it in environment variables and do not commit it: + +```env +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +SHADOW_DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require&schema=prisma_shadow" +``` + +`DATABASE_URL` is the runtime connection used by Prisma Client. `DIRECT_URL` is the direct database connection used by Prisma CLI commands. `SHADOW_DATABASE_URL` is required by `prisma migrate dev`, because Appwrite's `admin` user can run schema changes but cannot create additional PostgreSQL databases for Prisma's default shadow database workflow. + +Create the shadow schema once before you run `prisma migrate dev`: + +```sql +CREATE SCHEMA IF NOT EXISTS prisma_shadow; +``` + +Appwrite Cloud uses TLS for PostgreSQL connections, so keep `sslmode=require`. For full certificate verification or mTLS, see [Network security](/docs/products/databases/postgresql/network-security). + +# Configure Prisma {% #configure-prisma %} + +In `prisma.config.ts`, read the CLI connection strings from the environment: + +```ts +import "dotenv/config"; +import { defineConfig } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + migrations: { + path: "prisma/migrations", + seed: "tsx prisma/seed.ts", + }, + datasource: { + url: process.env["DIRECT_URL"] ?? process.env["DATABASE_URL"], + shadowDatabaseUrl: process.env["SHADOW_DATABASE_URL"], + }, +}); +``` + +In `prisma/schema.prisma`, keep the datasource provider in the schema file and generate Prisma Client into the output directory created by `prisma init`: + +```prisma +generator client { + provider = "prisma-client" + output = "../generated/prisma" +} + +datasource db { + provider = "postgresql" +} + +model User { + id String @id @default(uuid()) + email String @unique + createdAt DateTime @default(now()) +} +``` + +If you are connecting to an existing database, run `npx prisma db pull` after you configure the environment variables to introspect its schema. + +# Pool connections from serverless {% #pooling %} + +Prisma Client opens database connections from each running application instance. On serverless platforms, many cold starts can quickly multiply the number of backend PostgreSQL connections. Route runtime traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) by using the pooler port, `6432`, for `DATABASE_URL` while keeping `DIRECT_URL` on the direct PostgreSQL port, `5432`, for migrations and introspection: + +```env +# Runtime: pooled connection through the Appwrite connection pooler +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?sslmode=require" + +# Prisma CLI: direct PostgreSQL connection for migrations and introspection +DIRECT_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" + +# Prisma Migrate development shadow schema +SHADOW_DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require&schema=prisma_shadow" +``` + +The pooler defaults to **transaction mode**, which gives the highest connection multiplexing. If your application depends on session-level features such as advisory locks, `LISTEN`/`NOTIFY`, temporary tables, or session-scoped prepared statements, switch the pooler to **session mode**. See [Connection pooling](/docs/products/databases/postgresql/connection-pooling#modes) for pool mode trade-offs. + +# Run migrations {% #migrate %} + +Generate and apply a migration in development: + +```bash +npx prisma migrate dev --name init +``` + +In CI or production, apply committed migrations without prompting: + +```bash +npx prisma migrate deploy +``` + +Generate Prisma Client after you install dependencies or change `prisma/schema.prisma`: + +```bash +npx prisma generate +``` + +The primary `admin` user owns the database and can run schema changes. Scoped [database roles](/docs/products/databases/postgresql/connections#roles), such as `readonly` and `readwrite` users, are intended for application access and should not run migrations. + +# Seed data {% #seed %} + +With the seed command configured in `prisma.config.ts`, add a seed script: + +```ts +import "dotenv/config"; +import { PrismaPg } from "@prisma/adapter-pg"; +import { PrismaClient } from "../generated/prisma/client"; + +const adapter = new PrismaPg( + { connectionString: process.env.DATABASE_URL! }, + { schema: process.env.DATABASE_SCHEMA }, +); + +const prisma = new PrismaClient({ adapter }); + +await prisma.user.upsert({ + where: { email: "ada@example.com" }, + update: {}, + create: { email: "ada@example.com" }, +}); + +await prisma.$disconnect(); +``` + +Run the seed command: + +```bash +npx prisma db seed +``` + +`DATABASE_SCHEMA` is optional. Set it only if you connect to a PostgreSQL schema other than `public`. + +# Query with Prisma Client {% #query %} + +Instantiate Prisma Client with the PostgreSQL driver adapter: + +```ts +import "dotenv/config"; +import { PrismaPg } from "@prisma/adapter-pg"; +import { PrismaClient } from "./generated/prisma/client"; + +const adapter = new PrismaPg( + { connectionString: process.env.DATABASE_URL! }, + { schema: process.env.DATABASE_SCHEMA }, +); + +const prisma = new PrismaClient({ adapter }); + +const user = await prisma.user.create({ + data: { email: "grace@example.com" }, +}); + +const recent = await prisma.user.findMany({ + orderBy: { createdAt: "desc" }, + take: 10, +}); + +console.log({ user, recent }); + +await prisma.$disconnect(); +``` + +On long-running servers, instantiate `PrismaClient` once and reuse it. On serverless platforms, keep a single client per module scope so warm invocations reuse it, and rely on the pooler to absorb cold-start connection churn. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string. They are useful for running migrations against throwaway data in a pull-request preview or integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL`, and use the pooled variant as `DATABASE_URL` if the branch has the pooler enabled. +3. Run `npx prisma migrate deploy` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooling" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc new file mode 100644 index 0000000000..125433ae83 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc @@ -0,0 +1,168 @@ +--- +layout: article +title: Rails +description: Use Ruby on Rails and ActiveRecord with an Appwrite native PostgreSQL database. Configure database.yml, run migrations against the direct database port, and size the ActiveRecord pool. +--- + +A native PostgreSQL database is a standard PostgreSQL engine, so [Ruby on Rails](https://rubyonrails.org/) works against it through ActiveRecord with no Appwrite-specific configuration. Point `config/database.yml` at the connection details from the [Connections](/docs/products/databases/postgresql/connections) page and use ActiveRecord, migrations, and the rest of the Rails toolchain exactly as you would against any PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. In the Appwrite Console, open the database and click **Credentials**. Use the **Details** tab for individual values, or copy a ready-made string from the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. You can also call `postgresql.get()` from the Appwrite API to read `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. The primary user is `admin`, and the database name is generated for each database. +{% /info %} + +# Install the database driver {% #driver %} + +ActiveRecord talks to PostgreSQL through the `pg` driver gem. Add it to your `Gemfile`: + +```ruby +# Gemfile +gem 'pg' +``` + +The `pg` gem builds against `libpq`, so the PostgreSQL client headers must be available at install time. + +Then install: + +```bash +bundle install +``` + +# Set the connection string {% #connection-string %} + +Copy the connection string from the Console **Credentials** dialog, or fetch it with the [API](/docs/products/databases/postgresql/connections#credentials). Keep it in an environment variable and do not commit it: + +```env +DATABASE_URL="postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require" +``` + +The TLS parameter (`sslmode=require`) is already part of the string Appwrite returns. Appwrite Cloud terminates TLS at the edge, so no extra certificate configuration is needed. For full certificate verification (`verify-full`) or mTLS, see the [Network](/docs/products/databases/postgresql/network-security) page. + +# Configure database.yml {% #database-yml %} + +Rails reads `DATABASE_URL` automatically. The simplest configuration points the `url` at the environment variable and lets ActiveRecord parse the host, port, database, and credentials out of it: + +```yaml +# config/database.yml +production: + adapter: postgresql + url: <%= ENV["DATABASE_URL"] %> + pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +If you'd rather set the fields explicitly, the discrete keys map one-to-one to the values from the [Connections](/docs/products/databases/postgresql/connections#credentials) response. Use ERB to read each value from the environment so no secret lands in source control: + +```yaml +# config/database.yml +production: + adapter: postgresql + host: <%= ENV["DB_HOST"] %> # db-<hash>.<region>.appwrite.center + port: <%= ENV.fetch("DB_PORT", 5432) %> + database: <%= ENV["DB_NAME"] %> # <database> + username: <%= ENV.fetch("DB_USER", "admin") %> + password: <%= ENV["DB_PASSWORD"] %> + sslmode: require + pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +When both `DATABASE_URL` and explicit keys are present, Rails merges them. `sslmode` and `pool` can still be set in `database.yml`, so a `url`-based config can carry the TLS parameter in the string and override `pool` in the YAML. + +# Size the connection pool {% #pool %} + +ActiveRecord manages a per-process connection pool. The `pool:` value caps how many backend connections a single Rails process holds, and it defaults to `5`. It must be large enough for every thread that checks out a connection, your Puma worker threads plus any background job threads in the same process. + +```yaml +production: + adapter: postgresql + url: <%= ENV["DATABASE_URL"] %> + pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +Tying `pool` to `RAILS_MAX_THREADS` keeps it aligned with Puma's thread count. Each Puma **worker** is a separate process with its own pool, so the backend connection count is roughly `pool × workers × server instances`. Keep that product within your specification's `maxConnections`, see [specifications](/docs/products/databases/postgresql#specifications). + +# Run migrations {% #migrate %} + +Generate and apply migrations the usual way: + +```bash +bin/rails db:migrate +``` + +Migrations issue DDL and need a session-level connection, so run them against the direct PostgreSQL port `5432`, not the transaction-mode pooler. Point `DATABASE_URL` (or a separate migration URL) at the direct port when you run `db:migrate`. The primary `admin` user owns the database and can run schema changes. Narrower [database roles](/docs/products/databases/postgresql/connections#roles) should only receive the privileges your application needs. + +# Use ActiveRecord {% #activerecord %} + +Once `database.yml` is configured, models work with no further setup. Define a migration and model, then query through ActiveRecord: + +```ruby +# db/migrate/20240101000000_create_users.rb +class CreateUsers < ActiveRecord::Migration[7.1] + def change + create_table :users do |t| + t.string :email, null: false + t.timestamps + end + add_index :users, :email, unique: true + end +end +``` + +```ruby +# app/models/user.rb +class User < ApplicationRecord + validates :email, presence: true, uniqueness: true +end +``` + +```ruby +User.create!(email: 'ada@example.com') + +recent = User.order(created_at: :desc).limit(10) +``` + +ActiveRecord opens connections lazily and reuses them from the pool, so a long-running Puma server keeps a small, stable set of backend connections rather than opening one per request. + +# Pooling for a long-running server {% #pooling %} + +A Rails app under Puma is a long-running process: it holds an ActiveRecord pool for its lifetime. That pairs naturally with the direct PostgreSQL port `5432`, sized so `pool × workers` stays within your connection budget. This is the recommended setup for a persistent server. + +If you instead route through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) to absorb spikes or many app instances, prefer **session mode**, which keeps a backend connection for the whole client session and behaves like a direct connection to ActiveRecord. The pooler defaults to **transaction mode**, which hands out a different backend connection per transaction. ActiveRecord uses server-side prepared statements by default, and those are tied to one backend connection, so on the transaction-mode pooler you must disable them: + +```yaml +production: + adapter: postgresql + url: <%= ENV["DATABASE_URL"] %> # pooler host, port 6432 + pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> + prepared_statements: false +``` + +See the [pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the mode trade-offs. Whichever runtime connection you choose, always run `bin/rails db:migrate` against the direct PostgreSQL port. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DATABASE_URL` for the job. +3. Run `bin/rails db:migrate` and your test suite against the branch. +4. Delete the branch when the job finishes. + +A branch has no pooler and exposes the PostgreSQL port directly, which gives migrations the session-level connection they need. Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for high-concurrency workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} + +For ActiveRecord and migration details beyond this guide, see the [Rails configuration guide](https://guides.rubyonrails.org/configuring.html). diff --git a/src/routes/docs/products/databases/postgresql/integrations/retool/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/retool/+page.markdoc new file mode 100644 index 0000000000..ea28a04898 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/retool/+page.markdoc @@ -0,0 +1,95 @@ +--- +layout: article +title: Retool +description: Connect Retool to an Appwrite native PostgreSQL database to build internal and admin tools. Retrieve credentials from the Console, configure the PostgreSQL resource with TLS, and allow Retool Cloud network access when needed. +--- + +An Appwrite [native PostgreSQL database](/docs/products/databases/postgresql) exposes a standard PostgreSQL connection, so [Retool](https://retool.com/) connects to it through the built-in **PostgreSQL** resource. Use the database hostname, generated database name, and credentials from Appwrite, then build queries, tables, and forms in Retool for dashboards and admin panels. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and permission to create resources in Retool. In the Appwrite Console, open the database and click **Credentials**. Use the **Details** tab for individual values, or copy a ready-made string from the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. You can also fetch credentials with the API by calling `postgresql.get()`, which returns `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. See [Connections](/docs/products/databases/postgresql/connections) for the full flow. +{% /info %} + +# Choose credentials {% #credentials %} + +The primary user is `admin`, and the database name is generated for each database. The connection string has this form: `postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>`. + +Use `admin` for initial setup or schema work because it owns the database and can run DDL. For a Retool app that only needs application-level access, create a narrower PostgreSQL role from the database **Roles** tab in the Console, then grant only the table privileges the app needs from the SQL editor or `psql`. For example, a dashboard role usually needs `SELECT`, while an admin tool may need `SELECT`, `INSERT`, `UPDATE`, and `DELETE` on specific tables. + +{% arrow_link href="/docs/products/databases/postgresql/connections#roles" %} +Read more about database roles +{% /arrow_link %} + +# Create the PostgreSQL resource {% #resource %} + +In Retool, go to **Resources**, click **Create new** > **Resource**, search for `PostgreSQL`, and select the PostgreSQL tile. Give the resource a clear **Name** and optional **Description** that identifies the Appwrite database and environment. + +In **Resource credentials**, either paste the Appwrite connection string or fill in the fields manually: + +| Retool setting | Value | +|----------------|-------| +| Host | `db-<hash>.<region>.appwrite.center` | +| Port | `5432` | +| Database name | `<database>` | +| Connection options | Optional PostgreSQL parameters, such as `application_name=retool` | +| Authentication | **Username and password** | +| Username | `admin` or a narrower PostgreSQL role | +| Password | The password from the Appwrite credentials dialog or API response | + +In **Advanced options**, choose an outbound region if your Retool organization uses regional egress and you want the resource traffic to originate near your Appwrite database. + +Enable **SSL/TLS**. Appwrite Cloud terminates TLS at the edge, and the certificate is signed by a public CA. If Retool shows **Reject unauthorized**, keep it enabled. If Retool shows **Verification mode**, choose **Full verification**. Leave **CA certificate** empty. + +Click **Test connection**. If the test succeeds, click **Create resource**. + +# Pick the connection path {% #connection-path %} + +For most Retool apps, connect directly to PostgreSQL on port `5432`. Retool uses prepared statements for PostgreSQL queries, and Appwrite's transaction-mode pooler does not preserve session-level state across statements. If you use the Appwrite [connection pooler](/docs/products/databases/postgresql/connection-pooling), configure it in **session** mode for Retool. + +{% arrow_link href="/docs/products/databases/postgresql/connection-pooling#modes" %} +Compare pooler modes +{% /arrow_link %} + +# Allow Retool Cloud through the network {% #network %} + +If you enabled an [IP allowlist](/docs/products/databases/postgresql/network-security#ip-allowlist) for the database, add the Retool Cloud egress addresses for the resource's outbound region. Retool's default outbound region is `us-west-2`, and Retool also documents `eu-central-1` and `ap-southeast-1` egress addresses. Retrieve the current list from [Retool's IP address documentation](https://docs.retool.com/data-sources/reference/ip-allowlist-cloud-orgs) instead of copying static addresses into your runbook. + +If you leave the database allowlist open, rely on TLS plus database credentials and least-privilege roles to protect access. + +{% arrow_link href="/docs/products/databases/postgresql/network-security#ip-allowlist" %} +Configure the IP allowlist +{% /arrow_link %} + +# Build an admin tool {% #build %} + +After the resource is connected, create PostgreSQL queries in Retool and wire them to components: + +- Use **SQL mode** for read queries that feed a **Table**, chart, or other display component. +- Use **GUI mode** actions such as **Insert a record**, **Update an existing record**, and **Delete a record** for forms and editable tables. +- Bind table edits to the **Save changes** event and refresh the read query after writes complete. +- Show a confirmation modal before delete actions. + +Reference component values with Retool's `{{ }}` embedded expressions. Retool converts PostgreSQL queries to prepared statements by default, which separates values from SQL text and helps prevent SQL injection. Keep that protection enabled unless you have a specific, reviewed reason to disable it. + +Use database roles as the last line of defense. A dashboard role with only `SELECT` cannot write even if a query is misconfigured. A data-entry role with table-level write privileges can create, update, and delete rows without also owning the schema. + +# Use a branch for staging {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are API-created, isolated copies of a PostgreSQL database with their own connection details. Create a branch for staging or preview work, fetch its `connectionString`, and configure a second Retool PostgreSQL resource against that branch. Delete the branch when the staging tool is no longer needed. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql" title="PostgreSQL" %} +Create and manage a native PostgreSQL database. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the primary password, and create database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS, IP allowlists, and other network controls. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Create isolated database copies for staging and preview environments. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc new file mode 100644 index 0000000000..773cf725f0 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc @@ -0,0 +1,182 @@ +--- +layout: article +title: Spring Boot +description: Connect a Spring Boot application to an Appwrite native PostgreSQL database with Spring Data JPA and Hibernate. Configure the JDBC datasource and HikariCP pool, map entities, and run Flyway or Liquibase migrations against PostgreSQL. +--- + +An Appwrite native PostgreSQL database is a standard PostgreSQL engine, so a Spring Boot application connects to it through the PostgreSQL JDBC driver with no Appwrite-specific runtime configuration. Point `spring.datasource` at the JDBC URL from your database credentials, size the built-in HikariCP pool, and use Spring Data JPA, Hibernate, Flyway, or Liquibase as you would with any managed PostgreSQL server. + +{% info title="Before you start" %} +You'll need a native PostgreSQL database in a `ready` state and its credentials. In the Appwrite Console, open the database and click **Credentials**. Use the **Details** tab for individual values, or copy a ready-made string from the **DSN**, **.env**, **Prisma**, **Drizzle**, or **psql** tab. You can also fetch credentials with the API by calling `postgresql.get()`, which returns `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. See [Connections](/docs/products/databases/postgresql/connections) for the full flow. +{% /info %} + +# Add the dependencies {% #dependencies %} + +A Spring Data JPA application needs the JPA starter and the PostgreSQL JDBC driver. HikariCP ships with `spring-boot-starter-data-jpa`, and Spring Boot picks the driver class from the JDBC URL. + +```text +org.springframework.boot:spring-boot-starter-data-jpa +org.postgresql:postgresql +``` + +If you use Flyway or Liquibase, add that migration tool through Spring Initializr or your build file as well. Current Spring Boot projects that use Flyway with PostgreSQL include the Flyway integration and `org.flywaydb:flyway-database-postgresql`. + +# Configure the datasource {% #datasource %} + +Build the JDBC URL from the host and database name in the credentials dialog. Appwrite uses port `5432`, the primary user is `admin`, and the database name is generated per database. Read the password from the environment: + +```yaml +spring: + datasource: + url: jdbc:postgresql://db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require + username: admin + password: ${DB_PASSWORD} + hikari: + maximum-pool-size: 10 + minimum-idle: 2 + connection-timeout: 30000 + max-lifetime: 1200000 + jpa: + hibernate: + ddl-auto: validate +``` + +The equivalent `application.properties`: + +```ini +spring.datasource.url=jdbc:postgresql://db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require +spring.datasource.username=admin +spring.datasource.password=${DB_PASSWORD} +spring.datasource.hikari.maximum-pool-size=10 +spring.datasource.hikari.minimum-idle=2 +spring.datasource.hikari.connection-timeout=30000 +spring.datasource.hikari.max-lifetime=1200000 +spring.jpa.hibernate.ddl-auto=validate +``` + +`sslmode=require` enables TLS for the PostgreSQL connection. If your security policy requires host certificate validation, configure pgJDBC with `sslmode=verify-full` and a JVM trust configuration that trusts the certificate chain. The [Network security](/docs/products/databases/postgresql/network-security) page covers TLS, mTLS, and IP allowlists. + +# Size the HikariCP pool {% #pool %} + +A Spring Boot server is long-running, so it holds its HikariCP pool open for the lifetime of the process. Keep `maximum-pool-size` modest. HikariCP guidance is that throughput usually peaks at a small pool, roughly `(CPU cores x 2) + 1` for the database, not hundreds of connections. A pool that exceeds what PostgreSQL can serve only queues work inside the database and adds latency. + +Each replica of your application opens its own pool, so multiply `maximum-pool-size` by the number of instances and keep the total under the connection budget of your native PostgreSQL database [specification](/docs/products/databases/postgresql#specifications). Set `max-lifetime` a little below your infrastructure's idle timeout so HikariCP recycles connections before they are closed. + +# Map an entity {% #entity %} + +Define a JPA entity and a Spring Data repository as usual. This example uses a prefixed table name so it is easy to identify in a shared database: + +```java +package com.example.demo; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "users") +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, unique = true) + private String email; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} +``` + +```java +package com.example.demo; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserRepository extends JpaRepository<User, Long> { + Optional<User> findByEmail(String email); +} +``` + +Inject the repository wherever you need it and call `save`, `findById`, `findByEmail`, and the rest of the generated query methods. HikariCP hands each transaction a pooled connection and returns it on commit. + +# Run migrations {% #migrate %} + +Let a migration tool own the schema and set `ddl-auto: validate` so Hibernate checks the mapping against the live tables at startup but never alters them. Add Flyway or Liquibase to your build and Spring Boot runs pending migrations automatically on boot. + +For example, a Flyway migration at `src/main/resources/db/migration/V1__init.sql` can create the table used by the entity above: + +```sql +CREATE TABLE users ( + id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE +); +``` + +Flyway reads versioned scripts from `src/main/resources/db/migration`. Point Flyway at the direct PostgreSQL port `5432` so migrations run on a session connection with DDL privileges. Setting `spring.flyway.url` gives Flyway its own datasource, independent of the runtime pool: + +```ini +spring.flyway.url=jdbc:postgresql://db-<hash>.<region>.appwrite.center:5432/<database>?sslmode=require +spring.flyway.user=admin +spring.flyway.password=${DB_PASSWORD} +``` + +Liquibase is equivalent: it reads a changelog from `src/main/resources/db/changelog` and accepts its own `spring.liquibase.url`, `spring.liquibase.user`, and `spring.liquibase.password` pointing at the same PostgreSQL port. + +The primary `admin` user owns the database and can run schema changes. Scoped [database roles](/docs/products/databases/postgresql/connections#roles) intentionally cannot run DDL, so run migrations as `admin`. + +# Pooling and the connection pooler {% #pooling %} + +HikariCP is already a connection pool, so a long-running Spring Boot server should connect to the direct PostgreSQL port `5432` and let HikariCP manage connections. Routing a server's traffic through the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in `transaction` mode stacks HikariCP on top of a transaction pooler and can break server-side prepared statements, which the PostgreSQL JDBC driver uses. + +If you put the pooler in front of your server, use `session` mode so PostgreSQL keeps a backend connection for the whole client session and preserves prepared statements. Connect HikariCP on the pooler port `6432` and keep `maximum-pool-size` small. See the [connection pooler](/docs/products/databases/postgresql/connection-pooling#modes) page for the mode trade-offs. Always run Flyway or Liquibase against port `5432` regardless of how runtime traffic connects. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/postgresql/branches) are instant, isolated copies of a database with their own hostname and connection string. They are useful for running migrations against throwaway data in a pull-request preview or integration-test job. + +1. Create a branch with the API and read its `connectionString`. +2. Convert the connection string to a JDBC URL and inject it into `spring.datasource.url`, or split it into `spring.datasource.url`, `spring.datasource.username`, and `spring.datasource.password`. +3. Boot the application so Flyway or Liquibase applies migrations, then run your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations and `@DataJpaTest` integration tests run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and create scoped database roles. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for the connection pooler. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/network-security" title="Network security" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="/docs/products/databases/postgresql" %} +Back to native PostgreSQL overview +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/postgresql/maintenance/+page.markdoc b/src/routes/docs/products/databases/postgresql/maintenance/+page.markdoc new file mode 100644 index 0000000000..238b636f6a --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/maintenance/+page.markdoc @@ -0,0 +1,651 @@ +--- +layout: article +title: Maintenance +description: Maintenance windows, online engine version upgrades, pause and resume, and the lifecycle states of your PostgreSQL database. +--- + +Appwrite manages the infrastructure around your database: security patches, engine upgrades, and instance health. This page covers the controls you have over when and how that maintenance happens. + +# Maintenance window {% #window %} + +Routine maintenance that can briefly affect the database runs inside a weekly window that you choose. Set it under **Settings** > **Maintenance** in the Console by picking a day and start hour (UTC), or through the API: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.updateMaintenance({ + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.updateMaintenance({ + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->updateMaintenance( + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update_maintenance( + database_id='<DATABASE_ID>', + day='sun', + hour_utc=3, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update_maintenance( + database_id: '<DATABASE_ID>', + day: 'sun', + hour_utc: 3, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.UpdateMaintenance( + databaseId: "<DATABASE_ID>", + day: "sun", + hourUtc: 3 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.updateMaintenance( + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.updateMaintenance( + databaseId = "<DATABASE_ID>", + day = "sun", + hourUtc = 3, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.updateMaintenance( + databaseId: "<DATABASE_ID>", + day: "sun", + hourUtc: 3 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.UpdateMaintenance("<DATABASE_ID>", "sun", 3) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update_maintenance("<DATABASE_ID>", "sun", 3).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "day": "sun", + "hourUtc": 3 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/maintenance +``` +{% /multicode %} + +`day` accepts `sun` through `sat`, and `hourUtc` accepts `0` to `23`. + +# Engine version upgrades {% #upgrades %} + +You can upgrade the PostgreSQL version online. A second instance is provisioned on the target version, data streams over with logical replication, and traffic cuts over once replication has caught up, with no read or write outage: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createUpgrade({ + databaseId: '<DATABASE_ID>', + targetVersion: '18', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.createUpgrade({ + databaseId: '<DATABASE_ID>', + targetVersion: '18', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->createUpgrade( + databaseId: '<DATABASE_ID>', + targetVersion: '18', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.create_upgrade( + database_id='<DATABASE_ID>', + target_version='18', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.create_upgrade( + database_id: '<DATABASE_ID>', + target_version: '18', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.CreateUpgrade( + databaseId: "<DATABASE_ID>", + targetVersion: "18" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.createUpgrade( + databaseId: '<DATABASE_ID>', + targetVersion: '18', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.createUpgrade( + databaseId = "<DATABASE_ID>", + targetVersion = "18", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.createUpgrade( + databaseId: "<DATABASE_ID>", + targetVersion: "18" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.CreateUpgrade("<DATABASE_ID>", "18") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.create_upgrade("<DATABASE_ID>", "18").await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "targetVersion": "18" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/upgrades +``` +{% /multicode %} + +Before a major version upgrade, check that your installed [extensions](/docs/products/databases/postgresql/extensions) support the target version. + +# Pause and resume {% #pause-resume %} + +{% only_dark %} +![Database settings status card](/images/docs/products/databases/postgresql/dark/settings.avif) +{% /only_dark %} +{% only_light %} +![Database settings status card](/images/docs/products/databases/postgresql/settings.avif) +{% /only_light %} + +A paused database stops its compute but keeps its storage, configuration, and credentials. Pause a database you are not using to stop paying for compute; resume it when you need it again. In the Console, use the **Running** toggle on the **Settings** page. From the API, update the status: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + status: 'paused', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + status: 'paused', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + status: 'paused', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + status='paused', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + status: 'paused', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + status: "paused" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + status: 'paused', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + status = "paused", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + status: "paused" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateStatus("paused"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, Some("paused"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "status": "paused" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +Set `status` back to `ready` to resume. Both transitions are asynchronous: the request returns immediately and the database moves through `pausing` or `resuming` before settling. A database in the `failed` state can also be recovered by setting its status to `ready`. + +# Lifecycle states {% #states %} + +| Status | Meaning | +|----------------|------------------------------------------------------------------| +| `provisioning` | Being created | +| `ready` | Online and accepting connections | +| `scaling` | A configuration or specification change is being applied | +| `pausing` | Transitioning to paused | +| `paused` | Compute stopped, storage retained | +| `resuming` | Transitioning back to ready | +| `restoring` | A backup or point-in-time restore is in progress | +| `failed` | An infrastructure error occurred; the database can be resumed | + +# Deleting a database {% #delete %} + +Delete a database from **Settings** > **Delete database** in the Console, or programmatically. Deletion stops billing and invalidates the credentials immediately. Deleting a database also deletes its backups, so export anything you need first. diff --git a/src/routes/docs/products/databases/postgresql/monitoring/+page.markdoc b/src/routes/docs/products/databases/postgresql/monitoring/+page.markdoc new file mode 100644 index 0000000000..9dfb2df04f --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/monitoring/+page.markdoc @@ -0,0 +1,235 @@ +--- +layout: article +title: Monitoring +description: Watch compute, connections, storage, and workload metrics live, inspect active connections, and check database health on your PostgreSQL database. +--- + +Every native database ships with built-in observability: live metrics in the Console, an active-connections inspector, and programmatic health checks. There is nothing to install; metrics collection runs next to the database. + +# Monitor tab {% #monitor %} + +{% only_dark %} +![Database monitor tab](/images/docs/products/databases/postgresql/dark/monitor.avif) +{% /only_dark %} +{% only_light %} +![Database monitor tab](/images/docs/products/databases/postgresql/monitor.avif) +{% /only_light %} + +Open your database and select the **Monitor** tab. The view is organized into sections: + +- **Overview**: key health indicators at a glance, including connection usage against your limit, storage used, cache hit ratio, uptime, and commit/rollback counts +- **Compute**: CPU and memory usage over time +- **Connections**: connection counts by state and by application +- **Storage**: disk usage and growth +- **Workload**: query throughput and activity + +Use the date range picker to zoom into an incident window, and **Refresh metrics** to pull the latest samples. + +A healthy OLTP database typically shows a cache hit ratio above 99%. A sustained lower ratio means the working set does not fit in memory, which is usually solved by moving up a [specification](/docs/products/databases/postgresql/scaling). + +# Active connections {% #connections %} + +{% only_dark %} +![Active connections tab](/images/docs/products/databases/postgresql/dark/connections.avif) +{% /only_dark %} +{% only_light %} +![Active connections tab](/images/docs/products/databases/postgresql/connections.avif) +{% /only_light %} + +The **Connections** tab lists live connections from PostgreSQL's `pg_stat_activity`, with the connection state, duration, client, application name, and current query for each. + +You can filter by state (**Active**, **Idle**, **Idle in transaction**, **Long-running**), and act on problem connections directly: cancel a running query, terminate a connection, or terminate all idle-in-transaction sessions at once. Idle-in-transaction sessions hold locks and block vacuum, so terminating them is often the fastest way to unblock a stuck workload. + +# Database health {% #status %} + +Poll the database status for live health information: readiness, uptime, connection counts, replica state, and storage volumes. Use it from deploy pipelines to wait for the database, or from your own monitoring: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const status = await postgresql.getStatus({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const status = await postgresql.getStatus({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$status = $postgresql->getStatus( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +status = postgresql.get_status( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +status = postgresql.get_status( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var status = await postgresql.GetStatus( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final status = await postgresql.getStatus( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val status = postgresql.getStatus( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let status = try await postgresql.getStatus( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.GetStatus("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let status = postgresql.get_status("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID>/status +``` +{% /multicode %} + +For the database lifecycle state (`ready`, `scaling`, `restoring`, and friends), read the `status` field of the database object itself; see [lifecycle states](/docs/products/databases/postgresql/maintenance#states). + +# Explain a query {% #explain %} + +The Console's **SQL editor** tab has an **Explain** button that shows the execution plan for the query in the editor, without leaving the browser. Use it to check whether a slow query uses your indexes before reaching for `EXPLAIN ANALYZE` in `psql`. diff --git a/src/routes/docs/products/databases/postgresql/network-security/+page.markdoc b/src/routes/docs/products/databases/postgresql/network-security/+page.markdoc new file mode 100644 index 0000000000..0763884894 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/network-security/+page.markdoc @@ -0,0 +1,463 @@ +--- +layout: article +title: Network security +description: TLS by default, IP allowlists, and idle timeouts for your PostgreSQL database. +--- + +Every native database is reachable through a unique public hostname, secured with TLS, and protected by network controls that you configure per database. + +# Hostname {% #hostname %} + +Each database gets a stable hostname in the form: + +``` +db-<hash>.<region>.appwrite.center +``` + +The hostname does not change for the lifetime of the database, across restarts, resizes, failovers, and version upgrades. You can copy it from the Console credentials dialog or the database response. + +# TLS {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at Appwrite's edge and forwarded to your database over the internal network. The connection string from the credentials dialog carries the right SSL settings for your environment, so drivers need no extra configuration. + +# IP allowlist {% #ip-allowlist %} + +{% only_dark %} +![Network settings](/images/docs/products/databases/postgresql/dark/settings-network.avif) +{% /only_dark %} +{% only_light %} +![Network settings](/images/docs/products/databases/postgresql/settings-network.avif) +{% /only_light %} + +By default, any host that has your credentials can reach the database over the public internet. To restrict access to known networks, configure an IP allowlist. Connections from addresses outside the allowlist are dropped at the network layer, before authentication. + +In the Console, add entries under **Settings** > **Network**. + +From the API, pass CIDR blocks or single addresses: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + network_i_p_allowlist=['203.0.113.0/24', '198.51.100.7'], +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + network_i_p_allowlist: ['203.0.113.0/24', '198.51.100.7'], +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + networkIPAllowlist: new List<string> { "203.0.113.0/24", "198.51.100.7" } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + networkIPAllowlist = listOf("203.0.113.0/24", "198.51.100.7"), +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + networkIPAllowlist: ["203.0.113.0/24", "198.51.100.7"] +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateNetworkIPAllowlist([]string{"203.0.113.0/24", "198.51.100.7"}), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "networkIPAllowlist": [ + "203.0.113.0/24", + "198.51.100.7" + ] + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +Rules: + +- Entries are IPv4 or IPv6 addresses or CIDR blocks, up to 100 entries per database. +- An empty allowlist means the database accepts connections from any address. +- The allowlist applies to the database and pooler ports. Appwrite's internal infrastructure, backups, monitoring, and replication, is unaffected. + +{% info title="Don't lock yourself out" %} +If you connect from networks with changing addresses (home ISPs, mobile networks, serverless platforms without static egress), an allowlist can block you. Add your serverless provider's egress ranges, or leave the allowlist empty and rely on strong credentials and rotation. +{% /info %} + +# Idle timeout {% #idle-timeout %} + +Connections that stay idle are closed by the edge proxy after `networkIdleTimeoutSeconds`, 900 seconds by default. Long-lived driver pools usually send periodic keepalives and are not affected. Raise the timeout if you hold connections open across long pauses; lower it to reclaim connection slots faster. + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + network_idle_timeout_seconds=900, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + network_idle_timeout_seconds: 900, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + networkIdleTimeoutSeconds: 900 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + networkIdleTimeoutSeconds = 900, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + networkIdleTimeoutSeconds: 900 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateNetworkIdleTimeoutSeconds(900), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, None, None, None, Some(900), None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "networkIdleTimeoutSeconds": 900 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +The same setting is available in the Console under **Settings** > **Network**. + +# Locking down access {% #checklist %} + +For a production database: + +1. Set an IP allowlist covering only your application's egress addresses. +2. Rotate the [primary password](/docs/products/databases/postgresql/connections#rotate) on a schedule, and after anyone with access leaves your team. +3. Watch the [Connections tab](/docs/products/databases/postgresql/monitoring#connections) for unexpected clients. diff --git a/src/routes/docs/products/databases/postgresql/quick-start/+page.markdoc b/src/routes/docs/products/databases/postgresql/quick-start/+page.markdoc new file mode 100644 index 0000000000..0fb0c48570 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/quick-start/+page.markdoc @@ -0,0 +1,96 @@ +--- +layout: article +title: Quick start +description: Create your first native PostgreSQL database in the Appwrite Console, run your first queries in the SQL editor, and connect with psql. +--- + +You can create a PostgreSQL database and run your first query in a few minutes. + +# Create a database {% #create %} + +1. In your project, go to **Databases**. +2. Click **Create database**. +3. Give your database a name, and optionally a custom database ID. +4. Under **Choose database type**, select **PostgreSQL** from the **Native databases** group. + +{% only_dark %} +![Create database type selection](/images/docs/products/databases/postgresql/dark/create-database-type.avif) +{% /only_dark %} +{% only_light %} +![Create database type selection](/images/docs/products/databases/postgresql/create-database-type.avif) +{% /only_light %} + +5. Under **Specifications**, select your preferred tier. +6. Optionally configure **Read replicas** and **Point-in-time recovery (PITR)**. You can change both later. + +{% only_dark %} +![Database specifications](/images/docs/products/databases/postgresql/dark/create-database-specs.avif) +{% /only_dark %} +{% only_light %} +![Database specifications](/images/docs/products/databases/postgresql/create-database-specs.avif) +{% /only_light %} + +7. Review the database summary and click **Create database**. + +Your database starts provisioning and becomes ready shortly after. You land in the SQL editor once it is created. + +# Run your first queries {% #first-queries %} + +{% only_dark %} +![SQL editor](/images/docs/products/databases/postgresql/dark/sql-editor.avif) +{% /only_dark %} +{% only_light %} +![SQL editor](/images/docs/products/databases/postgresql/sql-editor.avif) +{% /only_light %} + +The **SQL editor** tab gives you an editor with formatting, query explain, and a results panel, without leaving the browser. + +Create a table, insert a row, and read it back: + +```sql +CREATE TABLE books ( + id SERIAL PRIMARY KEY, + title TEXT NOT NULL, + author TEXT NOT NULL +); + +INSERT INTO books (title, author) +VALUES ('The Hitchhiker''s Guide to the Galaxy', 'Douglas Adams'); + +SELECT * FROM books; +``` + +# Get your connection details {% #credentials %} + +To connect from outside the Console: + +1. Open your database and click **Credentials**. +2. The **Details** tab shows the host, port, username, password, and database name. +3. The **DSN**, **.env**, **Prisma**, **Drizzle**, and **psql** tabs have ready-made snippets for each workflow. + +# Connect with psql {% #psql %} + +Copy the command from the **psql** tab of the credentials dialog, or build it from the details: + +```bash +psql -h <host> -p 5432 -U admin -d <database> +``` + +Enter the password when prompted. You can run the same queries from your terminal that you ran in the SQL editor, or connect from your application with any PostgreSQL driver. See [Connections](/docs/products/databases/postgresql/connections) for driver examples. + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/products/databases/postgresql/connections" title="Connections" %} +Connect from your application with any PostgreSQL driver or ORM. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/extensions" title="Extensions" %} +Install PostgreSQL extensions like PostGIS and pgvector. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/backups" title="Backups" %} +Configure backup policies and point-in-time recovery. +{% /cards_item %} +{% cards_item href="/docs/products/databases/postgresql/monitoring" title="Monitoring" %} +Watch compute, connections, storage, and workload metrics live. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/postgresql/scaling/+page.markdoc b/src/routes/docs/products/databases/postgresql/scaling/+page.markdoc new file mode 100644 index 0000000000..d3a39170fa --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/scaling/+page.markdoc @@ -0,0 +1,658 @@ +--- +layout: article +title: Scaling +description: Resize the compute specification of your PostgreSQL database with zero downtime and grow storage automatically as your data grows. +--- + +Native databases scale in two dimensions: the compute specification (CPU, memory, and connection limit) and storage. Both can change after creation, without dump-and-restore migrations. + +# List available specifications {% #specifications %} + +Each database runs against a specification that defines its CPU, memory, included storage, and maximum connections. List the specifications available to your plan: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const specifications = await postgresql.listSpecifications({ + +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +const specifications = await postgresql.listSpecifications({ + +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$specifications = $postgresql->listSpecifications( + +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +specifications = postgresql.list_specifications( + +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +specifications = postgresql.list_specifications( + +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +var specifications = await postgresql.ListSpecifications( + +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +final specifications = await postgresql.listSpecifications( + +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +val specifications = postgresql.listSpecifications( + +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +let specifications = try await postgresql.listSpecifications( + +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + result, err := service.ListSpecifications() + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + let specifications = postgresql.list_specifications().await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/specifications +``` +{% /multicode %} + +# Change the compute specification {% #resize %} + +{% only_dark %} +![Compute tier settings](/images/docs/products/databases/postgresql/dark/settings-compute-tier.avif) +{% /only_dark %} +{% only_light %} +![Compute tier settings](/images/docs/products/databases/postgresql/settings-compute-tier.avif) +{% /only_light %} + +To resize in the Console, open your database, go to **Settings** > **Compute**, and select the new tier. + +From the API, pass the new specification ID: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + specification='<SPECIFICATION>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + specification: "<SPECIFICATION>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + specification = "<SPECIFICATION>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + specification: "<SPECIFICATION>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateSpecification("<SPECIFICATION>"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, Some("<SPECIFICATION>"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "specification": "<SPECIFICATION>" + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +Resizes apply with zero downtime through a rolling cutover: a new instance is provisioned on the target specification, data is streamed over, and traffic cuts over once it has caught up. The database status shows `scaling` while the resize is in progress. + +# Storage {% #storage %} + +Each specification includes a storage allowance, and storage beyond the allowance is billed per GB. Storage only grows; you cannot shrink a database's storage after it has expanded. To reclaim a smaller footprint, restore a [backup](/docs/products/databases/postgresql/backups) into a new database. + +# Storage autoscaling {% #autoscaling %} + +With storage autoscaling enabled, Appwrite grows the storage automatically when usage crosses a threshold, so the database never hits a full disk. Configure it under **Settings** > **Storage** in the Console, or through the API: + +{% multicode %} +```server-nodejs +import { Client, Postgresql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +}); +``` +```server-deno +import { Client, Postgresql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const postgresql = new Postgresql(client); + +await postgresql.update({ + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Postgresql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$postgresql = new Postgresql($client); + +$postgresql->update( + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.postgresql import Postgresql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +postgresql = Postgresql(client) + +postgresql.update( + database_id='<DATABASE_ID>', + storage_autoscaling=True, + storage_autoscaling_threshold_percent=85, + storage_autoscaling_max_gb=500, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +postgresql = Postgresql.new(client) + +postgresql.update( + database_id: '<DATABASE_ID>', + storage_autoscaling: true, + storage_autoscaling_threshold_percent: 85, + storage_autoscaling_max_gb: 500, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Postgresql postgresql = new Postgresql(client); + +await postgresql.Update( + databaseId: "<DATABASE_ID>", + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Postgresql postgresql = Postgresql(client); + +await postgresql.update( + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Postgresql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val postgresql = Postgresql(client) + +postgresql.update( + databaseId = "<DATABASE_ID>", + storageAutoscaling = true, + storageAutoscalingThresholdPercent = 85, + storageAutoscalingMaxGb = 500, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let postgresql = Postgresql(client) + +_ = try await postgresql.update( + databaseId: "<DATABASE_ID>", + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/postgresql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewPostgresql(client) + + _, err := service.Update( + "<DATABASE_ID>", + postgresql.WithUpdateStorageAutoscaling(true), + postgresql.WithUpdateStorageAutoscalingThresholdPercent(85), + postgresql.WithUpdateStorageAutoscalingMaxGb(500), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::postgresql::Postgresql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let postgresql = Postgresql::new(&client); + + postgresql.update("<DATABASE_ID>", None, None, None, None, None, None, None, None, None, None, Some(true), Some(85), Some(500), None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "storageAutoscaling": true, + "storageAutoscalingThresholdPercent": 85, + "storageAutoscalingMaxGb": 500 + }' \ + https://<REGION>.cloud.appwrite.io/v1/postgresql/<DATABASE_ID> +``` +{% /multicode %} + +| Parameter | Range | Description | +|---------------------------------------|--------------------|-----------------------------------------------------------| +| `storageAutoscaling` | boolean | Enable automatic storage growth | +| `storageAutoscalingThresholdPercent` | 50 - 95 | Usage percentage that triggers an expansion (default 85) | +| `storageAutoscalingMaxGb` | integer, 0 = no cap | Upper bound for automatic growth | + +Set a cap if you want a hard ceiling on storage cost; without one, autoscaling grows storage as needed and the overage is billed per GB. + +# Picking a specification {% #picking %} + +Guidelines for choosing a starting tier: + +- **Connections**: count the maximum concurrent connections your application opens, including all replicas of your app server. If it exceeds the specification's connection cap, either move up a tier or put the [connection pooler](/docs/products/databases/postgresql/connection-pooling) in front. +- **Memory**: PostgreSQL performs best when the working set fits in memory. Watch the cache hit ratio in the [Monitor tab](/docs/products/databases/postgresql/monitoring); a sustained ratio below ~99% for an OLTP workload is a sign to add memory. +- **CPU**: sustained CPU above 70-80% at normal load leaves no headroom for spikes, migrations, or backups. + +Start small and resize up when the metrics say so; resizes are online, so there is no penalty for growing later. diff --git a/static/images/docs/products/databases/postgresql/connections.avif b/static/images/docs/products/databases/postgresql/connections.avif new file mode 100644 index 0000000000000000000000000000000000000000..548756f3684a49227e5a0031985a397c7c3291a0 GIT binary patch literal 33091 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 Y9u^%^Q0^`Qh!db*5P54aMPos7P(RS`;s5{u literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/create-database-specs.avif b/static/images/docs/products/databases/postgresql/create-database-specs.avif new file mode 100644 index 0000000000000000000000000000000000000000..e01987bf2ac8865032d674a103e3eca22b719b9b GIT binary patch literal 32500 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 z%0D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 Y6Nb{}p9h!c?TTO_!>e^P5PQAvC~Vu1ApigX literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/create-database-type.avif b/static/images/docs/products/databases/postgresql/create-database-type.avif new file mode 100644 index 0000000000000000000000000000000000000000..6b2619635b05b1da538b33c7b19ab2e9eb0ebb01 GIT binary patch literal 38925 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 VEQSWyd=f>;sL781>k9$(_bIIUj&J|~ literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/credentials.avif b/static/images/docs/products/databases/postgresql/credentials.avif new file mode 100644 index 0000000000000000000000000000000000000000..0f77e9949acbf1296d15071a61509cfc632b9962 GIT binary patch literal 16596 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 HeYYm1c~JXr literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/connections.avif b/static/images/docs/products/databases/postgresql/dark/connections.avif new file mode 100644 index 0000000000000000000000000000000000000000..1713ab1916a8bdd0513858352fa8fe53c302b16b GIT binary patch literal 36103 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 U?n|Tzrmrq}0I{{IZuNwntlPHSPXGV_ literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/create-database-specs.avif b/static/images/docs/products/databases/postgresql/dark/create-database-specs.avif new file mode 100644 index 0000000000000000000000000000000000000000..c3702ef2ea301ff4d8d192e884713b133ae83937 GIT binary patch literal 34502 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 N)PX-^6jDRWwT!fsko*7u literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/create-database-type.avif b/static/images/docs/products/databases/postgresql/dark/create-database-type.avif new file mode 100644 index 0000000000000000000000000000000000000000..ddee81190acd4e0b3ebdb802246a51204a435792 GIT binary patch literal 42082 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/credentials.avif b/static/images/docs/products/databases/postgresql/dark/credentials.avif new file mode 100644 index 0000000000000000000000000000000000000000..4c47e9f18a56c955c0d1259ca9e0663b02082943 GIT binary patch literal 16894 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/monitor.avif b/static/images/docs/products/databases/postgresql/dark/monitor.avif new file mode 100644 index 0000000000000000000000000000000000000000..01261934f13353ecedbf610b42025ef53d22da34 GIT binary patch literal 48949 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∾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 UZy>4RqOz*=UlpiHoU6~uK;m2%Bme*a literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/roles-tab.avif b/static/images/docs/products/databases/postgresql/dark/roles-tab.avif new file mode 100644 index 0000000000000000000000000000000000000000..0fe6284c6e078ecd497f19236b8cefb097bf461a GIT binary patch literal 28297 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 HTzl+bAPUZe literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/settings-compute-tier.avif b/static/images/docs/products/databases/postgresql/dark/settings-compute-tier.avif new file mode 100644 index 0000000000000000000000000000000000000000..105cb23e159154f7b38a3937f4030cc0da3267fa GIT binary patch literal 43887 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 B*9ias literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/settings-high-availability.avif b/static/images/docs/products/databases/postgresql/dark/settings-high-availability.avif new file mode 100644 index 0000000000000000000000000000000000000000..4fd9cd601cbf40fc7b063222b392da501994785a GIT binary patch literal 42591 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 Bew_dS literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/settings-network.avif b/static/images/docs/products/databases/postgresql/dark/settings-network.avif new file mode 100644 index 0000000000000000000000000000000000000000..4035fd641d53e2de135ee1eadfead07d0e6e967b GIT binary patch literal 32262 zcmXu}V~j9N(=-gPZQHhO+qP}nwr$(CZQC}F_3nFK_xC+LnXal%CDWN?e)RwV0N|Lp zcsdxmS(*X-7q*sWjQ``dmWKb+Yqq8?hX1So7laljHctOP3IO0>Y3%a<`2RyV2TK>* z{}X`!Wg<%(d*lBp5di?e|JMKF^Z$<kzA*nOVoOWA|2y>ms;K`7Q=tF3{_`5TF);p* zs#!WXIsAtlmJY`D{~?T_8>4U_>HpbKES()p|7QXK0R3+RE&i7f94tL7|5pKqfPnZ9 z&@3Hn|6l+AH31w51PlP+i(+eH=z;_Q1;uG){!=&vgau2$^!WiOE=U7_AONBOfI<8L z!&;|UI^gn8cyv#+l)Q<E2lXZAB1}V}SmYm0U!DA95!;;egnLd-!P?e{t5Jk&ck3vU z)D19Z16A$U7@kn~o?}dpB)8{K<97-CZ!s4`6QwZ|im$P&0tp`TW{05Ir|M053pqe( z(;`JDLneS&mTViVN-%Dzru<=xmq-nTHiHjE)p_MHnhdw_c~r&QVd|1$^QqX4;b;9J zt*#FSbv+F`BCG#1wNvw;6?3OZ_6*+6@p6)2XeQFFC+Q3Juw_cK_yR>e=er&$h2~6u zmv48^VJ1{GAOF9KMLU1O7z^>PgbK)Y025{sBAp?3Y^SjnVXH3e$2OD{pyqQEAlOR! zRr!UJZhXq(5S_o%5)8v=MS3W`CMa&sj1$jAfYM{W2TwDWlSF{_OB_rjf%ElTgU+p< z={Rm0Dv9}`N-D1%Bu&;B3G9G*ErO7;de4(rW&eko8sNMwlHWK9>qT!xX%$bOd{#vZ zjv=D)=#SF+s7v&xYnciyH=7?b8(TTXR$f`yK@&3ji<2HzVr9;|H=d_7qL1v|ZJc;> zl$040i8m>9tXG(YiuSh`QVFhAm9s03zwskNZQ_3?jXxPy3Yyb`GHI{Lk~8XPXZD<U zx}y>zYK6);34v4h6|Q;XfbPn^U%1X25AwHz0=g2dOXaViY`9O~YPgrh=$x(1km_ec z+DoD)3O{43K%#yyRi+ORprFcqwu9sbuvL9v|CmAlmM6TFa_iiMMmPM*;x~wTd5&}? z207<WTQkxyMK>XT!|fq5*ZO2u&a8o^GnT}??}Kf6+L(#seFi*)j#KrHW%%pXK9&LF zrh74a)E*=31%p;l;XCr{aEGaPI78Tr3rnX7Kn^)w5Oo4mo$Ah;J+xs;cv>G%$C!lY zl=`QmL+Lp0Fo1b@L=U(sgEc{NwG|J1InY~zl8JS>e9O>VdBMsP2byj}ts8@dVTQ8% zgG{w~)m#-K?taNNw94z06-xy<&^fnBC#q&2>l(s6AHGL`WS}^TaTsJ7p~7(k8J--c z5*(-X5CYMicqa->%m3xW^#zGL6H%IR*NCYaloU!zN*aLjP$i;3v0WqK_0MU2*^?84 za>#Wd^`uOD{q2ALAawEV#nlTEa<?h2{a)05nz5*XmSuvDBrdOD-zQLhlaen%w?FFE zDJM2dnMF{I%T9?tmM0$np^s}a_KXtreM8h7BDh%R$`+vrqL5*=2k}%DSUv$QkFmrQ z#4^aRPtnU-F1o|v;jrrORvp5_Uwux9fakqSNsxWyZ6+E;8y!UWn4{vMItb-Yk##f@ zL2A9Tb2xwT6jT$R9zvf++1^unR{OvpGOXh;vXX64xea#rkK;#Wsy)E4o+N;);f(Ul z%obUUo<A)1Lb+NF)Jk0YrN9i%W#4k~6zXG~p4GGscCp-L7|K=431N>0(!w{BG~X|U zNrdp!!eTJ9;r}?|cSV!|ebiGqLluzS&4?J-W{EY*fxX@pyJ`WM&>cMmc3;<ascMPe ztW`ojKm#z|VLoSm6{G*X<-A?*%502ukG{Bf_K3o98R73vzS+z_kn}2{0Yd>Z{7KCc zoiiIKet@Rd(N>UuCSY1ZqS6w>6Sy@e;6v@N41a7nkTkTAuPrJ(B}~R=vJY<dzd(Xa z6Lytjp@yIb8GPQ~1D_c0j3HUM##p2$>h3VWkj&`CIL_Vx>Q6<1TAKS%^O3;36bL~O z`WtY+5#4PwrkpIXBUj0CevR-E38Hm3A@&-n8C`(oRHrguXSipUozU`e*?=Ti;?KO> z_lY7lQI*<nuKXOZ2|7-aNo(da1%R$`&0e|p0-#a(HMLiY$5j>puUZ1bdz<iEE!N>F zr=)f+b089+nN`Pi<t8&WLvGpK^XmlaEM!X(EJ0{+co3?Kc|8ypL!khnr4R}!I)-fz z!2_vA%sWJhFv0A=ol>BRnZJAaQ|`am<OB;HnIIOLZ;0|umDg&+YMOj@X>Rg<Q9zdu zLjNn6xR%$T-R}+r?tZJ+U=|%T==(SXOeR+XE(5y;gq=X#;&TmxzMaNLGydnwc2^Y| z3T4+UPXbs9!KLRH?~3lTZ~cL0cIIhX2Xoketcmt0Dw^xIQQP@B*$c^!igFnT^J_uv zWnb^Qo#rNn+*vZLj9gl%w>MmB@I6W^Dv#=99xs$HOt$e%%e+iJz-!J^?C}gl#OT?X z3{4tGlO~L}4C8UkH62-{h45LH>(B+d^zry>s=9=hC@X0Kn)b4#O3gxs9m=y(%|*FK z5`$3OKu?sP1nN~`CC<D-zFO$QEwFsVfc>V?=!YmfvnkRgEH6o^h3qUBS2kn=(U5Ri zvtwl$;$d+5A(Kbhax8&$W2=`c`DVkxDfXs&z1)DWbJYB=i;cH*Ab^w!1e`vxqzScF z0S^(?QcH4n3&8$~F6AvuC$8;5;ym3NW_s#*UsJa`0pZ(=Ixjmr+)L}-<>xtC&67eE zf{t%isJJYq_h5hgI0Y>NL#^u^S8<izVA!F&8Sf#SZRAmlUdns=C+PeD8RL8Rc726b zzqaZxsTxUj|9!0D9x0+HK=64W7o3R7bbxjf<bEhUUTStRvBih)optW8YBmXgX@;x~ z0(L=v*?dn+`ZwwUo>jf8u5_0<I7NT;LcRiXQSRrx;<rtwp+=sD1HDvx+~7eNN|Vpa zCM;m4W<fP%qgTl-l9to4(&wOfWzV$V11PE5O_((dp}{|nJXANxpwq1W2fa%50Rr(6 zW9^FOkC_QGco`=L<t<}`^&_+U+gBa}&bns{!RsR1>9Kkmn4(}Ix6nCe3UIIM%Uu%T zE=N|HT-liESl;+v*wYqLSQkibJ9KY;!LK|l=1s6~4X;BVtu(;Bga{)#I_Moo^sW4e zAQ-3dN9pfidx+NDllTM?_KK7tbJJ>4Fs;!o$<F49A#S7?=##{Nk>}y_xI`9`>|dA_ znLR$snZaXc+voko`!l)L{J)J^1E{j4J{L=x2{Vwa@p)OgoZT(bzp?t~xLy}?oRIL> zA(No3!C@;ts9CiZ_nCz9+2-Ltb*^3hC<p#Y)oYBAk!=);Es)@;vX5SKw`ZJ-qR6ag z4cPqV3t)V14)WXMYJoUMPO4Km7MRGl;ES<=ISo8x=ZH{FtC-rXMrCZxfO3=CXPJU= z9-h3c<$YUSRdHD$b(pC^M80EvqIs>FY-{7V+r}&~tqqqNyxFPU<2Y38f3?qj<`IP= zVllTgPc}mT0*$B8FZb;a;PuHaiFxc-(m_A7=Q3xVZ3O~3u>5`sIskC!vF3Qo_1Qnz zr&g~Xt4Iqcr}2K*zOE!+WHK?uDo4M)rQ8iwCQK=Af&8TLVPY<n=0i1pvaYvnR!H0M ziy~a=9t`{cOgfiG5wg3$WA)$TtHo-1p<n=%k&Hy?K_m5}IrGH@{X9gukGE6K)lWW@ zIkM-RZk3ksv$*zyl8mUWvwt92`V$%%Z#^&cLNHWLYic1B^4KKr5M?vP_m&yoBy2t| zV%EqaMg6LmopDP`F<<o6*jOwJdtz}?Wx7O3+l-nF&En-s8hnQzbnv=h^r$QYXH&cZ zEwOl#?C%vN5-5l+E8<1nq-X3E(cr4u#vUU;O=XTiW)LqxXVGxUuNgfYDJw`6nt7np zIW-!k7X9-_(ac%H=(ty`A(mki2ub46hP6=JdKWO5L*CgTTH22T0^P3;Ls79CG>C?9 zcBBwv>2!1--;ISMHJIoMp7%gc&s%BsXYi;@>_ZS4zVga_19g?36aoVa?1lAwc%M{8 zMu-8Vq;vfC&|SmgMGpC1F@Q1B7|DW47_BB@cAityA0qJsX)<>a3Gy}yIaXQYTp+o; zMI#z~eHV}qhAOQSb(gvsQRj-qYndt8mvbuUqb<?HW*;S)<G#vkEc*#p$7PUIY2gws z9T)R9Qz$N0h5an;XRlXzR37ON_X2!K3sJT$?b1Vza&6$gt0?qCd5nCgyopUA7km`H zG0;s#;}fUnBHQ(Rh%&HxQbnt0!B*X5uQ@yI66ri6sv^kM=N0h6xZ@k%s_ye5=;J<0 zxsvnZY1xLN@yiPQ*ak-gTl-)UK_rimtqNii)POi&auiB6iOeto{QA-v*=Unbz|nMu zDRE%*UzG8i>cd3Qxs-d%F>R{-6gvP9ZE<5J8KzNVwsC}Lgn2yKz}0et?%}+|G_38C zB<XoA5g85D!9o#r!#Y$#Q8vbSF`<<H&>;U@Tk8y8yr5h<e1<{>V{y8=lu<HUFD-N& zn}KfkKC>A`rsj|4Jy$X>!vI>{au2UoJPai<QwF#=#T2OOX8$U%tPwqd(^KczWD_6) z`z}yhXFUIyErP;a7?EehWLb4F>og90@Jc3hJ{QcH{YouIA_GBV-*a#y&Otu?R5O$u zGc^Ss>okGlc<HS{fasrJ;CL+G^!T4WW|{N4o&nzIOG^{+4CrL~gbb`$i|+%AjIT2k z&HcTyD1dmLVP?F|{og;Xb)n(9J<echeX^4XQp0MwFvF%fRwUht9Zgivd{oTn!`b+% z{n^JWw4_&AIqP6y5zLQhmw{mTX&ePB{Q*iau#d7(138nEgp~;Z=q4`&_UBsJVXvz9 z)lf2X?Qh&DF=}r|8(}g_cY}zE1BNz<$vbC4BrPC=TkJ0)E^!O&ZeoQNiN%{uezr!~ zEh6YP%g##|XM;@mLW#V_cwkgpzTXp}4OOZ4zE;>UJ@u5;_Ehn&t&f@t@azm$;hx+b z_7bWJ`iBsP?p-x7)J&83;W#){Ac>#tn2Oqhekb2X;{6lW)1hslIL)3Q0hdNoohNmr zlnM1XEHd@VlNusq!Bt!=Ht$qO>6S(a-*nMv5%AM|{%q(JE(H=y`_?cJGXZF4<N1|e zr<XjMgrb;wf8NT>AJRG~O?tO|0RXk-3V#pAG&1S}v>d&mxwn)yL2`LtJSDr1P5{qA z#G6Fa3o$*pBn7OT<`gkm_6`bKK|5aJj_O_o+B6UY2%2BaudU1n=@7R7fZv-|Bq@IZ z;ffy3yOIqb3d2Dk0F0kCJ+Y7J$w~>WvygVK4*6g=i;0bN&AgDgHefs(sF{N2({|1# zs}BiFQf}E>CNNXd+B>YMc9d|&{%nyaL9;HM1^G`@6T(@qwuiaEPyC+W&$R@hsAYJr z)Ie!YvGIX1qN|@PKO2~arXjeW>O9iazfhce<!vvF+P3?SK3PSD?9k5D`+Q6T5hmhM zy*e8Vqj7-MnBx74lRE2~4zghhFzd-AK6BgEWx3Ppl3=jc?SY_Q0BO?L;i3|mV&j>E z%Emra3~w&jN`6H+l<oP8<t4Y_IT|j$BaXLTQ@1(e!<o^~{c<ovA03T!K}n<~8u*5B zV0xG+8Od8mCC&vW^oqZ222^yG6uIYKFnFpwK5M-V{&r!v2~Lz_l8m)v(uMw|=5>G$ zMu(t!zJK;1uRA7Trkn!GsikHh2bJJ<J&qhXU;@*tBDkpL<bL*Jj{G^@?lA7n#Mc{P zcVj)Nt+MEtC3#VhpH9KWeQp~!>DcGz5NfFf8MPS$R@oQ}L2<BE6^SXN|NXI8<5s!n zA0YBv+GrrQ*b8nAYEx!ekdgToG#DHb<*5q2R8;m|pP?!R^hkRdjSC!bOcM(NIuQR# z1-=na>h3##3zu|{Wka=PA7KS+jc0m2eakV-Ymn{qy`WBFo<o}i02<Rmy0st30pXXs zv-GO_{nk55Y;|n|I&I6tt^oS95cXEmowyR-lib?+Pv~4=RP9d?&o*q(l3|vvFvzy} zl->0iS5{!w3mJm-UKn03YP@1((Q&-x5jyLIOI6s1pZZvYm`P&va-Kt=Bv5)J6o}zg zoNsQwpXy2GaFF}vhJ`V`F0fMQX2(;ptR$Q<`Gf@Y%_X|49#@ECczQ=!1uzpZwcMd) z#Pi~x(|unED?r^uS>%1{7(3UNnF*eeVQOw~oIYkL^fiz*Wb}!^b2);-NbI+^^M=gh z0@`VXXp}c>tagDnLN8@rN#u|i_Y$D9+bB<v-e7?FpA`}gOL6vSHEb>1DdNt#Edbs+ z+KK5~SdIja3g~KWNZ`sLshwb$D;MjpbH1X~qJIm-1|BlMN!Z72p1i%f5PFr;ZYKvS z7|Ez$2f4&HAgET)gMD|28c+guO|J6QR36R!1$aZ2{Sfs+1f)CiJ{bU!7}N&KA;8^7 zxgcj~VoW|#9+^l%9dym&*|Xfyjt)3RNAL#7&APlI{g5uhg$88Gv0H%I>Ex%Gr*ui{ z(bVDxmsejDK^sOrf3bPVIPgTEe1)`Y8L9H1f(Bw0iJ*B5CNqDw-3)Aq{k#rqOv%kB zfHPjX!q12a^HKNz`=eI0ti%0N9`nROiRA=$GB{MxBS0QfCssf+%~ir4-)gYUciEyO zU7iKAB7cr$x#HI;bVWSVJIgL$#|RFqfP|i;?SAtsmWFi(n48B#HeZ_^JDgyFz>a5a z*Kj+%TJLGDGrde2fxq^xEQ*`Lf++tnWIdJb6=;!SCJDTFwe!mdU#YYnAuu}ZE@0*o zHg~!c3J6mKbJHdu(?=%1=tfk-VJ0OG+{bbiVOW^EVVHL`m@IT`D$p`>>u3HNO+y$} z3#sx�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 Rr~l*-F%vgim`55-@f+;BpeFzT literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/settings-pitr.avif b/static/images/docs/products/databases/postgresql/dark/settings-pitr.avif new file mode 100644 index 0000000000000000000000000000000000000000..f8dec97f72aaaa13858797f5447e050d626bb499 GIT binary patch literal 33959 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 EfX49EXaE2J literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/settings.avif b/static/images/docs/products/databases/postgresql/dark/settings.avif new file mode 100644 index 0000000000000000000000000000000000000000..3f1cb84f669d7ec17658ca5e71162f1827686d07 GIT binary patch literal 34735 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 D@jf}Q literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/dark/sql-editor.avif b/static/images/docs/products/databases/postgresql/dark/sql-editor.avif new file mode 100644 index 0000000000000000000000000000000000000000..95831392f812d41f268b8a6508bc48c286db750a GIT binary patch literal 26576 zcmXuKQ?M}14kfy6``fl{+qP}nwr$(CZQHhO@B5#*GwJHAtkkONJakna(hUFrfNkpR zVQ=7SVG8h{*;tq|{4ch#F!&!|wJ~uv_+S1%BQQ6%cKrWC004UnBj^7Y|38GYw{W)k zKLqeUPiSFnXY@ZN%ntzg-};|@{$B(zUHy*{Sy<TqpF{so7WF@30`x!Ce_8`qdWQdn zsuuQ+_WvQfg}ss8e+XmX${-X#@_%F~7Ebmi{}TZKfd03E7XEVx_7?6I|H}YFKtTKl zXcqQ1|F8c4iU1A(0tNsu-L)|`a7F@vg5t0=`zaU%!i2?V9G(Fb6QBk_;0KWh&?5SP zVX0Lp>9=Q`7)knbn18132`8jjiBA;dtC8DtI;+ib6_8f<sDQLUV-_>R(l!t5xoaDd zhH9xaM>2rE0c;8;k9Vn4`<q)p={<FLqaCv6;qo5A8Yzi<Z-t}Ru`qmUpP0AK(rZ1} z`u2r~SX!nj?f%7DdB*n?Dnig~r*iVOFT@4)aB(XT@nrOb^La|4qT0EtpHNBgqU>Mx z$`6Q2czR=e{xmJ81^Q`vT5E?ud$FGmn$xZ!vm|2ad-GD$KVap%{S+;_3w_&A&-2&7 zITMvf4)CZ^XndWn$k?}`_Q(NF^2^n6gL4jp!F!@_^{ZwZ%ScI|5R=JT_dbT!JO$n# z3Zi&Aq%cAHU0~A-Q2RG8)E{o$Zm>mhBryjtZ$sIi2$l5*9=BfYlO4_Cj(6zhWFK;7 zf<ITZ9=?P=ZOY3CF)Og1VKctWq^&czYC5`nANzYnC|aB*CE>oAp;@Ujpbat>=5*ZS zNSCFQ^GaF2T$~}~{>J477QZVry00Q-Z|!1zGr~1}@^`0FjGpA#yK{tJ#H$vIQ?O~O z{j*nuS5`>CdmbBS_xeSXM5j;sF{Z)h3BU=;+i@RR#o>2sVo7u?qE1>MX@}nH9ju1* zb1Qt!%&s0)fiTd&L^I@184D!<J7KbTpYD}Z`*kMSU4?ZFwvtkb*B!yhs}5vKZYa;# z7Xdyf8p;x@&179M?ooVor79k?n)P=PXBneytT`I`Duqu1*?!6Xp@yzdt{Vk|DU$oA zLsURz^pordM&WxW13!N9DQ)j4b9Gj)IoZR7#T|GO59D~Y{^7hc{#!9(@2dI92Gb>S zkGCFHUZr{tuXCQE(C2+m`f=M@-iQ2SkNOpd^iefwKgm03Q7G9w?Rg7yq8aJw%0qkT z6sFMpcIgQXqszCH!h#0r8~&1Ajc2N+lI@pp<)b0IK}0MHSMjhsY{D5n*`gWt=Al48 zN5*$pzLBRpVPu|QQc<|`K0<7S2jBN^0jYKkgyNGx&#B(7e9MbWxbar=Ly#K)uzNV^ z*`9CnmeUsRqXbcd226R}Y?{(Seaizqx^}>**QJ1yd<<ek_SlH^2q!bwGi~ReZ-c9i z8uamgACHGm_@G3>tt4fLsaWKZ1A7H48KaHOlpm1+3arAhhP&)YU7jCPpvIqz$WYgU zE95;KN~>^(kh2Q9x`F22Y9sDkon^wndaCAR*dU|VQ!==7jJQsz_Q!Vs_QUEmv(j)I zV|}W$Zkhbj-jqKxFjOP2&bDQ5Ztf2WB0v`e(}z+;(kmx0>!8bz*iVO@?Q&DfG`26E zX!icjn+kp~k-xRsDb&%Z_P`xDRK$uK9Uh427?p-$*X(}1-0<{X#|0*kQ3O%Q5-N-a z^F!&fWb@mjfI^`882<wMti<kQMx5Oh6TvJzW-Ohq$@259b`h%A4y7I(U*sNI6d6=d zGp5h_IHdd`xH1T>dzw!gV^f_>>z(GuwmNO20NJw#c%^>Pqr&G}#nY3<$$2`t#s;R1 zNH@)j-j%iy@9%e!MSXxZkSTc@8MenLq-h&d?W;*zIBti_7A}XH$+&!OsyDi5cX?vz z(Fz;Dm#zewDtS)y#LO)LC6@tu2DkT!bCSK-+w5}zsDQ(~!41^+GVFQA5d^1RH~i2U zRN#BhOagF?rhnqT6hMfhh;qk@_8tZT<0b^afhyBQa*v(_Y`?)1Vk57#r6~ZECV*;B zJh&9%im7{CoubW%6jFyHWoVSM860Y>llt2HJO##jNv9@2qUkQ2N_m^3&?;2KX_)RH zuWk2lWBp2n;l!r++_05uO8B2g^lGpNiL}90tCO;@%eiX@EI>bQg4u8g`wb~JE1%8X z6cQ8#o5B;^$yfeE*ihg|`<;Snt2UDAc6V?4gYf?8G(Ej$FBe5sebd0-NJYtEd%c;& zbM@G62t0;kR|^i%pi*c7&|nU`z6)^jB&4;Q#bT@_{E)0hBaR7S+}73|khqUfYU0dk zj&n$vE53HK`5>^E^^OF?5Q}!N?DjqTOf1}XsEyv}G43mj$#pCm3y<m+8ByzYlTE1u z-waY3!^z0(Dd`5>Cah8&$Y~{Mx^DmSkF?78*DIDWJy&);qWi<rvNl+|n51SbJJMw6 z&Gb?zegbmIPk=dFP~ByZ4>u$fTE+ask5KtCYg@9ywEO3Th68sXA701a)lo6RmTsJ4 z<Mtm&V`yl>Km$~FehRY_<$-rgKuMww5G96t5%KX&-<$h6HMUKfJ7Q;{=o#8*<u)08 zk{c&+#A6mX;)1U2d3&9-O<_ar=*oq1p6gIhvYmIN*gd=90KdS}!XZRX;@yBaUY)3% z7>)O+#e}m8*iM>%_3?~A{l@dmI>?3#$Z9zGYQc9#<QexAs!(^pV?liST|lOh_T`nW z^bAUGH_tBo4dytEb8KO=bRkq1s^{k*67&O7n<X?VuVHQYj>VYi6AgTDyDQH^CpEGp zdWl&txC6i>ZR^I7<TC*_h^PWUo|69~4!&$FoPhi9<#VSLf2NJ4U?No`64cRtcvhvV zV_Qs#TX*WVB1UB(I1-_M%D?67tiP=<nlBF=0&=Kq%DP{PV@<V5gT$j&<K{CH!)S=4 zObfKT&fYBVS$_7H6b<2CBgA#KqoW)DM&>JXRI{BbY+co@#iJ;yt8g((@4)(2--D4< zQd!I1L*2&waKE03C<u}FPx6pi=`P~b{f<@*Z1HII+ubDTi7ypld_x-|ze}nrFQ}eS zT~7eE8Z~aRPsbbz-1&M+VVyY8=KAN9Cw5vCKwvY9Wt&&}IXjy@ochK2{wB0I>>E>A zyZ~=M^>V~-uq6W0!dZgK!N+(Gq0^MEb%|5`itW4FP(idlXA)J+El`rrq8*3Y3WE|5 z)P<Lggbw|`<uS$WPHG8Je?r7oV?(NSb}8Ii8G?Idtuz927^x%MZ&7H3tZi_lBu|f} z5^d}ernk^DsANdR9duKLW^XTfREjMKL}ZHPt4}5WjeG3rl|eyYw12Lm8YYMsAt7wx zr#_WAa*V{Yc&GIOn}OC8Hhg=HY*ZJuDwDOlPS68sI&rb5l+2@s-=11t;aj2Q_$S(X zrBN=P7`Q5dDdi{_MYw82EM+TlklE2>a|arzjo+pz8AkaH4>>|@-HdB|LC5NjZ0*qH z+PaPbMHMNFQ>B9w{646Q8J~Ub?IPY~(i<~2K#%F)wkhxi|CDSdj)rnxqbjkVC+?-y zGYRbJvSiUuk4%q~5-TTnIE3PkIuI8GU%84w2NY@}up&V?q67ygxO?PV(Ck}2mMi|f z>y>b5|JUq7{m<2S`nHZA`!R@tgQaSYySq+Mc~5qaQkwIu>bX8#rwKE=6C***Q4xP8 z`1Txr(A30*`)N)LxnpNatW&x55vw?QBLf#T7bZC$P|V%kJG&T0f0Bw`7flFUoD-<^ z)qbg08BJ#o>Ce(XU-ox-FedkqTxykJ)#5nhkZyjbFl3ljVHliU<8<wLYoZnrihJ#5 z`Mv9(cu`OB!1#lfZ8!=zO{|0)0jWI`@WxP8BgD8;agj>|SV>js{;|ckZ8o|2?B}%c zdy>WHgcc#slj*Z=?HzXt*-T2=L@F<e5aE+66b&qklw3v<tT52Ku!NrqBt2@AU($Ys z+HEY@Y+oe=_jhir4MF7g$Vfx!(=XfEx(Uv^G@P$GV1P8|XD2+<ihLY8rUo_FVo1zj z4hM^(UZfw)F)X5HD(Ig<3tst^!Eu8g26#UBmZsGBvSP6LVVngwD2ipbwoqA~McKD! zuCTE-9<8-XM%n%*CS`t5N*xh(4&>F9Dn|t?=;Bi;mxtnRg@H2csOA-+NMm7N_hUnO z!8&$^zD6=oAHo=fea|Hu^fUqed;>qGtdaHH0fDaDP+$@85sN!QfoCSjv{grjlDm{} zcz1emZrD2NAooCPW=G$m?1NJ!>h)J+moGB|p1P6E$ph?>(?KfAvM+jK#+@HU9_<?k z*~5Yd8i{*E%R3sBC9Ix>v^e1x{sY;V2*as|CJTbB>@H_bbM2bjdi;`;+#X41L$9}P zV>{ex)ZL8Hp937~>OIguLa;s}4<m~ZrPh;5!U(|$xAFwwLy{_Ib$D)AI<aA0z2xj@ zCg*nlydN%oA8m&7zRPZ)ljx(-IIPYi2Ll$FL<3oku*6imZJ?q-4qXy7!FxEk6=G{e zTIRC%HJ4fX3)1aEEqWz#N${ZJc|(FTBfb9>3>+pgZ_$>OS-$-}P0dG~OMXp6t&ZO} zn&q#00SZeb><jS>wbx8Vx%o^qjKt)r<-vWcR8C2sO-DQR4SjyA%^}pQ8Epr(Q~4=i zx9>|cOw!dNvsIHqi%2my)^C->ch;OD(ri)weoGC*G_Wvzdq2~#x*P^B_gXe27nkVL zvWjud+tNzcYPfzMcYpEZ#n6UVS#Ts;uiphtK6W@Q4wPed<Vn%}P+69Q-Jd;*y-!|8 zJw8RVi3MGVw;lbmM!x?=jkn~oxQ8QrQ}SP7d6HE?0bsL+0Jqb%v~>youW_#0XnGoV zD7Rw-zgSG{X7EUUI~VCdy$wLha*oIBW~M=W*0?hn9i#&URMuT^(DC=Ka>(9E{zFp3 zIAiUM#6}Jr@QXb?2~cS^<2ObHBeuHBCUsF^u=?^)OAB|%3uiwm!C3ubCY_nPL3>eg zt??XqFxx2h3gaW>GYREXoxKBy;zSDBj&XOj?{hs!F)GqH=^m=qAV2vSg5cisNE^*X zt*Exp`nyl77KRumOG!FX(@rZ_zzo>PopbzmcwC)9bOglnX}}Mi-1@+?NCpd~Ky1Tj z0tjk|7>{^vrkigj;g?3LQsWrl4`3D6f&X1`@LTAUmjm+YH83_5#GW46-u&4IpO?i@ zXjMR7cCt101?7Kv*fULs#o58Ub?2<m!1H3*w4^t&f~smCg*=i=Z!G6N_?;+8nac|> z9oYDmK5ii_MvrJ0v#UpGi!b&sMF5J_JTXAhTp1zwvIrPjTRup&rjKQS`KyC0WC10! z$WYVLzpoLAzb|D>PYE!w!}y8S1hds4MPDF!p2tewxzt3^M55Ak&x|3SkSk->h4HI* zin_vsVM^Rae>?z4P#>Gvb)D(pp}(1aC>t~24rN9!b>h}^Omdvu=)h<tFh5h+CCtN? z?KGw{usen2g!o>p@=7knV!QGo{~C?CSSmvUA%Z$Hs^a_~_Rj-TUP#iVe79WaZFSNt z+M4s*^SGUdi2bI2DYAO<lK6IWZ4~-C)?}2e1RY6_vo6uC4-%$iooS%0%o!81B?LE9 z9y9V=j8eQj2|DpK+Fuch0sXMRQ6_um1LzGx8#Ez{&$5DVrau(#KRJWcMQN-T7%g9* z&l9;0Ccr|Hw;oJ({^YeG!zr7`kRNl%h%y=c0>pUd01cOlUaO&zfXzA`@k6pXLNN7W ztQen<`*oSpP$TX%<sFXot<OTbl{OLKCB{Af_<uT?nYPOlmq(4+&n-{1kaggG2dTnX zf?nU$Uyu_cMCgmbwwTnNVge+wh6lgq*vcN&vH0Rw+CRc-M6^98eEe;1j}`m*Fx3VC zUdFahH}V^Qb;KPBK3dPb$8DmQE`^V!vjKXR+bWE8hlgK8fAbT7uk0NJ_aGy}_(h<1 z^6UbAVjw<83CX{gv@|exxtlc>PZaXg6>fJiX>-}u$7`U;iUj<aUb&fvXFgktF~UZN z=1YVYrk6gTVYVHWag}_GgmihpOXl=q9ELm#MpZjiUFP<we4TlirPH9=G~y;dAst<U zPdz-F#-m<}YdKH^CSw^<ouWQK&iEYOQ!sZ_hcLqx`;Zzl4t%>@ueSoxOSwyn+MpPF z!Kxt*%EPa1>-be<E>bV8Du3U2r2h_t>LktgHX4|}RtN2%M%f?~>IJo+K-L$?6u>xK zbEYGWVE@GO<{Qh!!*d|_I;3vWZLZ1QKGk&;Y%L-3vO5A7rZm6EjnEMD#Xj|K%Xb{w zBU^w}s(Hk3(#I+v*>>K05Bh8WeQvm}KF(S@dJW?zl90x&IK#}p-fS5U`c%@#MBhj* zd^;i8cf?TEw*3?vOmi1g<#;4Ti4CxW(7o)NPBV0y<Ui`LQ{g+X1u`OO-$(ZkAngjY z&)XR-@{}?+D(=Ri=25TrA2zU4gvv|l@n+WrMVO2wtki}Tmq-4ym|kEuEv8Fe_*s$K z7t9}Xb<vn!4Tn=_qXb>T((uE87^<(BTc?NR#zT0F4AfX5k9ajH&fOf;@<UVJ^czcG zSPgBO6R{U$+2~Idtui-Y#+mbue~YpH@1FRXK$Yl5FFSN~mCRx;1RC##k+Q9jfJp0X zayli5xO!d$Y%rFCTKl@0p52Z}mhVc){q01fvrRghs|#-@Vp26yo?WtEhZK=&+H#bs zd1fNZ^)G(QGDF8@ni@4fw{kt$#K3j6ZQI)fn|$5OnA`~E3=5C9;01i|(bEWyxlfg4 z1Z$+)nhwM(sQOi%(?#bKBm4^_g+t$n85^#?qk5*n<NfqE&oyvO`#D`v_h)+gSvcM) z@%mu2w^w)-OBuN2D}1NPKKu0P;z13AVq|yO8ozB~Q`Wzg+CtQC#(0YfrCn!{GCYzi zhdvWW)k~8vKhA}J!jIHeywMhCcBWZ0zKLHom3Xxx`l0Nz#Zjz^8ZX4QP~|gnavaJ5 zAFnLo=~S!o$u$wcb?cUID6Vn{AG2+;3DN&%FzS*_^w)LldMX}jFSCFcyCfu*AQq$y zsDSuj;e!Ui&XUW_%sZ`9t)!^48lzXsNi(P!T9mE!lbwmH1~)7$9+!>__7>VZtVdwJ z)aV*<$@$W64dTVeAn!il80|iQw0{v4epK-FD8>GOi&f5~<mwc%pj{lrbvzFmz0vAp zKV-lpO`nLkKmf3+MdDHGCjjx<vy5<1^Oj~a;YFUnhYKo340I)zNMD@kuO8(6RGfGR zL1K%?>3&xr^D=^<q{Ks@ae*i~Slbl1os~?BhCwzip}2`jB=In%!>zl6(3<6&1lLk> zI)dvAD0nT}&dM#BoO23Lmr$hTuedfM0!4~xvOC*$l&B6w^)^b=_59EgOqzE)@hm0p z=4-}1gR%E|1Y2+jp@b^lAFMz~3}l)qqpa3AxvgB{APpJ+r+?fNXICB~-o+PT7&8Kt z#u<$M%1p(1_K}Vi9+Mh#lE^M9&q<%0aj;i4wPHW2XvaigtX|;BE8;mx;fKJMu|O6B z@2Fs%1@s7<d>AmN@!9@2m@+eR?_EHj_j;!UI^j42Waw214Q=~8Ir&UDwxw}Hn#rk~ zbu-|__<F8K#ug@3v}W~HbG;)OHgsAq#@F6KJxwYx$Hj4Rbal(3j+twGTLc${n7k>* zc_n&SffGQ(k(YeQpUTq9I-fxU8+(~A<AjM&Kea6vBGIqG2Qr4#uve2rP(bKWP~O<# zbT&c2g4*P!S8f(5Pqfpg1uul^C=Rp2jA7l&UewGgn4ngfv<Do%=d8Frt~0dBhbx{* zG*3=cA4S~Px*%%g+9oPQAI*_=@+-#lXg~a<!QABUSDkU8@vMP1S1qg3b-a9N{eC6& z-BVfYH33hf-rRP`8RZOSEo^swoMZ!jUPOwp{H-ateV_2|MfC;hdI7(3P}0^FDvB^_ zH+q|!`VqX}2JFEZS#B(*5i&gEkr&~YlmGj(t7F1eQr=o2O#f=49~A<{g-agT7*!js zAqW{lRD_au`3%cz>_iqt@st@+i$6qzX;Yn_SUr^GJ@JZ&&w9Z8jD*w6B&L(%)SKbz zUpW|{V=452&nzQgVCwz~F}9THt=)XOIH)G%jF^R3Onq73mrb(3`hi;y8t(Y0V}%oF zlJPUe=NGBii&E3SN)d7&5cMwBy03lFBMm8LW3y<O#VWoF3c!MILq;VAbhQt+pvRT} zo1=K$hkssLtJb4~aec}OX0FCO(DDS=d&iYJ1{!M2RvcA>5UJGu@`ckoin>KK>*!F= z|D-|uNFePjl`D1*kW>3=$;E`p)yN;DjP3V?^aUV?7Oce}yy>ES)xIXZ!8hJ?yMt4J zWz_>mDmR~EVt4znUkXL3I6p5u^#sJf@LL2%?Aek*fmlCUCeB`AhkdZY!9uL~MV1U6 zPoc7cXpzUadF`!7K+u<Fr6M6_;}|!?;;DyYD=#{%fQ<rpRl`JZ+0`uwt<xKC{B_Yo z3fL0(fw&8!J#~t?;*k*q-P+DOxa~N_8Jn2hfD#=j5Tf&eBu5o(E_~RcfLcGscUAGU z4luYmVes3HxFmN2v_y=~IM>Cy6v2b3CR5|~hep*e9m^bfDFW8pKXB0FjP)VTUE?L! zh9dKIad$tp%i#cA78uP$4u0X;q1;D-D1~>AaEP(YD@E7Ln5(sSj-*cux*dDpmeC=d zBW;C`Y=q1{9RTN5h{5TLRa&7#<xXP4OJRbFR&LpfL9@$-5C+YlPE;jTYV2NKgUL}< z=l3?lKSKACV(kGor*$;_LWqRU!nmw}WYA1sL)YfskTuGAl&G|_0lG7dhb`qqg?S6s z9KGf00AN}yXhkRPD98K|rM=MjyjnUjT{v6&3yL!vl3_y3`4-)RG4l6}I8j2MD4ylH zBC0$L=xJ=kj(cr{pz8PciU$`&S=LlgcY|oU<$S;?L(o*j+oxZ5sZ@_FN~5KO%aE`( z73>?_6~CHag`cFBNAB}J&j&-KR5Jb<Gk%t?KsfCl*{q2nkD|Br7MHb7KuAnvRs}sL zW|p;2!S%Ae@1TqF;-Cp;QDKhT2qpnI6vE2mw5X#11<sq!a=@QAw>%>Y7<$tKWQ+j^ z-T9-bxYK2m&(>hG_4GaZ!HK^P+;8k$y8=%n63_cWKPh}k(==PY<c+p_@i1jegb9g{ z9$6CXKc_=LE}t5aSfEWx(W!D~D;y3s<qu!03+_XmyhC1cY@owP=1D;D;W}RbnM?8P z5?h?ktr4A^+0JLH8qPr9E25df_RUUr4W{2pKyH%V?O*@A$d`7PLvm;@+sT3p>+uD{ zs6rZcMs>&Y=r95`-LD&!+hrf(iXbZYoO<%RJBr=rT9!rl!NZ7bciwp(nZVpvdw!xM zq4&aiERv&?&}~!1(%I~Jtn#^m`H`|wOe8Q^z-O31aeceEwL#Z}C!Mlx^7wOJr5Y|a zmakg~X}E5<0*CFs-@B6JlR`)j5`6yxl>Ea@2uO!7ly*lk`VPAh+R|5&@6y!zlqe`i zf$jk`IvNg2PQyG5f})mP@I;m~R5%vHaFW%;J@uXzcy#|j#}&am1Y|Lhsdm`WVO)r0 za#fr<u|i<`*}!<)BLwbrxEW5iU|^KRo8yu7Zj7B*MFQuZl}I-yq>1X6@P3eFoujs2 zZ7`{mV+sRG>i|+D<f3W?hvu3TxWs&Hz>x4S$61Do#l9Or+gX7vLRf18&F!B6siz;p zjI&DQd8=vMofo&I#tHfn9M;{A^-Ck-ZT#u}1iuIFlkSSP6LJ1I!9<^XEf<=fw*}8A zR(}k7Dt~b@SFNO-$~i_9$*@{Q{(R{DNUIOO*#s1j?l<WSZ;?X*k4+?xEGd^_dq#!n z1q5oq>DASvhN}vHlZv{)XcDsdHVE1lfQ8gB5Loy~*cRvw)<X8}x&bb4OY*iCOk<?i z_Ge6dH~sbZ0BiRYQbr|-u@B-T9OUak-qROxpQE#krqSwvRt){87xWkV3%P~O5E}=6 zg7RDlRiDWQE%<4{87GrF^=xkDxt@#x{~17YWIpYAL^P?VbrOVh_a|DNz>mCRrv&cU z>y-Fw15W`$!wGMt=|m2xjksdnDNBzuSHxmT6W1T}l%S2KiwyH{BFT&`vc$Qa(gnE@ z*b$Ow;fCRchu2}Y1mYE$WP-H#M45nAc39;Pf{cJ6P~&Br)G`(=rE|NpCe3mBf?UT1 z)Gyk)nIL)M=9$dcPx9DD!X9IiH+=%6)Fe<oM_sT>cz&kXwb~)sxRQ_xxKjT&5~3$x z!P?Er9c~NkDBE!AOVQ^YxIH5P;N!(%5d`JuJ>ErlU$^=jh1NwiBY-)0+2*%6l{73Z z1Vj-+r9q(IUSY}O!tJ#b;MGp#dBSv2taHY0pj5NeZgNl@rN7DrS_8KlRv#Vn{3N|v zL5T-7nJoUDOMCsxxAQa|f;AX!q*`pY=qk_@<wqM-PFx-iCjX?t-VQUB{!avD-i9Yx zWMX$yhKJ~h*BB9D7Ip0l`S39o!Ba(d`@_Fhc`37z&_LPi6x@xzZ4Rp3t(IVq$bD!| zqEvq6ttwo)WL?-h&CZji?O|%PHeC_jq5uHCAC<qRlt?7%@J2|r>Yo}yQ$uUFI7%7h zEeD~pj+?e*lmtCXsqF;>Ju2%JwKv`4cZqw@M<7`sIYUZ38QG3UTuNTZ&&gr9{I#k% z&R`8>a4Rz2H0#HJc7ox8mhHY3Ktx3%&t@ydE^9GT|5xkhn<%m;gB<X1zlFOm4ro3) z5bYZQyC6W_mVG_n8Q8YNirejrUwZAz@zi>AoaxU~bQX^++&$#m@>@y(%M0zZfkYR* zd3&<Z)BCPUQ$k%&vY9)}q;WMbW3#2-KdcuFHX0{t(RSEvl4`!<b)GGs_nqu}V;y9b z2N}C2+fPM`7G1dAI{kI-+(A6oeWe9YgGZS1gd0?@ISlRKl3?>9$f`Eyqeg%yngRkh zZWhbj1wnTpD0Q*~u0RezP{0pW?^I7rqva^&kcbpIb>0$uM;C<Xt4~~3=z)GAh>7(4 zcWi;N)#WkYT0IKwd4W!S9=q;XA5U5D$hw_XDbq6q*J!CD(2RzDPF1IiG8=Zvg@DDp zUb};@5yDT<_s-m|PdQB~HT<Yjm4gfH*BvuAY8!u2UsxLDo_fj6q9#>2`7u9vSHR9! zkWqo>!I!y{FwK}Dko91<I1&EBY&4L(L=_b5DdAp~$Exq4r(S!v+H+xvETHqhP4Cpy zv+bOfB2Z>@_mXG~$yn$Cd|vNsHHy_y?qJ9Sqn4D>B8{+)b^9aNpE4~FlbDkJs61~2 zpq{-LKT03bj*B-%Yl^dbl`Ds3#ndA$Vzd&ki72ZZz{ITavQG0gfsR5jx%ry|8XIB# z_|>Krru&cNnQn^C;z=NTcmS7BjSv8byEL57_x7;wrmf7&zr(Gl{08s)o@LQtu(V0S za}?<o@n8_R&^0@dp;sXI2Iz6XXw}D)>8-=n>dqxG4B(F?{e(}}$-~8IcT4*S*DSvr zN|#m`y$iRl1(t)^P!0&Zl8h*uSD+~*?znDjludN#F=?)j%a$q*YXO<{nL#^}e7%3V zcTqRxKA)km6&GXE<_KISr<TMh<tq;rRxYt<Qu74T*o*g-$1`^fDyN8PsjBlLg0Bxz zG*8JNIm=edpr_as?X@>Oc_<Cs?RgEAW^H)L6foCf;_a0>6UU|HST>cH1A_guup*sV z#c{vI&fS&?i>*&?8#mahuJn!xh}=iI9DrnEE|WKFQNO-#<A(hx1jSN<GfebHEmw~9 z4aJ#li{;rMQ7+epMcNy*IdAp1i?~=A-3~;V)F+8p`D^ZG;yCE^9;h&4+?jC)ui#qK z?tf%Jnp2^HKyLmKgiTB9xWpLA+^ko)Gci7VP&{5(P3m!GnqO{Pj8fWJ-@hyS@O8#V zTMcZ!uc`1&;x?R$d!qt2NS&O9B%v_I(Q7{kcmc5zk%^4HJL+g{Mr=z#jL(Iql&*}! zqOId6xPrpZ4Ombmcw%75jPfuuZeFHb&sEg^kwA<V1dCpyT8*CmV6vp(UEJG(C^`^0 zO7OJ+svi;o?COiM(UN#TA&ZZXQhbw4)Cs24NNnY@hJEI@bY_u=9=}$Ujv(xH+4vB= z{P@DJsGL7e5FTe%RBdjAb8i`HS4049;%FU2kr*FQNDINUQ;A_>E+Nw0mN7rDQ}n^D z@G!Sz-9wNfpHPo>Dsu)yS_grMRC*$dbwDW!W4jIKoRlJ~bdVs0SQ=XUpZgBTqrNj} z;%5gLhi6b9IgDjB>ei#A+IB+eoCdj&Bk?LT=(#XzTE^~xa<OyN-J8cl)f?UqiNX@_ zDduoD)c~CnzmZA!!quV112}yKbeXyvWh|FSykp*z`Wl$z@U3>K9-ym&+@*S1OSFEb zn1UYZf5J+cimw{{wAbEATWg4qj=0q%s5T5*>CsE&QbP8*$~&Dp?T8;CtsJvCBhN_P z6lS3qDG(cLgDsB$5OZ-)DM!?|`5|-!;`;;JMLS|A>_k0RWw1}8uA$!EiEy_`1)26W za1Rji?Ti^*=jN9Yco=hXRhkoz_FRPOu9m8=u{ym$$`){ohAue$s>#fkZgqzOjJ{wL zPGT4S<A7*o6o7Rt*QJ5V|KzDhpyQO5-yq4%pgC0I{)kr{vgvUZLDWJiv#IHi>=?oS zEWVl4m6M`b-=~J!e5SkUJB~=_>?Sv?&n-k(rbe5J|9gf*i6&E-B<zskZA~1qcn#Ba zQ$TPSvES{FpC+|i{*Rje;E&7<;A=JN_H(2irappg%skWQ+kq|q8o)%b1qN<2-4E1{ zc>8V>onACPn7V%AAF3nFV;Zcf9sO0iq=|hq_!oYAjH-V`#Kk!<KuazgQh4k$<J-!N zvayN$2%+$m8qWRbSk!0{fYgSaMgrq0Ah-ZP{N}L2>IJX#Wwr-Q1AOGW;xWHiTQiDy z$2J8I?cifx^ox>P)l0Ft(i91yL{%PATT4X<qH1;tehszqf`Bj#!b>~IQ~c;$Rfn&l zgncCE8G;IInGrZxy8;hkOu?C37ycc`=Zx`lJMKE@A68!H(ZjWPqou}Q$5oH-RDRm> zD{8#~+grHg46T`EUO+32XZn(!PbhDGiv8hY#D1ta;ks`bHMxKf#uJ5co5#zR@myMt z=kwxfXXhT4&%Gv-v--LWOlnVQ_&}cLnk=7@0lZREg>lc#jhQLCCvH$i)cobSyPVHl zqBQc=`2BOu+r$eZf8wCA7!d>MN?HM=z0oGPlmDvca>;k76(%RxTR<<guqXlqW8R{d z2sNl`V1RNPy=d3Ov{Fh1!X{D*S?a4Yh#vN_J-;ys6PFO=G*}^C^u6>sDcIb1z>`C- zKc!{PP<)#xMYfqX8wX5X0ycbgF~Man8)-~3;^x23IooJ2LB5zL#+$1)B82f_u2J5T z?BEBlMw}&@7c0vcHhCdKJ#xM>m{|sWf^z(VYS<HxT(5h*0{8GD$q@cr_F=1JK|;V! zR0mc9NV}AZ3<%WK%^l&igW<7ey6CAX*GWb?yeD-}-HW!yN;IyeoD-Y%qw$)MwB#_# z*DKdD`dxJ|2xevKTvA1*ns!sFpE8V&PADhklZ#3L4_4Ccyy0|Ymy!6epNJ+Ve<Ozt zv#s{`VU#v7f6n6FYE;}0oGKvGLQk*6-_1%{EP(agN8baHi|E7fz5=&9HT5JOix=R9 za0V|SbA13HPN}jr*!(X?sUzx(ys~hLh{ORg^N6DISvlPozJapeE_GndH`9e|*speT zNyB@J;L+Fgs(%tCKOJDLGi7+i+R>U0t3V`;WgUQdCsC&~sS2E|Rd&;T0;?zS(ePM7 zo9fu~=I14d%f*X>?5G2M0gs3+J5Wv!g;shfZ;z&9FvA~?9)2S*&OHH%dKIq<D;66x z|BdUhRA*fxFYrg7>_{}JBNt!CZVOtq9u=R_W_i8vI0F$FZoUiDgG2D78;gR*axFRj zMWB^@rJ!Hztk}VgyxzvWCZa$tId$7hg{(@zPR^NbIB`#1r$FxNnbtj#kUTROfQ2Q( z<&5qqHM*X495nD-haR_i&Gdf!#kCngX2n<1)V=^l1Vy7NPjnr7jz!jUJ({%1CEzGf zm1d_Dt9F)vyg_y`93IVVsgC2)2yUF*MEmLBa?7cqYwVFCagBMcZS`A$7nR}r6rJM` zc@ySUJ`vJrmM!WY08X7t_gh)&Jm#VqfVs#VEF$@F6*MzoYKt~gYzX|_6=(PUxEI{o z!)}VT*&0nycY7d?B~4dh>OGbacD@17g;N>6q`LB?)m;Yz@LSb0uFg1z+ksr3EQu;R zln=HL^P}1&u2f3`l)h7p`9A9zcO)bqn}a?GS#52si>wtj0^e)Z=AhgY(-w4-F>T~A zD1pPFfM$p_lx2)%k@>1g@6?>S|IEM2r{{5fd_ad<_>ML4WN6>$0KgjcI=Np$MN@@f z@)?9@vFdC*Q8tCY(-frPR){x-rqu6E2zL*GWS+$@Q<3vQcGGrg=x%*(dfpYW5Yx(W z9uY<Q>p;cr!UDAo_bUd1nr0J`BSB8UUP>eAaJBdxez0bi0K25?H`QtSODJS{nA9U8 z=aKSpscyRT?`QxsVKFWpuoj^g^ZDb}7OI=o-s$CR7is{Q^3rb~e%IxlfSsSAqI!Q( z3ylFPSCtI)r?<29<#`Km)|_|Q*V1pd{}IkI(8c3dM5>JCL&9)n3p>&n@7ttJdGGQW zZBaRQ5k?`R|IUUjbFA7@`wo{reT7;gS~uFEuZ?YPy&p}wT=zn4@zDusqfBc>)_y2D zP$0SKAvn;?5e!lkbjj{AD9zltciJi|qEE(QfZ-FX;Su6sAfsK&lh$<Dr!JfUBY_>^ z5mYxmz0&kSC0E^_>_$18b67<X+DndT`M$hl79f_d!k+b4*Zq+Qo@$F>SxT3~-FkEp z|LbdiQ*(7N;MQac#&^j}yvS51K84pJVF6;WDLLizYwuQ5hXJ<}?Zvwahva|eIe48W zw=<<}0_h3jGQe@c3O!8XX#s7#Uf@5Hx)jU9^k<Mxau7{BfLQT_e^7+*_pb+m!_spc zWRq?a{Ip--q}G^nZj>Ws=Bn$TpTw80+@aS90~Le8!LtqaXzO^AT~HROpO|(&0ZXW> zI@GitIxys?>s?p8e~buNY3{mQuCQ{0u9Ni{c&R{{^g1GsctOy+4AJ-)5e-ZT9-aSV zT>()#Aa$&+%JZ=NUi>AK%^D5x93HKBX^|lqVp!TIk`iEI5Fqq7!V6yE$AZt@A5Hj1 zhWUb@ph)aDD+I6b#ee~B+H_;+X9&2wk8E2)alNxcDl(ei$<E6h9)C2m^~*<<f)4xp zx}gW{WPJ$aUT)XMF!Mj8pks3D+Ud<xr9aXgut@J%w{^YXtE={6J8G?h^7?^gU1nr? z(XU|_WO_B~f2vC}a{=uRu^>!kH$r6wNbH(6da0o7t`aM%Y4m4!wt5yM4}8+8Zde;E zwJva@M8Mk!25T4{i*Ewj^m&>JiJbKLxgKejud#Ulz2Z>cH8e@JUV%zjF(J!>YA*f3 z$U(ah`C9GdfC{E2d3)X=_M+vjP`<3iV=#vHgPnwxP+Icuu7r2Zv^DV2;GH9adh118 zIr#e%jVj?@N}JtP1%KJibPRO_T`HwYYcYgit?_{mPf=vWY{~_K+q$dk|N609go?_2 z3hDs&>~GC!(-3F>8XqPamh#PnxBgQbH=x&zoG<SZ-07(_n`b)>kYjm@6|ah;>qw>p z>s5dTDDJ<VlFE7fqm$p=*vpJru)&*h7HHHemX5a-7PDwL35!V`hW|s`AwF-S9wzgz znylkKbzV4W=MdrTz<?k)h9`77560Frtgl!uYwh4$9PXe=+EO7Sz82&?*Y*7!Q3D=U z!Y%AKuo!8B^{o#!Qj~jD^?Eh0PDsZhRgd!awh5Qt#E$Ty#BmP(h}ity-v#@|IrcYI z+-(Pl)y~H&xID)Cg;gWXd=~h7s4Mv^1hUNgxQR4u1GTmPO~;?0lMzibK%W$Vabvbk z)2pqcmh>i8F+CUsTijErEE=9+)3RGH1kzMA`4QdbP)vH3R>i!xwcPp?#@>h3Abg&_ zbHCiGRBo-9Kr!D!?6>6E2l_E~AX4bd-)%OxfIMz}Zkei9_76=!TDAYVgbM7uSp_E3 zCq{>FS?&athVS|u=R;@Q1EKPbrtaOmoKH$gj~pE<cvsUdkYWrONz|%QYFK9Y&A7I4 zGozikmSVq~)W#!`ZPr0>ZeX$VgEZf7XNl4>SbALuk4eeo0nFAHI*=V5HUP;AQiznm z7021c`{BUHBD9xzW*Xfnh+iTBKiA6eHn;TZF#;6;nQK96?3~E&VIBNNa^8@iMJJw- z`=OKo02Xyqz4el}ODm+?E@(2ih<dbum90zR49LoeD9Q+|`w(m=gqJ7xUV0At>|u1J zq747X?Czt?r)-edMs&a)9FC}YolFxy<swo2E=;&UyliBeu0D|BUSQZ>J#c&g;D+Vs zHk+^k3cce)k+|6{yXNV;sBuO$ZGfjJgH+$KC5e<}{^wB%?%5*ej`*kJp!@4g>B0T+ z9myx2U0O_62so^%&%2tjm1}VFK0`wQG$END6F4qWD3c-8ZW=N*)WPbS6qXao+`vIb z${nPg5aFhPP8cSXFp8)oUc^H7Xl}^}2ym4s>YDllKY|tka>zHw0HqgumrjZk+jVjT zwHCrDe@{UnWsKqT6;R2j4R=Ve@KcG$=P$_4Jrcn9sS{@#97HJjBhX6HBk{L0YL2#- zgQ6B}z7e+O<1RhuVQT$cW)7HCV?fO0(mY-ZdU-S8o}Kmarv0zw16z9<fDZQ+6q^Zn zP>gBsnZ`}8ZP3#V!gq}cEUE|8g#{5J2k_@HQB9s`OzNuOtP_>j*WVPDaXG~*sKDjW z-~;^h*=&{%2PO=((r!-=%u*NZUD$D*m=LHONDom*0Wl+C2&N$1FnXBJ6SqJ^RpmC6 zw_=xl$ql@G_$C47femRm*+-Q8Tpc0Ksv`&!gS9xLlsu1RK0_oG<_{wT&PsHAzN7t> z$!+c`eP4%WMZ-wbaTjSc(Rj1fgbqict@FdoBN+opYKk3laEmosQ#9mO67Au?=j>$| zFUUj}J^vPY?m63*;eK@ZL=GBR^e?u&z7xXULy<JLUYES+=o4J3JvEGPyuyGmduv?d zJVbSr3SvV2Nw!Drpt<q`3;73=IG>WM=a=xTlwt<qCS)tRgacS*?0y&3BK|0hu^Mo= z)nxM$?4t(fJ4;rYdhwJZ(s{HJdpPKyC5po#e_f;^t&~<oGQu18TRE-dl6Jl9dGOgO zx&p8wu`4(x^1UXw73H?#@0ZM&X~r)dn)~VDk0#~36K@YhFxE)&Xu^A(#tT%-VRK;L z@sxqt-NZtnY6QUHOPZ-^Yj0Z+uvl}#r4pU$e5X1P{>D&_8k~5)y=7558Mj=bS~t2; zd!19Xq}(I2&Buow?IyK{z>DJ<e{y}M*J9pMY_mBM$Jj!X&L|Dg4B&pSZ1=z6BrAm{ zNzALkid{b<fjfl;X44reXB#~p5jMvE$PiP_1@lnTe+9-<wtCV?r7#uSjak6V_SpM0 zuAGa*h(Eo~qS9gNAe3>POF|d{vk+%FQjG=WQ7z~q(ROXAW|xmahEhp{u8OC`Io>B5 z7Dy*oJIl}ph3-W7A^@Xkiv$lEqtn$R<rtd-*N~cKO!kSJ+N27Ep32JU;be4@ei@8y zXe&7vJr34IeA43A6oKfnL`9hJz3$oVO62J~xX})j@Z+V0%TaQn*|B9JOCBy1v@tm8 z#QJSM0MNBEUjfPM#j?yiU+R|jHItQLT23S)jL#kDqMtVcj0~;t#&X$!ezG!$P{6^a zn`mPM0XL<dR3L2RS1QORY01VJdeqTDe>E0U_|Qt9#P(gpfoRAIaL^U&K3B!0j6=di zi+)noAGj>)ZYbATjIqE&2(;sPRv~HT@di+{plfS2?WHMzU{m>}`LvykdIdqu2Qx}= zXYe(}Hq~nnh{fP0^07I9?VFBKO>9X8C#ey3)p_5W<BysU_h?!%?2o_WvgNc0KJUMz zO7-*YPhj&@%q8Rrg*n%u{5SN=sZA?1YtlwW2>E^W38qHiyc}X|zktw-Az3kmA?n*H z90~lvW5{LW<eo^F&dWM{f?XLo`i!H-ba^(PK-8PjNaYcK0QQCOtS6PF%XpVKT970n z5=e+%zyExjIgpE9^TiiUPu-G<h6WTB)TxkA5ixoZw5m%q7}-Wa|L;dBbIHU@a$$tc zgB5Zn=s$1p8W9@zfi=P$`g%?~+=_JLeHy(;A94u`nn!b(szWk+2X)I@@;Z48xgP2b z!++D&w`&?pE(u;i!)cNz&M35c`mYTOI224h)ePo4QV>5x>aNZOMT{=6%V0IzJiu*9 z$H;-8b=smdI&YhAJdY@Y@NKFp`i;=$+YcQ^$VNGa2&lQjdcY_am{`+GzFvMxJ-XC| zoKt-Owy|dLg9)nP^#$eR;QR9p=HNoivb~B4Dx#HX!|?OJK00d(I+;L=9*1hxXz=08 z9gN}0Kqaf?t%o<jbS!E8!lZ{sN_>d^?K+H<yt*h|HA5mMFlIm`k=Yj!vrSjSLYIpK z=9Gg}0=Y}7`@jV7pL~nQ%jQpy-R~|MJTAM?t3}i;_Aqp!b715Zcdt<!kouBawO>zH z@R-MP^yBP*Mol;okU1};flW_VPR|iLTB`ecx>C7(h&Luq-t&6457_9Cd=Sf`9!wpq zT`-C(SeHtK3o`4C9U8&~vsJw~F0izRF42p*Hn--oGtWjR9MG!hV<=xPcKf0M>bAfr zgiF?XJ+$t;BFs!%69bj-O8Y!|p}SZB!ZWx{N4sx%xCSH;X==JkARe3S-OhW|Gry)r z48w-d<8*r}>mBJ#3gV|+w$YiL?0V|C6RXO_4gxRxBK4)Raq&I$jUEpZ=yURw4r(hX zG)r>c;_eYp0fE&0<;xF9MZI@G28zfJ+X*0|7Mt2CLgtKy6N9ye0#}Ezc`;fD=Mi-s zByJ{-AhQ_rD!$S#J)#&~%fUnvlu}=!5Iy)Q$iDV^0fwaYfxUb0&r%iH8N^w-o=dXi z1&ES>vkg)JHnNTxhp^e-tsco5n`+D9_)17ZbD9TCpyL3*U`j9NYsnt2{Q^M+!cgC@ zQ8k3Z_xVA4HfDe5^)Rb1!#lDR2U0hN^;*uhTBEd&aR0vVbMF-OU49nrk$zll#Zy_m z?RJ=Z%3{}g&qYjmsjht$ofA`~8)u-t#(X`_zLfkX%l4I!(K7caod#jy%eVs+JAd(~ zhQ>;V)h(CPE`D{0Cu<pagazw@U<N_Nmcu?AR=TkjHl1bNP$pjfx=4NTQhm639|RU3 zdOS|_Nu=>r^<U{t9YC}pE4T7&R$+2A#?Ezl%gs&ZtT-)p7qzL>bHBqncg%9Q&%wom zR~UMtEA(SI<8R9g3e_vPb&lA-HLsz@mUK4U`uBJVEDhHKdR1c6!Bf=W6w(W52NB_} zHmO2ZOr?3-@*iR9*?yw_MZp3Fu)eEo=ykx;)3cLp5;Z@9h4wQ-A=}21g@)0EvF>q! zn!Cc1wFfWJs&ECrh@o>eFwoAlR>N;Ct~9(4n>T6^gs4zal<kUF9KQtM3bF29-)Ft( z@fJ7hwh4Xjo*y(2Sn?I9K`MVQXKobZU9_djpj1#>^3@w7<6vAOg`?e+9>z+y4Mxp5 zaOGqGep(XriX$iB!>$X`_5I<4d4C2rgxtaU>aE6IdeC>4#j2@Vf~ye*iFxyqqXt23 zeEH5glw80WI*r+hB@Da8Ygi+*dLZKtG`v;_to+S8igscq-rIa)EgN`6GZ8@TXO7OI zg2-YzdT?hN4c0lGJv+Twze<AP2xBKx3z&1NBlyWBZ{B{0v<ralDvnEkceNy3pm+;7 zajwa_c;!b2aQ<d!g<LH$w@u?L-mv!H+pHM;Gco)poeBMR1x4W$2a62Mjt4>c(N0vP zY$iKL^1*Dt$RAg%&P5VTZEu|P;-wz<@~>WAB$18{?stj^=;z!YA55K%bxa7*&|o?e zm~LRPFdZQ}FmaOzmv!x$W%b1_>K^)$_AaK&2s1AgQ-w#)k4ZNSnccZ5$)u=PM$QiX ztV&-F<o85-*+VWZ$dQE$B7|x2augSmj8>T|j!JSWiMX^j9P)ZxpYk#E?Yqe<<^>D~ zDT%NJ%h}^ad>8k__4-G=w7aeDWTHA=`K{cy<!<|ea(esDNP*$WmP3YlIc)%Um~#2z zEikz0V0moNG{o0)U2rMGy^_j8%L2@7UA+3E*ZY<VEwY_p`p50-{hhCY0Tkx0DO=1c zxa7DyR^G706o736m8@{^IvJZ;op76EHAo05S6&lT&#UvU@Rv(t1Fsx<x7*;7CVW=I z>;X?UX7@;pQTEV9w?}g-322ZRgxaF&xnXTz_Xwggwkj0}Oj*L2NrkElH*450)Op@| z+i<QQovS=0EfFD+k^;h9)f7?wEATdrL@XdVBbfjoQAAGE9~PnB_JRVRuR-g=F{q(* zizMd21*HLs{OqoM;41v`uGSHJk68B(_qKccNBa>%APnhj8u4F=R$;}P0UdVRE%YkB zHkSYETtrO#;U=(UR*rB~16tKUph{z*L_x;d{bE#GNDr0SKB>V8BfQM?*7K@BCAP_z z&cCRa9lcYW14%9r7M>nYBlhG%CYp|NYHu1D)5l#k<=HxLJ>W;&Vxv5+{#uEr{#o4n ztLVRZ6XxP>ZXy3h5dATm3y0J3vpsLx@#xb!t>E6SGxcIh-yEc58OtD2KAs%mZ`CoZ zOg9gFUY?@wue0-kUY~6UNx|(`xGDoOaV@I8nCR$eH6b2I@09ZbgRB8=Ak3N$;h#a% zL|ViaTXPivVy{R6weIGg*EI?3sZz&lqzHxCQwyE|B~I3zIwY*29d)UpA@I0{Qm`vU z#~0P_7Z7sM;XYX_B9tt_xKuqC;3Eg+jG8QHv+Jtp5#pd+5^~mE5|RswJ8;VO7J6}d zJZ%4Bl1}<3m1;V)qD0_HzsZub)84aF1s;5OJJGQVs?sk}PbBWI2xs#GzN_5?0S=n& z?<0v)d17=3<dm171xk^)FX3Gz05aTnKl#Ci;&i9Fn@aM!H*E|AmU&48x&Gm;(SV@4 za8+KCI~Unt^vU0F3z`E9j-IwmQZS6X1HMUK%Iz~t3Cg6VP<tH6u%1&L|Cuo19bg`x zyI~(9f|Pzi=4=K&FHR$WQWd0R;}pQ?tbERo(5tNztUNJ<MEIAQ{<1{x0{5Be8?Kxt zEzJr(I?7|<*x$68gk5Ij1Ov7x&8)^R+AQBp2xsVudA3%RlZVcxQPk-}50*oAKbljt z0@kY~*$|t6csr)tGr~^QL0<SzDhHYJDj&y!L!<6!sXkl^6E_?Zj|C#>bLINeo`onE zR_|>)hcWZhAO5ApEnfn$!7DG1Qd8-LN*@PH_lN!KAjAU=NJ2RUIp)U-M3E;i1A{Or zmm<f%)X!GsM4^p4K}6ytplt2%YKhw)Pp@+c(Nmp-SB%esD=OqeZnOJP<e(I?jI2%9 zcy^dn)_R?Sqq4#qm+inD1aP>?LMLSxm&bo8#=Njlk%vw@K3;J)h({+|@fNM)*;2Tp z2b$`h|4l5ybwMn~D(?at!gVAnbX7n6H{?2nS02?4Q~ksq(ZI}qwTyL^7x)7pppevE zg4O@O09Yrd*r$nT=@AU6Ga;lr7;_-nCMb6yCvhm96joDe6>XTk_r<=hIuc5BGX0Sk zKNjT=-o6_cY|~2GHnoe-S3pjQS$&_SC|;rfqdDNf35>76K*ju>09RJ@!|-Q013h$9 z=(5XH_-AmrKg^#o?^WxGKu)Z={`{oHVc%{U>%oQmow$-?{!F^Dv3O(SM%%p9IVHG- zD`cRvP?&W2br;ivdO-So5`yP_Un+l%w<iMEIhE;EwDksl`ih8?*(=z16(HKlI^2zJ z0z&2*G-Z%-H&cPY1X-;S;k9;TbUEAcz{ffP+=dUkS@Jt{)&Ws5<}6l#^^ljp=)Av( zs*fUfouRq@Iu!@PNU;lC{(x;`&07*n2p5<C_5!k9oXJ6we@G_ab=L>C(45qG5AwQ` zFmDn@5Ag0&p8Jb)pj+okrO#~}yL+p9Y7Nse9{R1gTTiHj4wR6G=)PpJ2((-{jGsfh zrJNvDlo(0s1)F8s#?P%W3EBem8ZJ1z!zdrQNg&}XO0t}FCq_esYY^qu=z$8KG-2!1 z>uN0^q9MNH{3zJo9fPABme9uj9S94YGAVhTF<VgUaw1H?<Oj!de`jg7x<LlN{tSvz zV$snlxGaE=9g$itnT5|e=v=qo@P?9Hh`=AwDk8GeEv*%KjV>g!aXK%6#u*~c{Ts24 zM2Vo(0Zdr^lQl4MB6D-|rZbuN=&3LfUFNu@jt289>K3nH7mwjP2c>rxDLewJuRd%k zEoL{d{SQM{25bo_=m|cZz~Bn4Ep7NaRwQ5I@FC5@F}&^kOQvC6HPsS-84<FvBygHF z#I>fw;PQYTm?DnoO1+K9Q%mte3IRfqZqWbgbL#oGnJ3zb@p>!~k+_~89|PQC>^eph z;~IzX@AEq<zTq>{T~Xo)#mRHOCjat}kI~`GbJe$kZ!x;y;9-wXOorVAm+@3U&?`gK z855C@N$}Dv@Tu{LK16yCtpa}EP~WZMUQ$LHC%C$F+cbaLCtlK}4dx{+Jy9RSQW0Zv z7lv-)q;fMtEN!wxVC-{Hdl4pZe3k;>Aqmtbv>nQYLckEQQ7}H01zMp0)8b$0W+XzK zje@=;ks244%YV0jFDgK$IMV`oU$S9{Jx86|6L#z=#wf3z@s_1vv)%`i%B&kB^TzpN zzdO5dI+Q=O;$xI@tN<V3FzJ0MzQtG#(*$>Cdj6g)szI}Sk|55b1<ZBKf+(gVR(~%G z2T9tmAyb^<>d|CLwfSpQwe4gYo;7=+zOIUPLEIuOxc8e$s<t##`H~3U1ah!sUWoVJ z$^`s6v0LRe)#mJK`aWx+A?yDuqBq&^jg_QVIL6>Z9jk4!P1MZ?_^n9hK*9l}2>q0U zcJ>YkY{xn7F#Ju)tf=-#X;7d`u!K?^;nZjVs<cuy%KmG4;>dw=;Yc0Y1?d}J=v2Y+ zFKiNq;(Cy)KP2J$lIw03(hLsCUpAfUggF1JEc?@6;Rw)L4-yG=l!Q<dUqk!CDA&PD zlBlTJ;|bgOYE>@bwoA<v4ZBNe15_^b_cEahrqX^5>~UL{2%X{oX)4yHPIdIqq+h~t z4+1-cNkY=xXbigXp#kNQs>x>Te6upAW^59E10X|>f|G=P^=3&+B-NukVV)Z*vpM<U z@*m?^gNwN`ASA*_5rLutv@hb%idxP{%tdBAX-44ke8Ed(3{NQm-dqPsK;!6IYTtFT zdFDVc{7%)8<y-P_os-RVir@=BXt&|rQ0<a~3tP~bfB|X43uf08WP`z6DKOP}N>qeK z`e{4&yO@rfspt%qhDDevLZKwOzLCU>T=5&q`|>6PP$K&~HC_&k1b;;bDxAc|?Xpei z@C$vYUY1-`B*60x&6uw|mULE<c$PkG1rqO|=2V2*-R_(va2R4hj3h*kElH9g0W73W ziDvre-Q8a{4^$!EjyAC$j@On#vaa4sar%UxpRMsR`~H=~V$>2g{92X6LG38r@13*$ z$Hq6z^G7o6rBW^g@7g7?ZOUYp;2-bNe6i&G6oZV_vt~0vwU+Pe2ezqqphOY2dS(FM z322NfLrH}^fhZO83Szw5Cwh+Kh(-rPv|MCv{i#KeaU1fQ*F^c>fn*$%5}&W<FA!WH zyZ-1`(Mh)bXq{&Q?oOVQM<)Y|ZArP0Zb5@AUv=Oz`TjuT!xuC?Th;-Zk@Ds66?poD zuljPDFU;rvsM%O*qjpb)BKJjZ9#Xe=gCs@LFYE6*MPmPYe)7@ea8^Z+U=hB6DZu<0 z6iy2IBum-;8PH>XBE`s-JuiP&3ATi0ZZjR~FR+RQsXYjTaH1y9IZXBw_B0e>Qajkf z9A|J8>o=<-c<q<*Tpo`L7vf%g3sz`{?20m?CF-N|Lh#a!Snf4`=WJ8|hN%$%zFn61 zD}DDGcO;ikRjbG6?jpC~JpidSC8W4$UuJ890X7}#6rf|rnU1A{K>hj+D3K+E;G$6^ z=5fD-gTTs9g<SD3Ga)RDczZjD3;gQLI0g{^o5+}HNJV&qz|Zf7jbisD=+leSOIk0I z_V9Wy>vW|QO3}z36*L>`UwW-Q0B}C+E@-+DL+YuC=jzp`hmk)r&yp2@U}7K$*PPb7 zl1c^xUsDjibDk#Pw59xh7tM5rBsb%{(4oc2_V@~oK10|zWfj3rGX~g>`xEDTrd0AU z(AB-(_wkoG#nwwqjIjI!#2>@&S8*?e@xmOo^q8B_RPz<+#8<%7f_roM$on*nhncU) zVX-GPXFt3*Eo|;_L!qtxZ&Rksv|RhghO@ye7mI`H?@)u~ZNw6`ixKoe!27{CmY|&o z!3SE5xBJS3Qk_IMjStUx51*ARP$0R|zFNdA>7P6=n{B(t+JytNg-Z7>2d1rWfOHgR zV`GT>j+s`rs8}~A7%YGY{~2*?EiGOb%VBgKHeCD{e=jF{T{2<}3>YzGh;FNb=t;4C z<iF904Ql@EuQRG`=I{!_@m1FjmpvptUqS80W)}N9G0y03o`ztA$b9C4*Oa_h$081C zLthr(Y7ViP5t3>f@Z`qnJ)ifkEuo2v<atAbe667HYk)eSbQqf7ti#Tq!!Z17wu)4r zd(2>>WSo5(<!=jSOLUNPqvAcpm9$%Y_JS&4h#<?~^k~%L39G5;$w;KT;>L$vIS*l) zT=Y~7#wKhAdC-R1Dz2W5Pn#D_iz-03<j}om2ZN_W_;#qE86pI~>p~2(i<LN-zdVJ% zfhbHZ*R;!4G)OX}lZj-3zr!jH2zq@9#h&yrV71<|-kUwyL7arl<ekb*vVHtpGo255 zHC-%3*EY~%zNS#)(KkN`1lM<tO+V`6wDns~UFS138rs9(Xp!`T5QlU*aM2&ML9u}l z*bdW>tcJuLV^<!vAI^2%C{beFDW1iJgbVJRv<lp^P~9I@@;3g$S0eNVOoR7IuNF=; zLyNZqehOR;vs0Z^y3{{4ZbKvbnz?Eo(YP;nueF~#0`Q}7jhOq(<#_<#8F4*{aou|_ z^d$UzJqm6rp3%rjFrv8#@DuceFw=dA51-Ha!H>slxLufr^a{Q;R5qmz7Tg%SGwQO; z_{^Djl!81A!w0}>+e}w45Q#yZ`p=~OCBDEW%F{@eFY){!@wuhDBpwb`kp>GrD;bk& zj|PIv3}v+W)fmP*1ISXj3(vIBVJWfv;M{-w!Oj@hgIDZ`NxUL<K!Hz0=;f?{SQ*G0 zd$}T^r3=B1gIm=3J2LP(TWKZZM@_AiBF=x9^oeb$tnjjUHeMx7?zX&5>B#!Wrzyk7 z;kK}+@DQd`tmtocUZQjA%dE0bO75%oxME(GoSSFt00I1Vj=E*BNp>+yr-5;4d>wo` zeb?^ZQpdrkgqJ>^{q6XH5ZRDQ!zB)8z@493hiTYnRSnQiA6hG<It~AYRuz}JEw7GL zq|(#{CU<xSsg@?b#wwz)kRB7%v|^(?7kIWR{JmOYZ_|4^;jqPymTJdqgit(Y|FAo$ zcTqbW-j6Qet&D`_&lvfNG!oA&^kxsD32N|TIG%wF)KUAtxDUBvve-!XB)1p)cZW<p zw;%_#nPfB5kF|_z4SdVX<Wg0QYr&GsDI;ZwGI^g8s6VTtxp<E%79?IHnKDrMYMR$| zo~OrF`9W4RK)8Gco$!W1(V~km#-X4fj+-@mE^p@2dd4A8cbMva9hzMIZ&LpuIlG!D z9^bSdIuQ*^)Bc7CCU<2<ySQf89tob$JH~#>m!Ez%Q+L9qwW1j3QI&M6vDd);<HGc< zXvn5IG)>~DyW=yyP)|XhGtPOP2`A};|BlHAAAJT6U=5dM<NO`=WB7l?SM+Ft^Y!FU zwgCP;H~hvGz8QZXS(b3_5lVZM4c`ZL;18QXTGk+RFJydD5>-nag+2&mb2XvYUgNU3 z*KGg(9tLCUr1w(RKi@WeV7z42M;Goh?=||D9Z8Jc{(i82S802trga@9!%Mja5I~u? z_B88<qDb7~Y}jI?fgwk1Nl~BPa#l+T(zz^|KX-xU5i!<kcP&<EO;F_~g^7}~Ck?~= z(>N{$YKqTd{Fje4{99~W*fHO?FBgPpSxXlJVoo^%&|4Vm`bi+hB}7yGB^$nb2m>?O z#~e$W_|Hi%X2_9&QE0gBd?&C@ngWSQ8M0~T{OAJeqJBQD9+c+|%8X3yWcd>DtTu(A z54)me?plgGgk;r^w}vJ@X!qlrrwMGU0f;{tr+7VHhoYxGA*&k=!nzI@9&i<0y%uhf zKA`eIbnMc!=h-4LTlKdKi7^uIS<Guy>TFxSRmer)6Ys4Ep~|26<x0j3SVm3aQM}TY zcI1wvqr#E{7DcmMJP!3Gqu9Zt%6d0>sv_y+9w&f7xS*c9q6_#`&-b0u5TEhmL#}{# z2*S}WML8<6!pGvv#`+G3#V5P=5+Ica3D2L@%M_KY=*OsZW_Rf-hlqejSPt*am$5N4 zs#8c&B2DMRDJrz+(lBxfWosLNkK-Oq?TDVDMGqY$p6GTC)Eh6APIGOP{WEStGbg!@ zcrZ~OM=S8%Qjn^_gTm(1qAVrLT1Y!6BF$*3ul8PagCc>E*pUp~TUFzf1ibx9;89b$ z)}5I-9F@u-cpQp949DJ510jLxP432<*>@~u^Vf^uh4e`#(EY8V{kRhnuvk$fDpIAt zDJ%TQ8*!BjVL%5h!O6!!3Q<s#_~#MU{G@6Zw1y5|%xK&n#)k6oS4AUpzCU(oDq6{g zp@9Kh<A7!dgQRaB>7pxMv@?>eY!!olV5ZKqg*gy<`|=}tl{KM9ixB@tS=@%|t=o~D z1%p%^EO9!?eo)M?m>vKLrH<M1YQ^YbGEcf&hNyfq6A0;;l+e32@ax!F8~<B>u3Ij| z<-rjyYxv(qh?F`3;G8-5w;1s_Qw)<yU{61@E|%HzC02056~vHy#ER{pEan35D30Eo z=-2qqsvW0qvk8%>bwWoUmyRvF@lyxh_|Dy`Ty(8MjWY6Eyo2$}dMK@{zSG}c8w}}= z8}RwNRlr9u8g2e>r%guW8ea|SQF_3)@BN{iO;3+g2(SeRpMJ_k>d}J@QSb=ezGchU zw|W5aK6)Hu&2~3MT5ypRC`+2*80+tAXQc7>2g^7^<oaCQdMX4$$M<c-IAM>r8o)44 z8tp%65gVc|G0DQ1BC_$S6~>(9y1e~h&QV6;WE+3OTqq{$-4ZgB#TFH0I@qqHwW<CS zXI<3DnGDV`30W<Doq@Pq-j<bncUZ|N<Oi)#Ix>{#9T8{@XWKpveo7b{-3tIS`A56J zkySeB`=eBl{Y5Rk5Chmv<qt)-9UGplo=X<WX!czD6~uqJ5dN(NG<cn~^2hz!<?xre zK_U4Tk9s)pRy^>IH+Osf)b(Bq>)Mf_*2=rNIUIs$MTT-(E=Ii^8|Qh>^Ck-$dH`Mh zWE7E^*IC8gM4KP-;XoJK`eGne;&L3a!NekA8QSXDm`r13EmwVz1Ls60h>C)4)5+Wv za{#Aet044R{twnY2&1b4xQh=Y`rZ>|stJr(YpSas9_c-QS2X=OtNyNGDSBxifQ7a! z$M1TjGlgxNWS;-IhjQ#UR$4{i5Oh{#7K&~?psab>s%1@<R9+VSd&F^1Dhun^X}UXG z%Z55R-PoCIVZ1bkWT<noU_fTSiK$1s%=wCr0_y|Ku0646gO@!RXUqn-%-<Bw6HXwZ zSfz;{PbifcY+Vbzl&w0ZVIAyD4+_*q{1?KPqbvZ%P`31&<l@D+F7$bWd!R{Uhd}Il zRuhBe{V1aJhPH`;{dasE*(gGOV)99auv1iiy9t4RmYFVj00vxEt7XjfY@+G1OG_5` z^;od`=*OyTq(w9wj_kJ+6oF5`0Ppy*35Lgiv#%LKJV{82TjH1M2|{ACTj5tUh<Oh; z*#%!jV!-R_Xn{_S?j@vF@jEb)7j8l}`3#u0W3qE1hCd%U3c*Wwh|v^E&89Y9u?2c^ z)hUF1gi~2K%MhFI4LYSFn1hfL+=dl)HXlC?srwSH{FyVjHR|g*K@o=lsYuP?tWzXL zwydP@^KQ0yC`^qL5y|NHHUejX?(UQ!)|5C?imjm{WGe@Cp=z6b{R2C_wFRs4e%*Au zh=RycnLC6|LPb}V$A9(}^jM_p&d>Rsi0(P&d`IeTzt-^*JV!ukO}_}wxLu=hCBY%Z zKFO&eRjb;sRSLl9@^}uJ%N75*kcrd`8m-M0u??pz7g`A4Z_d}G0}P1kBw6)73COVw z_FS2H_gp9jrrf-edlqJLA6IseNG|pBwLQ1WprW-i@++;$jMt3X*W-Om|K77kc;hOk z$DZ~a-H&@VKG$74OC6<Y#rIlx5e@fd>Rn7xvG?gpDoEk`(f85902G}zJ@iY9kUn^c z?HY$zeVE6prX2mFAOv6ftLR4LiNIO41gJOhwG&0<Lu9wl&7r}HA=E1kr&lw?AE>9x z3#0eQ;iHVge7&Md@q*q^h|gijX5Ly*2Ic7s7wl^#K@bT;n;aT*$FVM_P7wqqIwSZR zI6yNJ!wiQI!y%m?DN6HH_PAsFSHU48-Ui<mk!o;fY@T7^63Ht30w*JRNG!|OQL5RU z*J9}i{~W%{KLlhz0f4FH+SF4RGp{KAOE50{GC@S7)NDUs(VZ!AU}ay_Aj6K^kMy(z z?|PWoj%mC6nzt2HFT9Tp%GNC`NY+fREUt3dOHxLMlYQSo2G3fYm~4WeDZN3rX=FCi zhj;r9MAPpP#6pz>Or-9~?5s(U(zYc&yL)cVm+pw2J?$cS$Nw&L-&BzLg2+PDqYrFM ztDM2~@~-q!xJ?+7Sb4Jo?i-3|$vCChZy}$_;~q9w&e^=?P0Pdd(QyLDR3%pd(4h^; zV&P<CKhk=gfVOITz-*4xhcCL0*dq>SCGV->JxWap;&||Zk9lRkR2sX5k^^6P1pH<= z50e^nYT&LeX>nbz9*AiyNdOKR@SdU2R0Ds3T~R`#mr^(!W6kAUyevP+%utbeyUCj4 zPJMga$*nS&?mbtv62U(Zwo&Kt@~=HCZ!a#DhMMT=Mq|Kv`GO06Uk2?`pyc~)F4C}7 z3&zC@fLI~)($5lYtx+|NbgKD5xPpG%Gwko{q!uvWbv1ON^{xbNhUVeMV#-&Pp#awS zK3{*6B;pu%&dXW<<2ESKlN(l-3#CPIrqZ2dT|%t&wD^+dI2f{V?5oJ^E3+n7f>**y zu?B|zGYOw<qU1|DOQGK?WalSU!s}_~abB9t1G#!aeDQcUSo63hZw>;fwcG;McQ?~7 zW*NgcK@EB}kxuLc)B~EJ`nqWU*3EO)Ur;Pc+Np0kYKIrJrJg6u3I=o5IOke5kDo>6 zv@?Q<N`=TTi~^Ue@mJ4<M#!P!hq@q!oT_%yCJjK=eBf?|YVZctSkrS5LzeGEd)=hw z6<TO5ju%a+8Ba2>Vqx{pv8Wfb-B~)am~f=m-m;F;A)uA9Usf)9^3!G{;_5ntE6uzG ze=rBIzHTpO_te49!dNQ6gz#~E{S7*e+cxwDKqs;iYUMa}90IO_fg}M_I~GY+%HGIn zt+3T%=|e4Z<2Wp>rFsIV)KOuZZKjEh!-WCRGx@xa8h&T@V@?!yRg@h7TmEzQweULw z@(&1x+&$+{3%m-@T`^*9jwSjt=;xv)G(NVSxvi&t#-s*tGp~AHowB9NmM{J@W|~?{ zI2AJKNC;-$$pi)7hO`O}QBl2|McJ|;6-0MF=;|>5xp8{B7zjI2O36XBfb=*G$#<86 z(Sak7HPHm_XM?MxfJl(GLc*N=)+?z17-m+ZTSTx7gGF^g(JeWp_Ir&I1!V7DudjUJ z`^0Bh>VR<o4I{!6dVH`04?>B}f==|Y=*B3Sp#=dCM+T-MYhfmp5Z6@$fG+H9VLS|C zbbbo+b*IXvxH9WaAy*%oV&~vez`g;V0ijr^0iUfE7612$9Q2+W#+)blL>$Ywn*j!Q zCC`_Y<;&&m4P=l-lpxKu5;fP!4@-gM4@Ml9*BzKNAbzBcMyBj<@95-l$jcDKSvigC zm%cBaE56p{fTcv*_}<fwoK(nP0#-1uS_`xj{p&K9X9g;-V{))vQWK<()>0ic=pK#e zZv!G0AIbQ;i#$&A-5^sseya0ia8>=2r4@O@+D7JOZ_%}8RU~wl<G9~)*RC(Pj6)-^ z&cAg}U;f_a1Tzy^t$nRX*g?DVb@!IgAhAg-cVSyM52!)YJc;@29jU-j0~z?kjy$^r z#;zYr0}&5x@kprmwBV1?)oOI74H#5L#*$(g#U0+T&~JcMno(N&N``s?Pijj;7Gh5$ zEz3|VSP$~AS!PtED|H}#!8oI`zV!xD+?5u9JhR7x;)rJco77#Du6`mFG#6MXn+@>c zr3WJ7$FboXMymbyip8dCUve*#YefOmFxK5R#R{PPS29~gV)XVHRPIASB$$kWUR^tc zKbFeOcrG~)`m^>5vfA3^;1mM*R`-N#BmBIeNvm!c7To~y_jReJKB7l3aV|5V)xZK^ zA)f>0Cv(%n2ZYS#5;--G*H37xWnW@X-AGo#w~s?zRK0?xY#HmE71^MALfkjrtTO!m zw#wj5@>r^&xRM)774XRg@}Pz><R<;^8J+8qUMfep>*t&yY++JqW0O>n90N!X5`B>H z{Z6^_G7Gv;RM#IU7*)i^T;hVQ*<-9ujv!&sOiND;P+3f3w~T2`Ux;yaVfq3(l~vpH z2%;iS$*87qDvk^#F~VkoLAjY^bl^{+&Un>(q7{o|h6nC^0-|M{=}s7*a*?4t=7Fm> zbI;;{yi4s`g_1rqC|^Hx%|a5BFhooC`6rdAdTt%=m*Tz~3^8r8S8Wy_IIm!-K3hOm zhAC~mCUW0`aL?IE%B-KGaf#p)GFZia!!kptYGPEk4pyFQQ$n0`r8ODz>UJP#h^OE< z2WU`UK4SFKkva-Ub}ubVY*VLh0ExiEy|w3>6}cfuO%=r^XE8xlbIlQYA>5;Y6fLVb z@JBU*0R3xGgrP<nl9AuW7k|L-1m!*eU>yRuU~sUYQDU$5sxWXtyznDeJQH1ro_dA5 zEnvZ*h1uSO+8f?P1W8jrD((OFE+K)vl1vq5M^?tHEQ}B!B&x0&*L+Y_`|#wm>G;() z@hg-JtDKa@y7LxzadV(`+=XV9TtMH{cx;(!{gTJPfC~17{Ex^DN#s4?Y*`)L@Fxu2 z%CHFrcRuibS2tlzA4&*$`O=(-&`zK+hqlcxrVez%QzBcBQfBE}eKCR7X#B`3W`4GS zJ}>KrFX0>C<kofU7S&|g+(9DxbA%V>M8@Lf+%OJSM#KoQ3~|Jtki^qw`2g{NWJZ4A zSDkC_ma&JE&Uiud=4-;b4w+%#-X<AN^*n3+W_z0o*nA~z>TLLZmX$T38-G~6xw$@= zz$VJH_lM()QA4ktIRe))T_yAPMmn8jty|fbgusmOkr;3CY0tps`W6{;Y(@~UQLi3` z<sdbrA>EkTZ?v<$wr|^nJ}D1{>NOlR1CaGm&#>|tubD5nQ4vLvzlokrb6;S#K)KC` z&Q>x*>zz<6%f<^SwZ=!>3XJ#F@+hgDU%I@O`cuhNygcQ8o@P~{u5Z-jj9_t1orw4h z&iyQ2IWEs1HEvCEAsB@|?k~e8Mk`r|4=3I$3}M_I;u7?W6{v*B4Cn{d8vDf=oV9~r zWx#)73U`Tn`nFHzak8^=sk1j7j!-PXZ;_QlUmdZ18Ka3UM(W<OkB4((x0)%wl4pZa z&CgXtW_R%lRj~tE?-kKznWEQgT^{v#!n?TM+`H9aYiTz5z7jG1Df|UJ1pM@WctfVx z6Dp2|=>$94bBf~?{@Vg`D+OG07e?<!IB1$g;05A<NDv{Q5mx^-;0_qbTOhJ$AX6l$ z!3#F7N0)&M29Zz!kVxGJ{J_UIq`=9{DtYHbSi1b4b9PM7%=^vC>x*3R&X&K1^Q4(6 z#yrY@z$VFGi<sRftM1uVloM}UUc3IcH~~t#-C~1$F0KUxWsBHKjNjUG>1895dNC@d zXP$I;3DXBW!I%=HGg_tssjd(9K7-BG8?^a3BRO{p9d*x3zQRV~6U>_@rbxEN-8449 zU*k;X><VB=8qMGWymC4lkVAkFJA$Mszf_&?=KacO4(aL(c#W~$b%uJUo=1q3HmH;! z60YmA-As4?aQYyhQyUJ}`>A1{Py>rq^vJbK;0H0%5sYZiE-DBc=Ak`lSTu*bu`WY{ zR}9Gnj%Cpxq=T!{*|)~2>L<)7`_bsfj8bU;0)*aPG)Qw_>yT~3IekbtsB~r0D?Ktd z)(CTTPzFyH@$*(=faeDkEJ68Pz+xH8juE>jtsHIG>|`8mf*n!+HL}=$skIQ0FJumz zn8`TRmc%c4W|BE@KcgZ(1-?)PSd6xQ523)=vx}|Bc0hqUPJ9kgP~sC${mCqm7*zF8 zsombA2lZUJw)?Ok6lF0i+tmV%*j0lfi`r|b!{G#m+YFA_d%MEeIU*%NBMlJcQ|3i2 zyIc)_T^n9xzrhIq8!2em3KO_NJ3krw5IKCA#YutlQGefD**vUMq!n|3ur8=75v<fK zZ>>m=lDgvxV;zShtK=A|G;;hsyAum{obN=J)9Jw=OcjjgOogYh=1OoLtZUXC89A56 z^&>?<*W<^hn{2x;H5-Ct<+o37z1Jj&Y{d6K7hE>mZu3H(Z>%_0SPmV01ZJ&1u2>O> z<wW&T#fani<17z{CNG^O8CeO=1t_(m;;~D7|9(gypI22MpaY`+W{AGZWMwdy`nEYM z?C?GrEUm-XzgKK7XahVku}9^=2p=)iln(qow3b8ZDJlW6H6R|ArkC0E9Fq4;cs=;F zxj25PS)ONR-FoG?v+TQ=NyJP(WJj5Oqo-IvHuO%cvY^+j0<!|rEoTq>U9`qHs)D>^ zO=$=lX`9IOIKJ+Wd?v~_4QiAm=eexM`F-fi#vrz_SG?S*sK90A8(f}uu{A<&#cDd; z&dQguU6AjZ6T9}>{W_hEM%Z*#Yn7lhA7ai=aFbi|SXl)Ve6<9hg#FZe4Pw&KPO|3& zJv9jyNeWVsbX(L1c)#~++V>c$=kH2laI0Z3^e^@sDm=tiK@_&4_*I&)!v`8=iWk26 zIAuUW(Xy4d!gJ9KD8KiM_;q{T_;aV^)0R*RzH8AAEq;ndZcO~iTex`8zVq}p6fe7D z=O)<@25nss{M208&qz@HT?T1=40bvOtT!p4*U+A&+S`q0EDC(+N$+C<t0vz#Q!fh% z(rL><cbn|?$xrrR*9it()3*on-%d$RO|As4A<rl~eRqraen`j!o@n7M!xOcOh-<f0 z2}UkR);+o7r!ozR!D+2={;2n~s9#r{2Ry}XCk_hQ<X2%;OJGf=^2Xa~GN9#i+?`(B z3Vn!;%E1_*;!erymH^Lb2_Hc4WR(=6l+#26c=048hFfb~yU7PZ<5_;W9~Av6@3Nf6 z7Qv=k#{2x=m(g+Q=|G2Ez=x^=aw)$jZaVcRRWep*uEwvrxG#o5GNL~UY3^*{EMWry zMYEr`#-e2)R#N-I_ilI0U=AY8&apK4La|+W(R)xc@Em<j`luPc*^0!ab4xnn%|>@0 ze2m86EC(UcbprawRYrWj=tsWauPqbO&;2nlwKge9&vpKK{(s+1Q|i5@r4Z<dTE)JE zcr-$r+T1|qYNQu4*nS}ONV53`TJh9#4_uI-{i92IroWdQA5%DhYx_<Rp4PAqCCrTn zs8>15afFkc&o)<Y889`%%~|E-I&qtUUPpD+cGh>dSo8<-`Bs@5XaEGb$~7h32i?6% z>uUApu2Zq7AeOIye=I-Y58=@zOacmcG;_71_1+ro9bsSUV016vR^Kpg@4zbhv=w#L z>&uSL#rAAxS7ddDpB$5Ylk0rDRa4sh6X$&S&czk%Stnwl$skLv!$k7Vjg&{1-<4Xx zd8f5W0sRG~Q}OoW0Z>Qlb>4O`6Ziw>P&fDV`d<sIPeUMB{xe*9G11U9iLhO**1Fl_ zgpx^ZJ%;7=-@5w+0}FZ-;MyD=Io!fq=VwOL+hWcXI&u_A=7SL=445ftT<#S3LTy(c z>wZ>+&b2xikdNU`-*GQ|?j4{Ho9JO+3Js$v1>;ii6B=S0zLewOhjN{<Pxivpz8>;+ zCbM#f_tTLwrO1j~(TR(*!y7;J(F%e={|j~6nyu-mQTEQZvz>wb?nzOKA$Svf|9GF9 zs373R8K`L+1Fe-L!`W^z^j7d|=%ho46hD!U@YO|%sQ)44J?M1#AA^H~ILJ-*!2-U< zJx5G#VW;ILPOQI924kDzP@k0ci`$+wwBdvkY4wB;OB-BDhFEtab5?xkBN8S%o4eR? z^3k_br?tPBSlQa2@S4SOjX#J&!8dsm3E>;I^kRe%$iBHkolUNNcQzmcIX5_MrHKB# z=m|1C^EUXlrN-@bBr<x9e!g8j;sm?Xj7}c6GP#@<R!6!cI_Xvg8Yb3HH-xiQ5FA*x z2iI3;7w5VP&tJv+0cH1Y7Ilu)*7OXp`na#rrM|Kf&Df`Uu?eoMxl;FJvpEXCltMQc z<A0anutc%LEoH;DIIu954e|YN&>S*yfrpd|KNs!LGOygwpU5rYr%&<_#=@*JVCY2R z3JnV5*R#43#-`-4BduwKDx=)`--F(H;Ifwdg$TJ7@$+uLQj$%OtvAJJH3(UNdU|QT z#&o@d2ZvTO0U=R66Gr_$!lK~-0DZ|iVN<%Y7wB$uh7JgT!G5vPs<!Yyl2>>*A`#Mq wQ)@9(xo_Px+L(yIpK({D-;$>v8br~<_g56!3YAbvurdf4F2;iQ&<qcQkXaRPzW@LL literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/monitor.avif b/static/images/docs/products/databases/postgresql/monitor.avif new file mode 100644 index 0000000000000000000000000000000000000000..93e13b873e223ea2e65a9e22516dba794fa08e9f GIT binary patch literal 44865 zcmXu}V~{Y+&NYmVZQHhO+qP}nwr$(CJ#&q1+va!g=bSfPot2eJRrjw>brJvo030(H zPX|LcOEZA~#MaV`@qf0hrQ!ehs;#Mu;s5;q3896Fjnn_n1ORZbG<Nxa_WwgT2TK>* z|096^X(CG-d*lBx5di?e|JMKH^Z$<kb>jaqVoOWA|2y>myr};XQ=tDv{TFNK#=!VL zQ_a%B$>BfbuyioC{|{jd-57-fN&hbl#nRcq^nXDB0HFVEpoRYwf`g@p<^Mdu5D*am z0h*<Q?f<*~f0qCb1Of&CsFSxfF?2x!fP&(*GXE(Y0>XkNU~1h45*MTaAP9g^0AM2e zfMKofemQ;dM&PFdNQ=jKyQwxrb_#uEa&K>PY?vNxZd5sTr*?)c{PS<&<Ma~;F70*U zS{Y2|04KZkX)<Zvm(`rif(vW$<A;l!vpbOW-zyvN4aNT}(nU>)X>Z<);^||}U=8Ga z+)HO>0qWJ8DDcX1apAj>yycGwH9Vm2STZ~rPL>Z;dV&j5o@a=`1uVdDm-l$Fxso{i zr30ss<b(8$XUwR;P@v+N)R20f#}bJ<)uy398LClq>L5O2?Gr^HTL+76D8TMoRCyQM z=psbfvH)CuzXUC3MW(UDhNUP!Lj4vW46)oJ{W3s|h2$YZ{7^*Zr(mSzFk;FCZR`XU z<}vcp3o|red1Up6UI_y(8YXO}ywr|r9{|lDG&R6=Bx@r)GuPuBcdmGwCMd#&Ahi;C z-Q^xNeXzNQBM#I~T8Hj&co!ni99(ziH5p1@4d2Bm185TZ(i|wa1HpM@l-0_3$f60B z&d$QSV5o-85yq5l6Say1{GEeup&LK-&vQ;Yc=I{5Ejx0Sn2P+%CZ51o10Jv51d_J| zz^u-)2OMDQXX@z3aw16mUVGqVS5?f$+eIG@q6VqRVp@zh_UMQDbof{ImuNSFnN+Cr zfEHKQWw_rWljyx~_Kzs7K*)$~_zW<dIBB~0nTo{7I<aM1BAL1yxhwqrZK2k-D2xC! z<)QHhLszfn&n=raJYdmt0Y(edM@;Ri5pEp8vMk=5z9`6*JXjDYLv?oJ+yX2-3NtZG z1fp|#Q*&Gmz9(a|k!<>1xbY7Fm3OoEHBCE=HB1J!sa$SvY{nb#Z9W3|ke(O-um^wc zOE6VQ)U4d;uFk||k(4$lMk^{v+&WwslXuR9GQ8L3AAEO+czk48U>e0G#!L7j<u%!% zMn6GD5ZIWJq3BcHi2fdt_qB&Kwd_^>6&2Wv-rak5*SfQ(1u>S8fM=hkRf&$XD>U?b z=6!_-+2jh5hJ3%N{blDlmLholr6u`|W=zLrN#sObk3{z|#W7pz3gahEROGrRVTXqL z$9e%#82_!xy~bz(D`qk~1%99|eT*+YDb}v3q9)wmQ`E+~4!4Ao(AbiN8!SC(${YTk zeb%_PyeGkELl*9wG}2)pR#=GOS1=ja4i1Ekp=5i{kxu=-E?M>44LwLR{!PdGcC|a( zW!*aK$HmE!R`;T7N-}%c+M<<*=%6t?5+d_!8-3Ds+@n!|KoN}+I#-1H0}7<CnZmO> zTFnxu8xtTl@uJ+{oq3&Sj2si^XxWYxfN@rmHl<X5^ghNb3Ol`QDiaAYk*Oh$5Akf= zS~4KKLxfA<QrH_}g<#^97{YXm_zh2Bk5Ec&mI?#uDW1vAx{;EqzS_eA3Je#Ckojd2 z%y!M2(d<l)|E5!Wc5Z@6>v{32nmOL1anEDtrZIGl_c6{Q8lP#Vw2PTjhvqI&Jdbo1 zX!cZQ3mZ2diHIAKFd6oP^v?KXBsOl-)U@6V^K})r^b+xMqZeAs-K-APSDvYC*R43* zU3fm76{k6Kyl=pS0u@-m&%23C1>1v8MrA$Xwf;d+t7}+wGKTS38pu3`gWCA;a#Z{s zY%SU(CMn}~u-|vNuvH|-RvwE#H~9em52mm{l<v%C3$_5dj4x=*7JZ*d#48<sNEO|P z{!ooqR`{tcydYXih@cZ|qcs<iu%CS)=IAc19!}PA3Z~0zkukvYPTAlF#n9V3z>c!0 zIz}Y<2tqnnE~w{yTcCd&`oUpIT*d-!oP0Q2!Bf(P6{IA>?4z!8xUzZN&CrOSZLtlr z2pd3#Cw6_5H7}&>IQ3-QL+Y$>Hi6HWL`ozcWHud>5+J~6g&}~03KA_f(D(gS0sQq4 zO^(r~+0W8AfvO9zn?L6!?{-?8UA~MXsL6=reH&-s!$0|N$n;hXb`*Y*jF5PU8U}Rl zK)(!KZex10TBN9cVOJ$ALC$er;u{i`{D|HN054&j3*%d%z5%egW`cg`NXS%<jm=p( zA`d0i<7?Lhf+>#2%4mn<AtZozP#5mjA;w;u>!KV-28JMPm5;!+qLu-h0dWGGEos!k z%@%rDZCNWxYH=jv{Ilf2E~Rh%UQQK(5bg}{AR<Yz^?dK#0dlc33se&Ju5FQ7oT7-1 zD>{|<Mz0Et>O*KHR6WFk*PneX2!LmQ$zKS$Ur|9aD1hmHXUNb#J93Q2VlcR~f^*uj z&c)b=`$+?yv@4fFaFZJ7KW#@fHVogV&R=jpJ&dKy5jY^#X&)^Hn^#q{2R68{6c<?o z)Ab>YrO@oI%Dg==ssyq+39ubz1H^L8D0*wu&X8fUSaB+UD)>A`w(m`6Pc;{(yLY<y zE5Rrzb=0rJs+vdl(^3vU+ywBOW;NV;EibB_>occ*T<pa+d~7P=(aN2F;yVHB2i!8f zJ`#{pnq-oj1S;7BZ1Jo?%v~Y=Y-41%3E_*^guP{l3gFmq6eX#93j)<^l$Gp$TCo7r z-wEW+f;isbSBr!!j@BUBD~&AoMz(GzI?y7FiAdnf3O(Duv8X~4(Dar8&G}@coC1Yt zo-$Z?2n=!Q6?Vx_P}aZ$KP7$oKbxUkKChvs?sM&?s4#Fwh^LM#Fw+LfDs>tU-8-vH z#tMz~K;)yAyy|d6f5mQJUB4xEFFSfDR2KpSEJ~-Z0Pi!bZEntE$)u0E*%cBhs07=x z42;UuAlJsn03`*RTgTG(eR#7HsgribKt9?!EgjKlTzhlv@Rmw~2icSjM*5X0gaP6Y z>~8uHnRKVpIXQuZ5o&RozRR1sYV<~8Qd|n}D^B_<xX7O-2?ih1p0V3^Zk%r~g+AhS zP?9*qnCk=*H7n)>6UXl8eJTij@v(LF=YL%3-#f5ZDe9ZyV#kDoK&l;?<M+n<b&WUl zen_`J->cKA(xrJlPH>%YL^{bGG3vm=zXLUa9~VeF0(aIZ_u)5_Aw<2Kwh96TWm=-6 zRzYL{ta!@HD9}*k!8)E_e~1?Q1GmbQi2K(^>hXY|=v}tglFnwjKQ4ov=s+aZ@VeRV zQRxdEdG@|DwR@eAR794pFD(zxSz|A!Nh=w(RM^)MEOkyUYz&crp^Y~GT8}OWbG`ii zF8EY3hSNRm=Kst6P}Wkh)m)#$X>M;$*kE@JMJFD&9t{B@@L9FN4eW2^cN`Jg^=iT= z0irAxnyRS1XW4xzm&75M5zooQA)*%8b}~0mB)I_%gd>CGrC@K0qrTML{O6~9|2zqZ z1{*TN*;^89@6r-ZLHcwaxWwIXGUh{WCT%69q+Rfngw&u>wE*S;cq(cgv$PNzZAOkC zKL`?9oBlGcW&MRG>Px5%eiEwTZ6JT@Jf1%#5OWfFhO))W8ynBD{@ARR_55&5O35cu zNDGCJ)zjZNSxCRQ*2l+KO_ewMD}-fkB;oQl_PSGTxId)vt}LFQJqx85f>>mPc+{cY zc5gm~mE*Ebj2Mi*u46oZ*iHdZg2%15AC;8*9`-F=W3U2F1puJA>U2i#_bA?Ph^$&I zRvoGc^s)y3lF|BHK37(oU0X6iL?J(k=4F_t3<I-2tE7`0vJ?|+b$LF*Q(8V?-|x0O zXm&a}P7fxTrQ~VU?)0I}c(EccyGp~>onb5qtFKv-oUHIKo|8;%7!rCh=GFP6@hfsd zW8iO8V;*pI2`4li;Ie3j=MNhg<KZDn)tyabl!G*#5A2|qQA<B8$CnmVjswT>D@Dj8 zC*ddb^0zc#HN2H8s_vT1#imT&LU-;o!^~2x8S&!tc%*d_)6gLiT3H!v_tuY<LbqcD zwXFrR$|+%0L@9EWmqE~5Y!T_tXVE2ctNQQf<f?9hw>zZItd*`1ObJqS0Ww^1cdffr zbALOY5#g_|6q|V@iiSb9GD@VnAK{ykZ5;aMq+?fdrXbpO&C7+sU{Gt{8Hi>r9Zr{G zb8eQxndHU^K57uUy&BqqbIEAttVGGWhQ(U9SPCt{n0)Z%WfcJKX>*aZ&flO|#=C<B za>g82<EYPxh|vH}NYl<eD4GTQe%*8+9Ud}(2WvwSpb5=XRrW|$ePI`0Y1Lm(ZzA7& zDl%E(*i%HYpvAsO5-|f?FnSX9I@v+wMVoQWlBW&ha(Xe25mb6GZ-&2ideuet>{Jj& z<qm>kRyC1Bm7a&Otfr!Mfn=44MVxhPewsk1WHmGRl-hUp0?$3YE3OQPJzH5NPo*$| z)D22+HK1I~V7n5GNES)SG{51uA!l*}83#Q98^Tn9anD++g|o4y{JLrHv(p{e47f#R zX}ePLr&A={%an`5`wRU}g63g>Hqt2TOXf}e^$vzmULLSN%pL0)t}o}|lo>IEsr$*( zyVxSf<Af-LUEWz}YN%)yI1gIoYmWZinat#o*)gC3p+w_~!UNbuXN1HAT0X6`;Vw!@ z&7tmXdUhaVL1d#%KD+!;O4uq$A~`~?oeBrqp^lgKn?DKHx^XoLAOv6=l56N|7L^3s zBoLa<Mq%`#jpQ2MFJ@4i-iMw-S{Y;-35wN^UL`^m`lBYpC8s8OoQ=q)CPD?PC*=b> z{obMrhCB36`Hl^*2i6Ek&Z~0;5RHn+sV{RQx<i~&{MaFPau?&tBd%&d)WDYKU+FP1 z_4DF5K$@Wgd!is?9;5f`KhSmU?y^Nwa2;mf{EkT;%Kpn*bl6cG@(c&v!=o<7l|F(y zt?mgJ+4;u2n}|7o%SW{t!PZWoe(Wzi_Vbg)8|b<=umKYwd(SjORSUX7kp4p1A`a(d zUi*;7z2yR{#ITT`GIrC}o{^)-G9f%d`4hApjA?D7B3LgovG@O{zwrKa<@h45?RU~# z1JcKUZpI{G-p6ArGEhlpDCb~?{4?W!mps#RuidUa3m@>e+iiw)y<uE;<B%7RnmmSr zr_kwZq>HUG*Gh;9x80N=*%;U;W{M%e$B()Luq39CGiciBJgW24erMAO;|;YV-(b7c z;j!o4UQlQ~j6Z8o*HTX6C92I?8GK6{IS=huk!PqoXJ6`g{Eoruj2%k;8yp|`n!d2a zGovrqZ>Aa!t7I*1z974{#XC@ar8rR_fVU49MF|6p{}F<Z==CKq^zzK3`<^4o_YUA@ zks{48PRcg0o4fuSF;$2l6^b+;zH+i!g5TkmB({>PCr;ocA`39JM8t`vw!Ex2cfIXr zz@!_hz0H5&@&>?(6#!)s-ec-UZDYJ7l<Yhly|GhEscZ;1y#~zUa9f0EMTQ6qHm~vN z`kW_&vh~m;-l#Iq9OYcix3eSx-NuSo7z3s@Rg4>h$*Q5>0}Rs|6Pn>R8L55R$hT6z zqDDRAbDP9UT(DLg7N)QR05mxx1PEvV;Tm7lQD;hyI9-+&-;zEtT_(p}^=vhwzE4S? z*SyOz+o>~;)Ix<!CDz9y1Bji(i~uuujRbz<I&`oFvfUZi^Q@EV+cy4|asl#37eUpl z!g6C4Q0cUc7qiUCvN`%fS6y7ln_=ZYX+)mA760?*b%gOdyPr}3EoUr6iT_B7_cX-> z(l`*3Wv)~GD%8l@G2(ypX;G%%3nUyfjeXD^*t+xMC7MWUWI#G(ki>5Ec3b`m@T&L~ z_?5lHoxZ;>pb<la4h=449RVz*bgQswyr74jWFy-3&oH*x4)){H7U(8^3u70S8n*oy z7m#QWR4>M>30c86=PZgT{ky~{jI>1u-_u^lsW6)NOC<yHqrx`8IjQqA#xh^clT`|j zfWM(meLzXZ<d0xuBdd@=4d{|bs3Cuud5Ikobvom-vR7(^r0!6L>zoVkI%Ta0w;&2L zBsj$*(~1E``nlSk0~fQQ$66B=HKDW`{{eSsMCE#5Tv|8b+04DEArMw7tW?l@adGeU z4#dD042rv{B)O-rV2?+>5Z+XZVQ^|bLum<3&U%aCCBRxEZ@4C=WogCxeYm<opyjN1 zTlqtlAg(-yb89(510~<g#x}wyOrwZRvSV`9@6E8&K#)Tm)O|UEK?IU0C+ZUNT5KlD z*QuGHF%$MiY-+gNl=vRGDsUOz5*+hdCeRC*pVB<+ztRGPtSJ_W&Pj?C>yefXd*+z( z9R9<$mJ<00DxH8nV!Y$@BQ2)Mm807~%YuvD@v~V}AQ{h%TwOXAWgB}-vTdC#(Quto z{>^tLuee%Od2w|;!<+m&Qr;Xo%#EMilSlczP^OBRA%gyi^?_Cg^Y$Kg2t|%Sqtf7Z zP@*DBg&@boU(OwS#T~NAXfVwGQY92nCU?%^=8JFq&vsrt`UDLjD2m5H%dx+C{hMlw zhO+in1v*3xk2o*=X-1eCV68VWN0OMK8P3P1k#R)tR<*%sT#|4#=zp)Ai;)qjBEMnr zOOa}-GnhSzz-yhqfh~^`|CkUMv*NnlV$aF+e%ooZo^4$pi@QfkLUE%pV#l%y9<p*X zBWy1JC?E_z9<VHFq0S*3e0LQi->;6mkO50G>L#7B5hZ#<i#4u+H)AP3|KX{tWsw*^ zBn^qW>0Iygq3ao52~G1hOkFcrGHL#X41HiU`bk^f1Mom~5JeM}njfL2YK7~?#8>o) z7`uluUDKRA^S~yDhm3J7;ml9{U1ePS=dAjwEwN$9LB6xf@j$57Qt*QjD&LR4JB%CE z4aEor0EGYS<9YCJ9Wg+0FNh3M7)BjhwTord#9vWgRkco+Z=abeJwoxvc`qouY`&PC z^t7CiEJd;*lfM&{+_`ldsZQNaFt^Wih3MPU2&Q7Y=7uwCt*{O1#&etyDyqsrbVoTz z1j|1ejADG%htSS~9V18{Qmfh?ZA~`Qi)^~h;kJXrJ?9AF)Kt1USoMAE-gwz^KD~(5 ztSDOwqM+HBemyDSoCXf=0>1`3m++s}VB=T=T%BlkDzsGXzZrZ-mXK9*`I2wE*^wvE zu+5^Lq<ottFn=7DMqm&9jvBj$bCMJWJE8SsM&ZbENy$OTm?FK&$I8%)PNkm+w&O&8 zYys|)9h98<uL=Y*Fi?7~X*5|)p-cAoO#fv0csZU#lmTIJZy3kjrHLnhv2&o9{8)6E z+SjkS^`G~wkm@_d9`DIBuF4ih7N@zVI}Q}qSB)toT>cTNfFT)oGQnC>eO@1tdn=wd zOHwu9u}@tXG+q17ohf7LHvlRR&-B4}jZsQ<?FN{YOH=U+5g^6jbD<V$<W1SK$5*Pt zs^l&ZQg50@nW(tuX(1Hky@D+SS$eF>*Qq}CZ;qa&yBC#QwqdH=r7J+GvI)wY3f*xG zNW|^rP+js}3KzO|LCb*he_Vw!YC7{SO$xgW(A4y*06NP+qEkn#q>;??l1bE||DX@k z5hNc{!qPRk6B(4TGP*dLU+Rf(+$}P}O{CR^UK%ZXt2aSPz%0-eVOU3Cy~v&OJp7vb zx_hunNKJ+1^{%V8RZDJa7wcN+@)c#Pq!?@U5^B+^t;kZ*|GXAlW!NDPc(X<lgx3J7 zeGK-yBrgLIey8ZQ>7HOVaz2P+RQ%x1m_Y7d@hRSAf^@X;=Gmh_Evmyg8n_~U5_I1d z*lr`w8km!mLq!mD?@_eBS_up6@FvrMssBMeV<he1Mh**6-#r~dJUvI?@6LzL7rs3Z zSeSa5L+j!!j(c|h;msWEFD7Y5JZD2ry<WUT(rikE86MlB?<9~gewarIk5m)!CXO;6 zkWniK60I@OirKruK<tay%Zz4Z{5-smn>8<dmsc9a1z4P=;mR6J{$xz&+)F$W-_&bo zapF9`u({x4`!XZsHzW*`N=|K;`!vJ&$9DH4dV>8@EFTbanuw9JNmXMK@;6R<knHtf zZ16aQH|&bv5KFq$KR-Rupyn9&sQ8E(^v0$!O8?`9&u&*~Ih~Y9TQgf>LPVle58eAG z*64gpkP5nsO7D%c`KD*PEu6@C7|Vw&oyv18BPc*?;h)X*IwmUkOtJcto)HAtnX1-r zq{q62Dp1+Gzi@Wz1;*H*U8|dkjvK`JOC4c^l&b~Z%cdH(k~gp~EkHPd_N-s}2B0RW z{n}Qe*SA)CM4zMKwv9)sNXYB1Z;q(1=O#2<j?<bWV9~@ob(mn~@<fvi$*Y^jIj|Bp z=%}t>9p*_0&C~;G2rlQiZlmTWE6awbP-z>BJep$}3G$-I&KP=FCf()(8SalGntOp( z3>0cI|G~s`tUVPC!da4u!W8RgePZPC{Fo1j;RT%P#|mi>${xwjR&|WPv;(UQo%NL< zYv@psgCu<6E@3d|%#*kUtL=(x*)Pe36`ZO6c>%#TeZWT1v=kKfI$Fgm3R(K1UW^I+ zZVVn5Ze3mQ>4+(}%Zz)vxY~Y(iQ#<YY)x5Pt0SA?FKUPYiH3k8V<M6W?B=YSa`3wZ z9M5jH)TdzUm0n}u@i*D1Q(05HdBst%4P{OzNed_8Pg_FHuHY=x`Tz&JjCEx0{z^xR zrfPUIrG70P_13ii1{#W!a^na?)_XX5x>VNcOnBWR?_UY~1MI=i$%yCZ_I#=@#)GcB zn-f3#SC$wv7pG<73ZV^mz@kcyTnpYbI_}PKr(opq=<Za#Mf>3%Ve)*q;bi-!M$-5+ zaiU(Qa&f2SKNSpqLw<F-$aWi)$lcIL>y$S4Veo13+(TB06Kf;%x9&;m>rxCp0M6MN zacZ!NX|C-g<^#4B_FZR(F_-rD-aB?##bL);?QK88XIi!JhK#IXlSxw1ag}7At37Gt zk(qq8V;8zYv)%#A1Q;$@*~~f%JI>VsL{<J!#CQw}e7_*Qlc)|k$VH)od7mbc5=1<I z&Ux2z?~>(^IIG2F`@2^o?6^@u1H%4uz;qrIV=kbD&A5GdJSu~`+p6#!oqZZwfevjy zK(|z6^@k2AU+Sb<)$AuWR9LAfAc;~CpJf*I(Y;vg4ES8A#Xm5@!k{sgVfTuNR+Ux; z$#AVtQjxy|oP^NL6Om9)$Yg{q!c`t}Bo9h%1cW=Aj2t&yJf)JVO-jYzi|ocTr`rXh zY&!<H__)a#X*%9kY)VQ4f{j(wtM*M;aMM#XFtpy`E00SKBA3Vk5{l*mJPafBW!Bb2 zXdT8eM!J5lF(nWP|H=Cmj=<504qRACP7r|{Ym^c?=cOAXw*4bE4&3De?GRG3*LAK& zzwa%OMbZJNAN<UHJuq6uwobCC&8Qy6UM}#@oGz<_RSjKRu#AnC7z2Nk;L^=~REt_9 zD2>DA%lu_%K<?9_J|y@>s>m^N9|5Q)1%potmQPi%gdzhVdbett^8>^>WeG!5S%}^j z_p(OwZBH@qOcHgxmA99sBb(WG{xh@n@>|&iJ~}MEXqZY_!_Op9%|K|-xom}U$3+Kx zD^UElMx~WST?#_@8GcVP9iI27SEXUdnGWh_y%i^1<E&%JwBBy|_(~se@z<^T%f$n` zw_G<rxxkXgl5wQ;W=CmM1L?Ad#7c&XAVfSoo+{2~p!d<h$cgwt^$v}UwD@;XC9?OJ zq+bz|TM?B1A8^!5@~8B6jTwpZs0U2eIRwn*?MIlJYX&ksXUAVNe^<ObpS)ZwW2s;L zrk;<BCloJF!=QR-{0?N4k5=8X=rp}1RF`Qhk#4L$h`MC<zuhJr#v<|+O0KZpj93F2 zgvm7cTE>}(3&+#zMYhlKgK+0!R*hr#pz-qcBgtQ@jH6T~Y*&R?Wz}(9fA8Elv2()3 z`};su$bYc$;;{td$?r8q3bYk^$HW6)m4bZc3jrY>iK%qG^hUFxAd(OEs|T;u#bd7f z>_u=u>nSWz7fPM{g*17SAd69Z4W{$xec^H55AJN)lU6a3YFmD4kF(VoB|zMMcs4k# zLb372dRwkCvF!^VZq*LcyIlG+6~jl;#fiX7ku&uV%6+mPp$bP!%TK!7qVJr65T;?u ziP=<Cz@DbJCpHKsY9JFH0VUzJywk{h6^rV6PcK~eYO>~%Wdm6^_zM~4!4O6P(CnjY zcvW<(w3N+2RSepo$lv@Hq?8_(@8<H65P(pQkp;NEPIS=vmSua4iPJ?9J)4AfcyME; zb&9Uq;@<s~!Z?I9#vmpNn!3xyj|X2tZ(`kEfYnbeA4>DUsD0v+yt#vH&!ajANw_On z&BXG$9`^WiL(<ie+ju+vJBmlmmSdzZbmm_nbi-aNz``m-RKdL`WgD-wqE5>e#Lma= z8J8&l03N5m%@>k3h7iVn6Xy&srzA#b$SUkVyw8>fo5165g+6<&^`Bvi#22(apvH88 z_9{52$m`dF!yd-_d)=${pq<0_hu!>}z4Uk4>>>_O;9PGTJ$Bs2B%^NdLa&t3M`lWS zc>^#$@@knNO}X$o!`<>E`C6V-D4v3GC*26Jrzy3AWo<43ctvYrrG92c+JqwDTZ*o8 zO|VQ9b)E}hHsKT@o=QpwW>7txe@{H;m0tJXxB-eqHKsph-M+1<Vl0R58*YT*k2FcG z#1G$eSDo+`Z-PL<91wYBX%<G1DMM-Hoy){6`B<jxX|F!vJ#Y=ZKIF-C_Y>7|Q_;%K z!}+`hictmNx2N-Q>$D<55-#uYKnmI^ySvbU$bs=DY5}jiUzQqqsDS>zswA;WIvWpA z1bQE*ggILCxN~o}uXXra;Ha|FPj^TPW<jN{mjf)Bbs#8K^_A63T)-kj(-491ZEDLW zd`#Wtdz#Wr5eUovzNLl)aB4-a7uWGXvIL_Lu32#t))?5u!vF5URM+VQC`}%LC^CL% z${@8WMy{Iz7vAbL5<6O+uREb(hNXC}jA#YCmB|ltSP`2@Lx$+@`QCuhI}12Ao*#4i zdxhLiN5|XMwwAyZTL3v{3~>!K1$uz$4;<mp8oz!wqn(S)9QhNl&ku?(s8QeU%3W|6 zP=v@HptUGrMsbvu!%F4^2>Qv&0-~YgML&fLklLJ+=F=;avkM1aUL+tW2faj>)D)eM zx!gFDUs7{RoB0)x%(@Utrvdst?eW%z^{_hk@6P5v%wtsSgcCG-!+ho%x%Va79aNKw zx8DpQkk0_Rqf-)NTK9B;$;l{BKsWH%R}eY~8l1886Ue#h6mftL*{bYv&&$5{watb7 z_=((dwN`fm+2}|pQ_}n^s{*~cI1?jVWOnWA#eBb&&mHJ4e2z82rTw};9>*e{&w{46 zU`$2V<7IZ66jqmEaqnP@1u&?pNRsq<udfO4nO-BwQ)wMRCw%3re>aScG{i%1`{UOC zB@B3^uYh0ocLC))p44N_+E{<Usyr-?Wd0p|AR>|7Gp8%iimssNdX9tO`PbKWgX)mr z&$I{C(*8|mZXQ-e2kh~IP)64SmTt|Sjj?|(=+?LLhh`9dC(A=R*7#Xg;Qkp>p)J=s z!!_<nV|&iWKzpR;t>PTt))K{b--H(=Aqfn~C%;7%+-C9Nl=Tewg>hgc`6MY7OA*RW z4{VmDgQX&dFDzx2PcGnxFeY`3ImJdJn0f8CMo96QCekWQ-!<CY3xiCA*fAIb?)&Za z`P>I%(WF28@t=(>`z4r7jSbYhX<N5;-pZQe_P_r^&E-cq(bwIoFc;X?1cQ^Xn>fjn z`Ac`1C`Pt1C0+N+%@k|{WH1$SWOWP-KuWwhRR4|<^JZn$pJEJ1?D6g{QGd-uOh%M3 zqXEl8ZBFNfd?DDSBMP8dyBKGCNxfiv<TB%!xpR@sk&k=zn0sG60?`guRD-a->f7o6 zyK~EA`8Hl!50GdYA}$l&)>c~wdWD|df-o}Wgn*vf@(#HZld34}oNjSafrHOujr~wp z$-eMrT5wIT)yS47*!fW=++?b9G~i>Za4L1T!<9lBAi`+(U2j%9g2?e=J<$7w3Z1(A z_w8Mi08<W285!-abgH4B2k+#w`DtMJbs={<sJ5vvnjHXGcMJ=GSLn7;83_El=}D1B zh`ec%*wv($6~fg)eaXQDP$%+&{vz2wBl7ZQX_>mIu$<_D3x_(_x=9IaWeVf3qo3l3 z7&y3{eelbS4W#;BRxp^6z;169S}pR0$&mUR;j-4UGOkh{ym#l~Ywc75JOGW}gQ$jj z!ii=8_swYS^Jq(Z2&Z~rAP>4D+yAYVebDr-vI9czM05Dm1MgTKoB<b}lfP;CLG{xo zJT=S_7SUWcu&PIn)cBxRPI{{(!6h))3wMl@VIcO`OOK-V0xhc|w8v;Q1%6;_9cp}B zYIt9`Z>&%)CCqMYWI?vf!SUWLFW&49r`!b{BkV3GXb%HA!DzTxYlWRMh1HdQa^HsC z)1~z<JeR*$$%6sM(tKHQw|IZCTK3*&U`acb31hPpbiA7iU!1mjAcJ)cs^Cp-MQ_WD z-9#4^uRCo7SJR&I<^X(a=XH2nIozI<w^Dg!DckcHRUu`NiybXGLq&TOmHTa_09&4n zma#!dIgVb<Ere|08S*?|nR;n}j=InFrQ<i~`oNPQZRiY~Zbm}}5J68kvO6HLf-pxm zj<{k5<pdjg<?hh(B%OG(*%aa-o0Ae#Xq?VdQn*s$@g5HOSYFGwN$ROvSrbgWZgUkz zFtH)|AF`Hx=TnQB7Cv)(U_%csy3=#l`4y~SNsj*Dh`dBsonB>~NGB|3RanX<8IgYu zcN5d_&kP8k%3lEfpXe`T0cr#FDT@YdG}oAZH?_pF2<2{MMiFg)IDIk&krK-fDR^vM zqMutSLa4@W?@-r;$m3yQNBTBOVD{vw?N|ak!&Tkw_J7?W;o{QC1c9wM^1^gRDG3o4 z*s5F0QeGm`WR%FmU7$~X)=Fg&>@nn;eVg!Rr&kUURrJyAJ{RY#(qFUio!PWP^5EGy zucPrhVPD2K&DKsc4c7uyI6A7zM7-Qy;JBEAwKO{(&~o7F$MZq|U3>5dudJ9u<fG?A zzqHl8b{|k&;8BrlxTEI*EEn?4fNrtPLi-#)qe4WsomOL0$qspL+12vnu2(bSf+%ef zhWt7H{c6ED?K1=s^JUz<QS;F*WBu{-l+E|7KsSS(RLmHS0th(O8+`hEM^@gnhq6i& z-tFJ76FqhR=OKk4T|gLAY95H%cXL*8#Kk9lHjB4b0Z)o$OX<U1Q8LD?fr?OemQ4WK z%rRQ|9(KPz-09fGs@R^dYDaNloyzcEe)j3~8f4&z0f-^(tI^#OSHYI|XQ)HQ&<{@6 z&vkRo++SE-ahme}JAu;`D_Uk#{pXpBmKUq~K?M8f@Mrl6R%}tZM61rD{#ogNWLy+S zmB{WF)ghi#mv*}6wyHl4a_RFzCgc9s4kV?BgFf2AD&^iXx_e(1KmJ$L02#k<6ugY( zx{cZqb3}kzvv9wpW*N$r-lf1sO^Jw3nZUlSlZk3ng!Ew>J#0VOx$O)@S`v|^I}%=p z9M>nUHXw$uUBO>`2Cl&YColI8KORAdR(Q09s1M5Wm-x_X`C8KRj>HZQx>PUh6RVa! z>OZD-ADEsGhl+Z~4V*4xOvO&}*LBe6Nq=~=82IW4*uUFDs9Ww4Q|p8|fad{-d%5M; zLwww}SEOX(z`c$g6fhnLVR^YVoZO&@b+?v(Q4Tk`a@q%G$I7c(h;3;BFu|=6i+Iy% zO-)-A41<P8LMWDC`68hdO;872@f^6$`e#X=A3j3}g2Y$&0{9<bYQwQO4}N&&JSw~f zR)^Z?Y7G|koI~*^B>AUPtzgb6E1pxVwnOdnBwz1vNuJ;N=#%Zc2^Mcik{DAzK?BOh zkiPKUcT+EI=M+sO+rdgPDtW=HiV-8dY4cnn%)HOt<0CCNM{1f?+b~lU$BI&}80UG6 zJc6uq99&_I(sz}oq-|i3V2s2B{=BD=6P9@l(@V$OF4Xlm1A|kD-dhY9d0LP2c$54+ zFzP|ySvH%ydRVH{G=3RaA@z1Jt*_4<G)0MT^G5XCND9{~wPLsO*%)}o=}5-|65;ep zt?*^)A&C|5SW<nR4LONLM*Y-7eDerf-Nrseczu2LgnVNM)nSBl&n`c9R?OeZ1p9}Q zz1*xyv0$QsO_sVrrp2vHVs|t&c#0cjKAv1C<GHs%(Z6a6DDP6wj>aCVxL=BNBJq@@ z2v>ef51MC{a*l64<3jj%-w*12Sl4es@t`3^&$2VNjxM4`Op!c;v{~OVZ!|fC+v@Ad zw!0pp8@$TejrOh%s94Qe#;jPLqrH)X0p~hFrUN&uQey$~3^kDMT78;i(4RzxLedpv zP6}}CQG}u5sRIC}>Q|hYSPS4$MUMTq<MF<0H7yteu`1yOGtjo{(Z)b=g`?{!k{#}} z|2A-?HU@aXH93bKn2CwPjpEfRy0nWj&OmBB<$FotYD&I@9!$9zH6HaG83KNkO>dFA zO1G_A_Ln%wXq*stxKhrVCQiX?*Umw$l5w`_c>(X68lV(o+<<E3=f}_Oxoo{W(z>#d zzsX_w5T{F}*wT<Iyq2vdfyCzU>|`C40$#=hh!JM0y4wjwi|TNmP)jXeM_dpHh1VKA z@<?VAv`LfeJ)y<N9{<dRmkU!PIvLxZHdnbfD2x@M2+_u56<)Zi6=zj%Mzye`<IibP zII`0rhW{L11#o-D9+F;v!e=Xw3A;G^2HV0Sb=2`h9mtG6>5bp;RCYUwTPe*e9iB#- zK%_8#Nn-$AWP-2DFbY<jxTe>=CJILnz<_yG2$r&soO8ld93N?`wf%%V(MQ}!l>90O zz&qEGBxU3@PZl*8`P=H=m~N+WdDD%aBbRCRA4Yb?ZM;-%6L1c#Z537FQ|<;CHy%K5 z)d9PSsSG{kOPuhy!8KDXH)X5}iXxN}lcaCi(6Rm+J#8h=zOT6Tb7!I3R(hW?hg&Z6 zHBU<sp5i2g^KGeE_$DhXMr{IuCw0U+o6Qbt#|qa2GoU)ApbAM$!gfz9R;j(e6Gj<5 zgx%yjbijEj->451TUND#{oSZxT%mF^OV&@uYMl}e+f1T}yksX&vMR{`kdfCg!1C%f zJP4S+8J}2X1qG-0NCWI^nI{0RO_QW8B2{yS;yFrD=sKmn_*A+DQ)3)oPa0qik?8)S z>;1z2(aRth+yO{r>v>Z*{?qq3d6B1tp7&vFDiD1Yw<aP`kJ<Exus&JqRhJm8taA8m zl1p7m69vd%hTKvA?)CICvKW0x0UrA2c+iZsPXRVE!?sIuIpxk<XV}8<7s-faycJNl zQSyhoBpM*?sXwntbhqHG3gk%8oNpH-;fJCYe(_wn)GO|szC<_@NE|Cd!_w%qg5SrR zk6NA7BVRy#*t8Ed=ufp(G0o(EU_$*vQqnAzEwWtda&2xbA^QH`=h3%5Hp7e@iq=af zb#l*ecVGT>H5iCiD#_i(3@yHjAj|*^PjR!ha{afZBQ5*Qvon`pwt`Un{22E01S1X| zZjcM1%rEN50G&XTxiNJ0zWwY%p{i-Qbz*eT3XRaUL`oQ9JLDOi7HzzFJoooi&>^*d zEsvlmgmq>}kLS@`_VRQ1PFqk81HBV>D<J1U*6<}{TEo`9;t4}08_a1@87c-QWXCM4 z7)%5D{zjg7LIy~uY!33o%Wy(E(7!Ww9Xw4!*wF5S)Ss-R3C{U;-bBG;88j03Nx~sN z96x&RH~C7xQ;qXL{G&6fZ`^+f>)DH&HXE`(5n`~>%j1zA*ra~Fmzwqw+lOBS1b%5N ziI)u27u{H=-hs^5o;PHo6nz+b#i+_e)#qZm>8X^;HS`f?u<lalp9_*lH>k$u_Q@i- z)q?%0vZuBB0A;(l-M%Fk05+Wlrbll2#N;6P&spP2Joii02l^<(rX4gUR)&&o+o%42 z<zQ~)jOh0N%BAl!zM?6pb2#}@vg4=ntNn2idEhA7-A2NRiFj~!wD%FIujvADFa}8m z;X^h9Ti>tTCy3|2_t%p488G9LH3N_0PK5)itw7`SsSt;SgVE%r`Ly6Popq`<oU_)` z6?H7i(V%QUKC&fHO{(G<+v#BdN&>Z+<LuJmrA?t0k=7$J$>QEQ^XX4?r&N+~Z|A+M z=3V-3#XcDi3huofntxLIr5xYe8X#?iT426YE1E6M<@F>Sp4w}MiYNG(Mk}A=fBksN z-pylHV}ADsXnL=+TQuTBZIyzW-`_92_p=F<hy&JLQ%b;sF%<z272VVF#%uBh-<R_X zZYQ?vX0`Bjn}t(#&G%bFg|61gM!#P0rb!ha?gUvw<!wT+_q9LDjqP8Ak~i_p>b;Z> zOXKL0v5<V0=)=%{B%eIZLNcYghR>^G+Sx<<j;y0R4r@t>_YbGa<M>K?`At%Jf#EO@ zdb_36lJOI_Te9k_xq_d>VE3~7=kLXm9Gbv>)gY$3*EWq!-{ul+gUs=QwH<<gh0<6m zY)co{M<4|<?m9CINi=!sP_Bau2JNJ#KEI3eV<I(FF&WFBes;oxHFW??z?{A0A3cof z?6%K(8V<jI*46%6xZ*MyGtJ-$l3iY1i=yH1<wYb8a&w`ux~(Y3fBS=~SQEI>Yq6ys zD55YC&SQiXK`2)37|GZI;L;nad+m113Z8~+J+M8B@up^K`#RkGmC~B(ge$o7ncgwe zr`c5ZGCXU%*%<ifA{JMPlvqismV^~zQR2jr=0A$e%}F-uJ2pII(x-9*fC%$&(lip0 z@hiH_bx`(%5ia#tpfCr0JW(Fas~7vhr(EEmsmz`tlla+rx*=gk3zkeuz^6!f7XjPs z6<TYK$5H&UZhkC5ZQzjH&BG<CVTasfNdT39utGa$qU=L?kqFjm)bG%+dMPV|;~Z!K z+Er8Busb>RN6V4jm+JSa2i`N{?C#>oh3`{MlwbIFDVo@AnpV?jUjU&$yc_4=wgqdw z`)kN!5^6RnHI>xLit3M`_daE<v1>p4z%pM>)mjkP1~%Hqu9JP5-e6Qglr_>#DmDI7 zCEnGAJ+UbA+q9Ks_Jp{+amHEhxS^9+<l4F$%Jk6Q*3Z%kM^;ydA$olBrZ07%iDDpI zb^anr(DaI-A73a_!XFV377hGw^E5v;n*D!ucqX{Y!4Q|)B-Q-L1Ix<3vP!avGBR8> zyW^sy>~(lC7tECLgR=DhjkjM?+whkk?6{$Ct8w^ykAm&z7n6ryNvhlb_;bfc>l6Na zS^aL}D-y0EaLwxPfe)z|7{K|rjmrHREcRl({iQ=HJBEL4o(qwkSVN$YP91|N)ra4M zF*Zr**+iSr{dv<K(MVTsORvF4ZLyJxB+%CKA*(GhMO~U3?TxRIWN9Q1B}M+NoJHhx zo2ler?25*O3aVrGbdN<G>b#{aSF7KUkw`FF(y4UT(%eeta-gj$HkDuEfJ!1W$nm%Z zIq@Qucubv@T|h*iRDXwfL4?xqe1uJGwnWyU6j|*dzGtv002*6e-To>m5p0u6kGqOY zq6Adrbyo&3Ivk0J*u09q)#HWe0oU(i-yoIy7xdKwAJ(0L!zr6spQXJq1Oa%zC{W4k zq4Gr@2pTLUn6DM-3)i{nMdzzbi=|T?nUtFL`sG0H%+kWpbD^LKb{^EoV&NcEP0w9> zM=ymJj4YS>@A>I+!tNr~Oe`DobMg7IHviID!5@SdUdRO7-+k&Q*iLrMuB4WLBu?JC z-;tA+%t9&l{rc{RnLZ@Tc&7l;htlHu@{dxExaids)S*lE*LYdj!rZ52@PgzSo1m`r z$Xc-py8a-f`z<Mku2J|`s^|VhH&N6i?J_tjRp&G$uZ}I9ZdDN^&h`cqfCFfj`EU}C zzcK74y0Kjy)tgT75&pd5;r({$SRd#`W5{)sz&M&N==CId)EP2EHWnTD;rFt7>vKw| z$`FeCd*avK?2#I1BtNi~AhFj#i`CV$c1lG_pke_ZP+phys=9XC7as9)twQ)0&|H1e z>K7iY<1g`PkFL1;q*Cn$6tcNElWDtISd~#98-YfCu_(#E8qs8r=t;M0MS?jzuj%*} zkN4(cE_|zM@x4cL@!B=k+drb+9|LJ!UXSgs6<(_5;V_dM&+~DMTwnDFU0mE46y5Q& z6sFYbBXre{WN)8APBFWo*BWIu1P6auP6A!ZWEKR<HbJ<HAiX;#amUO6cty(xfb>V_ z2uknpvdE<Kmzv<~T?Yvp%wiyk;bCq28xV8Kj+iH7a7#OxiPFqH|C3B6*-k~h`F(B( zA)d_Df3;P{w14dx+pl%n4*f_R9g9r)@YHKtJ<C;Nu<KOz^Q*hcY4IA)gQG>QC?YbH zm1|8}b{hIX?w$0??3V2O9LW{xMi+u~05&^O-3mBMblSAXLKKi8+A#!2L3a4I9-fDt zIUSMZI;8qX)v)=mljW&i>)-U9xZUMSuP?>8?>mh%`l^j)D^S*z-Q5QLNFY!YD9+_H zx+z2KA<c@2tLPDE(;LESTLsCzLBt#|%TN{n#XGXUZL+yrrPpwLo$jO$%^{Z4Bmgms z<H%}XToZ38lVBVOR;+j`DBXq}w^yrB+BneGX@pC4C4V1nv;elnh2y1aISaY%eF7$R zZsDftsQJmE*lJxYSy=Im6B(mFBJoR@u~Ooo_)lstO~eAMe0>nlhdVk{)VmVL;qxGU zj2}@gwm^#X!30m-ezH%NcHzA=tPTB`A&?dg8Z_{6l#5xA<ctW?dp;A(sdi~jeVl?t z+%9h)N@;N4N`c7IVc<1?8ZpTfc7g(N+FKF{FbW-uQj#09iE`aUC17omSNOc!7K};k zAsId0JWEjZ@)TvnQ=t$gV?Lp)JgEp-S<v&8j6WFXNDE)lYN_-4YPGQvUqg9F3uOp$ zCj#Z6Ziz(bEtjbg$V)lAA1qTD4HF_?JI(WCVo7RfO;;ZXeCQUL`-173HzIN*_-qgU zMhIEkJGYu%q$sP$=m$X&>6|x@8K?k`H%dLL(Sd{7A8GS78XG{;LUi5R^?rxup^8{Q zoW>##<ajui@x5V%A)O5Y6+!kYwxBB;9R`kC;kNPl5&O#FwvfpB<sr%!2h78ukbCkh z!tzYXyn2?&+I0H8hsJD{vurDG8KTLIk9DE4V#@<DR}8->@+&nRT2S5WDZ)&{aR3O$ z(1lGt3im<_jNrY=u(rq|())C7G~0Piph)N~j%<fm>#7(BF1Dpw)5&7`+|{OJ7(sXD zyT0ge=PAP^{alY&KQp@b>;gOd7v78W2h<~Gn1GSQM-D@&=N+)NV1vt_Uk#`KaQ$pY zqn4^nTPkdC48m|43E?|rGiY`b^2x`K-3%-*p0RT?=I^6T3v9$Yv-8G!BCN48(x(be zkAS!zGPjqp!<pHFV;7I*ikzB9vOCjS&BN4$8|(!Un6FL(ALQs6?2*YGELj##dmI>e zIf-;i62I!!U2aK@=+~I~a^~9VvWb~*V4OX%@f^!9UVM#EYmTw{hN#>kQBf)+HO_Z# z%!6p%j=*kPpXzmA=V%9<42@lP<~IxSdXKQ;i(4$l0?LT$6wUL6OonGJogp(qjg=3e zRX&rqs@Gs2m}j%uPP(C=*{q`??z2VB5Jf1>jrMf^3V;MxZs4A84?c$XCmOnq0MI6z z=9We)yq<6Z*#0>fEW4z#3`&9sh=T4*_T^i7X7~-!VZ@h?lX>nrxE(2lyxxJrD1Abs zq#<I2EOh_3)Jrekd$PZt5Uh>6yA?{cNC=^dClx6vIk!F;^3U|M)l<ck1d(!N{>o;q z$aWF!0UJJIwZMDtZNO*rnf14FYJds=XB34hnx@LVzKb{8uUyG9NE5qXKIdsO>dKVJ zk@fZ@&IHd;tBapv1(|4GoVhr=dPaB;hy!)%#6t2ypb%3_^rAw5P@`mR!k1NhEc@i5 ztWD{6Ck9{T5lM*|2);59#je3gw%vSIC?}Ps6G61*wnvaOi_sOX+z=!Z+a$Eajl;tO z=dKz2PiNJ|&KVg}r&b<-S1n<ndA^zML0_NcTL~hW0}qb$2cQ|<RVy{1>D{mZf|_>r zAubQi@bxgEgh{bwC?rd2Exs)mV{nL8jtr>!hWR`MCj0DmQO;Mmv>t4z$M_1In5U-k zaF*>>QhBQC;WHN#YLhN-r2l_I@HOX}(r}3uEO+WAPT%U}kxCYrwSeLVW{N=njq;1l z=lv?*_5m3X8fm140E)?eA(5so)wpze-Ud4FWdn_t)Jf8FkSsii*}D~clo#q?H33&B z6*0S?L6*EBy1<vjX2}{NC0^DG@M1o9<SFl)A2G7>5lcTU3C^EHZ3Cj<c8&E?-G-}Q zdZ~0Q7QqY0CuM~;(ca|S06OKA)0%pEWwL{4k!HJNNZ|-xPybf)4SQ>y|1Fd7Rc`l# zju%CiL6V3w_S^Vcao&b8B)((&v1@yG^e1N7o$`6N_vfyL0!;2u9kXtF)C5kdV%Lu) z4nIL_HpH?;Z`DrOUf;KGxEMAo!K1m?;Zd$pAe>8%%V766&zI9((JDM!Q1LI7l38li z40U$EG~XV}ku5W_n|8>R^8VMKT{3}MGmMQ#aRxptwYBNku-lM6fBFo&^(we-MWdLn zHMj~_-6F02=LK3Wni3~|I`re`opw7z@{mpD0@@B+=HbU|8^84r69O+?OkOurLUdke zhqe_o8L~b7MX_2vib7&$v5dIBQUX;2-|b&nQ@i<Ceg4!46Qce6VV!9N5*pIlckH|F zV&lK2TsQGQwQg(!(KU=U1;B4tmN<-bDvGBG`YwxeAirF+Gwrj9NLV@%4~OPJCjo2{ z+oi)0c&-9|;=ETRa;godig5ceQ&VOAv+r|VqBZomV#j^rfYdq*Q8v_me|1aVfd%vW z^kpmZx&f}*r*!(st@e$IG((a?1plN{@zhn9iHEpys_MMItJu`<f_We4+D?^@bGNWO zac=orD#VEwjd_L@hl-zkXLn2!@{y0!3)<IMFZ<kYlNl3U={0&|$keEtTFifOZ$%@r zVwFQV7LRmER8rDBX^|EGB@x9)Xu|r~66a7g*0TkVM-kBDK6KlqbF{L{b)TsgVhkrW zfzYRZlo}`ALZC+v`b*%jHiaB2+g3r>=CEB1jH`jRkR8d-U*98W-}s<rm)YD2C9D?w zt0oifS&?Ol3#wHvI2IcFy%eq_`8<I9piS;tQOD@1o2TcI-{~HfU$%x{nG*-14URAa z34t=BT&fH)el3}y9L|Jc<xZ?W0=tUW4=&qAd*KS<Ai(Dn5~Y{s?B<qL;0<r@ph9q2 z>@k_Z1x)~nV-?d(0sfG=U8eTDlm!q?7jPbny7lB(CvX6-k>pO@EH^vwOfER_rUu1F z4KBntAA`iH?aT+84VzDUdz|%^cKugz<e0l-f<INm?A@TSfxDiw@ceWXdj{@}yY228 zT1HVMMOhSILacRs(IvefF|_hZa<nhyXQGzV@<`?c|D{H^)-ReTRNwAQjT4y+@7~Ju zbe|p-GPx2(Hpw7plbcCne6ED&JkNN$43b+K)K@4IyKuSP+BMC;#DeFEiov|W8+(El z)D<YmAyjOsxgbgbp=Nkeo=bKcsURArfHx8Ob)gt7DX++fZ#^$WO(f)`?d-}}XrSpb ziMqF5GfZeli-e1KabR9go?fC_2Y{~iI!eXE!Qj)3BQe;u``_C$^c9c-JBLeJZoSvn z+#U^{$mh@diOwB5oBt0eK-a%fMvYT|K@Qta;Ya@Mj~eIW?m%?(7+uI~Th0W0IhR-k zb?RE}<lzB&H?Cwbe5zcAfK4FI&x>Gdr5eoI;4`mYtZQoavL6SN>6@W6{VVCDi>t;S zF<JK<{Di@$WvevF#12*=SuT8$Au?*H7K}(ScD|o2mKUhZ-Vkc12F?AWl&w$V?dm}& z0W~;&u6qq)x$h`VH=z0}#n3r%#H3N&*R96#LW=ncfu4QjGfd@!dW8j%>Y=7(*TOVy zz}!gKNOrZTyESE1LiG7KaW)G#`aP}tmwQ0mn4*hEZpf8P_j-9Iy?d+^ulIi7X<nbg zwO@&#b73NT=Ye^yC=&XBZCVs1Q>q_e+H5ay_aMu?oZp*qfHc}F_|}iw0_nARvr~b3 z))!ZpgN*2AveWt@z18uMYKrsPJCQtU{8Yq$Nrj@4j08nSuAHi!sq@yj7Zj2cWh#W} z#JBa`sM<^Emb||FOWNz+#SEa8(rCV`p2RWP@VnYxqKpAiHv0~XAO$4KvH{Yv%clH| z@)T?9`%BIE<C}8f=(9d&%N63#ZNk~mF(=R$#nd)_ofRdF<75_wj-lC(^9{;<Vi$nW zuuL;+#Z}uUTvjKZ>{>`aH4|MSSy}h9`5-3+wqTwaqWJy@pw=XGTE#FE<g^pOE^=5B zJSPk8s%OkybgF+|P0<#a0;i`R!*|^Ce5|<N@kp9xaU>0&;Ah0nef*XSxP*trQN*O= z3^U?4Rwd9DL#t30r?m)iy;-h>@RX-+!q=T_zC3csR)$O;-9JGXP_*47_q2cRCh}3x zg%&U(zlekMCSzc}%bfhG#{IG}1|xWF2AkK@01TlifkiOkTl``;JoOCk_fD$wQ(rVl zDUigt#xo3FYM>crh-GCIBt|_isToD^;h7|gj7}GUdq?7;b-<Ed_X^kt8&`bVxlG?Z z1Z#a!ZQ2sJ13fCR@s(9Lwrw=GiGfz8yAWS30VzI%JW*wvzU5lVFb_7U+jso+%6iB@ z(f!(|P9^D77&#rXApLx$aH-R3@U0)NFS1pvt+3@|@#HK-p`v%YYk-LO%AkyZJc^DN zl0YNI=zihhRitC9-U#6_b}eu;OD%$LM3DhRw@P+PmtucwAcSHneO$g*&eEFTdSqD5 z0DoWuE&24XE4Lls`9=>?h{7r)XQH%=Gpj0{KwqWOyb|{lQfEB3ya<?-^p4K{HciTb zK}}GJ0c;5j3{c-ep|hTF9gj4yP`eC|x^T8lf*?+5*)DJ{FAXrn<uHx^!fM8`;&_+W zI+Ut2C-+PHeWxi(JkH3i4;J`8CC%#Yv&9oZ(3eW8W;>;!PdjsC++h7cVM2KTh~C1F zIc>+E#s}vT=>S}z-@OC*H7QYHn@aA5EYP6EN08zjDwgX7m1IV3{J><7wX1URdtS;V zM#f`hQJ$DD`p<^Yx<r-V%Yo*Np33kj4=?lSB>VhU)?&^Z`4T?_t_aFh4Eh>Ak5pi3 zAfBZUsj2R%Zzg~T2aX<l*y;oZGqt2$3ZlwvBJoV~0}wj_`G+Y;*c6GAfI~!Xv=s2R zY4S`AhU<~0tzH94Cy-U(y<O@|%<kkmr6;1g{eL+#Ttl`2P<(w(xsCom*#E<<U`oAb zo@gy+9U%@X2A9^v-a+6rwmL^IvUY$Ka;K9vxZc{AFV1KBd3p$m>mWYG+MIl(9Uh^f zB)Ll7z?=?Fj=;YYB8>5e8mcd1#)bs+Va?N1lKc%nT=}Gpbg34@sBH?n*&NY@r@y+M z$fZ-5WsU6{&?=Ifv8S83J-<E~i$-k)8zrlW0>7#Sr05i|k&#RSp-v8FrZ6oLLpRjH zLmiV>l3;vb>C2NseAb7-M?{N=kMdd%u8K2TE%_{#OHc`!7srYd!qrV?$A%z)7UlL) zpROFL5PuB;Pm#I$llg*a-CUGdlJ1qHy=v<w9OIt+xH6ca@uRnP10~}!zCkBR;Rp@9 zdXo<?;}nF1DgRqDm#RhLfSz4d5?>zJBeRM+V`OW~<6e?6mq~Wnhta@G(_S{xXZ3u1 zZb%UJ1Gvy=6LDE`XV*$A<kTv&1E6HeCQlh&+!?kRqcY2hd|{NG7n{s4IW1vp*qu#` zc({vLwP*JluC^8f$B`(YUS!hw6>{d@;Bk2hkY&%@QV;chdu2FcrgWUqdT?gLiA6q} zf7up?vpYdq$O1CvS(-unb$KfT#kQ1Y&KaRr!<jR>ohPBH^7z`p0s9?%H8Sc0Wq|ZD z@e%f?uLDM)698rWWkx4v>^s1Fq9JL@oVf*Bxg0OI_S_`~S&GwrpQ7L0Gs#88Yf4;9 zN#h)a-y}vK$hG=+QkDlVQ0fXM3xqR+Q94L^UM7ZK#^)eFEh_e1h90M;hDlvUxfejl zkl6InqU+(a0Y@SO;ohK5H@gdZ67kP8v@^CWos555__ie(0o|KVnjcH9xk*7DVgTUj z!IFI`ZBExxuZ>XrTYpMigx4(f)pFX+)3%z58Jje$(l6K<Me_pN+&GVzt_A|5MPEdk z{yXJxtcZr(BlK!J9+0WkxPJ7(Zhmv=nN93GQN421<uZ50U3clswq{bG>>`5~A$Gxj zIl=<j5vw|!8YDe8b(2IOZshB&fU-2vsCE0`8b>HMsO{(cmw>8*H>YCQF16bny1J7~ zTnMf_xf^h~KUzTlC)$l#jk}$T>}F9Wv(OK{Vh+KH$%lL+uu@UKLZ3woK%u^X=MbH1 ziV6RF=VDvhwF2UZIB$Ta5hHr{Hg<PcBpZ8Zn@Vm(Kd?X`ig&LK2P0d)ix6FKV*9zT zVqX{1r4Q4X(IZ7lY9YTG?w^JPtWFgB8jzFrcW6vYVItiq-e2QTNYVjAMFVJ-I$!3- z_n&%OCTG)i^3}Sh?^PKSfiFoZPnh3EL5WkW=bsviwsa=8W{vk!UOUaTMlx7IEa;A2 z0ATz%*E)?0Pp+__DFX*ozuRDBWa=un2|2(2Apo0vMaYbW6vz@g@4y+El(6%zRKPy4 z{sv?m90ll*4W(D2yP0}oTIH5CxHtDbKc6P;*7vdIj`jkGv%oOd;r6;MdPrI5o`H^{ z7L%2A`pXg%hxf!Y4D%rm6W1_eQ*a<|ycoC<zIWgntqH~or0>yL2voklf7zPz$fWaY z@pHG8qac1vHmvP#;J8?jl7#;&Bz?ENT~X;ps>ln|P$QlD{aDKDT7$||-K1V6F%m`q z86TIFyUpfbp4mdaJ!-7SAw{X^wH3Rus2*BA;C5yN<ISNmP_}Iw_}c(sS0@mIxI9C` zGbuaCZQD|#_a|c`=PrZl(3{&BdTq3ZsaWwMu(xpEiiAk?PK(`+J(Ly+k<>SPHSv7~ zEe%Ps3mLpaWQ!o{?oNpRVws(220lhh^Qo%IT(Y8M^evM9n?_zrM{9;7qvv9I@~@NF z*zhGqx`l!bp*$&ZYLo+?J<o$bCmhj+KaMo~80>PDNeV_ojotXms=3>VW$x2Pt5V-) zJ*0iN!M=js-71OD#vutV8jR6WNHv%!(#N}B-Ek;*$LQ>DG1R>kUQK22`cP(GoM#>_ zc?g$M6qolQqhhejLE*w}eno?62atL(jA4$AqqYo)*k9~i6emt@Rt{TZk$s&U&+?!f zs~Hnu8%UO$udIbxcT4a&yMn=!+RY1(22yd3BM~24)8Cg-S~Pc1Gl$?Dmd+@UN995J zo}0b7s{sAe+jdP=>RO0|QiDCS3w6H1qhy+oO7lE|Cf>&v|I71(0pLcIwthLQ&WX7U z!C7{Ft5}^iVF87cYJ{HiKX1R>{YrE{5CM<>V(Op5YcwTF2&p52jJHe=j@{7bOfk)y zAbg3{y3k+t0y!&;ZsXwDkIcJz?d1XXnkE@oo%y%bK=!o};iVwyrNEd2(gQ*yIQ^vg zeskOk85g8$dYSE($mdu)YPzm}5W5N<aoXiWnS`b^DWjzX_cLJuY)_JPWu6iqt(j~@ zW76KL9(bI6%9HKn?Asb@E~g@0i;dX^qk#jE#^l&TyFoYhOy*xaYY6Kbh*2BR7M;o| zjuGWhF-E(@y#YS`e;Tc_K!<$+0@M0=ivl9iAPL&;@X6_n?<Z447ygT`FKQ0~GCley znBuPmtF6nh<&h><Z}!dn{vKO>PY^8em<#_-VN`oJq!`ywd^G`nY=-R#0r`nWpvt3c z<ZQz^tPs6ZHlaNl6P2<WSfcQkM~|o-qw>1R@7%35g?%&?npw8qz$|WFhd%@B?AAWb z!}mY_L?RZ<qyE~%+}O0F3L>s5ZR#WHioM+MA(o-Mk|OQy8<cqL-Y8t8Cb1BP!uP^f z1K>H`b{}8g&Y)`dls@jG)Q5x&1(nLRbRRiDM_q`fqqh&MO1@pjH4M3^Zegcn?Z<NW zSWWVf?Mg1V!Lpt_bP}*ev-meC(XDN8NsWMqw0FQfgopU}lDxTYS!#D{rsm4E8Z>K+ zz|sZGn&=)fTK3oDT$(7xh`7@-uS5%}f6(0{SBojqd|4LUF@{`V(}VDYh8Y+JY`0FL z2?S;W&UXh1VbBSb*x_mh6~bIoc{3jp0mKsyi#=!9!tOHmnZs?SgWl`a|M9|!tph@7 zBnFHphx<CH^Yc|ds$8=)Kk#+|MS6GzDv|K0fdn7<7pQWLj3nltR<79>RP5gPVVRNo zWiyM+;CaU8J5%R`7)A}g5)bG!=HJ{D3OwTiO(RZYJ(cSL(?n4Q+GxYNo~5jnldN9H zei2Vkd>&}e<3hVcWgMb&&P3J<e@rdA^7Y1@8oO4q=Bf{eOHg*J)wmr{msx)JrSY*J zLhH!Lv}g-|Yh9Xf+Ht#KQl#g?(Pz3V{4Po!^zd68nUcVAUZjqJ1hS#QVPm0)+Chf2 zRMOMhoxCtRW4vYha(9H;sH#(h_P%#fAeecY2;8vUpcxCH-=u?zkp{6asxp{1r_NbR z;Ps~(p7M~^n=*}MWTnp9x5;J(?(pdDqD~3$Z1_DRoUBP*ifBd19Voj6-e`L(DPrT> zL`~ZCecU0V=|?iL$@Z~^@uE^*A^JfGN(0aW?1w?c>Thxwh*zYn|0FgpE0apc7&n1n zt)ijf3~E$CN41*1_aMg9PAiirV}Jw3HGR;hARu$i73Q;_8-uBEyS;Ps+S1KyaMZKs z)fi(Owo@!$FSwqtZ1smLTW@Odmpv6Uaf7p@SU@5*dsjUg9bt&DF~<qKNpMcBQ4pS1 z^+ep4{Q)h*3f$1~urIdin(aKxf=jeDYvEjnOcFpp40En@JCHBz$j`~8m;*R$6|DI_ zdU9C1b2Z|g4-V@%i+0i<<!lzz*z);tv6ZUT;l`tBD$<JvGiKf+G#jB;0`7yPVySdN z>$Ym~T*)5c!^7zu^tp*x7JihdU&o1fn06^$YHFwMgd>3Jd#jU|hq>Su^gw+F#!L0U zA%_yMUqG#*Sv1hRA?p>he%9-?7aZJHa?f+7`*8ryp9UA}U_MYLS>4hH6rhA-ja$j% z^hvr<4Z&6t!c$?B>A=Q(f{sAM!o%tg<LzD9ze9<_7Rnv>GR%gUfRgMaFZlC5!MSRN z1FWH9a?Z2rj22z-ha(X;r9!g$+!DGVRgLcN^_{RzuPz28lV6)`xFa%QY6~T>+5lgi zW`^3K5V4Uh{#GRJ#C))zS=+YBB6oin6GfdcsdnjaHNQj93RL=tzsM_gpr&)h5ddv7 z$Cd4p=o4cCA1f}3UY&_b=4mc{MqR#xGSz6Kui2Ni3)8$S>+!zYTm6tZ2YWePx8j2X z-J?{wFN0V*p`H!^ByoT?CZW{Y?8E3(-#hO4p28wBg|9}A_A2}--^GG}!#;hhss2v1 z=NrJL9R65<cA`%SGeF|^w6l|OTGbY_>-#G1*%kWueHp!M&8--a6L935l*W}<ZtE+^ z#T#%(&<)#MI!l+qDwZ~BoISouIX1#EMJ&{CC%HcYILf*fS$342H3kTjqKp5O5B4=7 zrb(`H<0DYEMv=!;exod^Voe#hi=}~xhhjjZwrq=DsZI!iq#3+l4DNWWrFo}BQ*w8v z>_>0O3+axxP?^DG5Tbu9o8XM(Js7bD6TdJq#v1v~RTt;uxLYFq+%A)(NU3q!io#xS znwYT7>Ue7!(?*R(O>i!*B*!OzElx2}GenM~h8%6qHU4RegR~jb4%8pGdVY?&oZhE% z-+HyU9V{8ejZv&*^##n}IveH$2hXw|VDxO_2I$YoO%tSD09=;QAW&sC5PlL2LOju* zl`B3oQ^2h0{(_Q-fK&sBC$`6U;zh*vfbHS+27dpWIWiX3xGuPgFiE$Xce?o7ZqzP$ zo|BvZ%~-n>D<{V637eFi9O<Kkg`6i*06LeuK12(HE`~Wkp}70V{WPUE*Xe5==#`Wq ztmG)xNub0&y|lvW2C}6~HbF9EZ3gI8G0QqCC1LuE02JWdvO5<(;|RfR8pX=Uk4m&# zc7vao6K#erKS}R!^;-p)Sn+_^x->$j6v=coQk%NJM`O%CvY}N6!_IKpX(^9txd+mf znODmlWS#yeaF2_71~vq-Ub;P`5$xx%@VLxqv$*1gD7$M}eHLp94POI-n?;D<`>J~? z$GD6h&Jp&BvM3%&Tcbl&l-KVEC_I;+gR7UXAH##*WQbU4IC&yEsDT?Xl8pGbp|>;U zbB?6r3l;2oFzlcpXlDDhnL*5Dv|}+${wy{0-+rm*nHFQYqe4KD>f*A0f6C}uOZp3M z#?OcL^Y{xwIhMcz!+@^a*QvD6?~DQkvr4-C`j;>^n%MxJ#633V-qcv)p~Y(O$U>{# zEt9seX`#F5v1<XGr1;k0K!<K$9zbSm^Y&SVzcS7WY(xH>*?f_H{S~9Sm~S@^_km2X zBp@)rt2S=f$)z_|R{?3I9{k)tHHB3f5RV*NpVz$XQ;3=gymG8((vWxB>~@>7U%#Fx zz+oRlgUc+n@C!KorrDBA9M0|>^jn;iF|{Z<)o!7BBDCHtOlds?Ga&o*9mALap9kNT z;(&^r(^OYWl0%dqg~s~E>rEpC(K+X)97m8~^->Duu^eof<TqrTnfpRN0GJtNsNO)O zd7?zBa3REe7!j8R?5vaL&IW-0az-5TB~9)FmxzCyV6gyW#lyW9E@v*n2Kfv%tGo3h zF{aliI1WxVMk%;03_-<K>`W7x!)0XA_RK4NyW=%SPOT>=OSm>+9kf&U*HZgVVJ_K{ z!mXgQ3VZ6QN7vtweDfDgGSQ|DK+;{Vm#2i*?Q(SfE<^4Hrp+XI=!&0Ez^cJZSmR_& z`0mCtzKM0&`oiUN^~U{X28+3!QNnky%!jw9<qPgwyl|H7{m|K8Poeq!QbIS;pGb6P ze|yM<U=*5w)l6Hw#V;)Id#US#CJgiWy!LdagJj=Pfbo<PX~4TZPhUd!e6`FOPS}~S z4F}0nc}<(HKT&~$liw?klpOVP;p<lwTkiMUUWRuptyd{_ZgGr{$ok(VD59T&(Z|SY z?FsB057-q2BKwc^W2x4gIbrI*e&gM~_i`2CfH}A9Uh~KF*OqhEzk4;FC(zBN=i$R$ zmB|*QeYWY<#nQs!Tsx<_cbl$><{@HZB}i=buo^IrwdTwc-dh!+;S|*Q@?uEw7(XQW zN5x7<Tus8)R1D%nQrcVNQsf+mlEpEpyQ{4(UfaXxj_)SbBQuB5(n7)C4L~#AB8oFK z^aC#c^wr`ijh&?gQr*zj<u<X78_hHjHB*oh^OSI@WijOQPC>kYIiBIvYB?wM+itt` zt$qmiqs`Tg7%<um8PXn>l~dGJrl9g42&v|~d^q!%7yw5Ss=+SrAsEsVP6o5=ta`71 z2N06Oq8PguS+sR#64ek9z~T7L0rKv>f$p^wA?Hfke5%3Phcegf!j@m2kq(ts<l-ED z0fA_$NxhZbdN2c4?lhJ2^YbLTT{|wDCGWSZkqw-lk-i;~5j_XX4$=6F^^PWg9Z~~` zv(`#*<`+J1^Wa=W+<LdCuZ>=n6>R_w?<=$x?PU6OyP95qCy1MfnVFm&G7cj|T~?c- zN@7|Ayc!E%r#kYo{TgCpv~mM|d|K8BFfE9~TUN#Aso?g7kN!o?PL0~ORIT@6d5@`& z-5s|!zK7`25({@O<FZrtj&q3Uv>->*og>r&e@=i(Xu>v3KA4ISYv4nRh`4S%OVCgW zTp)Omoa-&&`R)AS^toqS<i1;?pKk>#uYENB+h}<BtVCE2F?0r>40W6DQhxMD`P20< zWx=Gew@GtY%Gkl80mFIq4JEbfqUb0&ff@;*1hWgT`4>)aU}<voG5~>DVU)f!CN$qt zIIgbuQP*2l;bi3;O-7S1fIn{!aNcrB)Q%Ldo*z#x{hPva7Cl<-08lLgW&~`M)Bhl5 z*f<>KGfRjPmIVr??>=U@7o6y^$bwq5;mp!~&-^3_$;~9OK4es@9G3z1=O7hLl8yh0 zTWK~YcgE6}q5v@=sDXC-6nB!#7s09;=ret*69LK11Nu_8yi#N|f}bAV3Wh~=<dOFW zN18!co1;<-^FS#Y4JbE8Z<{w|G@V?oclB5leeX55V}PAC<;CQ|nfjG?1}Sn(H#Iho z2de^o?Ro+|_QSU7HbbO`(&y+pmf(6rlB>qD;?;JPM$*X5WW+~k-RWYF=?_1VA2kl> zb{w9<E-$B(wOa8fn>uQ^8yBkD<e$m()IckFt|k*uSsP=^p1~2`FXC{6j=z!&m5kxn zcaDW9CB9qQyfWse^24_8E=?F4pP{ZP35A6F0NQ@9j1)PLbZ%ut`0m*+oMeT^PWs?7 z>w<XWU-Zt09nMh+{VBvKq=%Hub%T0&-hc%sSbP`De53g{<dlSpXHAW`t#ANfm$L8( zWp_-nv5x>-kyzqRK-AM2$Zq{^Dzo*`e+`dqbo{!CYc`~X<v6Ae=Zh5se5e}|u?kO5 zp0@`FXB|MPQ5SfMVs;^axJw?}B{6hyWp*@9wnL7ElPs#a&F7un>d`W4W}z6Mo!uN^ z;7QH5lq{jAeIQ}YQ&_cl6FUxYdx~TbT1c{L)wvHC*1z()_k&d{1I(HDI$opxXAng5 zuag;g3VLKj8SgFCGL@sv#r6RRjN;?0gEwYs#734=^904baB}G3+=+uG`uvTm0t)_j zt@GwN4(JkGUBlcqrGhhfsG)z(bImE@%x>6>omFO+j*3-P6YUvaY-a_I@r5oVvK<3@ z;aAdQ3ETIZSxd^tRtgY&-ZYsF(t=($(mQw2!d6MSG-7Oe-n8<UpENj~6>it&w`fqo znAm_lnV1*^dvF?W2P6~lj4p&rzyEu#r`~YkVS&pFNY%frCNl0#1>bykK`^Aji`kog z$(hp)6CFvWFDs~ogL%8$q<x*?0ulw0m50>5Kf>rvmY}ar3Po|cfwF2;coC>HV!Hqs zCWM)APc}ni2Oar-XXp<Bdp^WZ&_AZ;H*xn(b-_V>CsE5l2Zf#;IG++`YY*{SJ`^m= zK<NzH?Ne7`vUTx4>69Far9{m$0c4iM`S}%}f_>w2v#!k4tAPC|f#vrXaL4}Vc-p}b z2)lbbe#3Y+E705kLaU{!5%r-&D3>u<1WlG>6cbVhbIb5uetmNJ5AwoBGt$zPb1cui z;{LKhmIqGJHeeWuam)$ngStE6+YdatVo7oJft&j+Gcvgbbx$h0tvtueRrrl`Ep!rL zVLwHWrBTxNj%&h`3q`Q%HKMp06g{o?^=L&p%_YM>tXJRa5}FkN475?k!#?`<FQ|)* znPtQW($t*6dkAPiX!DA4GGo+;Tz895+5rWHzrXQfGI6m+#FxW8U#Wq<>z19qGQ1$b z2w<2CgP%i%{ySJ@LPV7y))$g)H}d^vYCB21h0<iJ;gGKQ90GljMCvH4Tli&O9+BBx zA#w?gyXtCwq|o>D`H=(e5r6@<xv6^nE;(-IG?dL^n3L`5@JG4CBvG07+epV>)BJ90 zSw(l1aZ={;G6#FMg-58$!#Kfaeo>93u5cx>*8kvot72ygr2uzbv(ne9`pVbgl4i9( zs~`Uf?HP=d<#g|{t_u#<2)+v;=WR8))<8ALwJax1x6gdw(U8us?;=&CHyIeE-$u_A z(dX#H$;eUMMZ6Wf8Y81G6bRX_nQh-{=N$woR)`w*mTb@Iu?V17Uz@lh(|4y((8PwZ z*D*4o#3$f!>Y8X;wf?0Bs1|V7IqetK&d1gSF4&PeeA=T*V<_%HC#NmgaM5H}tSwaQ z!3E;8x{7Rd9~<0#3lHMD5eDsM+gFzG9=ZO!Dn`y*cF2Nxq4NL2Cs`SqKkc&XlsA9_ zG{zz>E3{t9??Tw9UoV|PcDK*0=OVU@h<u7$R)hqOEk3_TSGTy?1E2&-p7_c>)`=5w zPEu{sEE7#hLm)?|4g9`inilwRBaVfi$zX6uJDoEY6$6w(L6*8MUIQcOwTu&?)wu_g z1W*VTWOr0mrqvrV@3V578G1*p&Uof}p#EedF3kXLl{7^8(S~IL`Gl-9cj@sV0zUa> z86w``T?sq**@|U%q-W0pkeTMheKXEORrrr|1F@$9t2HWxK#eBIczTHRnc5bjwu7KV z*9PP!cX&RU=rU5yD0<hzq5siwW5;{ojzg!ebVo$C<b>^KLX-_hk&*3w3LK1$%f0P? zLDQ^M*&|eW%m$JDk8A6zt{(OZ^Q)g6dd_fl2+hwvjWm8JfBDnb1ZhAT(N}A&T{o$s zWBLZy+XaNS9(HDfWVwVW<x|hsN}0{iS1@R2XJE7%kXE;5gT#dtGZZjgPME%LH~f^Z zDL{7{Wag7Vnuq4%dp5FQ7^My!qUK^`G(igj7PLk5&$uq3MYvZ{jM0n3R`<gKkuHee z%|b)I{!H*c@xs;0aW-c%UsdNdxZuhcRKpls1XECfI^_6G9*K%{c<3Lr*@Aq%uo~y{ zmbdFV`-_K7jC5E4yWtHBiV?}0v{6zV$WJ$g7p&$7(}XeO-#CaH@V%Hc|0`>}UnrSm z!S}=T<~@yjohS9httU72_b=lAP``PecPoji=|A6Kl-yH${+@w=vGo}8yx<La%penH zjVWgoMv<IyM-Tc(=2SP^9Z!nGPP7^FIk)N}DwiClnQHpI9>8O{M4L>N5K4IY$(dWo zs8Vld2%yiXfm4>-fW-UTgi$?kcKP6A$8lT|v~(8@$E>CidPeXFIw}3cpAAb^tambI zC(iZz2P6)1mdi>=N#|Gf*laD>`fe?j8Z2CJExNfwddWev7?8dQU0}jpZr;asSMA)t zdRAR}e^pTMCpbL%sKvc&mKQ4V=LOOE4uj0GxL`(sA)NE4p;i8``OeT$ThT<~Rdd`S z#M7mFMnD~q>qHZ=TXZAcEf@`ai*1MBjC6Z_wwEAp(f(o0cHe=jA``ahr!b^Z2p;9E z1`XTD#E4U<H)c2CvH&;u<zwj$;utfZ;ivH_Kta;EK%2NnI4GH{9>pb7Ur2gc++Cwj z(SO<_@Oz>j2n1ef$jqzXTKDy^uZ1*W(zU7LB*n8AZr(xTvAF<^hQ1x2i^cuO-GIx$ z{LHDlp$BG;nY=>hFClNi`7x(LBG<5_`jna_-*JQZBL;oA_m3^7G{`zr<g|+99Zbi> zvM(LSFI!FJF<HOp0j)?lwKL_AvtaUd|Hj2kV@zDxPRuOci^-5woAj<nA!ZY1@OZ13 z=ee^Z7P?DlaW;`Q71N<5sXdcH@TquKO~7WC3nfBNYRW57Zk(}7CkZ4g)`mGc6#foJ zlXTEDdp?bitn<5(pz|~D>sAzmETLQ@P$Hqs+we_MdcgzgZ_kuo0n8nSn9Mv&gT$w? zl%5AFOzFb7kc{@jL=+rVJ3}uPaZ4ES)z*1ML+nb;rF`nIq5$hqg;%*PCcF4jgonK= zO(thi-miP0?WeD<k9UqSoX}wg7nWrICahQaE_1_fO4&0!Pk=`9>%QW8GpiA`iSp$p zJSa!7=UXKY&NI_V>+PE3g;U9E)pY){I!Lnt-m*8cdl^^#S8@OjT{zZP6o2T!{f;Bz zl%bcva_4!J&Le+GW6NxY1_Nd*kv?Bbc`fWJf^1YvY^)n4!v%b1^R@vK=WPh_)+6mE zc`%{|jL>^ij<9WJmvsNmix;m`onJhaEuGPiq5O3L(WPklg15}fE5}&ZY(us61L%B@ zlvPBJ1e~JV#*IL7Els!}WaBPC9x3;O!wuEB(G@~jzB0mC#%hQ9g8@OWs<0%@dGNUp zG8yQvUWRTIP_orXew6(UgKX&MV_n^3!F;88VZ5^y_K(M2CRQ_m(y-dAlIBV2N4(tv zLF1%RrFx~(v4(`vUF&Wh)raCs^3dy`RA3u*Oe+w2-SaX_N^l4w<<LPwfQ9HwW1Son z?Ei?G|M<DBj)Nwq8>AF3uacDn=TCubcmVi~RgKZE;2fBmpHye~x6s?w`+)*>y35Pm z(t_x^r%D;aYOlcTLhh1n7H<&Xl&OMWkHKvAypAv#k7i+djgPM2hG3pcbJLyHSc@B{ zDKXW(mD8pIG=SbKQBm*+N(G81(J)7B<Hdva_iSk`R7T_+&6Czk4j7zM2k~rmBc-d6 z{p+0iS^!G^Ue-MMyQ67R0e%U7L5LvN?hb#XL9g^}$Y*N_7NLj1tlr2C@?sQ8!8)9$ z+4-vTFU`4utHbOKbN**(<h-#p@w$hZY+Ql;x<ozoW*Wj7m#BKq3Kpj?kxYhufN&Rs zw5MCRBG@S-ZW%q+#@9QigU}t-XKtoLVB{9!66gziVEr&+U=%B3jREU;IEb2ER{HSX z?iexzR#I1A{?Z*Ac<w!5AC}wOrjrS0k8ELNxP&JvqXk36Z`<j0I;?^%&Y`%uU}cym zF>i2<++rG#!7V6L>*{O3DRIut@wNTx|7`iT^tpx5)6@$iI!Z9e-xP#d#w{g>Vi*+& ztoqJBdO}@7{GJY?CJ?sPEQ<mxF!90z4=6s{3OwMF%sAZ^J`dlJV;zMR{(*?pV(+RL zmIjDT(y<KCcv&?F$y_E{x~ok2g)0DsX$)hP9ZO&0B4GG$Fu}}<fYVX3j|=0O?1kg( zjb(&!jcYCLCO^=FO(8ov4fu!qS(;}L%62Cwrwz>=oK6*Za_un3wDJ@Xun7(hfQKO# zesKMK6CX7$FzGUC`z;MEZV4bj1;B#kkdC%*YG6=`Uj9(wJ`A(L`f<MKDd+&kEuVBx zHKehW$2eEZor_A0eA$kpdmge53!Tsw$PEF$8*{z2c+6$rIs2J=EXKmOcPm=7>GS?| zZH3!@zpywr4E1Hz-XZTJ#q5Kte69h<AZ^;afjE4Nt2?TI#wTIJJgoyDdj&EG#kVV@ z^@3xA_>*c6e*d3r2!M62ZSV7R!gP!*Q|UM<KsEDU@%PsUt%S|?_@BOwtYl2Y-(ZcL z-xHSKA^uYw`!3TH(6j33M|#huoCcW&0mf4H`$uME6mmRW!&?ETCR+SXcX9V0n}(?t z0DDw7$0D=il;^W!E`zR{aX58JV+Ibm0n;ulyCmh-yC%&J?Fk9$=N~LVXiOd%c-zdx zC^qESQKsYFD>tdfRF8mraAvv&MPNCs7io8Wh<@DmJB0COl`dlbl&AITaH+Rr(fz)U zCt&)ZfXnz4Q<?yC3A9tV^MR$3X_<iF;oA2LB<mo7ue#?qIa1lWhHKV<lACac^{<E! z;<d~Hc2?7F;!>a=5=}$8+S>S}vuP`Ld2GcOLlS=7WVCu=$tBdy{0n9<m-DU_<?UQ0 zWR+7QSqy0zEAg1jNT?>RuM36A@~9{)cnLN4bM>(W5MQ8!EcRcRt4tp{XE)@f(LJ&F z-c1#iA}fRV+r2d4UN-6W0mn@#*;B5|DK+bL6?0tRaQh11w9#U=g@x@@ox9z73dB4a ztbD$vm@~CBM6V7$NNn1r^zz)B)32f4=4ig2dLXkg@P`w`AG{UTyr14-gdjUu?GWrx zF!57FAkh_#5rgRny#xwDb^C6sU|BAt7RrPp3*8@c;QdB^RQ7#0%16VCWL)6zuF?m$ zaR*35s)kA)WsdK-_73;vN?_&CiDp*Hz`~NkA!`O`*}EDw(=RHR6}C41dK~W3eG){$ z4NM$+$6J-GhlU<)q8JJ+fnxM(o?K+=9eQLTZ8EXntpRe;%nxW7?S8|_P`7T(BxG-c zwPa_O8oklaIK;o?o~#>{kc=&AX&njDa%QNilvoe`<F1_d654QvY7~ZT^J0EC6q&8# zUCcB^I19jtBQ3GH7{VCvN}H6Lz$un#m5}+ImbNX!9=u$1XVZzC&O$#AlW1nKNy6|5 zSGidx>ewGW#8mb}I!v!aRhL^zL4N$NEC_zNcChDq_=BrLn=z{Hw5df>MJeku;*KtY zy@51}XueRr75TwEQuo$pZ*QU5?`e(3h1&7S8Cx$c;hE!emjLp2ZAyOkCmW=5*hKqY zMj?`88q{DaY&9m%7qn>Vun!A4iCUQuf&?XI<Hrbakppaa829FFqP0xtKAOLr+>Y!W z4PGg<VL|WJ;C<i7cQ>09IEiI$syY~sipkvwqbYK@E?f9u9cBkdgZwJkg>T-Dc!sIw z5Uu1Sd%op!7(YxxKGPB~J6`JU!{~SA^`o<%j$1}Zd$5RztuX4BBnes%Yzl}BEYK*Z z9>6VM&D7ya*0V20^#9Ij&%m>tka{!ar2f7w)d$5oBC=`9^X#B{WwW|b8hBztS&qFP zBR*v>)WwC}Xg1^)ZuI{@ckXQP2`^cT<U5F}@XrujhDlJzLQbAQ_U^&=2nT^vpw}3| zc9+8^tp;rX81aJR`3{z2+aYw#T%k{Pr)BP_eTosZKZ=hqSDTB+z|~<2vP1NHNLbE7 zl`T^L#VvGRu&nMAfCw*N0-G<9RhuGjz$uPKNN?OCkG+$v6zkh9bPk|hFs;Mve7vZv z+B3i_*@nIleU-%6z#x1%I&xMTICV%!i9A=+*$@{D&I?VK9{2J7r$cMn+QS2&sqq~9 zPJS7^Cz08sn-Nneo&>%{%)XP;eSDo>X85ulp(-}YgJwSzXuPGw2M-KcMGo7hZ3IZ( zt4#U94vQn1qG|Qw#{V!bFcKg_$q`_33Yfvh5h>KS;!Zze^E6rSbT(I<<+1+&>${n( zeN*4%1NC(yAvIyR`%srTOJRO9PYH2`3`ijSvVjue;MK;nXE-~f0RMU-|JEIbe3FT{ zrtE~iPIMIxEah6Ml*masst=$`6<6>;q~>u-;hDhx&_s{jECH85Mop&<j0~nCxGY#! z&@OB|LhE#klI<o-@kP;oSeK8Nqvw!UZr1o)QqatBJ$C00VRI^`$y{}ju3Ii->&QP0 zpz*JUqW3zm3#UQCmFKEcT_bhF1$sM30pF<R$?6Nzv1uB7O(L{JDBAm~5paHTINfmJ zTu9qB?rqPS4oip@aHBUY=IDthW@ikTm-xbh-93qApfSS{BbQW4c9WSJ^Tk6yMqpfb znl7QD0?h>V%Q>7RiC$IhTME;NR3ln}M=qQl^N;As*6Dx1g)^rHp2UmhA69*vfq1WB zWTmjr5G|yCwH0(UJ%IlOnML&8-R*5{o(0dvM$Iy+8EG0wNO28Nba2)NwmhU=3I-oZ z&){(Pc)q2><4loiBX%z5aiyIPe$B<C!<flJF0e2s#2l7l&8N2;htDV+Q>CDugKv}+ z^K0%DlB$w}{&S?y<h)$uEQY&+2#+Oz8R0V*iQRR35N)Y_SxCIU2=IbrltWlTUvaz| zW)E6vR-M0ek$W-at&;FN+TZe@%d`aK%bO*M69G2usb?cr+er<z;r@#=bthM(C-L36 z^WF6jPljJxOIhAM?3Q^)n><^KYtGfb2S8s{n|1XDoYwh!@0}YT3MhEtghx|R{bJt! za*q-uf$Aehy}vsC#3Hzc1k<D=RSp=a(WL%*jcT@$Bva=WV<afFABXW*qWAh_lrf46 zNT)t=pM;W`2wa8e*k0kuJwa=wfz&nHPE<n96E??9LyWKUm5h<sD_>Z8q_9i~xFfC3 zyIds6Xl>Kjq3{?5R3Ex2(Qz)n@Wi*PyZMALmBq<rxVBl1GK$K707<ToyDA7JJD!3Y z;P8&fy2Ne%X`UwI1uFYLUiIM^*_0YgVJJtp%^r_up!r||+nhavCh`TIYSb%b(0lI- ziRU@GHFdFY0&dcHnRp#&LqR&Neck6u@Tp}VsEk^dpf(0LbxlUTFY9Vf3x8Rh8wJK% zNBO{~X{uGBgC=ZWQ9ZG$2u!$T_fs3tT<{2I>|wxCPLw>}obxP!=BAd5-I!E##zy5h z)04%?W<=8I^X#OU(6j*+eSPh|CwW0j!UMTK2&z?)CkmR}+?R#e@@WhS)&iMzC~CyM zrcd@lN2w;rvBADyvxh?mBCL~^wX{<GQULdpp>K3g)&b42Cfl+?&}!ml!1w6})i`+# zVzu(To;lCZstJ07u?Ie1TAcu9l9EGoEFM%Ev9nlMD4#t<Qm*E08XHJDO$!jN%PZIp zZY&UKiMYn^3cppZjI{;{H?S@Vgdjac=%59Ku^7Gu`6fbpdic!bHu@Q_jk^U9C=fB( z10ZD~EDn5SO>chL>jRQKQ)=WQeZna+(z~>-*-RS=el3Vo3W_(C?C7u=SiGluKF(Hh zoJ1BVE>hW-muI`(>18JHJ-Oh^cN8<GD;a2onDM3Q12hxOgsC~_{aLb4ys(EajAv*l zCqu<)JBXl=T=YN80B@Y+Bd`y4@RuLOx6q8jLMM`y7QYe=W6z*7{PFJn1D<qxfr>}l zl=WmqnWv{aLL@vVcp|6$i6;ab_ahzm>2{8F*9;T3CGX-^aUfDyMqJWs{FZAWx!hhd za&qf%{w8~mcmO!nhGJLQ&J-FS1nRulTpWLU!=*_E=tTkEsbi)GJ-bM6$oJR=8JLdF z^85Y+enYrcq`j$b8|VSRJoJCgR3WOZmO}bAcntW{E4H7W%mdg`;&+zYMW>=y@&GR* zSp~tQxsHRbMSmbu`vDAE;eyL2S+D2Qj<u#-L#UYK`9L!x6I-6%`0u=Sly#+9b@a@( zBIU)i7M?@xCQ^dLX9>n@h$nw9cxFjpc7f0lFLKG%1c`N#4GEZerIXqBSkl?Psk=@D zHtSNOm~FwjUs-Yo{k6MLDGgDe`y=hIdvv1D)N%W<?ttyXQ_HNBtHG(oTFqhiBR;ce z2#Rl0wl)hUJw-H=98L6Y90mEx5sxektYH&@$SA|^gg@bfRW*dF8DdOzf<YtSTS0w; zKyf8jiWaptyhbID|22E3202cO4{*8&j(n!GXa!_t(}4iWo?svCLA4gE^2b@Rn2NvP z{y|z1nrDra!={ANP|u#AgbcE>MElU~jjl!+D<tppS0^O3LvuhXLd>*;?5z~9&73>} zin4W7(S(i(nwbq_e;>oHj&~U|2}GQnYnuU6sacm<-}Waq)PxXt@WCHRIsAk05+BD+ zLegQHy5u>Mp$STjul!67(>ZPYL87o()a45niddxy=i+qmBG+MaW{&SQTG9H=RMv`E za7W!Ml7jvJ)e7eUUOY#|;PSt7i!G`V&r5A>Oe1OY*6h@qO0Wz|?jU}LPiSk`0&$Z* z$#a9H;CmU-g-xWq%}{IeK{?l=1HHxivqtDlog$%7Tt=AYyf7u(GuF>=YX3GpJ}mha zR*`AqyT(sTU-;EgXVc@Zh&CF78lp-|@?ly4DJEG!>%y|w7hccOEStNQO(>f@T?U22 zqz*wfT<OYNZZwG-jyX)`k4fU^c23lYZU1?_R|}K)`Itkm@M4yL<=>C0>rxM&TQ0Wj z#oV<jWe^fT_|ge`))?I?hc5^xW#2IBeicVtM#w_PGqpc`w@yb6b4uUMqtxJ8*@_0O zUi~1#?fF>-{c<`T)$@#~Qd&wy%Hl?tj|yBm3P$YbaL!(vtO4{Eu?go?pFw4DcF}wU z6?RTE(fNvJ47Jt?U0jm}<=g4a+;keUZUb-P40S}z<zGOQZfG2LMC!Ex!5Z3J5Jq5X zkGA(oUX8w=akoyAM+TKJjkdbL%C!oJc(rhUFRZmJc%M7DLO2MXtHlRglQ!0{l?iBq zu!gewZLL%TV8`)h3OcL<O_fC0GeLz{nfpJ`SO9%4B0XnHF3R@`ekpFDpI9pEILm!; z?f@j0N;EeH{>I{>$>4+n-O|4N7;!qmtC1dfc(*Cq|3MIP+<eYWN<)SWQi-;{i_Ql) zpl~Q#$|IGMBf&CzDJui9XXf+SZuPyW6sEXwJx!p4G`!c$^`z9bzNiXuU0d%+cN)>P zc3_*7oZ!6lsa{%Etpq29J|_QTf+8(HqO@vmj+uqJYA*~HLM0u-ab2DMl(5)&SP;lO z=QT6OwMxQ3pxV|U+-6;`k3kBJ7dXXV!j$6LjwIMcpPxJ*zVzh=^*xJA14(A<;5EX{ zJEV%WvRS77E+R!uKu5z-@ocLkJD&!etDYJaRF^v8A|I~N=%wtNH%vE=Gsza~U^nKZ zmm}8;hvQ86S{9_SD8<OPKb@Y)pBP887?_aE(`J|fy?+=vnZUekDYqelqs6n+^~2v> ziIY5VZ)0|K%L(9iPO@;gFg51#R&Zs{if->PFG7IJkkAh@^EBKE1{QaaR07g<xVyD# zGh7+ZrDs@Eb1+}M&{#Il)4{7)lT#p_XN9~aU06mF#LUu168efAo6oJvbaY+wjIF~1 zT-$J>gI{xU&-nrR*3g+-*mO9hMY11yjiSAgo-xHHU`*~tmuEcG5ud8c7ht}z9Dd@f zkIvkfov#`b(dV)|7jy&S@$~l!d}BRLYr!>11!|8oVG}{vOsk4b@5E7#r03W4w3C)O z!9f5bo{K82M<16Du&r1jxPLduMUGAO(-@9LVZ6rWjsS!yYM%f;L{u#`lb$)|`-XQN zcY=JYoSZ=EmtdR~c3MVsF>j0U8b;-{JVRliaVAxXSh`&%BnJ?;);N_fIZHSFmV+&0 zO)%-Tj^@M&T;Ha(zb8@TVvB`Kt|i$sx%uiRpPMDJ-lt{RGV2om>DTd@&}ka>>8!;G zqC#7bI=$=af8y%oI#em}X43^9=<;Zr8cK$D`6+qpFEO&wkTXK`K!(rlg=%Ac^(Ogw z#0t&Ba2hT8e;l*pe;j0t=r@qOH|SKvg3Mc;`3B35HMoMyi0mM?_ReD_wyF@lW=auW zyT?O2TnE1b0R*9~YF+A5w`XS=BAV`?C#63yuJu^vYm1^FzsiW3jJqKFq{d{pZnTJl zKBb)}`K<LB`K?sqL5Ssq8S)iX6MZt=);QUfc&UwAcqBo*DY%E9r*6n=bk)?Hh(<TK z^@csjp}g`kp=s=@dq%HEW%T75+qdcs%7v<~9t3DW!Z0!S3RyWPUaU*oy>ceKRqM4* z4ED*b8zG3SuKfSn<;#R@jg6I4&(x9I&hJ;==_Z0)uEj}<;ZsbjEwPl^hOILhB@dEI zvGtX~`NLZudO#^5*HBskGpjC_(wofdW~u-#9wO1FNxitz6|%uw^#H&)bce<IF?O(o z!+>^Lzn%D)J_Q0DpT3W>RLlO#DJoeuyKp_zlxxW*t4={AWJ$PR`RW+%J`83Co)m9U z;X3sR8KlZ!K*FH-<-?ouY7ovM?0iyp^#R?z5I=!2c^1NPiY;=zqqma;R+0u<RwT`y zM!bB5=$Z`|n}}aRUus0T@#B<{33wEqf9K1eg+kDMQABtWp{1Cao$g@Lf-b;Z5H5bE zV`v@!0P8DI8qT<bC8-KK^am;<wky%rO7b>2mGaT8kSNhgsqm|Eu2;c_c5VSHvjGR5 z30Mt&&X>JgS4WPRzINt$=S$DV|H+WO00#6=PY?RPb6p!%NGX7=eqsmuOBq+{6$DC# z7{|{)9731Vv`Z%=D<!Yn^{#uV{5o<#@6tf}56hi%;@6ATJ480>z7pB7kU_I3+#ys~ zdkm~x1QmOK%{}9Vv*E8q8msAhE)I<0DQ8CM1xbcD?ljxWgB2?vw#6YnHucnMwh1b^ z!VBUZCBQ%~FNy6I0pI{g+2S(|p~TBOj^SYk=2IXS0{MfcG1P$3rt*NVQkA>aGgT_H z+3*k8LBk=ps82Vt9H187gVg17c8|#K%V%`1t1u#dv+a4i#mY;-TPH;=xy;wTFe|~G zUn;oEjYPthB{Ube6+#uf#?<F8dc%hI!*t9_eUVre*aXu=cf2pr(u)43+Z;TPm^1e@ zOHVw7k8;s1OJa5_B_3Xe;6G^pDtXYZw24GsoZb!8(yedy0#o!C13CYT=YjI<um9sV z=M*}Nl|Dh2gL}w1GzrA*u@f#R1NXiSSi-nL)YtCbTY<*-S&BuzZ#d}dKGGxeu+oBd zE#0g_Z;Ou}LQMo2@?;aRQV(_P*|taWNioVR;=IJcxS@U_yX9g7h4K`ApG7}<@-Bw{ zvy%iMhp2%oO5S(_*@FXLif)-tOu%1Rfb6Aks{>7Sh0S%_w;43?yxg;0B@ex5D$|Kc z-bNa^w#gce30&^>1C?}&_iZMO++6HJg0Qx6I&57aN-Wm`<a{s5m6r>#nPoVRRb^r@ z{K2HF<K#j7iMfYvPxEBrLVrP3;^X4!!D+_u;19Mvb^U&&3G|P{rF4Z6x#wLLC^F0$ z3u^-Qz0sNBLyp9og#vfAAuF@e961T$&mGy>ox7d{e`&|WB)jJ55IgUqa0ySVWRwOy z*CNeOFV)o=IJVqm0lb}t6L9=7<SzMKHdk)xjT|*UpmJ1Xr|tmgEu^`tR*QN9Sn=nb zCpWrT?GiSS_0V4mfUAm1k^`h}WBdS{nVJ5OCDt!Ogkgf{cW~n#tGLRPtASZ3JkBSq zlII^-LZP}sYm_^0_XfO!FIMcp(77t9)itQJk2e%`T`i=F5cC)97}#>e8=Vv<WzYNu zT9s?)M{;CIOX<hkI6ivR07TQ4^Yw^W7d9;i6C1~B%_J9Rh1k7%Eg?Qip)w`zVZyiC z_o;x~zLAtM?K6XW9&;7ka9&1b1w&*j^76Mlv&vR;^@IRlOCuSJ-Js^DJ5fDA9Ex&< zeY%*awIlzqXZ>K!YXVmc!l+vbzH}?Cr*O4p%eL4@oslEsH$8M%)0b#7IRm-#sMTNC zHMiw234_xk+F!K5jBL)r#5*WvF%dj6Ksh0NA3a@}lEPOn@~hXqSo5CAiZV3h^{`Wm zDMvmi<y;UDrnhE27l{_ha*vOu;-c%adP5<h^q@q>5lJ*_$vFGZBw5{byWuOGc^dsa z*6S707vSq|<Ahpt1%$zFWqVmV%fxY30NP_$cQYEypopcd^P*0W=~!6#TDuxZbtz|f zUF(>dQPw%3DrzlLafOIN0JEhb4v(ASyJ+~5rT+&@jmsz3KZEcN%;d-RFJJF#*kxr4 zEPI=uwW<9?el=>oWG3_lS>*e$2?OxzoFOC3EgSKdhihM76Rgy5;)#d<ZfM*D;;oCO zOV)lXwJU{~d)8);vx@4}dh>|68=}?bpGOxPFoN>Qt77R@bYcJ%9m+&kwNyhd!uYZ8 zeUHlnGSgDh8nU-2gqk*2m?8j!`5&%OSfuSDz<#M-7Q58w&C%e*jSuFT6IymK%=LMB z9)5ULYJKOad&-{rY>z2*RVZucT;RyocW#uajhgZOkase2)9&cPLttX9OpfacPi_AI zEu{WtbM(36*3;i3>+p|Oqp$431YHk)ge`-){c6AyDW<(A+e-?SzjqTnxbuKPe{BAU z1yq|2fpO3q^t37gn=WM03$9Y`P?3AC!#Q@BlM36?>wngly_7pfaLJNAESa{E5E!Wa z1o0-Iry62WRZmh-5YP&n{lVERVFrH5HZg8La~QFlj-;<70Pcn>fKh9*^|YoUS*|pJ zkM*1m5QJtX4VCS%b6panaE#R4EvP53WW)~e;JK^i_Dq>b4X3rcz(*qn<Fw&B>9EtS zjXaw-j`FW5QHb6@Fz@u+cK0j_oL{Yz8}tn<UnLfhU2aEH#>^4nAUE#w)oWj&7hMmF z0pg|xmYPA-?YV9|qXDUdPUB)A__!Z+EUW9@FtZAMYQ+)bwDk>DUTm3F$cxuog^%j< z=Cbgvg2QJu>|?p{s=H;8IUj$BkXktZaIP-u%6Fq75@Ud3?s>%<NEG0TzUfKz!Ryg+ zRi<HT3#w~Hiayva6Ug5S6NhGE9$2e8pBwgD?;tr7FCf8KBxyLL#CEVn6N(68D))^X zBCZASM3#6&K6H_>5KPqM_&xZ5Y&G-BMlowqQy>zF-@98ZgWM({$0bD~4*M-m|K9o< zjes_HJZcJ@OJ#83Q}jTM8wvSagoyC#m&I!Ol#Rjv2A59Lw~vYh$ZgncVru~7nD3|f z)mX|^u2Md~Q1F3NXfC32`ypfET3r%hF1$Uyy{IGoah_y-ha8p4<sOtqyAyl}_^IkM z*1_S`Hv}LiIez*=6As4_OdeNJ^88Btze5x`1p-BwLL-J#^a|07-eHcy<Tbtv#QJzb z&lz9QfP<RhfGrQFR;e&GUg>^cZdZ~YKyd2M*?5ni+>?7$;m;sRae4bL?Pe^e&6czk zQ&Mw^bq_Rb8~$!!1EU+HraoKceRa>!!`dLXjl7*#&oN3lKT#}^9TMNfvHFRVBBCL9 z0E!5U=_PfkHLtnfXxW@v3g}X2+FqSq(2J<vgllaVO->GdW!gv6du@3pv52L`#WWjj zm%knKf>DAS!BxA#BQl@f!?*+1*)h_s)VMfarVa6$_}0(|+4FsUYt%KJ%*~&dj}1~b z1-w7yD)!|4`JYieWClz`Iz%6b%Lq_Jtu|Bib~cI~y%93oA^|#4->)h1l!WkO3gsJJ zOYSz9iUrbSV;OBHkymcZ+;^{G-3~0N!F^VA10MH=06t~;uw4RoAt2B_^iuZe*TYWM zRH$|q5eac>qIPS9ne40IU~tUwxnU0778C6Hr2xnJ4DQ?m-eR!v_!=$RJjktFu99pM zh`L5w*i0{*U_l@j$GwSrORt$O;AX+!5k$tXBP-cg0hOa;*D+n@+<{YR>T}ws+8k<u zYPl;^Cb?t~W&H^!0cixo0FVU^Fh88rE+b<cA;n`Ea)M3S#XWT)FpsP!Yy@#K+Mhsa z<AoWPX%~BSAdb)KVez6o7lRZS*&3*5DBk_`d0k<E(QYr1gmaMSu2r#-7ykQzC3|+r z3Iw5VKV@}AUN#(pUgZ<F&FwU!#qRhGKzhcJ{%0&BmLRgvYsO{Pq6@xlL+Lqiq%s^r zH?oiyZgM0V<sK~5wZq51R#WlJ)24r0P?cmE#pFm-?Sn(Hk^q^}{_L)_zvLoFDM9eA zQY0=GVC#dTzkP$WombwDJj2xFR!X@e53lb{|CJGuS#R&x+^Nl|N83X@q(x2`R=TqR z?Tr(b$A!T(x3$W=5HPH!eFQX-=VOlqgC%Me;S3rU_W}8{)uyROclrks_r4^R*da=m zf{!euH4)!XKd55&aPnv2ZlP*>_wYtyo=1&cV%@(5b6Lwg(D|JELUZJTZVBnPua@~s zyJMk44dfhlmR?mt)7WI_J<tqGr*IUXhI34?twc41%8D8G_!K=Wuq*glDdKo?erW=t z!qnF%&f>}d;%{eey>aemDkatJiGl5RWQA6>@g!GjBvGe>JYW%eYh9Z@;^Cs>yGuln zX0>E(4fVS<C9jH&4(D&wpLDhj;8?qzrS1f=oGCD@0Gj(-&i|mUDM!^akjN$_N*1KX zb70}$o%E1Rb2{$$wfb6U#_(F2^u1Sg>s5U%6ktx*ILV?iBmrOC>P)r9btg7QTq3!^ zgdJgI(l2zCI43Pwfo3xGTw%*G%P3$@Sr7r!z|HA|$1<v4z3Ia1ln|vr(<REKg+``6 zuH_GuM4@LS>oOd4ycqvcn{GetrEAJxQ`r~rI5}v$NrKwaPo-$kl;)uhSCLA=+s_!K z6VMk&Lfha9R|KjrIBUQl#Y-a4QJE!ppQTh$qb!ui_kNP6cFZUi`Qeg`GGx4Fqj@hX zm*arYlx1a=2RePRs*n426px!)Hi{?t@7=PT!4eQ+hFCU*3WI|sF<NHq_n2(kFhJL6 z5O9Han8x8UJjh9i!m!O-Bk&P#8Q{Tn>0l#7<{}gp#Ou@IGN&yLS53LYW8gIaiXw23 zi+;>h0fFf8x-g@oC4V>^mN9S7(t8c##d8N)^tVvipl@phXxH*dW)iwj1#*R^ZhfX* za8i{sZB=ZeUOkR<IieAHtvwW4k_({3H~?idCg7Y<)~r3uXP38}V27`hozCO$DKEYo ze}myp7nEU}^pW7FK5{})99&xG^TG(Db4al-^$rZeg(JZCkBV?2YN#Z0a7028MU3Y0 znA|hc=?55t=qi0w;m`p}0)1CXVF2#b?e)~VAbE`BEHl@(uHBt4H`a-p7}q6(UXbXh zF>kKDp4uVa3+#*~5pmMIKdbldsbj~AxH-b2vuWTqx-1_WUKO82w+&^5p#H=1o;f@? z%&Acy3qL@cB7f(_$|&_PQPcRX0lK1cYF}}yW+vCwR;dud1~h5du0Lv774o<p2bu!2 za*fU^kv;pf2`Km|>&XQy07tJAVG!H|O8~dD3kkdnYLVu0jZgBD_*jTU+%}p!s6Kzj zX!{yKo+^TMXLa$qimBG)^0V$E$mwd7Khej|{DKgtW}CrfAEbpl=F67<n-pd#U^!VA zkmf)<_*u#R4#IFI@E>fZbn|X%7xJaMe}Q^su{gR`&hjmbc=LgE)wqDVk;I#$uK$~- z#&|m9&Qf{DJTK(UYV9uj3(W-;6k%Ck$?3~1qY+UzUyCT|$ND0Q>gy5PU7MLmrql@v zRHI(R;|cv&pH)0X{ZR)_2Cvh4SUDwAZ^f1=8-R|fDHK0;2?&UTX=18r0ONt~%0Q%K z^lt*un#f2qJBCon#dkT6JK`>va;z@;Lu<PqRF+2$dT14iX@@{g8*qa*)H^lLPxp6K znr_j>2Ov^}JdjjX7F$NeK7cuUXBW%zU=KX|5ScdWlxI0MNQ8;^{K7qck~UTb{bSlv z+s}p7Vrv0wxy1)t*a>?)`@jM+k!VeH{{Ip@aJ~re|Cm1k75VwZ2Hqm{?WrTMk>5|b zm6-?g;IgsQECaoTkt8?Hd}ZQApnuZb?VX8%=`*^hl%NWxoXZr)qng6!F$A44-_6>! zx+J+{SB$#q%JB3D>}wblcG6dr>igRHX&PiD+_gF7G_=u^d)+O*5!&j0QkH(}a_vrf zUx{?TwWHtk$uddaSMse9$sRWhCG}98>DVjC8P>x&2w>Oa{HY!hd~QD!in2lYHqrUo zBoE>MIDVcXgzq<+m00Ij;ZC|Cftmi}^O4EbO6QLJn@Yy9jt3_0GZO2B{x?X>ux&^1 zD5-uHs6^P6xy$fqys5@~>h$)N5(*0#DtLU<8nV{wn*&1X%a=bxW7Y{i85wrv^+d_{ zS>1R0>FM8lyvWND;bN{YqNW&-I9l7jhE_#{`T_-V-8RdLfusa+>-l8FU2EJ2-nemO z1;@c$w%I3JUe?ZkQApM7AxS33ey3Bh7XAaD4cqXgRj4M>CX*1ZST<(1>6>54HCfFu zKdB5Nbmd0cP{i{@OyRT4e^@R-{BYD7Ijh(Sk4TZm9X0?&QT;dUCVGrW(g1w1EF$}= z?8-kc0B%XUps^X9ovQ}~e;GU^E(OMEu!v?$nN)l&$XHpL^+i%X>BE%Rz_d5;a@=Bi zk%22(_fG~~y|FmIN3rxRJY$)_vd`KAB0Z%=U}?huhJs_V(B2ugYa%yji0WUh9L~93 z62ZR?rEVDM+0zBUA~K|~_2)(RY91F+O%kkJ0zyyD5J+z=MY*+Ft~VT{Vq7Np(pw6p zpCw=jip_&Z)mw|}#H9%M+m#h}aM#;5=u4WMdgJ8)q%Tl@016XLYj{`LX;^*J9dqU4 z_e*!PGOW6r2oY-!U@$egSl7@nD=P1U8oq)MI*Q9b(QEk7r!gksf$@vYf#~ijbt`La zA^DJ40geZ|&6!&90qkuBlbDt>;HD+8+l);c6n&Fx#%*ff#Z^NRe#H>5O!aIjqiW$@ zB7=u;(Pe~4vk8)f?b>bhcg^N*MS)wU7S~6Slx>ziH5PgxJi$_a@kWO5<YHegIK}9k zWC!qrOLtH@B2jYVu&gsJU%&PTFXtV@mG$>DNr?Ni4*U1bV0+8(O&af4=+<`fzG<~; zaozag@D2P^h44)L{YACt&WMIg0k5|SE(bWd9AO|xP)n>ZJ9lQBgUYb68a~<O4Lw_U zbh)g!gH7{2`6+EO_^H*cO>MAoq7b`?_g6-ZTd4>Qhi7d>jRkx{jQcC1R3>M?o(-^` z&Lx0Srs-*OaQMAkB?^xHY22<%CcE+!OvydO{=TB2gB{7mqezDNSv%C#A1mRvp<)O} z04uMO?FVoxaVuhQ2+JR|oQP+h)OLlVhyT@cR;wLVARwfg?0J+u3+G@H6HCihcg^SG z4QvkdEcsH-h5%pd40y33*n!@!ZXOtzK4OtK!X7D8r9E*jYs0WY9|{`x0C7<s^lKM8 z3e6>!YlWyEQ#N~9U>2X*_XS;89-Zf{_`?qX$GC-;YR8hNhW)xq?^QuL)Y=JH`&D({ zb(b+qC%4>%3u%4D=t=jr(L=G_f!;bNcd$#IOQY>%-B2aC@xqhhVLJ0qLEQ`M5jzAd z8Y$^|kSgy~?B)FLRMRic57I$brXJ#;w+1TIA-6C?=Nvxlu@s06)Rm1klmASV+8V^9 zTUfX4oBz(m#B$>{Vlzr5jOe4?Wxi{4MJy@7<q$PSo$K=ZZUZLpjt{kaF$VUOe01B} z3J(h8Vi+<}O-D=Bssh-VCj3@Ci}VbfyDuEJ!u-iE7KM6gV%C++w3++uri*$uNFd)+ zJs`%sfrP|hN6gRXp%PdsraNcn>yB?4f)wg+pAY>Xnx!~y^kp_up4yz#p>hUf<;obD zfn|&U;DkD>o?$04-1=vory$k)qRmi%%5M@gpEm{(ZYTiNZa99m=4Dc4M`IE)^*(mA zcH!iCLrJYqquG`5qm|ITA~J4MHYG+d0T5@+9&jx>y`0B+n(@GK#K@<CXu&snMM|5P z1Q>R2V%hfeQ^hGco}<BbYA4kObu3Od8mjCPl>#oIw|Bqe;#2hUDSq#iMs2pAiz|PK zZ)WV32>Fv-o>~R9In&6>5Feg*JkI&xWDcgI6;zLkgark$5oaVtE4LcsAgpi2N9^^f zP)jk@gt$mU<X6tX)Q}#w{+r~b3Pmoi5DSo852Nt|qvuZyH`A+qwT1V-XL7nmmR0nh zZD+Qx;>aVhNikC9sR$JUu0gsl`cZ_+{x-SG^%;6k>Uuh?>+0ANte4O5BtYOjck z{fGP59hS&*5-b%p+TZ!{*^ts<>7%P4`cL0|G7_w65jkpoi@*y-7xsi%!9?;aijlCg zqd~NHmqL?nF=j%5m7>1V{=i^l&$*hHPy(_{7eSgHL{&|3CbPaY86kofGGcD4_Wey% z*sUTNh;7tv<SouqK$uD4ykHYsL0f5Qar>SVYU#>gh-+B5X5kc6Zu`#k#?Ryy#V3)J zrE4ykbC>X+0)2>5x4lnwwpglme76Z)3T;}=gyPMNgNTh)hcTn{j$VOtmMnm;Z>cJV zGWM^=$>KZ)92_1J`d70WAFL)8N$W@>63}c~OF6^U{_{+AM9n+emqF`mPvSh;ig}Xn z+eS%TX9DnVB}nY(puRNz>9t86N60OGUxhlmby%^mB_jgcDec&TT{b#Ib?3Q-+cpFZ z0Z~2k+2%e2aJ|#@8LnBv;W()(%hc3~GX?H25<#>jcq5zayj|zz(T)F>ujm8+e*glb zEoQ;Bw$e_|J5~3fSC$%W0Wu)=e5jQ!Bt&dmq%0^lA+$>(%jRT0gCzE*F`89%q8(Y< z>T{xN#Up!j2XM;6LHc;_O5tA{&DLu%+_alMH46d$cd;Crgfc)J9?I?NazP7AvCR1a zfl*HQrsaK@?*c#Sr1SSUUS)^5ZLVrLDe1~%JWm+NoIb5?oyn0|SGJy~1;Z>Z&@^MI z(0#wZ75SbUP}o?vBI5i^?i!tE*Na-h#|H&s*iX^rK2*VsnNR%`O28ky`dBAfp*-y! znCQ^c;65qPBu0qg_aJ(qrxD`;V}#+TBdasen$=&UcWY%N2ks~W6x6~izm4pTQqRu` zu$Ws}-L4Vvgl2nqfhjgN^Bsz%=hpRw=Zj|qKsb<X0zPse4kOX*w01iHn~xQIHEW&B zB&8U0!7;1ogrmMjCkS2F32fDvMZ^@qNIk8gY*WPjwGbC6lwHnL4drlqqyvRr8*402 zMk{Z&w6A?`GRs}BvZfzfMfLKm9fT<J9=D+w9%Hy%BJs-Hg3g`GT`5<Z;?T42IfX(T z^;eC$A$`T@bkA2bru;3se!;~(?&MI;M-Il-)EeXd5FQfY^WicFUX_N=fbk0SI9=Is zI2^R3wm%S>+?96Fnj*DHNvV1iONY!58SqvqPf#|=i`sM<>40N;4>b&H71uj}L>Ry8 z*+U$_oY+-sHaNF#<uN7Rl~sm-H3oZUI}H~D#p`!rc%;Hq^jqP+O>IrVl7fVOR<l;3 zcjdq+h`<3%+r%TYLfdQh^!aXVSSKi2nWYh-CNI8Us*e4}S!CqcjY2iI=^n0+LZmbB zA+{@_i8r63^8gHh=ef|1DnG=lC2*<b^9Pq#g<L<8i>O@=_~ok(t#L_x9G+8MQSwuU z$HCyNRfU;C0JiD1h{?EF1WwEs^B~G?;;Qn)`^)^wM4M$cR-<FKfmS0YSZfq!+HIDA z`(|=jYoZt#hQyI5-)!huJC;|z9jG4?MVOU51n0Nnex36*_2ZEs#dfNgA`4%B=E;PD z101OL!x1B2#Y1N1y`TxLUm3ulkVho8ehDO%n&`-2h*Mg7XmxO-#_FD#fo1{`w3k*S zOAN3|=CJm!YJTJA@K+Kk!uZ<fTfFn*rg$<qPU*zH5kktffLa^wt<*3qS@;9OdxY9` zAZi}}PIrf_*9w<xi2p_5q+B;A$}YXrIDeFA9p@D;a57I05sMSn%GYh8nGeUQnbBkm zR{Nynv>o9XU(oUXFG;v5<7ISes2bODC{^gqJ)<XO-~f4pUg5=R!xw#L_GDe=VC2?{ z6&5#Eza*wa4O{h&fGm=ZY*VK~3J>$qQ_&M?QTck$WwuFrq+y>!qfY5H<NLWs18soD zc=|}q&pJr6Ux&`fZ?fB=w7$vGiZL{7DDVujG^!&bhV-yDbiujYy~w@o>ux7l1ivm? zeQ2VdbT^Vt#7&imROBEKB_SrVBJ|SX+W>*TuG5uyWC}TOv36`v-Wnu^o_rs+l2=w5 z2hKBVqez?RQ%$LD^gZ&bauQ@;ZIExWEtB<1WHP+3n}`F#ME!_lb#Le`xJHl<Qg@1z zgltr-A;x(qnj$^F7@WIG-m(pO>+lsEMi8#fSCU%VHpHN_<{kW`j{p$pBzD+e=|<Rw zJ6CK8tC|Q=Zl*k7pys4Sas=Pq*RoY6{#3dbjuxEA1Jf^c-I=l18vnHeM&g^SI-_*# z%W4fC$@^oGkXJ<vtdvUXB@R%-!4?)HA|DB}K3Bx5jEn)8%w?MMRk(x1mp{cvbh>8U zdBe?QR8#$nD0El*pNx?PCml>DqU*+>#%CKV*%Q-ERW`M%V<TMN*4gFJ<#gd`C%3IN zG6^q<d2cm0B|`1kYT)T6NS=<|jNOeoUcZC6bKLnxlb!&0ce^9F?Qw00*DH^I&J>x! zD53}ATKGBDTbE&S2O8~TkEZ(sSo$(I*ZT+;_&m^?b3t|2GNb@YM9+np7{n5tPW?$R zq`GMxOtyD)Gu}3}C~!j<FcfjzcPIua^~UTV$C^yGE0K8eS<e;|m!hek|81%P#6&gB z1lp4L7$fGhsS)MiSg<~BV-aeZG(J(%+D}1-S{`LFkwub_JP%Y{07g>b@;c?@5zWzb zQTAzywBzIAGQnCbAd@Feg^BQ6jV|2Y#@bizB6@qIW<w#0x{WPASH%H9m9#1HG0Ils z1Q4m##D{;}EqI46?B5P<0QGkv2*`m`xMKUjRVQA}s8V{*o4>;mnrk++UW&Uld|I(^ zaca^HAdsk$fm+<19xuytGY-cdI6?+g^y#-%0scy=`R#we;5b0e_;huHCPO_{8a*m3 zAZXXt=%~oWVvW!4X}Q|5vu40AWOg!Tk7t-fF@p$@u)OnvyxZcS<x}z+h=u%ARpV>m z!k#?;1}U*auL8A$DMKLFY9vu6=p(~GF4W!Zo@S)4Z3FDHaNUgiX67VZ{?}i4fSr3@ zn&R<m3(nFc@air>0X{ckYxDl*`()j@A(cSCrSq!ls~z(NWJODAn4AR=4K9av9Snb* z;KMYr_I9xx(5NjyoFaYW3{%mZhMh6)N0%*f6OPQYNRK^(D2XB{GkRbl6rXE8c)?qN z;gc8U1G*M|^zvQ4!M(i`XY2aa9n0KAzW_KY3ww{6k8k^dA16^(PmxJsQpZVS9Ls1c zOY#ji=~k7<TWY-`LFIu#NZ!%Zp}Wucg%xKWLyfEGO&?X(+^tbHyt|hRRqG*rJCu<$ z5{>?$UkF|P3wlzzjKKvuwz4tTpF8aWGQo3iJCgrlf!5NA6J`nt2mr(-<aYZ`$kwm= z-0mleB#v;K1YZ`CZVFbw!$xvk_a{K#6hkU{l<3@PTP~H+M%qG8C!7$OwMV8xCjQ{C z6~X=CCcG@V?p!KUy*53?4>;6!it+2CS7StqUf`Prsn;r(Z??ELOLJoS0-#`BYygF5 zOc-!0S^l7L32}Wk8VF>o3)*xwr%uHl*8^Fl5Czso*(yA=Gxe^)0@giF5?#D_`B1@^ zzPx2+AGPQn5h2dVQr1CQHZ$BG+l11{@K<J7(FNx2NiTUV^G?}dWpdtKgmLtqBaqDU zZ1N8>%Yo?o2UK&%Y`ExzyGe}CT#LEd_J+ehQF~AQM~*8G958WmNot8-7}6v3PYh+= z2^Sf<H;lz^X=mf;VJT=PL6Z7qac6hJcbGwk_@(Pr3Bk1;({0Q+H0*WYmv4OKgf_N> zk+^I(6Ic;cKY*778>G-Nr?KTRvQI*DZ7=u{Wb=6VF|+ralz{wDubqk2mynu`?W9Zi zf4ud}@DU87CNXT@MRvalxuN;I){uKuJ!5V}NQy7zw8+c}#__p;Cu-TSo+=iH>YCYU zdbA0z-j`PG?RX^_ge!4@IGTY8hWw{InWU1ioX+=Qr83ifFgtklUcr{4onEn~&rpq+ z<KW~VFo7@hMxZJ?#HU|Xh?gPkLXZ`Y&;lp-)zDU^j=OeK0FGviAZ-Nv6H{Gk?mDIF zP<fTsKj2h^L&IQ^<c&Hrdk>*Utw<DoWT18VU(Vuow{U)%zE4QDnb^G<Ac?m>Bwl3O z{_RpFh^t!d6hzTATi}RzEJS@euMUDm$TOc8O1mTd`$<;PTGo&8hUA>g_nBbKN>){b z<bHRr&w@kU5nW51gR5N*OL>@=&AYy~iURL^OUessHrp#n6{n%2MBd>YiO~3e4!(1J z`;L~6Nn65FVJp@F@EKKybV4OFknnvpxrr_TG}~Z|x6u<cHmL=X32l6M!tUWyWO||6 zzTvAsgqjzKtm$kXxXC436P3u8vFy?;B&oRDw-+%XVBI&!`Ig4~|Kw$B7|BndatYY? zkKjCBY(s5dR{e;H;0}LimZzx0q2nvvHxT#QcZGsnlSP-jkwsav)(a7f94M-Z-CjMn znZNh63e15aHlruvQJ*VWKa><pt4}X2nOev)N!ynsx$(Id(t!K6lg@C)d9VnY1sAWU z_c!0*GekEuGCR<2vO3@2gYV=EqTjM73zGMAtPHf7J5k2spM;8_J2Jio9|o@KKSA{O z-Zx{35^nYDOv}-(Me(9VX|=gFRTgWSlP0Oz`Ri`vjtJL-U6t7;e{A&5Qo-mSRCiin zBa<v;RykhI`UEDo=N15rO829D^tL4Fb?|ZLRPkVc4Flb9Qyvz_{Yghi+8#zbkuz~B z_@CNX0Px5x19G7Qp_@=U#Io=}ezZj^v4aIFkC>#fTS&Xu6-5HnEFVR8k<Mudk9xpV z=cQYp-@(?tY^VOd-rQTFFjrro3+hfL09>pNpCF@+?1xsP9P?-M4mCUAs3LwOpApr` zh%yPqs7d4eg=jEmzO&LDdsO(Eh6kaPezQ7X_6xs4*bv?#njA_AMxL&zwdE6a5hz#i z!z%2%%?BRe_uo#9gwIbtp(GRFZ;T8-;B-^qmUtZzt-i&yu?d70oYe+RlqE7fX5U)V zuod>M(xtDrjkSJ>Lf|%*j4C6gmNCW#KXxYRk`7<-(f!LiUK0$<#^UE$p{|MDntw1f zxp!#alCpR!aI%z!KD;No`*D4cvMT?xPPAr45gZxk@==Eh?HW13*+W|Z_Yf3H`bqo{ zV0VZ!{&pAFs{Xy(j8e4BhJi-(&B@33$yNgpE~cC3UU1R*H1WBk_2u7^+GXdj8?8M0 zezvm!?CxO0r&0o!aG7tf-W>9aM>u0(P)V-96&w+)9j~%QbWKVGG|og^H#`<?YQjxy zjXNam96%%5I_+&^FJLau+3bWaVm7ufO9ZOPQrTvVyoPD#JtnCFz%fx7Vp$mjMV&!A zTS<esRSINAYCcx*3(_RrA3Mf&<*tUp|7eL8FXnU+b=h<sp|(I>IYpFI?7nxrvijH+ zGmzd>P<VzBGlLx@$myvOfqM3A4iJ$m*}%VJlh#*WL!5Nw^^Rt=7-V7dJ*(P;(9{=r zR8$!v5GQidG}~U}0^s3=TIWa6<~i6GR2#Tfa|o9ys#$}qblem!xTHg@*od4Q3$(d) zLemafhn=!2lJEorDjk9G-)ck%vl=&>pi#KqQ8Z22ksG7budEKp4X9$4E?syG!khJR ziotDV2`AMpGzlp{0%|cmE8+8lKlIEh5<q;RS3z7$ANVIihj|;$?AP_k_(u{mv4zEg zciUF3B=|(G_vR>68hnx`UJE|YaC)}CxT#g<S}KS*=;d++T^7g4`kU@xnFk<IEvo}} zh(KqakB9T#KNu9?fahh?RKRTIsKluid$*o}dEYZ|z}LpOw29O9p-wx^U5vP(XTj0} zN*m)L!T4}hZ&{TMyg?#Cp(^YPH3R*y&0j+i1&_W(*gHXm`m0W=_i*;*{59Sfu82mt zGj;bnaO_Fh=6n(F+1MCpD|{6CYPB`|B>IDP8gwbMsvtSaeC%r4yiP8}B~P?glr8&f zGV`H+Ug#a{KN&S&6>Vxf0&RL2np%&1*s)_irKp3?k*NvL`rsuZAS+ZA_JlEKkc03H zDu;Z~DlV3G?CcpW6D?@P((4g_@8}8Lb`;^o-NoA7(AHKcDek%^ZD^1Bd>FQvrkyh} zEyp6&@$ug2R)Q-d9IRYEFw(4cxm&yxEYk%H>sW)l0Jk@UDW>Kl3V#VvgY^lGYt>0# z0)j%FMJ!kf+KxeY?cTg-kN+a5GN9nC<L&h)z<+S@vwBO~y_>N%BvEmum+YJER-6QF zBR*r^>Lu|1qSWEsftA<J)+3bDn9+!Jlh&1Dw{*1UlCK?cEG5AeP8oqokKM{c8l4_r z5-0b;cIG^#-?hrosv&@^681~!%4eP^7}sFdk$j*O5fb*r%}>i+9z?MpJsTgb8nDXK ztI4WqxJfTpgFuf^&p-h^nwrsW7VKimUqS@28SU5=UWz;PNfK0!#bXkBGe&LS&Q6{E z_BYs@Ukp24kzf$R`uy1UmftJkqyC>tIWJNcZ=&SYC+|^w4J*(FFoOXs7;N5S#sJlE z;#6!5eOd&6G$*K~pLp%H5bFVX=^88)#+L#F9N(>7CLG#d?xrvOarj}1`9sp)NDFP& zo#mhha8L@zyCMOS)_Vh>J;rF^)h2nQkdpo%!hd1H*H%B3%5C&sF&~+7`?PEo3rEqO z4<j~+XUg;S&4vzX%1yD{<x`8djVSyx8&=Z*Q<F3OwuO&8MEe3*^6c2Mc_k6NXa+^C zory5!u_`UuBR_3I@rgPKku1S-AvVj71=dkY->k^OKz2{Zbej(1QSY}nugAS+sb`yJ zZpf8Wd)qbtv}$f%d%!x+iy#WAma!6`XP+t<Iy<p7P0ckLc_2~WtKteedCIVIF{iOR zu?-oI`BVF+5_grsU**qK4MSsPw!Q{NF|wN#eOWpT*l(%<*hT%~P{Dqa>2nd5e!DN6 zT>fw}GDo-(BhnFN_73iiBkR?W2XoD6^7>SmZ_9X+{8;P^>1qn6<gzFFEO&%!AKYsb z9x7*RzCh(6lM_ucA8oS%!(}2l2I+$;fw77?=r5o%uMOpq<iT*7RRuz8W9~hU`%IQP z@=T}IxZc2w6?|<TuFCTih<P%x)}A?e9t9mxv)#=*1i1J44a@VWnpK>5{lj>aZSlhl zSHcaS6t1<XeORbo*zrTNnh|+Bbe<QR(Z+8RS9@Mrgtn3IJoYG{@C{`2VP>>7y`P+y z-v&v^^oxEVao#8=Q*A}NMFhKyWWe{ck<g^&!Nmvo;>foq8|mbW2D-;5GsIK~E%h3P zaE#cidED6X06dJZHy`unQXr$ZF14@O|HEuJDyc3HT_IeDZxjoZ_Y7cK=c~Je6~;N2 zctr)hVwC=lzxzC|4U<nNPKUkzTePXUflzVyeClgU<8J2&Gcy!aX41eJ9fSeGM2Y1; z%wwRtE?~6GL+i4My8XHq8m?`UHo^UrDuF_ag0`WDV<3i-MNIBpmwl2xf8KNBQO3=1 z%->P30n09nSHkXO6cZFEDL17BN=6Mh+_NDKdu4`<a4`(sJ_XIp&f+sBU45qEww9=5 z8Bd!J?lId<$xe-AwbJc)5`&oWz16)f_sqR2%JUDUt){erB7B?78Y$@}&dJOWPq6$9 zHn1})@WY6WHO{DQj*+}XW%u7DY|vZjKMydD1ivn2WA)}SL^UEl!BN?oi!X*{c~eI3 zS5@^P8Sb}v5=k*m>z>8*xP7CEjPno$FUax_CX8^;NhSgq&UF>;vnU4AFF|h00<h#p zP%PH)*F+|^mb6^S8_r{V%>UdK9DlX4hSq0Qx__zNMsbX051q_PM#CN_A|2Q?9E49E z7FYi1+;IN9?{X)^;Q>R;-WIr_g^+L~NoZ*($Z-h}m>BuZxtPOd3;7+;0R2l&R9LHE z#@>^!2vtFqWMtvM<TP6@@F)zzNc?9iQYR9hie-^T^@@QHTzlyMqJgJuk&76oY`)03 z)HpaDa5_^tYnqe3DdmxIKqg0)h)h6?8Xo=^hEYCCqy;qfcDSYD-oAaKpMY;ocOp@Q zfNGpn#G6>FHAWFFZ-W2P8H(q@=$1tVYfwoJ&`36;f1hH(@zCO%CAdxmj3fk<%+fOe z*>zgh00{JIfcf4%ewbR1DNiFs{{e9pZiGf0w?{lFox__;!8zz@HDwO~12b9|KB{34 z(_G;UZ>erbEy!pF^?s&up|a;V(cCuzwh(OD>uSa?P==OQyDQFE{8_K#GzLx2ySQ5E z)z=t*+=?h!m~p@P90oL*tn9YC=xUSRtqg|pYjvGcmV`;5N7=y^EC<puM{HiK<DXN? zEc1hnWiT}a6#sfWwWUaX9;9=f^W*oXEu+a6x{jF7ssjtP*2zX6nlIvm|MgfA8M;b9 z6;P1-qz1x}*ps<(QsLlG6x|8OPvyA^gKDxhzjg;MJHi0Ren7ABJFv6lh)D^hLNN+a z8f9xM-~KCr5ZSe4aWqqLE%Ifr18l(TL6IwblfV5$(Ooy>G_A11>&(yZXv<e>9qx-% z28NV34qV%EY)in1q<IJi@4t-a(8>rv40PUE{UqLNuKtm&IUigNUy0GGTO@5-#|ni6 zc0icCQU+vXqm4gdRNWqd(XgJu;gcg@%x{PiSe<Np<;=X560N-SHC4`hbOPA3{(l{` zfRf%sD!1SI&1g|v<?U$*?-l+@DzYloP6#{IR`7i@&>%Z9S?%i5G?+Blnu&!+CK+SN zXV7dNz=X02rfk=%#ukAIuw|JTL;<H{AnzY!bUy_=rexTxq8(%(`j-L)nX1aYBFol@ znW~CD1=9cE&)6f4eqQuN5X!)Jj6Xz6%n1|E3U+N8V0K%6@DPN(6_2!XmQ|}L#xmR0 zfyt=-ND?fph-AG=Z;l~I&MKQdzJavIW1-97X=c;zlK_-twlIh%IY2BNQ9snY0x`n_ zX%YQSh|jos1^+K*J8||BE+x64*GFq3h-K>0vCj6`9O1<pYUSn&Iuq1<!+d;XAECY< zC!=`*2JAD?txyylMy%5?AEwB&7Qu5+0v4pGXiQV{Y||JTc}^|uU50kU<Z{7u=lD)c zr^QZu0Ro8GV;cV5Tc()DK|z<#`dhM`s9uq%_ECrfJS5c^05(35eKX8(VOG8FjT@X* zi+Ddj^1}#ZVp{wHM8h4&k-2#Kf)s_kzk}<eBLB6b750_vaWOJC$`=P!fZMVa<HM-S z&uq)V^9%zI6OP08kp|Z|PVuyq02YLF*p|hP?x(w<FCQ5_tEn5{-Go$Mx_rCjtuVW+ z@Z(dD-fjrzY6tof+!%fZI#Qth+jhUR{HwG#_(93*bieaDQ$HP{TScv__nXcggiS9z zHR-0*kc`AR)tg5_1--sI&Y|dZ?5Fm^7~b?krFEV%W&#PB6Q%Nx$bXDuc|?Hu5p9Ec zjzf+r)RIvpazj<j9I72BzQ(^IaDUZs<Z&(Q?>>dWWAnTy0dKAhohZ(UM97{Wm=%ZX zTXBIZe|nG*#Bk|{yL1(Ic9gguMeKOcQEG;xe#4=Rm(HjV0C+t`_jmz)GW+#!d&H&t z88=HENG6%9L$HZjTS4z1W4cb2i&Ei?-a#MW7V8o!QBg3y569p*cavp|_g;GfkSFf1 z-D6Yz$S8=RM;^^+gIa3+rBjVoU>@*;a`+b*^?xIjYW~vt3WqEh>Ix5(xW=_vv;}Lo zaOn=3(>4Unw58D!=AA9)W!B#rQV{-mxMrC(BbQnjl1h>tFCAzE`I>THT6g2Om=WqM z*?!bTvVk;(AGb0VT19P02wea^pu~U2NIh^XLDb5m^l+?_t*bXafg}5IDLQZ*@Jq<C z#|5w(*Sy+T>Tz5tKJ$}&s^hwng2|w^QPO_4qun?$-dI*=PA$ftW&NiC9CKB9rqGVh z2ukTf4<g<bXozz2B148xVhLb#BH15umvYpk4|z(cx|1}#mS?Hv2x9tc`@ccNnDp9x z1{AErrv~A=%`qF{3yuDMO<3OoLvEPUzB=xhxUW3c^kISOu_Ho>5YvQqOaV7lqvU!j z?=Z7VP*>a-T=}uG`HM4Xic$*(hkU#Tda@7hv&NNCdcQP(2v2&4+$2=qMKXccYiks5 znW36FqGkj~m6{8&UIa<N*yE~Ww?Zqs{*D?Q7qnO(|E_g(b5DsVg>X?30b8DXC>$!V qr2&-Fec0Vt6C|SuzZw-fL)3em>i(6{B=uS9IrnOaAP__h2ce+M8tf|o literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/roles-tab.avif b/static/images/docs/products/databases/postgresql/roles-tab.avif new file mode 100644 index 0000000000000000000000000000000000000000..01b8f19e157d4b4c0495bdd32940d8268de48f40 GIT binary patch literal 26872 zcmXu}1B@<A(>08aZQHhO+qU-Dwt0>B*tTukwr$TI<G-KxoUb}vYpqHpT}h{t?o<N- z0pXdudN~@qTbTp>XLeTR%>UzdR>uF+t9E}}jsF+_&xkF}Y@Ppq6bQ)C%GCA$@&AVi zj#jRA|0jU|^CVWb4yON8VnRT`|Be6I$NwLJEPnn|q*hk;|F`J>MbZBge?b11^<S>B zI}`K&sD_oJv*UlrW#wq<@E^h%yEBUhk^f&Bnw5*=pZ_HR0fGNFK^FdVNRC#XR{x8D zLP0_O2N+h4cK@&b|B3(&0s#dAvV^cRGj>G*f`Q?-w)id>1i^tPV!56JmK3G~A_|03 z0y-jkhhwkm`gi)z2T70tC^a7I^`^=g)j8~i#iOm!seWptsX^`7gVqJQ;5VRIfZJaZ zw4}$CXJsIb3zFj2x6!O=UtW766Cu3WUl1W`*8V^~V6U{_FO2ZFP#--xrmbmn?by-% zA?aLkLS&G(FErEET$|b~o2aFN1@ezxBYOgSQdeEfxhB$9UJo6`MEe=b5qIque6#DD zNFxq0MwIx@`?j|sCK-+3bkJ)E+oE&)c+y>n1;m(13>E8Uf&wS&pNn$(n-$gQ453oI zHTLU-z5CyaoXE@F(~3xo;Cm#Mk}ZtnwvM;>t$;IT%_4GaYyN7xr$(+$;-=Pf|KueU zcA!>{{ux2vJFt$_L<e`v=a`1cdOQ>SX5k9BfZd<nz~wD422cBc$DhmE^oCqMqYoU> zz`B)93N*4B%?gl6X?eDYWJGn&Hvy{Y5T}Nff`VI*eDOPNs|YiO#Ojc#QeM@FRJcMO z2VZ!kA>cwk63oe4W*X-xfAAIrr{2XAGs7-VYodD=`KhXRE~j^|vh{JYmo!`px+E0c z9`PIxR#zVACtIpW5?BVZs@x{Vn@d`@FKJwl>XzX|^P-_39(5w$9^AYJAeF0#_lz!x zelTU4sGc3`%r6oPlt3|U+!PHJu@}$Y`Zc3ay(sY!;9P<T&q}<2qib+pnjt5nTI{2v z>or~o{w(Owp&Q7~CEmDY8<<P#9=!Lg^b<SEBTh|$L<Co^yP=;FJpHy4j#%cY-!P|0 z;vJb{y6-gZDSNlW7cfPh+RBCD|7I(r(j|OQ#Nan|vP`dXSy2%tDFf%dsU>F|z>(SW z8w_knv{FMsMnivlY?6#y+SyEe_f*&xl%6{*cUt$V^ezt4|6;7^P=dtPGfcMl83*fv zv~=+jynW_MpZtZd`(bE$gBY`yg`LD;L4M?r0eDjxtq7-!MNeR{-}*JbDt6hRWwR&u zPiemn*YxX^!coOu&gH;A78NfFipLo&dCX}Ta`P7TD9~PDu@Z_!T5{EYAi3*_=0uaM z*O-LKIUUATl{b&BuUp7#SRt8)=Wxa<NP3XECa>H<3DU0lt(-)Tei7lhK0{x*|4Zcx zFX(su^_J;2AT<zS#iJwp9n#*A%-P5hTRlf}Hh?CQitXxmTVp3@*vs`U(c}P0JDs!V zgM>vLtg=4Z*)3OrOeFsk<spg8qFrI@4&Gwe0_hSNc1j1uqz9^q($j|4-Aus;A7KIJ z^)Ody518H-3^OkSc*UWha#QMwzF#HxJ;BQhu@KWkV3ukjbX(w;<<IbjBZ3}{n|W!3 zu_N2@uGh4NfZqN-dcjZNbmk`z!sI@TvoUh9|5a;B_ZbRYEX%Lp(8pK_@QpPrPao%w zL-T8V#V!#h4epfr#sH!hU_^3!FU<<?5E%I=H?*yjgRAd*E;dXqTMf%u(Q)r*6E#e@ zKV{9T&n2t7Mv|q-{k8bUP*yoB`cvTXqBZ*(*Mv7lPM9_F7Zk+v2OwXpg_Vl4DcArt zH|X)!fnFd2mUw{!c~$1VEsWWO!Dx#8dnlTu<SZ-wAQEf+j>;1{e2#kYUF&Sb$BPq9 zlnKXtfz{@0`4ksFPvF9l88fVncYI`fM#^rM&823mzDqn35+_$?;s72L`kXgFMWBb9 zaOp6<OLO~ikF5!ARFaoewIac8X>F9BF#bV5JQ{&24UF9^OlS9;2|l6Mxme{vC?YNB zpFojWVIfjbEKze<3*}+G*GA)&$3$2yn`0<i)vPdtTQJtDqE8*<+k=$aKTNhT8E-Gn z&%HR`rMQ_8EXa6wTn?Nl(rW|J^)=g$Mq<%Km59J@0EBy|Z9vVPC|f>Wb_l(p&fRmc ziKj83J_9X_-F8dNj&SX#X8)NY+)hsLYDkoQ6YRxORj-`@$mQ7TeV#&_)+2`sFh|&K z2cRuWfDB=mD~C!i8J?imEynKN6hQge-QYg?rGA+fvNb-V!+V6v--~b4ysklfS`91> z>LvJ~87Y?a8B}}%IagEUlq)gS#`%>#q<_2#WKK!N4Tha9b@pBQ8Z>VCgMnd~Z9-2x z&UvOd=h*&?lnp9ff^C>JL9OB~2!EM+xKepQbH6<(t9tb3QJ;!<{?)vD*4u9=5}41$ z9M;RASDrG48;#5UvxNEx1<UgbDGywAovYRht_dn*>5%Qw$m`Vh3&{85c^8!8E%q@0 zzTQSj>|*umbS~jpxf-+ReFc?fAKfRMu5H=$217+5P|59*SGA>$Bf7`fH?)W>A_f|0 zM_#Nci5U!J_+Duv8#4U2bL73xD)XIL|E$i|PnUUb{avPcOWQ$jw@erQK2&gmW;W|f zxy79kBc#Nx7Dv@9B#BK3Ww+3}IVqylJ0yc^TlV+*$gKe692j6?cjg%VI9zfVsZTj= zAbkrbUL|Wyep(9p5lu0Zfqetz3-IjE;!$(|lSK~`L14$ul8kS2z&lpS?c0>b#@4|+ zwNZkXa8Z<DrNXGg-V{0*Zl;<Fd7%JVAI<+H9Z~qGz1w*@FJt?IW)td%G)WB-%P0EV zcMt}uo$}>lb@JR10y+8#8iGb%2WHuOs{e?tgpDobdV3^(vLSGcNGz{3Cs$vbf^0~) zFv4`7!8$+AzCmIok{lJ55K+$|S4cJv@0W&|25fZL1j$V3*h~@$es+CLV~e)f4~y1~ zZG9>ogxi$(RP@*EF0%imQ2_l&)*NyAwQee=NqKS3_}5C&TC)7{Bs*vFD!Y0yy$A=; zy3OFZCtFY6eU26zjHx)FZBKh=WU%FHv{+8ATVdS72!PEZrDiQ@nPV9}-lo_M1b#U} zFo-)S>m21=Xg3i$=nom_+;Nc^-`)(B!3J_x8<(=yf!thqfc3mc|6~Jxz{e9NaPWa+ zD}a_l<`2WUmn*OLwF;#w=Emjbt9h$D&v^EYKof--(l}?0jl?_e4@7mx*OEwIMjK5- zfTwZ^Nag$8GIF@HqCynl-byN&UwwPGSYdN`ut%A7%{Jw}qG)bCp9CqfcKbJxHESR% zD~<K}V99>oYq1F7(#epGBtC)_E`T&LLS+yJwDR6laDBNhn$)dO;4Sk{B@5jgwq6KN zW7OL&kAVMUc<m%JlP0W|Ab@M$aKk_BWKEJ?VDG*TQucY8z#ij))gOBC7s-w^#<JAV zBUrw}4otZ&vGg=v?^kp4{c~q~v&B8IWCl$0!xP&1Wmjh3UJuA?lK|NJ==x2b>48=m zSSNRtIFrf<zA}S-`$T`Fb>5mu($)L3Kc)l4$tHO=0H&7xsU8>vegS9RFpAYNwbdsf zZSnDHlg4E=$P`>uhH99ZUywMCg@-H`VO^w+t1Z@Kt#fd|GiA1@9F{1#WwAG#*U-u2 z302>hz_0DVFke(^T2Ft)V8b$u75d(MM^AUCkHJwfwn=%Wjf(^K)*(~@c9eb?mbg{o zId(GOU9;5@`Iiu#dcMJoI?fBHEbH$C#IKM`xZdzdrfn&(sKZ0VA=oDH*t@XOo;{iw zO!g;Rrj^!6ZE&Z5h{;{FYoYU_YFk^QdH!809<wlgXA>j1Fi)W=&nV2-j!CfsP~ZkT zL{|?wxo7rB!Sg>gNu7JA?sPJ?oK5^E_?+XmecJJLy6-wKy!ISQ*pi7cu+uB|{%kQn zr$2|)z%})M>1$*_iN|uA=74ze8}pU6KBRy6n3FS6gv@QLO&}87epZ$iv(|DmI$Gw2 zxlmCw<FgE6TW1^ig9USw%B`fjnir7aH8Tt|Na<#sy9To4hn;g3(Nw5u4=c*rY6P&o zLmG4|D@RwbUsncF_fF@w?+!A?c0>0yLnB%a)}6A1Kx`yFSvg4ofL1?_x#=Hg0jZvT zW5`J>9*kLRU$wj|1;yge2ylO!LL1tehWfvJYBYj={yvDXF(psO!1cKcrVtI|tr3*B z)6(>sfn6i)+zSto$D>DAEik|mVug|nrzVWTmhbwQZqRIUD1=*ScCX)_j*1X!_mxk{ z`nzshPE+B)V)rQvT86vhPQ2f!OhFF>r&sAF4bmLCXsHwRH^vk0o#3}DfR^|pMs(r2 zH%4j6;>dktoYe2tdHn$vL}gLGzBh+T>UHK$)Rau#{(A#<!|b|+WeZ-?ku^i!NuGh& zs}>qPNA8jkB#AF-4A}EHnA+QJgN7Sn^LiIM5`}{`#QEXtlKej7#q$*ygGncsoF82G zycaL3a<thqcp%r8h-2<bqUdGp0?eRaH7G<Lyph^#V{$+SSB}Y1W(kw#@$w=OKZ$n> zv{c<Q56CM0ms!eQal3yQ40|@N;%8H2UY*8lc#C}!$vtcSh6})apU{nZ8*csdob+#e z2FF>L{tl1`5#j(lcdpD2{F(yICx|Pybe;?%cFI)=WxOmbF|owI(@hhFDdZ+qGL|Hc zTn$Ifi)yp7%&7A2^DCC$$&0^I{_#KFZ=1LaXGj#n1SPH+BB286ZVk>mn8OE92lNyC zv@^U2{}}2(6@wEr10pdxn+8aYO>}uRE3qX`(vVE2`;s-<RqOX!*(;#F6O?2kwN&>> zuj)AL#e!p4yY#_b+HUg&E!oMP)?x$tZl3>4%9m!cu>le3el$!YGCClOXBWNfJyN{1 zX<QkI?HK+QdPl2yw7knST^3fypI^d1<w$n&LXqAp!Mv;VbN9=Cuu^<jJ4i#Spt;!O zY)lseoSK`8c0C;!6^(jP5!n{P3!AO5ix+0_nsK;L3m7qPKLEV(iDZib1cYepU!*J9 z%maQ7aQy-(d++RTis{Z_;AUZUa0gc?U1K;?v4sh_f-Om#Pkx93^vz;Hl+@y#5Xh+7 zUaI37?-@FBLCN3PS<EPwA}vW$4}o;r)e3j;I&-8L<Or@C$nP7^nrJ@a`RO;fIjy4; zB5H6bEu=K8U0jmLB(;<@xE6mabBe@qIh&E3Fpw%ko3760JPRVW`ic@FLCoMn=-*o~ zSFC{{q%CZ}YTbseQ8Q8EkB)N<9j+uK9MBC~fMFu9yf*EiTk&>!c5e`R;3)DSmN-yy zgU5x0iA_8aCRDBLMrx%+mbLqz0VLUz>yj7GX@bPN^F36bAcGod<4sAi^x(CPbF=CC z7PDXiwW_?+tDkPz>l(i<8e8?PUG;w;ZHovnqk7k)9l59Kz7a)a1v<Pf)s8jp)sL}@ z3=WC%)x1b#c~&1N3=+b0%izfGs9xzt8p<%oj|jXB%lrfJ=T|W@fWlUbFiw~^m>&U? ziv5rVkr<vGMqJCVTe(PW8;-|tr1c#DW|=e6YoEKzo9L*=S{H7|$=wem7?*yKx_*Zw zcDuP}x+sCjQrRn(J0aEJ`s54#uZm2e7y+PVwxcM8IykVZ=*6EG2Z7<WusK8YJNKrb zkM+Tjgx?<^iTwe6&chiYVZy(=w7Eb^S1shP@S7H?u?nIrfXWO1)wn}H`EBYj0jgfD zsa{-*OvEZ2FAK4J^KazPJN-TWKP7%*<OEyE;zaTT7Soxi)r5W633s%A#h%5gV)@oD zjb}=&c#8ey-{F^k6sA$1Z08bYL(&j)U(6Hl9ezP7g1JO)`U4QI^~}3twe$OL%)ZAo zr}q-({eEUS<@xAZJ@$-*c2A-ut;^N2JdhH_l%xjA=jVpZ$H5eYhFHz#q{G`LP@{$5 zjo=@iF17)X7@6$k;g{@vyr<<58~ao$MZQZ7g?nkBY>c&4!$7Y3+4KEFRbBY}-mG>= zBpl-z9tT$ns`5V=-PYVMoJu|cYRlP*1&6XK^=Q7kj;2UMd#94Ve>7EUO$6G~W<6sj zLQC$Py6(1NtQXQ11HdnXx+bBL8e2$;1nnr(tkK(%Uh+Rx6kPFL1(ypVnFSy=h!1?s ze@t#2hJNX6bkR%tulT$9h)!9>>X%`P7~JR(vIzik(4y@nR@Q<ScP-8Y(p)`qV@lg& z6x*v*tXg?uW9(_4LxA}T?k6(p^&M(mJhai94+RGi3kuRPZFa`<U@#d~4iyZWKXTQy zb9#+Je#Li6PpbkQLkn3*494BXLd~sp<TL1?_jK#7h|@(WIoU>L)@^D42S>`efwUMQ zOJ(r{ylQAM4!Ztl$EmBhW6E0>yJ#$Gl26h%ehL7G2np>D|2<r*@a}VNo?@gR^q^vy zB~;LNT~VJsQHZIl{Osxp$6<tp*QJ&_Y`$TbAFdvsrZX^K@PJ9LOW|NJ`0X<vDxtIk z=-(MH;nHqiz~joud@)^nK7|VtYj`D^{Tw7|C5#;fN5>>RZVY_=mr@-9Yi&~n*yL6W zLc=c$9JYJ&X*+^jI{8-Z=|-Z5!XEC@Ks@&@Cy6m*ylOf;iQrfrnJOHIxGQqGx@sbE zWqRFfM0&~ItXi|o*K%d)m(Q^+g{DJ!)2fRrNgVi~FVf0|x*sBC7BTqASqh}xA(z<J zs=}$agWpuKIF}nv8k#8WlE$~HVOaQY$hUw|VH;C@vwX@Gr_huVPjof-wvL!Agr4)u zBEKt5x)TsD9tix@d5N)_NR@5q4pEb>1siuf9j(!Bb8kJ|zo0KU!KQq)jd)?^=f#{L zg04+=T?q{<Skmkp1n%^2AE9AFudcwghTvU;x<C1B0S}vkQx|Y9ro>EFp;NwA(Wl`| zA0BIS>2k$!Wq-OX)V2*Cg%025Re6E!0zvAIq=ne08TylC%<Wmu`{I9#PO06o90hQ+ zNs-m%R*Uy1LQJEkfEzuZT1$7k54Hx7-jv1NV7)(<GkS<cq_=Io3Q@zsRfAGeLUuYj zk>DRL7hAG<;0!mqB9<3{Tmn&pO}t<Bmp6{DGABuE!cHtYt9}*{21!q%x_nF9N1#)% zdy}?2*@e^>i<!^e35FAB?ze*dXx|E0Ls>>Z3d3mv#`pLY2u$^kP#N<(fXc}PeJ{4= zcyBQ9vxdv}GiFN9UZ1M{?q>4@H-7Pgc3CRVz<Lif)ly9fHduamlyK{!(I|vO^HPdC zE=)X$fKJRwhLvD!wn4#EgmDeHFteOP@?Qt&@`a4;FiSz#yqqz>b@JjvGCyfW_<r_A zY}bTu{i_l;g-8S0zF861^>cam|DEJIz*lwsDsgkP0J5RFYJRFNZ5aDLPnM9KIyJg5 z)+4Y$p6ZE)aLFt$aOt!-+M7`O^fR_|bnbH4i!!VyO4xQ=AH@wd70W*0=r?lhsdh>t zCK8cqVNghI!!-4Z-!YeIz%~a3%56U;wxiYob4^8U3S~vhdEDMu73fN&f5_hPT)Qsl zKmb*^><<ngjQ_6FQ-}O%8e5`796tHx13$~niPpsTsd#c{qsH_ZIUMt;t#=%#l#`wp z86lZgjCe?&1Co7x1BDBWA{&?G{I?h>E4}7$@GxFj^N}e1Ylii?5Ifp~{|Gn*OxI&4 z@TxNhuGwSro5V_|fkDTc9#7yZQ;tq$uz;kOd9sX1FI)w(mYI12r%hduHeQsC1k1Z+ zz+giqAqDnzrj^&>TiXXrwU07LrxMqBqKr1si5YLwCzYp=n$05%j3?&-PP3Y32<ha5 z>%uesy8A);do)1-{nn@&AY<28FYNb0Lk|yfWHWUIi9z{Cb0%%Hq~?2RTWFh5R+V*$ z<xd3Z4zAi9h<?_dJrbgtZ7our3LLmCg1Xx-A9Fj<R;=pOqNk{&A7K9q?g?hzQmQ%C zivs)m1@xvi+^;KEpWyTJ<b-FsQ1|pw{UnGzpgdke&?~SHfyX+G7gxFVUPT22jGugX zD-J)%L{V+NT@phMP%SF)@lDLFW9*35a`P*m9xwm9;XwAiQ=p}QG}96U_s&dT1K4b` z2LCzw%Aj|ke1Fakgtw%Qy8hJ=>2K+9oe9}yR7pSKG*L_g^^N_#A6rGl@}Q<N+XN>5 zm;caMPK~c=HWWajw%qbP@F$Y07?D<YRw56f?}l{__nA>}p$GwW%vFh0w4;;-y@vpe zO`6K95?u*$yjM^sIPugv!yiQ_PD*|5d>XA|vhWvi9*Y0K40{uG2n~z_5K@*f?r&G^ zIO?hQy+zDN&rXS{M9QtAs<N5e-|%+@+%9c_r@M#I$cftpg-6m=CB>5iMXqU?ChMR8 zx?)!nIn^mcXFl`LtPugyQ9WgRHLY;(WweK>^iNb-ZQpy)P!b^uqdvtdCFz&8B`(vk zO0B+}zHw5d6D~Z6Fw;2dpl6Fr+(f~0+>R@d8y#buEEPI7+`UtJj@ZN37YLU+SNuR; z9F``XQ~!A{+8y@MY}yQyr>@jY?`ULvuKioi&I^#l-9^`IvJ_Xmq@jm4r4x@OUfCH< z08I7YHFov`-FELAelZ_-^vhOW;GX3*nRCf%2b;KuN)6F=|9Hh49;!C}$A$CDs+$Q` zWBPPB4!Y7CF@8P^N}=*^_5|E!%TDv-WNj%$c>uwnD+EFB9_t4moeX6PI<hmdpt`F_ zsO&rX&!3+_aL_4!$Zn+jc<Q>RH`rPT;6AF*9LkOHpS+6QM_(xEo>qduYBF>q&Y%bE zbF9B=EcU-2)=tkSx|XlCQk%fnPnj2oKwh0Wxc;hM5w23Njs5}{cN)UxJib8C$02L) zCD2O%HRAfYnNT&O%|~_{xt63U)bSwWocPnG7dHRDo5sTt>Z4L_ek{Mo5`bPwi`ggd z8b|i-lOi3s1)ORY;X!HBF1i%a)+<xZcfz%JVB@dCJAbZA+%i4GzF{xxPqNFQa^Y#8 zs&769OEs)B`KTCEp&*#?*|}-syP${5@ZfM8?NLO|Fk4ZpQ(o5WO*5=Z)LL<##1lu@ zaT=j&qA7dp51|}OU!&6~)|}EIZPy%0@E<r<>O6tCV$90sKI44M^cQ=uOwZWvaQ32S zDb+pEKpmbr-0nj@<2+5wL{RNKhjhwRu@3y(14#>bc8~H~GMpc)HQewC>XbBpl}E=4 z(cQxkFn?I6&JvRZ8R%`M*x$8DlIS(mN@$kivmP`pt+X7)+~FTnI(Y)8GvqikZP60H zTbJ>7hvZN){bzq0`@jOqnJlh)6j9wE#g)8$M8&I)5y(}_pMhn0b$(_ETm?x&WUfla zWdD`z0IF*XtF@;Xm%chVtI9RSZJAyK;Q?^INc%qL3KZU-6H|c9)N#8A^7qQ65(&}i zp#rY9r-Denv>xThGbm6y#as*a0e1R_F(nX`22xeajxvyXUEE~lKU&n5O4j-Py?_?| z<bgaU17l(cC8CQ(8R3))PRF7VZ{AEyR)AeHrtxGdx72G)!|9bXmk$#@Ue;9r7Xa#9 z5^qFcud~)0rh<g)?EJ;|uYsq;S`gpS_}D+yIjV8=MG|`AkOFg+BJpr`COfZAAG#;l znM@5BzpqO|Fr1|Bt2~B($zIF<ognUMwH=vZg(9n741!A(nNq|NqwAhQ@!r9&%9zva zII^XQSg!%YKlkYRFIj9`A~lWTk{`Y8j4#}5%*GA{nRiVIJuH8exk3y9gxO5Qt`e+f zs{hpDKA5_tUm(-aQI@&f)G2fOIK$_{)D0uhG1gA_eBdxmiRUSRFeffLra7G`Es}5s z3aP}a1GIjGSGT#r&ZtNjf1TxjhQU=T%MqJ;62jV75sdAny(+~d_&tj`0yqWHuvd-} z&F?Nd`b^OA$#P8x8miqodFy!&z<|v2?jctU&zUpd9Oqx<<Eo7P1^5IR*;_p#Lumsb z1@?#u=uY$vHy=5xZ+T70rlEjECFm`bm91I25(Z(FGSNNob}n13IsB3=k$W0$OLys3 zrK@vwoAa|GE@v6}X2ws(F;OY3B;Pp!?$(c}zxCqXi}aO`#Fi(%`UA(SOi#SdGOg%e znckwA5dHX;=5F<<)GUk@!E*wS{CqY4(0_(XJ{A6~o?#QFgPe2HaZhRs#(7P;=nPS; zEFcUB#{Ttsm8NP+TNCk|o@L9w=H*MvByeCgAI(Hi?(tb_%q_o5Q4vNx%UMc{?T;$@ zN1OUa@TgZ1p%BSiTeWT*V;cY}h8^0`UW>4rHD-Blct=v@?e|d~UMMht;`Kxb+7_m~ za-qG6c3q?^LfjiD#ME@-s}`VE)GPu1h@-5+^m5#x^xy5!6up?SN#gKsFWb=MX`upA z;)%Ev%~ODWZ%-+z9Rr0MmLXord=t+bL8u`!*nMtIQ$fxmhW(8!gXuH+xTAa6!jFVu z7|kC@IVlOZ5pNayhp)Zy1@VXm<p;LT%Zw>b{efh{G7~hnAv+IqtwM(hv<G=u$Sx3C ziQ~2C`UKrF9Pmaq5Eltv!XSM{W$~EL*qao@6&NhT|JxXzjT`Pwe$ZB{&=9fpZgjLn zb`O5Y={Z(pby~4C5=V^|2r47xeEm8KRb1jUG=+0!t|7KuFwmi>a1LRS*lA>#r$z5- zo*>a>YUa28DlJscMs!ci0hUgB-zp(%mHEA|y~m>Jp>umXl}Ktxfh_4Gy%XPsvJ0nx zoa1<=KHQx<7DZHw=Sh5UHS2aKMm2DA-F5t>ZHq*O4GkB;Ae0N7un+ZhIUEaSmw>Uy ziH_f@Y|E9ewK+I@HL3{WucS`eSa4{$!>^LYez9u^@V7SI)?J)Y((q;*9pNyGA!Yff z2Mgvq>$2f0%kSQ!_;%v+R5YNhM4*n%`r8b-cpZz86u4YJBcfi3P)-&xsbvTUV$!Qd z&$b8M7*>)C6YixXgHR*}9Rp(FMzK+#A~47nE{`He&Uv;FicsYHcJ8?d8gAP@%)xei ztcD^sX6-&ok_DXe?;;0%hU<*n^v5OiW=^7!Y}JfGfWwqXMX&^>NWA!fjraKUZxvW* zS@m$N5mDb~N*CPY$+$Cg%Apxms3GT=+4d0BUQph8xgUOR$2OT3+iV%W(n7fq+|&hk z@)w(f6bs&Xs1r3um3h*xCxk*(B6h?Jon%>A3zatQ(R@e(%m&>8PJ6<ep8FFn2R+%p zxrMF3+Yfo~X5dV3p*Hk~M<~5a3nO9EX`k~bpt5x=<6Dd0kO<*#)U;V;A|E1(PB_23 znQgZXa-VOa-htPnzw&A-bP9&=YT_OPfu`+d252iH<{|qj`U1z6SooZ{*QfVM5SZQ% zv}lfShxRCOO}MEwP#Qjdq233Gk~chku9R$0@);Qab;tqab7@2`>4b75f7cChx$_cd z{~SDPW?VH%h@XVog-T%l;$qj`1M);?_E(+#MHW3+f&$uj3`j{qD0rWp$;w-%eisgO z!=^%JQQmV{@ytDV$Yv?Wyos}->&#C$K;zqi-1g)B`Nw7TT?K-X<&<x*Gl+R>hgY&- zng&+%c`UQ~@E9B|d~?Nn_1lUaZC8vaVapWsqi@%NUzMGcZlJue>X4_Hc^E|X@xmp_ zzixF<7a#}pz+SU+jS#&2WcUknHoaNf{;h32PPi;INbif0&AaKg-mHgBLs$-IL$*KD z{+>Z?n0@ML2%g8~AnLmEML<72w(;f($4d?6Z;C~0eSq*amIDOGPl5>j{Um53Ytu)( z4HeO<Ukn}a6J%5;_5ETy_xheRPiYxnmc&g5cFx~XB;fWo&)Afj_^&pSp>NGC-aET& zf_O%f6d)^qYql~sv1swz-%n4-AW+aFh6XX)$MqTP=B#_OrpP+&?djz&zQ3MUbn*xM zCT%vR)1fv_;H_aiD~&*%0rgfNtD6?GX%2|bO^H#YmZpypZjKK^;$EwE*b%w5N(U-< z(93YM-cYlvJ6hQKsB_RkR1^^Zu%{b5r}U-+A5CHt5k2|*73ExOt!0-b4yS`{pwO;D zxI_l_+;!<>T-A7<VcjY99{>VMvcbq3HeNo5N)br1(9$F)Gk?g)8bH|cKq4+j16a%p zZy}u2M7rvl(TiZ*tnGV)vb0Jpl>MgnqDgB7g4^{i$CZtmPRDFaNc-QeHRLF*?*kWC zXdn*@x0c$25V+&0rA)&4N%0d(Di`5Wk1R@U#JGb&kycnVsX=U{`&0X-?)vc-B#v^z zS)Dk%k4<s8kgL`QJ3g@`Go$^L<cV4<&u>zns;Scbd87v$&OPNP-w*t<BqV=Cq4+79 z<p3`)8<TlC4ovw``j2bk|3=;hK=yzdy8oD>(e|smyVb+TWFc!wC%IO4W+}U-b>qCB z5>hC}^!|Dv56#~n5V4?)Q%2J^6-j=+@c*9YDKhyFnGc9VC;YLK-oY&zDYX}>iw?H- z0Ht}En6KWGhfLT&%Mu&<!EWNS4r#I*037e5Fo*DJ$I#gq4I^)mW+}%Z#1pFP`Gqp~ z{fusbX<-b@+z^!DULNoWzQFpF41$(Uplj9IsCwGHPk~*>`w~k>!*!=Szm7V{Xl_n) z((oUfVCfTY8y;d7GVR<)tv6-B1?1vcKw|^CI13rGZTvX<GFO01?mjZUPD8gl7Z@`r z7X(PK2#5mZ5h?n7FA9TnDHcHG;f(DI<Bt`&y?AnaKTbA2cEqP_w5uoprO*vb4W*QA zEc^aOJU%Cy0(%bkzVd;la76kVrdGCm@XQFfgDu&lH7r4kJBmOAvI>4XJKp;z3tlGj zl_A&!0R!y%-(~9)!|6}@S2qoh-oO>>^K9^_wdAtwGs^K3DMvN60lexY%w1IFlWrTQ zQ*}$5Hun?NEjK^gZ+5@*?tD+B!>LQ6%5KYkC1YUHi-C&rAoC%0d6z~}Y7h!e*+~`A zYBM5ZNisIw{ji0p#t?8iwIfh>MF0uu6d&F-w+m?)lbp<5M!OE+4AYeo++=+v=C^rJ zrFycM^T_wK$}#LW+l!no35(oMnL`)Xgrjcll5^rVAgIk7+~Om(FW1$EQ!$0EEbmr* zHA$o-A9P?BQ(513F*(H&4-l@Zn-DBh!>Th1Chh>$>S3T}X=>YcVO;?ht71_Enc3|> zme&W`a6sJXqiEJ@xG-oj>7?sg1tPD)dwSETrWG(sr60l}jsBrb@kDOi`22e#-c@$R zY-t^Dlv(w(o5}`5ETOMJ>SvwT4+C)N@{Rubn274lN3dV${ijkjCb}G}7hx%j**BIi z-Gp_Qda6@@^P97+q=a`b@6n)q?Jl<?d6QhdIqU2`_Vf64vJfvSIJzQw(woRBD;2OA z<U~4L)>9!yTy90Vc5NWX+l2^SdlwI@C2Pm-kq#fr=&gMI(Lj*EY8R?2xb~v=#|EiA z)p{TN5NB^Wle8ou{AK3T*j#qN<Um5j4C?yaCFU$$u3J7`R7a&(3=L^==a_!muH^0d zOc`@7I`~{`g?+E8*?c7N51;m_=$ShunFw3+{Z*pnGr`ElzH#t6+Vu|eV6{G$0plvi zjdo22`#ojRpefPp)UBsvSZ)=XIkNG5$l_9P!C5{~Rd~?hazCN#f@KLMc#9c_Biy*f z#n)(5Vd0yOGtq@Ps!e@IJI|>By^gdxd>*p}(#|ldi50+1PBy5UIV?^fjh%q6w0=sx z7fn{eZh1mfFL4!GMy#K0==j`KHn__He7{kjR6&>#oZXf|K|89ptQY8p^mUX1Leji0 zO_^D&?@6P{t_y<do!1d5@a&x(C%@<9F%S735YE9#z}|F2WNzy^-JrNR5XQPe>tGZ( zoU{wQql}Bk)@|MK^sjbqUD7y;4mBZ_LyO2ionZT>|J%HQ<6`2put2sd)-+?y*B}^W z0=5CUIPTEOEIdkP>^_D&<`q=|Gv$It9d`dt8wi8q(@7h)bMgitBy3KWg9%P3yhZ#B z)mK{a_32b{_{&sprE2S<hz2JFh076<z%Z=gw%=A}0UCwO#MefSgx^DwQ)rPXsk4yD z;fbKj`IKjvB4`H3%VkB~{+V~)LI}Z5$%ZbXdh`=wvfEczt40U$kk)>XMR~UZd->0< zF&K+@edd}@394~Haf{tQY6RqVE-ZQ-RqfH_c(klxf6`9GucJakS5;f)?KIw*mB#H= zUAYDF2+iK7QpEA&(@9J_*3o5X<MPGlL3c7j9^i?zDn3?=k(B+y1?Y3DtJ)1*D)YzW z7G|3wmzfaH<TJ)7(Uq35=K?zklwqN8gWfa5bc3A9rT*bD)60b(NdpcVosfS)UGFnI z)5eY@xNe9eXv|jOau(X?0)Gps<2II_iW;i9O8`QlCRW}JdA&}f5=JSnk13b%c`*0p zd(^;{dWM8Cx6XR{?|^F7d}#qCkeL{gva0Imjjj3%z;wO0M(u>rSHUYwA}XlM2gzhy zqs|2}6x?+3t|4e>2+-NSNIZIS$;ZL8{S+%(?gi=ubr)Qw0{V%#EQso;rH{idIW6nF z*7-sM9sQ(Fop@huB8gehzHeY*EEw1y`txMamu2^jL2og=>yKTxzC~~>O;ibFZKNUc zhaS3qK`@~VVMW;7{Z3%WJ3n&4Wndvlz0!<2UoL3Z&450Dpr}3ST>jLUP0bzW#8PKN zp89&?FMSv`3`%0aT0sQEC69*>0y%}}pvN9QheD=0S|x#`vMst;_xpZS#2!ayyJ*cJ z`gfF1AoVeos+=|}?`6+dsP$of^stYYO%AD*6R<*$86kL>S+%Lb2qZdxr)5ke><)t; zG`cgLdAKkPl`G6p5R2i0pBqhEc;!d?m_x>%>>rSQrlLAqQ(EG4Rc#yw!3EN1Tp$W$ znMLV#STC_d(t^-!Q)a^>5w?bYP)-swVbB4DOD-lSdt^U(i;~RSCI(QmYZ`VYiPFD` z2f(7}(GtCH?^9&}`&fjBLiH<dm4*g(XLP*E?~z`iB%%Ntpps<AJ;iBCfAHx%`76+O zzjbNu4f|aX*Adt_Xni2mA5S+p$Co3qV8f_0^KtTrVt0u9SeydCVX)Ef$;N71;guQi z!eN+*gOMC>#13We(75s3caqTj+{4kUFdCpy7V5=y6==fy_<R@an~h03B}uV(HDDat zToPx)ZG7EB)MxVg5-%NMZf<9P5*8K2(<RITdLJEv`MEaliyYAnL29Q&BqTHfPS>xb z`x>2E!IGEe$$oYR#Gi_k+f`&W*V#RT9@uG3E5cb>=PPI6**FgOc&*f14}HD~wEY3v z*RPCQ50#U*{n7{ZuWj7tti_&c_kU!-yCcz1SkqMF1VT|1R^H^E(P+#D2NxS7CB+3> z_<Ww$b@Vfxw1YD5RlAwV1X;B@;p58K9q;m2<z%Ki$j876l9_e(vra+r0SFBawoGZ? zhC0NlFc%Eo-TbpGvqv<D*?T^V=o6NT1A)-W7Xbi)MhkNIY*>l|n#ad*ICsFfCgACj z+vzwpG_=D{I2iZt^RAr<5HzAtCd%<PDAw!Ymhq_?v2(V{32uk06)v--A&2)_4xmD@ zVs9R;F3Pw7o-!Ea?nxETP8t)JBhNMMvc>(xK1PR6o6_i5u2P7tFT2N+5+M>q9Qtb` zFxpLK$V33v-sD0IbY9OO%z|KOpuik{gK6+sBD-T>eW)Sx8*5`V8zmzg>V89@R<NLb z=&W`~?E<0g8qBL$41zn=uE;GoMAO?aIK^3h1l`uDsID>YrF9wu&@W~6f%`UL7vZT= z`s;SqNZL+L#kC$We;1^ecn=RLFn1X4h8ss|ubrj~rWB5o0m^_s(!gOsF{{Oe2I5+T z`Um#LKuOsn-W_kNpTyrPEWB0#ebB2%lS4m|KdN$YLRoVMDh><#ylj;#>DVHD-E@VE zjh-rngf{4P5ls+a(P*aldW51A*?<LVj27y9-MZMBP%QLsdHDje0d0Q$xn1T+dULUR zNYQnFp28x?N4VH*cSrg)ciAXEj*|%eWS>L}y4nGWqm+u)A0X!Ap>Y4!l3tzzW38Wp zfRv(DDwENSFWuv9cr%)P3u2=pp(Hsn({Ds}gtV!N&eB=3_Dx9y-mfCuT}&0-smN8M zK~oO?iX>d&!88o6fu#!^2~k`bOuT@|Q>3gsFu)Mf|0VfAunVQoLXC_AS#1oC+HBu% zVZx&dM5)ng6x}x@m*AYoG0WfJB9=thvc7t3Nv2AYr-c%T;NoO!45rzA#G%?oS?JQf zD~%VFj+e)4^H(v<b(Vj#yTe3B;i_iLYfJjFG=8ay^V1DFXBTJ`xkVtn&#iom<3f<K z)AJ4wd|F{0(_@U@hH0%dk6PQ${a$c<{RLFd2jot*ISe0G^<Q=>B&UVnGUo*f!fM<< zRRz4ud1xCZ+O|6=$P^A<0PnS#tSU4KyW_vIazXlzb_B^}DrO<ceppfo;{YTc_vlb- z!{Tbl^|!G@A>JG-vhGxA4y(oVRjEVN(PqCir;=elYQs(*0{e>9R9n$hZWw*0a)ULh zSl@QW`q2;qL<@w&?NIS*;398+H2i+BT%fQa+8k*s*JSXKFg>ePp#A(2iwp{%%4?^e zvh#=V|K2||_C7*4vEKmkxib{LYAkeRC?H^0+e9+xCzBRup{!WLD~I#kz=+)R9TcKL z)PL_sIr)1aSqCV={xT(X>VSMnyuiA)LP2LD=>BwPa}YHs;)2A$i*D7PZCYpivjG@< zsVn3<JEhV=&P~_#^5)HIQMrn=AuXbN|8)Jr<(@IuI07mh={k*+91%*rL%AhAk53SL zJ=p+cLH9t(JgrqgF6+m}IN_M6->WVt24S`vIR^NHLb@T<MR7QS5ii5Vwxk3ymrTD~ zN;k{C(e|GwiKRP`Wx0;ctmOfgC)p~diqsWm_UosMO`s6VI8Z&*VeTXMHp)6DYZB1d z`UcCnrTqXbGmCYOx*2Sud`k6!U6MpV{zwsnmde>}ww|I=eL>g&H)pvj*j_%7vR48X zEAf6pO@jWEhyYN_c_XBId|UpgPhHQ8rFUv7Vt}NPhSNulQ5ne7H}CMYU>k&<8h1Xs zE6_lXOgvk7DtEAxJiUfeJ_uGbAO6FmILsRXZ$!o;!U0&a^dFa34?6`bamnnJQ#b@1 zH3??addx-qK*W{M3ZVPK4-ZuzPz58AZde{@a=#!T`=n421t%DfV;9m+?qaP(tO;Z^ zdWO+&f#5W+U>(&Q^1Qyd3%+|{Am>|{Km7;gx0g8Y2wH>}VR7?ktSgIU`WwDz2!&-E zuqsxAF?*WKyvHTfV&|&YkM;6!g!_U`$h|(v^79#i1@WEvbjO^b+_7WFGwH1ET7IGN zP4sO&KRb`zacTutNm(?|Fp{+0|KeCOWpcHo;3G|KNvffXX6xYTj&*}EhJ&Y+JAsw) zCs$1^to$lEU6V6WnVMZHs&>x@0&-k15fAChtF5N;EJlVmuMk#zJwt1<lf5P1p60(x zb$+yKudiCHl*Oz`#k+YEo5|ww8l$NP3!&N#pG*A7Z?S(^wJ{yCIx72PPh`Y>Kpcq} z;5?w%?Pi5urYkwngCLXOWG~<&%Kh(MO?$E)K4~Y(I45fg8W^|()9I&?DIkUy!qaSv z7CQ&HGpA>WXcOaf9Qi>)0tIGRJ*UD#^iiGOuH*6VE^AKa`xMxh)E!AH@5;DDB{7}8 zKyH<%*9xe=72e%Jfdkb@l4I>#Sslt0C!B$$mU7#M8r!jVweGy39C!mY9Tj=k;WZ|> zGLRD#npOoUkNoxNfC2xK{pi<)y*J6GrSEmut{|!^hSJpp!__yZ1ZC_RiaZm>kQeTv z7IW!Cq5k+Dx}$rUo}6e>O-;RlM}*BGy(l6T%2lpjgV3$)KOsK1=c?{o95J&Ckjg$S z3D2JZwt+bdt{?er9g|<!#5@)f%D=m9_SA=%fAOhG+(n9A%Z%W-`7OwlHoMT5ex&^F zhf$945Q*)E$5-A%3z@ZgI7z9z{nZ|kz{jj~DPFEzV!_Q5%IAyT(0b9TjyMw!8b@ES z;sp^#`jXFlpx&(FV<CJL5@6vkG`)HEKWV{+41u?&u^@-m{pQOQX{(X*QMZ@28*r&* zgcK;WmOvA#Lv8U#66}H%1fy7Jw}M+mszn3~U{aM&qGb;PgXG=M$|XV_h>EjpN?lTT zJS>q3nWlt@h=hC1rC@k7(@UrsQ^7e(+x-so_+F@)V`+ZfQPXzI>4D;`48Js?PB)>* z$BK*-Hk?E9D&gh{-2ZFN(%JBZcz#phY(N!j@3)0ZH1QTrJ&;&PFQ&s?4u&flkf%w0 zOI0-Z_XN}GfEC4Heopksp<rW7I#SuE1n8g%lPOPl4hqrt|0_RRh8mN&wCR&xr_PrL zcXezofMtXPnE!hiILKYKI`FxNLg56}`3Nf3r${4pxYbb1^*ozUfdz5*?j-SRun-sm z+uOQptjtcEG0o6G&M~GkUT8=7JM^9I;F&8N6B@iwU6b2zC;VX%zYeTMTamd+zF}#K zuDMY(_UA|F;;heQ7YRddPmgOkfO#`g#)mJa1S)V31w&G%q3yR+)b@ZN_GA95TNyk) zKClsa$6NMs&x)zN6#%o5;rOUXUC)!N7dy>8YUx#{j&q0eyfpc@PBPhU33JyIGyTlH zNR+r)^aie`!2&Dcbxl?2T#6?mX!0eggda0=WommZCn4`^{^0X<Oi&)nuFdx4pu5<o z9uAMof<*FZglFe%^|AH4#%ow26iLGt?IXAq&)cnzqo|%J2abuL4~8Zka9&+(_RwKX z%sp0W&ByA+#7KWWq;b{RM{#udll2s|wo!i@@!Vi+9pN#7%}xByz)-pD@r}iDX1!Wv zAaubk0>@88i0!7S!*U2ZolU86jd&KGAf>9CI)S46)he#r?AM4i`_*+f_>XPhE|=pf zfC)r1P2y^B7}=IZhr@6|ZsJX_lt*u-LEQ{bI$Pnl%2_ZQZy)O1QmKBYVtGiobEMo~ z|Kyw;Jm6gAcV=3ZDAxzR6F=-2<p=co46GtnoqZ!Cx|;`jvuyOn1xlZC>ggVWdRc<% zjF9vl04)+;KG8t+Z-_Hj6)`Tz4AcIu7dsG_@hBE$3_IFx5+ec&St@r7RKuS%0ED5* z?c^4gzGc%6-r#cT$Lqej-r^a5#Mv{Mp+hl_<tH7w%bYPANzVmyGMh%cR6UT>*tlxZ zFqGu5;w38}ieNGT2IIcfU%ls_vgK!tCoxh3g@i&4t!=oP3Q<!;{=LzXI|2@OO~D{| z48S%IreMVM7)m9X#WXHbq=$Vp(w9FJ{Fs2>6j!!a0%n~?TLQGg>YyECTQ9tY3&}UA zU%+=!N=@7`FW-s_%b#2%4_a~VDlS3}jjp0w6vO6$ID;Vyyi=o>nz${xF-AVh4*RV* zT*uIU1pBt<r$%)n-s0eEi7yF{WvgkG^%Z?iW_u}f=(s4o?jVS}HNVV|#ad3SDI0-q z0u4MkPUufg=DgS7kAR%ZhP6QY=Ja<?Y{c1qa2T)S45ZQgOg!ezJpT7>j`KB>H+Re( z98~ryv~0-hLexLVL`?k3BV4brln^8DX{6ip0fUiR$(yEowOFvMD1Kkx8|r9!Jcy<0 z2C}ZM5i&}j!L#w#!l||{YG$Hz{z%B4k4cu_#vt}0TWT?X6d2V}-b|iC&)a+DgFNP* zhX`TE7138-5m1c#dgy>PD_=44cXyGG0#lJ*midrX1!rDcH+eT;pI&s1_GRpZdS3GT z$1WlqJ$th|rlHnVS&X7X#NowIq920lmDq@qD*QWR&aSdKR7z{yv7kwfSZ?$sCauDJ z2aqbEAM4F>9l(#%<+0Dw6a^y6#GpeSoQOD0d{{Fkj%h^mEx8q8RH)Rx@?gT7V{p3I zrvFOgd^p9wjWXQhP5M5Be-S^lLs88_;58*cPM1}1L<5Rat5z>h{M9%~-i7i+C+)ob z!{}@F_jIhe=fDuAD`E@IN45d=x`Wn`f)xmLIdV<+Tn4M(2pJ>bv6cW?uIg!W*xSe` z$m*Mf4tbOBCO9dI!qO1CMOa~%%bYAA0oBsi-wyc58oaW2n(-h$cPt?Jgp7&dGeIi5 zBl*S5qA1;Mk!}nn7CU2<Dl`D&>ymgF&R0!8a|-`la53hRx_<E{gCJ1*t27tr0px|L zKxLG_PoIN;aP*~RWB}L$gb0Vk{5gfX_VOw)k!LuMAq_d`u#{!HY21bYjy&hfxgDr| zw0f-dy_?hIH~!kg5{AJB3sr^_n17tk*em1>%vY$r7*}GKwJZx3xJXd{G(q3d#(?cX zpF)X`jDTmTYtn1JCEnt;g+$;%5_OwI1W71h#<ySH-h$Sninda$BG(DMx_A)B2oI(- zUy@zbkLpjs6BKCLZWrXB5Cz+>A;0&IaT=mbc0`IF>YVaZ)NcY>%`iPXXh{H$C>{(! zW0ll<4$+&4rz1W0pw_ajgd!u6;u@5gz<^1ZCeFT4s(feseJfi|JAvL2)lVuG_x>1v z3;Xpudx<RUEb$!>oVzZROQz_Z7wp?cGqTB4=qW=EzZ9IC65?$KcGvi@Sft(_9&CBG zD{lvlf1~eiEoByUt;2txUT7$MDV9qX?rWF&_k?$&r|{9gmESx}LoN_MqXV`bcu$O> z0Gg`LLYo<g-}|pNT>beq@i=FJ+<~VeT<KL_=it&2+GM)(`nKSP11<iDM3l`v^S66+ z)I20<T9p5E;1aaa+qhcB0g70`E{c$A_U4pR`8=8#Z>CTQXBB=m<e_orc6mkCisJz1 zJ8J4;AxIG>!~v}thdx2o`7nCEX-?ygNz$-~<F%iIC1h7u9lNP-bHS5>m2=B8oMIKX z50{EFtl01&H{`JLnoWYsi<s&!a2>#ArO#o?UQr+k^}X)tcILrq=;Ld82hvITb@dDo zDK<Y1ug4Yo1a<6KT01QEncq-S2dxx#zL3uRVs1fSWVHq&vEzC|vV{dMuJ0EqrH7ne z1)dggRfM2!qhy(iOkTj5o|^dIaeGf%?6SJOH(<MI+Hc_RD2dJh{X#q*sM<LN%f~p@ z*_b#Cw^y={kXU5T5;KF<C$iLO8*KCK*>H;o?{RyAkrNslFD=L0?5<_*9VMH*ERwG3 zNk4rLf~L9l=C;$^A7kN-PY7h(pBSR9L_=!G_`NKE9wq4mR5C-==gs#=1{uOuR9mu- zcT0YDlg<@anib5J=bH^Bx|xqit>RD%Pou4~x`yI>mS%b5noDc$TirLcy9{VUm-!ct zr8v3DiVaKzlOF|Lb<!J!yf>$WVY3_44Fg`g3#O&xn>_pyu4TAqwptY|-nT%xYQl&j z?5|Ij>=40qx~wI0bYz4y57t(20!ehTsdL~zY=a@L-UQPp49WSRuWFzgTK!6DC9|4! z1<@5SE=J7K3SvH(5yZotvXCMYE(v9uUN?!VH90Gv!c<M(5em9LbDCIbQ<XhDk~PIg z%C?!5n-XJZYCcs-Z+8qDR~YJwh|0F?_sR9}Mz^2qlL$ymB*?o|2<Su!o{T!J7v0G; zucT)IGtGOmV$m=n+nZO#D3ZWOkl_qfZh&zzP_l7aRQ?Hin~<G;Fnr4K4i{i>A4>~R zb&nBxr$u<2`UqYtI=Tw+2v8j8`?*-9rz{ftRk0cXmD(&AzrulHt6^;+PIWQsFO?Hy zUv3pY-Udj}F`I?9*2k(A?bM=Eqk#k3Vi3%OOgtG3=2yaDY`~q!tSR(HV$1{RbA2%} zjp&Yl3an>SNZh)n0CP-(Ez#eN$;#5hA?C-tR<c2nfW|Mn#K*xa6v`sr0L(=)C(fep zJrL>tFNP?2*CD$J0}V7-d)^X#3Zg$ral$o;HqVys?a$1}#e-5hluoFRIt$4Oa@CS| z3|rJDFD=tlV41CU?7-7faaqTTIX!v-5o%6n#8{d1A*B~sHT7;u>)7|j{V+K06j?x? z&L16YLh;CJ8*Jp)jDW4$k3+r*-F)78P_EGC>c}wXe?i6zn>9UOI;?F@5BY<%PMeKq z27?mK*G0imHbPo$ayZ<Xn4ixlgZQ~Ns=t1N1ZCO|DpP8&@OPwIB@5aMaRbl5ZLJpS z^LS~3xN@YYdMdr<3b8_=kLwDjQ-Qfn!`$Fy>Gu{Z=LKSm3OA;5FXX{3_&k&kq<~KE zHSsM5X7r}dOF&f@DoZSn2V$|i(}Z&Fpq+eAMLzQ*3#aV<__%P<X13cuf=t$F8-)8X zn)J|(CI6g;piM0<nN%NHIdybCxE-Yv9a}mfB3^%E|F7vYR`IrfyM<&V(1P0uK?-Jv zNdyTOW1o2>k^#)t13e#5NgqJqZUy9WHQLq(%Le;EVe5S@;H2k&+wYGbrRtzG+%Cd% z$Nm~mieFy9Hkr0P9)wW(!~(VY-lwnaVb!%-^g5AJTgtRi;r^N`8PF-AN2qd_pU~}I z`B5|vKb2J?Xa$W~MDwdf$!I@1dT~k}!MuhBp|h5M!%`G_?YT2fnC1|)hfBd#ROhFW z-xWvjT{iu13Pf@etrVo;|KcZ(VSk`!;oz9K3PI7;wIBfA{F0p+H|c2&RMmfltKR@z zAxMTFwsOb1vZv!IPm%s|3<mI}CihG4i?zSf4kooj7m<_X&hPPi?{qJo2qb6^F**Qy zfq7nXMXFqRx00vNb8h4kP~wHFO~_EV91^A~`y+gotaI;PgnL<b8}rTxW~9EEw~ly& z83!$j$%^2TJC3fvB`D9&&V<fM*SfYDO^U15<5>dQMlOrQ&_1{l4HEV~QF1wOfKWY3 ztMQA3gr8E0p#$Xbc>GIhs#7XABDlDN=#3R|qKFY#Z?&%}ux|#Bn*5dg3;rI6^MZ;f zNNuYOWbj3lE4DYLf-~)-O-$6S(P55XWiNfIZJN9{Rw52ju;o{eQNZrvJ5s1mKN74p z=_%_&)p)&+(7BR<$_fg5I_-xoxwbkR;OHHuL({;|AZ#!GCXJvZqb4T+mxf||0fLt! z^z|pj_Tn!jsQye&i?xJqdg`9h4io{J%KmgW_96sgBC1*kjq5wgdt-5h`hpCudzRho z-(d|oKNtrp)B3hluT95q>qs?Ho8;Q87e%@QJU=-HV$}4zmC??AcfVw*Uv#2j^uFr# zzpL&F0pG?&gwYiLJl>$W*mGvgk8|+IUW!cu1esWG<%i!U-xjVCu#>wynty?4`b=EW z*%;EO{6nq0OpcZATl+G~R`W#nC=18Q1(g|2{`4BX)!%_x9A~-lH`SQoGOn4&G1;`F zU7gc!6tM{%U&Pu}w0Dd_!Ps@{GtmY43^l8}^&>H+*C#j*PBlg;xGfAp#a8T06Pd$h zWYPA_D}B4;HAcG;OXB&H=HUcy;m<oiGkp-q1!GJ<RulMEc?wNk`3KK2bki*wVAKsI z+Ua_DO>WmGPvYc08)m<}?p^}o<1@MW$|^1?CBV3ATibd!w}<2V@@f|O5SnT%2u2nB zXiYd)Nh4JXHL2;e3<hOQP#U6r7DqpMY|RTCQav?hBvSIv2fCiPGGNa?o6lz3svrP; z1J9E2Be>?Wh|kt}*Rpr^73h*vox}<Q)#A-u2S6z-s;7Ajcrw_`BW)-r414N$z(~?L zEypp)U`5hq(+yzr6>w4;&=as7#d9^lpyV&C8Cp6$Lo!TyqEtsto}r2k>h~_C2H&Wy zYXcWBKCd#@9o!D5M`$q$^3iB5B1%`C);zVW$!`Xokqs)8TX*(XNPAHBCzleru+J}K zMDeAUu>BJCW-lIhv}W&^y0@~EZ$^`WhBu3?jpZS}PD>HvmAgvGApCjF7P?DlC?h8E z=n8o%4aljP!e$RLXOEbs<l>pH6wWJA-4JnW%WRo^ZB5kwNTh0V=HE=4z2MpjJTpN; zYgz=3MOmVtZf^K1?A;_>{Al9*;wts|8rS#i?<r3~0<Oz>PzlnKeBp2@vwDv|buT#~ zGv_2I+1Z;fFRdGX*VX*o06rkcRKm!KwGt2hQ+$2%*RdI>V$b>`26D<MO6^)ar92IZ z0<<H`0{p~WyyyTxM7Ov;3Ok2a9bC}BuPNYp_rZG&9pA4_HjQ^tA7R1%Ilh<j2`nYB zCr#MfUizL&Q9&wEAv<``X)KarfQ5#VnlL=o=a*`OQZ*UoHle=NW+N<&CIw%R$}^qp z)?IU`-`WrD^@*+q^r$=dVc3=iBsw6JD^4L8%ZooeUEAEUGMu@7P;1)Iqts2HtFwr* zFJDmIXb0G@C_ImEN`O#;)rg_?_Nj7qkV>R04}2HG=Bb27s`&*cH$(L6m4@A?ZbEIP z<r(LgfU&OthxP&V-y^4Ki|wV*${cgmt#Ay1q&E&Ga|x<P{+Z<I;F%}4uhP$w+9{F! zzmdtJLTvMj<f;Ngs~n<F*d5+3ufeO)&utkxM8AJzx{q&@{td|mFCb?#AFTwo#Dhht zJjj47?aMfl0Amh};}=iG->C>RjZG88K1CjJ?*1jw7kF|XQl|?hrf($8=*i3q@`ZQ9 z*9M`F1EgjM@WvCfw$fdH`*Limyc_0;zDqIViW1?H^6~XXyXA%93yqyq($hZCc+?;; zKWk`gDxlrd$!Dx8;w0}ME|`RIxc&yuUkQExTz%H|IPNq9YaUi6f+Mw#>6Dm8BXtFQ z?)&uCuf=q9c(~{2Y@knwJT;|;3Y5>(A9K^@x>hqu4KySGE8=Y!Kn&~I328O}B_q`f zl4E|U=OV@R<q7D>5B+fZ7Wk>bk(i%2jpUdTj;}hdTew=FV3Y#N2&za?BhszIoXU?z zo2O~bhW7D~@ia18FGLq0qT`_ChM2BiZucXLeOBtj{z{MU9K`g)B+OEv#eadCNe4U} z8r)R%d86s`7bBYz_gOq7%#HXMM2<ZS`nOz#QAr4B-Ck>d#6C)t0&i}RHyI09)nbQ2 za|=6kLtDy6o;0?B!`&fKzBvv>O_Gj4O8gi{@86WJz}w~YT(uNJ%_DvC+}d<3l|1hH ztA;rF1$3saB}(i2(6nrwL8DxHIv$Zve757B$Y($*wM<p_2sJ08;v3I{a(!%=4E@v8 z@}L2C;P*_FW?n{wCdff)t}5@YwN;VGnaWE_^e$_=l@W-QO!0u{UMy-3AR<ie0A{PQ zgqglWN$Z#Py%20<#LHcSq`d>G4J$W-JsR6etc(-H8T23nk8?}n9+ok|M?F)*0Iq=# zZVP(N0@08Rqg!HM2Qcm;YAzFQEHAjY&L_1b=~kC;&>Xm$9^jHBF9Of(RMM8_MU&@k z<XbvH?AaXoerM<p0ee2gPtZT6<~MQoO?AOReJ4@NKnI1M9XOv7W@``eT0Rsk%RuQ2 z+U-+UVzPDdKk1YliKRr%GXZ3l#QFIZpMrhkbF;3@)T@B~D1qho7jVb^=Xlz|5D2?_ zJAT7>HY?EF079#!suA^}L@1XrSOiU$V-yoo2Xo8tU4DIX`495KMl;gVm2)i5yyE_{ zL6!$j(KcWhiE+#c>4UmE;oA>9x?)Lj^?{rFEi*E?26ay=yRAIO%T@S|bS-oeVPQW- zkEK!4_l|3}zlcWtQ9TMmGL!8h_tlj8>=CtpSg*g-B{V7k8EB)8hJE$yUr`qsGRue$ zrKvfB_7Kp3(b~~|A>GCb+<(`#dbC0?(D9u8pcA-04GotAnjvJHga}D{97e|g>|jX( zs)_5JTN$#C*VGh2r{`iGb?d8xpm(9rz~}utXU2CH<itXB|Ivj!5>o-5n@wZeSc)|8 z|EW=<Ao3iVW!)3zS#OXlH3%)$p=2AeIW&W2`!eUn>}T2C@E&ZNJ<I7y*9zk3N^AX7 zo5;u=?%EX|qbm&K1)2FpGJh0Ms{QZTPlR=AyJO#2&5#){T5c};Tk3bI&=F?3N5!R1 zN0@XkOv?;c=Oy>pqIug*LCj$N^6&Z*O>CiQ$8FBf@=PuvLDl<{Jpfctqg;DTZngD_ zq)?!2qvQO?icRn6I7)k-iBbAb!f5Tx2kb<ueoWaRT7}{LNvs2w)B|=4)4s3iW`iEy z0OWlndDax*_p4etu6srGbFuY-3$`RqpEjt{n95Uxo~j3LM|=q%F%OjH#2Co%xyoyY zcmDy~1a;7eH)}T9v?Z@?ya$Kuyk3b=!=IO{w2wI)>5<*xWWxojbY$!%(iV%4{3(a> z_JCu+epKd~Rw92tbmEfz@&9G}!LIL@$86fq<P)L?q~%anh=oQ1HpNNJX));4fxKQ2 zCqdhjIky*U&g8<6CirqXKaFyZ9fKt@dSY-4u`ocuHG7>v8*CnpbamCayb8h`UitZZ z*Sajc?{s*-@zd#s%0Aj_{lO2;fHz8*U&*dE{l;)o<7_^F{eI=<=SBFppp&?H1=V!I zht`0OZ6PG2k9dzZZbPzID6nK+gpQ!!hxCbab)e$Yg`blK7!htFj75~NFIdSH?WyUR zaZ5O%>rp{xbt_BAhn)w+uK33dccIqXt!yyLqXRJX+!6bsAMTBeo}jda5J+&~uB~t& zfQ_F8c>tG`yT}xdzXdRn#w<2o`muWV)uR2wpJiAO=&y81(nK}TP|&CHZg(yozWKqA zV!SXEb6~w1e;v2f?=m(WK%SSW61lbiOJTbv;%YYeyF0rSWi%NJ6x(kT7;DJi)vy}J z`+Fq7?;;%Edg`KC>9*T<Jsp-2sOBDmfqTG3tduZ&1-ZxN^5^q3<PGNI5r29$2DpaO z9qg#o$icnd4B-1o@XrHx07wWmEdUp_6_R{_Mf2oyhuHmZ()hwQplaBa;LvgR1IhRa zv}YAnm=IsGuFpDbzs_IU=$x5uH-jKuvH)>VbCIUs5hD4SQc3>pVJ(wEvw48voI2Xr zB`MR~-bf%MfX*(7>hM-q-d}J?*6Xl~%_>(<3i?T$LS?K2j&gri99N4jHZjf?V&3xW zPw^ny7R#F_pW3reP{Yz>I=Hs*N}_Hnt9}$n2TT{Zz-G3Q<U#`9KEI=Ge%kUGdA3UY z5a3IOu1%46mb9#PbIW+sg)B1!CyJD9ClNGmpFW@PE55||O8L(l6w>Akex#bJo<01I zu_LwsXqGGfJfBKbiLrPDJKf}A2-_@$;O-HpO;FH*m}wL^_5Jek4*npB_*9oU-9qOe zCWU0*d^d*U`HHa@bVN_yMqPov|BCMd#5en>_${`TiB|PE7$fL`%IZ~~)%_o5)B%L* zq#t8oWTV5{Hsy$EzSt5ry~5e!fu0supW%_<m8nwcR)zxrpSYmZgl!+k!PNu44_dqI z@n+t)+8L!K9+FEIV9+L=xuV>J=+ImT1CsRNXN`$cIgm*SN^giDJOEYuH%>!6)!R}X zeF51rc|-`Tf(Me0j<nI9e{jMR%6orQ&$s!8^t9->6vad(l0o<pWKmcf2{kGhtsO)( zv+_{K=_gZo3Y)YDB)g?^Hi?lZ8ekLVX<|b~7yml*8@<yXVxp`+h9EEbey$H8{O`;1 zk=Y!E6O(wGg!JD^@{{7P(F$k4n*f9}k9_qku>a9<I^Wh5ord(|_~nP`-y?}O<Wv?> z^wJS>Qx8}BiRQnAD*^;C_%^ebx>VwDsi#1ZX`%2)g}NhmWlfOuTuwid^?15)PQAPZ zYW^wzoe=GZ8p6s(w;wR|_}e266=mA>W#QAazm&jX8M5>pw`ea<Ys5RoMRK~{<oW$5 z3bI=qv{*^eg_`f%XHcvFkjR;Id`)urVxE<n_WyLow_T?}wG78vMPCq_dfQGWS!@(w z+^tO6)wEa*%K#Atgz2?CBPxr`xGmwyaaa`kwCoZqh_UuN+BBbo`pO|e;y7U(yEF{G zsVzg?kiR0CR6&f4e+9P4sB%6KJ$~bNA=+3)KZf_aB6S6D+MXGf4Gpz``eH&QHS9vr zOWI4ex$;zUp8qx#<t_p~9HB?s5F4CbV}z!%$Hy<?7yIQ^O6NgH9EXU7#@@$VWUOo# zajX(L8WxMUb1PD^9>P8w;n}O?{s2%z|8QHW=S#HUe6!%(=PkUgu-Zky5khqo{WaPv zjZ>?x%^*wh1Sp=qLBm$j-Aa?HMBqQ-s$hfYA^)}W_kLBj5SOSJ=^5=6wBL5lHwit+ zdGlM{VZ>i~p_=YZk03{Dw`(}aSxr5Z741dUUAt8YxTiTTyT%!kg05_ee-6v4)EuO^ zd~m_wzM3)VS~!qF<ss{Bj&r;XB*Uy1h}kk^ch&nYzPOHHH{NNIURnDulvKc@rdIb1 zJq;P*^I$Y)<IjhUNQE)V984hM16-^-3I|#E;_l{D(6(GGbGz5^*ZzpdiF7R%Y7Jj5 zK{y3&I#W8*EOcF`Mq|8Av;f-RzjDeL;)|Y9M_w@*a}IOMF@}PY2bW83`$f8@YfcGi zDO{$_5-9m|Y{SmC!6$#&=0K2*!nzdw^K~p6n!^@9#jsFV^!mKtSQBZ^i;L&&2Gd+q z3`h@?fZz)tI#3^qXVV|`wR|u^D=$X+3wxIv@`D4rnL6!Z0xLo`BmC!rIGygu0kLGl z7b*e*>VHwM){`-J@qXt3G}`IAg1RwCUs4?Bj`{#5=@r^JS<@9D9GsXIU_ZAPRu@8K zJ3~M+j+T7R&dQJ0Is#V9E#}|3>pj%fQ<olhW^~}zWfs)+?eAl*`#pp4ICx_Q_mDHA z`9Yy6D<yy3NzkdRQe0FfNdrzt`ooK(x1YqFC_VG6e6D06@KR_l_i)EbS>M$NXj+9; z4)+xI`#pV^Z0nj5Fm3a;2Z_9d=%~hf>CLe{^Yu!9?AS_!sw5!3*jrDPf-cZ3=Rdi@ z8a)q$oDYv=;f9oPGtqYZ$B<R3DN@aY67LMs){*yHjtQM)KIRGZ|GtW2jZNak?yR*7 zbg=Oz5c6bK4sjcbA^}Nx@vnS;PNRr4a@Hg>537bNi{Y)MLKZ+9m2jnR)o@XiAr%uv zVeEQtv~h@Q3fC}0ow9F#=%$G2?V?}ZZqDwblbiTuM7juEII|N62hSLXa+B(X#{YYg zq~t_TNk7+MxmkTTAAf;s@R<R)KAxriF#s?f;NRi-FMakKGz+8C<iN$8AJF*KKx}G> zW4I5~_=PmE%*V4GQ`DQeH^&NEJ=#GV2sFkT#9Ah!EJZy!oYHV3Ul!i#0oz5E3gu|! z-r?lcAbczyc<FUU-*kVo46c=hFB+0o)fMF=+J1<i0TVkgzV{A$aT6K_+oLUsG#^O{ zUFBHRqf##2q*p2G2E{c>x{KlP?qgy3G()Mnd(;2LKXyPn^HS)|n^2lKN*F{v+lOqc zr<Agj8dN9^nU!%sY;|3)#Sm*(Kmf)hg$=rUS2n;UAiWFU&mY7+^2eTP;Q&26@QYxG zIXMySa0~#DPIH{jtabS`5{G}4f`LSe_YD2$_SMsZ<-|h^D-FgK58<vjVsGAv`)>D2 z*b(2)Lu|jtM-I9a)`D2M^CF^(_&<U>F;CdsZllfL#7U_Wz!s>wfJ=S8y$$9q6Tvly zX}jJbgdPwI^Y_J^C3~N%EO6X7&0>LjTT=>!*mJ!IfrNbSHFWxzS)EOEA#3a)n?&?! zTN^veXMI_p^1%uea+Cek5(}fnY5`a_+ipGYz*4nRSekt>{5(wQr4)Bc1$;MEqwQok zAeKY3SX9aXE~oGc2{3<;8VGr<dKT`_oag`)Zk^Y$KU}Km@b0NXz}6#+&95-E$KW|h zRp3?%TjVP0^f9FPPt7nDpz%ypq*V@4XQXfoIH|WL3{<Qo16sH$!nCK%I<%x1>`H0` zG{+SuIQcx$uoK1V!s(9o`5al(rt0#U3)+0P6ES>r>ZLr8%SN`{aNsG|s5loAE$N#l z&c33Ej_sM)PfV+<q=123jcv)n!h9|?a$Y4&?S=BJ_XV-m95g>zX->BQF&=OI0ah3^ zw(n_1b$)F}rWmfd9W1kL=8R4E?*EAWzb5jjG$2Cn6R6Sz-Nejt**b6k9raOpzAAon zxuT=)T$-DD(YW{}TR~@`C@|v54x3E>=mSvsjnEg>Fl`3An2up0F1{|;0wtOwSR2^g z+Q^IIQIOJDO`4ls2#OHP!kYml(wq9b<Hc$>(`w>^FzR2S?FLe|vs>qPI{C7iexOuD znnC<+s^LI2o7rfPpT^`xPJyS<1;g00qq^@q)Mv_^?|wX3f+z3MJI-Q&C11s2>iDjm z(Gc(6O6R0*Fi_s+jas?HUEvR}e<3n1Gtc=#D23AfBP}mq8Gt(7lxy`guop~@ahxIs zxq|=zxvqas03lsWghVt?-eTj<TOnt7rqg_h8hZ)iXhDuwzyu%y1<F_D#;e|dIPqz( z&aY<Z)C!JlM}Y}6DJQ^g-!<XcATjtIRLUFo|Gw(@4G=OKRCHKZsbG+W;1{OjT$jqE zu%ySHAyaX`*A??_ZH>MqDrG?Wo8kDWkz#a^m6TN0F5O|U)w8A|>3mheC-Yc|8W0;x zF*dct8K!BM_kT;E;+DIrAcLFh&`2)++FqRX3J#9|PdRO-<$0ric}^B$QaHI4?%O(4 zyw<FskctB7^mn1DZPs?>@u+kMfkQNE$MdgcWx5UOjgU9KtobSuy|_QaZ;O95u~@we zFihhX0sM9;&$BRwQ^A$XYqL1<P;WbTH?pm6)?g(f7$rtSs*Xc0(Mx_2ohr6Zu+Pp) zyqFQd;EZrqHs*T}-Q<M)7i15tHwvk0O$n1$bE!TJLdkmgude;HL4$Oz5V1oBVO1ig z7M4eR^SB|M=|<1jo`g#0KGegUDALGJD%KSBX{Kp&<dL)ZFo$yL!GTt?&zwoEI)iT> ze<(KAXp|GQ{vReXooCot@FQ&c;RaZ2F`9r&D(z?OfhI+0qp{&qc;J~Sc|RJ|gP|Le zg3%J)5M-IN*nLo7@<axqgBVXV{0T_8zfKt-qWvXPKGOd^f*Ol7U2;CgySQ&;!Z!I9 z$?#Xv*W@*jETAH7bn(WLxIb)?Cp3};LMzBjD4oqkU52j+Q_|4C6#x1hJ@UI~gv4if z(PI<ZQA0Q2?qtj~*a&k<Bb^YpABkCt$4c>l9df&E7m5k%MX&pCkNe5DT$#mMfVf5C z3Uhl2a#kN0{HF^xVpzv)Rc}hEeGOk`Y9HeY?Qe8Tp>>4Y8>++<glPU`#Ej}AR2w66 z50XEw`oG2c|3aU7(06JW3w1l>Tx$jn@Q;Zf8DRq5>V9r9O>;`rbNBP}?E(ZdLqfZ> zIIK{+jp+<1MM=J>I3GzMQ1eo0-VCT%EZE0@h<^J5qo@EzTdIuWa<PCSF;@OJcx85@ zgV*ZiF)?DhEI2|ymK5nPCdgo)rrl*xyxFRUXwa4C&N<(nua^d63$qb}9};RBaTJp* zA3hW^Xc%D7^7QS4_``bcpIY0W%)q{t)oL!a?*xyw`APaA6)<V<xo*xoJnoOga{$x* z&qEHh)!o4oFAu^i{1O<QdQ<7#!8`SKDopCLxmCyBKkb!o*0DZ|j%d!!tWBrd=!w#4 zJrRKX{QN*Q;2aJmu&S&|ir8W-bPx^(@2k>2=3MnR_PeyUdkbp~c8>23(PV6Jjo+X= z1zsj}kk7oDYFK{s?F6r@kO~fAXUyrkRRy3X1TMDUU^Ud*e*f}LQz)O{@ENSU+{&N5 zEqh~-JxfE^g3~pMW$ZKjz=>1)wNzp}+hV9sf#-pC#=tz%cs^nsogXb^i40RN11{Ys z&bm*~Nq>7>4b#b<vp3b`3$#jpzLV6?9@QB5d{<HhY~sMfHWlxQVmNU9!s`kj(9V8X z|6uLr{A-Dbpn{~vG-)!JSLn~fojICdb#!>0;amd1eCZ*_ZRh!PAq)oddam3Hz_1Yz zc2=vV-3r!BxUitpr5HKl&<aL>u7lX{JZ$Gl;@EfiSar54x5P4<q`DN%E6A?hcD;3_ zyOM2su}-3JixRCXSS>xk$lhabQusV?wc#hQH3lrqYgd;A7RxNP=t8A1J=q!^|CLw7 zge^t&j8Xj_q-*}62;Afu>P1)0UX@>O;WD7-#Z7v|)G3A01aMe{a>d9e=T>V^JJ>nN zhNjuOS6nNpM!Ol^R7?`%xN>DU4%}9zNwATxkuTu2ALj5P5>&-!PhqKFCn1ooUf}y} zYX0iD910+o#O4~d1RE^W&%R}yXT3<_0TQ`c+AldPBug2X@)UX!8|>i4fIejl@8a1R zN88*C>c`h82s&CZh?y|+*w*j}cyl<Ds$_=462vW|D7%RoCId<^J>e2R<Bt9Wuy$3M zgc10P^k3ZPY9UJ0YjVdMRO%~AFm(_)k_pqgw_XRr6tW;cr-ODfKsRY^s?k^$y-XII zk;MxA(*|nrk<p6|W?xpNCZn?Vb6+71Ryt&aCL<LK5EpE<9|{T*XmIt~wURN<=tp{N z!E*0rm~Sxy7fgef!UZW$>WH{TNWPDc6k>2Ra4YG-#U{ImycjXg2nM&4%bQPv>jOYJ zMak6J#8`Q&Z>3N$GL61dgHHA2+N=g-jNEiF4UDR$u`KHbf`xd9!K6q4mnUV1(wKkZ zB6fc8ZzIeM$QG63olnK&K#@57rWj;?+7GR8HOVPOvuNm<LcB2m|GTABHdF_j^GJcV z0RvbFX)e>sZ|i)yuS~$?9aZ`KWsrAq&pP4LmaBRy=Q?D6q>)eV<)0Vhhc)zI$0xAH zJ_%vnq-Tr%>7JXWgDa5<AGhgEjfH^*n28wu_{)+he~mYXDB5t!fE1#d5(&E!x^)l+ z<k?~W>PIvcRzbo@Jk5Un<DwMcMh;YVj3@kBcl4z2+9i$<yn;rLOv%c#!(LD0{A1m4 zR_!04f3h{lMy7L5<M9O_Y$WmJeLB1K*Qc?=l{pGT=0uOp@SM3GE5uG{<yZ`TTJdQ% z2UC}!Gbt^wB_aTQ`45v$z2ffNzAqDWWIKiegdyAfq?I3I4X}~8|LY>39}}4mK0Hwi z=kp{ST1GQVe|2M9ZXlMIG}>)dGb+6V?c!<RoT7vUpCr3IMPswsDN(Trt>~+V$F%A< zRrOY##-8Fcw?>O=c{bkAB98stfMk_vTh?`k6HPiikurL)E7YYyUgIH*%0O|Oxq?8P zMVo+-5fYE&GJ6S|U7S5-=9j4&pq<pf0Sf%XC5RT+ITCwBs=-6Z3V%(YbA$?6w6DT< zzmxtny{~{d$l(IJdyY6g?BD~Mt4#1bZL#4J6(5N7Kbei|6V8c{l8p4!hYgdYwB(3h zvig<^R!!snOM}ZU_M*jJK%wa>NuAR6MxEiEr=@s4W(dJ6FM-TIL7W`Hd<Ue}o0;k2 zUZy*KvssJ5vJS9QGF42jdLauIZQAhSebLAB%Cl)uja4K|{IO)$?_DuQCYF?srgO)+ zSz1>M@CG^z3Og=bjw~A&DbV9;H@I{z(Nffoh?z@V4-WkcR9_GmGn$Q9@brBT*(}^< zV-eTV_!Ef3b`3tEKAT#9R<P5mFSqdk(ERYtCT;HH<#Ipe7n+ra#9jMsw)Q*frS1P; zPu_O?I@ZzBIV#`FfHKjWt<IMG%~XZ|y5Ug~dX*^>{|V%=+fEo|giX4`1A&V`U;3-? zWe?{;7T@$5KDAfIX>}z3HA;4G;65A;6K3d2GpLPQVD~w|6$!@P{^z}*PDLFT<zAO7 z)mIt>h+do<Ao@HN{hnarHA3=avY*9_U>dW$sc~k2xu{W*d&ZQs1k;odL>K>VJ|JsE zw3-(ACxU>DC)IAtOy!vrncFUYclFBcK-~WN)LT%U^4yIh@e3)I)J3L-R)&=aN~>MD z<O#!XZ;AplTEL`}8!yFO-R?KaZyn~|#qAHC#=w$Bj5Fq}p1?XQ-8_%5?bfF#S_`h5 zNGzdX%=Zf@sBE{OnZpGQ+f#$rIQ&q?XEpS#TJw>sjDqPnkBFAFK&NCb2f?_H)2Ebu z!R3s?IY6y$^CE)MO@csRgifiQ;${Z}B%wC0bLbbS23=qy(gaJasOzpK&M96Sx%$$+ zy9dd8C9Y?O8`Hm+vxnqA9RVcD=NRAZ8kkhP=@eEb=QaXOJAls5l%L1FNepYdirHJ% z#hg?HYRqD2ocIH1zq#rB=$1mTXOaZ+_=NAPL)8-3lLN-I*q6o}?1G&g65gF%t7<En zxP#j!n%zr$E>43eW%QW*u#OjS+!R=Y*Z=OH76@wg6pcO!2eyvUHv|96r&6N#kCz?^ zv0F2~I&p+1D5I^WWW1O><BefXO&{c7(cVJ@;Y#qky@ym35?K-&WM(<nG_0_p0%`gy z^W|hl!RJDM4yRpDlgn?cw>@5J`8C=`_XM!HlP9OMH)P)S;`iD7E@!aijnaSY<yDin z4Fc^S?b>Vfv8L*3>2@e;Sb8+-lq}M5fyXu=pYYOjcpOgm?JUfdk0)&Q;0JY5^e`Ga zvZK`i4#r@EE|EI%$6gmXeU8_oe$$mTelshDK$}#PIdw{@OOy!?veK}=gpP0jM90vT z_p0u1r4`Y-fsFS@(~%Y703Kywr?Y4wfrs~*9<O>;uEm(#;&*SkAgw4WsKWegZ3MYS z;JrN;*z;ffqeR`Nh~XP_?v86)pLr&=qeeN$5Ze13m&!M#&N}<M>)R&lEi$U~c#!*@ zg?7>$`;lH|5*(MplVhzPvugy&=SOl49N_NomNA>;Qob+Jd|GaY?nUg+y|@#|<=EL? zY^>^Kc9AzM6QAvc!1=TK%kLH1pP_mBS|r=>Ya240u%R7Ifq&V2$tFCQHA=uskYHjt z3ai}wW`Fw&Q+^`WyRu=^y)jG}(RX?{o;4Nee@A%+zCO15en`~k%y192K=CIdgEwUf z)*0Mf^rJ?nudUtM*8VzCYj?pBmuDRY;EfnG1AZah`+b50>54)%u-^8L2xbbXN}COQ zNztW3)Ig+d@|;6`Km;n=D87@Ddr-V}RDv^8^~^v!Dl7j?jJQhDQiIxC4`NmyTZ>8E zDfZwiz3Ls{hv@bmx4<WQZ!;e%4kWM&W1Oo(VhY39t`MHx?TXga{kfPY`ZBUl=?!Dr z+zyPqFkbPh1uHPdZskTNoaCtlEFT0VWU4trkfj35(Y=sRbF}+T=)}Hv{<Fhtkn}!c zQwO#S4_k5tL;wN#cJQM7I(jh(A-+_V3wYetO3{3E>)V1plw4)IGlzmWtCe>w>Cf)Y zqx+Q<3*Ol^tBfhUMt1CQ&rz@{-(ce2!2`zUEoE8t5vuTAYY;0pvS|n@sPhg4yvg56 z76Jg}zp4$e=N8>W81U(EE}TY&5*n${rxRm=IzGY^?V{!7US1(Du;^ikGqgvb=rgBO z!DMAF1M@+O1z#p_NI`Ces%?onpeqpEd7{fW>j)60QS8QgPuewLAX#j}yE9K8ZO8(9 z+I}^zH+WE<(=AMZ6$sqe26`3Cullw883kp@KLJclR%TG|qCQ)(IO2RzjMHWs4ww+H zk`ubr2<$OUH~<V--H#p80P~S1RcScP*%X(PFIKTr&5n!fFx3PXST=MF+t1mkWmeOc zb1ncLZ&>q80li*w%=efKSly2u?x^q~BnPFa%*Nr=>Bw9Z_Dx)HG%1A^hQXqcXLli0 m-%H36xk&CSxn};5qyF%~#YK*#6-^ZQYR5k*MYtxco9}Qv4%7nx literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/settings-compute-tier.avif b/static/images/docs/products/databases/postgresql/settings-compute-tier.avif new file mode 100644 index 0000000000000000000000000000000000000000..cc1f570c7e76f80b6e3828bfbbb7d2985ed2a63a GIT binary patch literal 41167 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�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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/settings-high-availability.avif b/static/images/docs/products/databases/postgresql/settings-high-availability.avif new file mode 100644 index 0000000000000000000000000000000000000000..7dd74d774209e61c6c08a987434e4d5f7d4be331 GIT binary patch literal 38977 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®B6=N3>9sDa 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/settings-network.avif b/static/images/docs/products/databases/postgresql/settings-network.avif new file mode 100644 index 0000000000000000000000000000000000000000..23fcff820de532021de49ebe97f942eb8fbfae14 GIT binary patch literal 30323 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 G8CTYWFtY3b literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/settings-pitr.avif b/static/images/docs/products/databases/postgresql/settings-pitr.avif new file mode 100644 index 0000000000000000000000000000000000000000..3e73b5f22c76281a394f80387922fd1591e4aaf8 GIT binary patch literal 31699 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 Z;~psSmF<Wc0Rs(kB|!9j<nsWz{=jXyUuysW literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/settings.avif b/static/images/docs/products/databases/postgresql/settings.avif new file mode 100644 index 0000000000000000000000000000000000000000..aa6de37d5241760caa12f601a608ab69c99ec927 GIT binary patch literal 32840 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 Wn2L9Wv6wk*YMN_)4{Hi_s@QCh@5m4U literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/postgresql/sql-editor.avif b/static/images/docs/products/databases/postgresql/sql-editor.avif new file mode 100644 index 0000000000000000000000000000000000000000..24e982281f9173b251d4e39da1182370c6b82181 GIT binary patch literal 24588 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 literal 0 HcmV?d00001 From 97ba538f6c4d55ce50a7bfafc1eba07fbb7e93a6 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 9 Jul 2026 00:54:27 +0530 Subject: [PATCH 10/38] Add MySQL native database docs with integrations --- .../products/databases/mysql/+layout.svelte | 125 +- .../products/databases/mysql/+page.markdoc | 101 +- .../databases/mysql/backups/+page.markdoc | 1371 +++++++++++++++++ .../databases/mysql/branches/+page.markdoc | 716 +++++++++ .../mysql/connection-pooling/+page.markdoc | 274 ++++ .../databases/mysql/connections/+page.markdoc | 509 ++++++ .../mysql/high-availability/+page.markdoc | 631 ++++++++ .../mysql/integrations/auth-js/+page.markdoc | 222 +++ .../integrations/better-auth/+page.markdoc | 139 ++ .../mysql/integrations/dbt/+page.markdoc | 113 ++ .../mysql/integrations/django/+page.markdoc | 151 ++ .../mysql/integrations/drivers/+page.markdoc | 225 +++ .../mysql/integrations/drizzle/+page.markdoc | 172 +++ .../mysql/integrations/ef-core/+page.markdoc | 178 +++ .../mysql/integrations/fastapi/+page.markdoc | 193 +++ .../mysql/integrations/gorm/+page.markdoc | 217 +++ .../mysql/integrations/grafana/+page.markdoc | 99 ++ .../mysql/integrations/laravel/+page.markdoc | 215 +++ .../mysql/integrations/metabase/+page.markdoc | 78 + .../mysql/integrations/nextjs/+page.markdoc | 204 +++ .../mysql/integrations/prisma/+page.markdoc | 214 +++ .../mysql/integrations/rails/+page.markdoc | 173 +++ .../mysql/integrations/retool/+page.markdoc | 89 ++ .../integrations/spring-boot/+page.markdoc | 182 +++ .../databases/mysql/maintenance/+page.markdoc | 642 ++++++++ .../databases/mysql/monitoring/+page.markdoc | 215 +++ .../mysql/network-security/+page.markdoc | 500 ++++++ .../databases/mysql/quick-start/+page.markdoc | 104 ++ .../databases/mysql/scaling/+page.markdoc | 649 ++++++++ .../mysql/create-database-specs.avif | Bin 0 -> 32210 bytes .../databases/mysql/create-database-type.avif | Bin 0 -> 38356 bytes .../mysql/dark/create-database-specs.avif | Bin 0 -> 34014 bytes .../mysql/dark/create-database-type.avif | Bin 0 -> 41317 bytes 33 files changed, 8696 insertions(+), 5 deletions(-) create mode 100644 src/routes/docs/products/databases/mysql/backups/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/branches/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/connection-pooling/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/connections/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/high-availability/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/auth-js/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/better-auth/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/dbt/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/django/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/drivers/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/ef-core/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/gorm/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/grafana/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/metabase/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/nextjs/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/prisma/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/retool/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/maintenance/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/monitoring/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/network-security/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/quick-start/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/scaling/+page.markdoc create mode 100644 static/images/docs/products/databases/mysql/create-database-specs.avif create mode 100644 static/images/docs/products/databases/mysql/create-database-type.avif create mode 100644 static/images/docs/products/databases/mysql/dark/create-database-specs.avif create mode 100644 static/images/docs/products/databases/mysql/dark/create-database-type.avif diff --git a/src/routes/docs/products/databases/mysql/+layout.svelte b/src/routes/docs/products/databases/mysql/+layout.svelte index f6fe631eea..6db5d3b4c4 100644 --- a/src/routes/docs/products/databases/mysql/+layout.svelte +++ b/src/routes/docs/products/databases/mysql/+layout.svelte @@ -6,7 +6,7 @@ const parent: NavParent = { href: '/docs/products/databases', - label: 'Databases' + label: 'MySQL' }; const navigation: NavTree = [ @@ -16,6 +16,129 @@ { label: 'Overview', href: '/docs/products/databases/mysql' + }, + { + label: 'Quick start', + href: '/docs/products/databases/mysql/quick-start' + } + ] + }, + { + label: 'Connecting', + items: [ + { + label: 'Connections', + href: '/docs/products/databases/mysql/connections' + }, + { + label: 'Connection pooling', + href: '/docs/products/databases/mysql/connection-pooling' + } + ] + }, + { + label: 'Manage', + items: [ + { + label: 'Backups', + href: '/docs/products/databases/mysql/backups' + }, + { + label: 'Branches', + href: '/docs/products/databases/mysql/branches' + }, + { + label: 'High availability', + href: '/docs/products/databases/mysql/high-availability' + }, + { + label: 'Scaling', + href: '/docs/products/databases/mysql/scaling' + }, + { + label: 'Network security', + href: '/docs/products/databases/mysql/network-security' + }, + { + label: 'Monitoring', + href: '/docs/products/databases/mysql/monitoring' + }, + { + label: 'Maintenance', + href: '/docs/products/databases/mysql/maintenance' + } + ] + }, + { + label: 'Integrations', + items: [ + { + label: 'Node.js drivers', + href: '/docs/products/databases/mysql/integrations/drivers' + }, + { + label: 'Prisma', + href: '/docs/products/databases/mysql/integrations/prisma' + }, + { + label: 'Drizzle', + href: '/docs/products/databases/mysql/integrations/drizzle' + }, + { + label: 'Auth.js', + href: '/docs/products/databases/mysql/integrations/auth-js' + }, + { + label: 'Better Auth', + href: '/docs/products/databases/mysql/integrations/better-auth' + }, + { + label: 'Laravel', + href: '/docs/products/databases/mysql/integrations/laravel' + }, + { + label: 'Rails', + href: '/docs/products/databases/mysql/integrations/rails' + }, + { + label: 'Django', + href: '/docs/products/databases/mysql/integrations/django' + }, + { + label: 'FastAPI', + href: '/docs/products/databases/mysql/integrations/fastapi' + }, + { + label: 'Spring Boot', + href: '/docs/products/databases/mysql/integrations/spring-boot' + }, + { + label: 'EF Core', + href: '/docs/products/databases/mysql/integrations/ef-core' + }, + { + label: 'GORM', + href: '/docs/products/databases/mysql/integrations/gorm' + }, + { + label: 'Next.js', + href: '/docs/products/databases/mysql/integrations/nextjs' + }, + { + label: 'dbt', + href: '/docs/products/databases/mysql/integrations/dbt' + }, + { + label: 'Metabase', + href: '/docs/products/databases/mysql/integrations/metabase' + }, + { + label: 'Grafana', + href: '/docs/products/databases/mysql/integrations/grafana' + }, + { + label: 'Retool', + href: '/docs/products/databases/mysql/integrations/retool' } ] } diff --git a/src/routes/docs/products/databases/mysql/+page.markdoc b/src/routes/docs/products/databases/mysql/+page.markdoc index de42e29c3b..b026e6c750 100644 --- a/src/routes/docs/products/databases/mysql/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/+page.markdoc @@ -1,11 +1,104 @@ --- layout: article title: MySQL -description: Run a dedicated, native MySQL database provisioned for your project and connect to it directly with standard MySQL clients. +description: Run a native MySQL database provisioned for your project and connect to it directly with standard MySQL clients. --- -Run a dedicated, native MySQL database provisioned for your project. Connect to it directly with standard MySQL clients and tools, with no Appwrite abstraction layer in between. Native databases are available on dedicated infrastructure. +Appwrite native MySQL databases give you a managed MySQL instance provisioned for your project. You pick the compute specification, and Appwrite provisions the engine in your project's region with its own storage, networking, and credentials, exposed through a per-database public hostname secured with TLS. -{% info title="Documentation in progress" %} -Detailed MySQL setup and connection guides are on the way. +Native databases are different from Appwrite databases like [TablesDB](/docs/products/databases/tablesdb), [DocumentsDB](/docs/products/databases/documentsdb), and [VectorsDB](/docs/products/databases/vectorsdb), which are accessed through Appwrite SDKs and platform APIs. A native MySQL database gives you the raw engine. You connect with the `mysql` client or any MySQL driver and use the full feature set of MySQL, with no Appwrite abstraction layer in between. + +{% info title="Looking for Appwrite data APIs?" %} +If you want Appwrite SDKs, platform permissions, and serverless scaling for app data, start with [Appwrite Databases](/docs/products/databases). Native MySQL is for teams who want a managed MySQL engine they can talk to directly with their own ORM, migrations, and drivers. {% /info %} + +# Supported versions {% #versions %} + +Appwrite manages the database container, storage, backups, and networking. You bring the application. + +| Engine | Default version | Other supported versions | Default port | +|------------|-----------------|--------------------------|--------------| +| MySQL | 8.4 | 8.0 | 3306 | + +The version is selected on create and can be upgraded later. Upgrades run online by provisioning a second instance on the new version, streaming data over with logical replication, and moving traffic once replication is caught up. + +A new database starts in a `provisioning` state and becomes `ready` within a few minutes. Large specifications or high-availability configurations take longer to schedule; poll the database status or check the databases list until it reports `ready`. + +# Regions {% #regions %} + +A native database lives in the same region as the project that owns it. There is no per-database region selector. Each database gets a unique hostname in the form `db-<hash>.<region>.appwrite.center`, and data does not leave the region. + +# Feature overview {% #features %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Connect with the `mysql` client or any driver. Credentials are rotatable through the API. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooling" %} +Per-database connection pooler with automatic read/write split when high availability is enabled. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/backups" title="Backups" %} +Scheduled backups, manual backups, restores, and point-in-time recovery. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Spin up an ephemeral copy of your database in seconds from a storage snapshot. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/high-availability" title="High availability" %} +Up to five synchronous, semi-synchronous, or asynchronous replicas with automatic failover. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/scaling" title="Scaling" %} +Resize compute online and grow storage automatically as your data grows. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS by default, optional IP allowlists, and a dedicated hostname per database. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/monitoring" title="Monitoring" %} +Poll live health, connection, replica, and storage information from your pipelines and monitoring. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/maintenance" title="Maintenance" %} +Maintenance windows, online version upgrades, and pause and resume. +{% /cards_item %} +{% /cards %} + +# Specifications and pricing {% #specifications %} + +Each database runs against one of the following compute specifications, billed monthly: + +| Tier | Specification | CPU | Memory | Storage | Bandwidth | Connections | Price | +|-----------------|----------------|---------|--------|---------|-----------|-------------|---------| +| Starter | `s-1vcpu-1gb` | 1 core | 1 GB | 10 GB | 50 GB | 100 | $10/mo | +| Standard | `s-2vcpu-2gb` | 2 cores | 2 GB | 25 GB | 200 GB | 200 | $20/mo | +| Standard Plus | `s-2vcpu-4gb` | 2 cores | 4 GB | 50 GB | 400 GB | 500 | $49/mo | +| Professional | `s-4vcpu-8gb` | 4 cores | 8 GB | 200 GB | 1 TB | 1,000 | $85/mo | +| Business | `s-4vcpu-16gb` | 4 cores | 16 GB | 500 GB | 2 TB | 2,000 | $160/mo | +| Business Plus | `s-4vcpu-32gb` | 4 cores | 32 GB | 1 TB | 5 TB | 4,000 | $299/mo | +| Enterprise | `s-8vcpu-32gb` | 8 cores | 32 GB | 2 TB | 7.5 TB | 5,000 | $425/mo | +| Enterprise Plus | `s-8vcpu-64gb` | 8 cores | 64 GB | 3 TB | 10 TB | 10,000 | $699/mo | + +The Storage and Bandwidth columns are the monthly allowances included with each tier. Usage beyond them is billed as overage, and optional features are billed as add-ons on top of the tier price: + +| Add-on | Price | +|----------------------------|---------------------------------| +| Storage overage | $0.125 per GB per month | +| Bandwidth overage | $0.08 per GB per month | +| High availability replica | 50% of the tier price, per replica | +| Point-in-time recovery | 20% of the tier price | + +You can [resize between tiers](/docs/products/databases/mysql/scaling) as your workload changes. + +# Limits {% #limits %} + +The following limits apply per database: + +| Limit | Value | +|--------------------------------|-----------------------------------------------------------| +| Databases per project | 10 | +| High availability replicas | 0 - 5 | +| IP allowlist entries | 100 | +| Backup retention | 1 - 365 days | +| Point-in-time recovery window | 1 - 35 days | +| Max simultaneous connections | 10,000 platform cap, lower on smaller specifications | + +# Billing and plan requirements {% #plans %} + +Native databases are available on paid plans, and a payment method must be attached to your organization. Each database is billed by the hour against its [compute specification](#specifications), with separate line items for overages and add-ons. See [pricing](/pricing) for details. diff --git a/src/routes/docs/products/databases/mysql/backups/+page.markdoc b/src/routes/docs/products/databases/mysql/backups/+page.markdoc new file mode 100644 index 0000000000..410eb7980c --- /dev/null +++ b/src/routes/docs/products/databases/mysql/backups/+page.markdoc @@ -0,0 +1,1371 @@ +--- +layout: article +title: Backups +description: Scheduled backups, manual backups, restores, and point-in-time recovery for your MySQL database. +--- + +Native databases are backed up automatically. Backups are stored off the database instance and restorable from the API. For finer recovery granularity than scheduled backups, enable point-in-time recovery. + +# Automatic backups {% #automatic %} + +Every database gets a default backup policy when it is provisioned, so you have scheduled backups from day one. You can adjust the default policy, or add more policies with different schedules and retention windows. + +# Backup policies {% #policies %} + +A policy defines a schedule (cron expression) and a retention period in days. Create one with: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createBackupPolicy({ + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createBackupPolicy({ + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createBackupPolicy( + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_backup_policy( + database_id='<DATABASE_ID>', + policy_id='hourly', + name='Hourly', + schedule='0 * * * *', + retention=30, +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_backup_policy( + database_id: '<DATABASE_ID>', + policy_id: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateBackupPolicy( + databaseId: "<DATABASE_ID>", + policyId: "hourly", + name: "Hourly", + schedule: "0 * * * *", + retention: 30 +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createBackupPolicy( + databaseId: '<DATABASE_ID>', + policyId: 'hourly', + name: 'Hourly', + schedule: '0 * * * *', + retention: 30, +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createBackupPolicy( + databaseId = "<DATABASE_ID>", + policyId = "hourly", + name = "Hourly", + schedule = "0 * * * *", + retention = 30, +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createBackupPolicy( + databaseId: "<DATABASE_ID>", + policyId: "hourly", + name: "Hourly", + schedule: "0 * * * *", + retention: 30 +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateBackupPolicy("<DATABASE_ID>", "hourly", "Hourly", "0 * * * *", 30) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_backup_policy("<DATABASE_ID>", "hourly", "Hourly", "0 * * * *", 30, None, None).await?; + + Ok(()) +} +``` + +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "policyId": "hourly", + "name": "Hourly", + "schedule": "0 * * * *", + "retention": 30 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/backups/policies +``` + +{% /multicode %} + +| Parameter | Value | Description | +| ----------- | ----------------------- | ------------------------------------------ | +| `policyId` | custom ID or `unique()` | Policy identifier | +| `name` | text | Display name | +| `schedule` | cron expression | When backups run, for example `0 3 * * *` | +| `retention` | 1 - 365 days | How long backups from this policy are kept | + +List, update, and delete policies with `listBackupPolicies`, `updateBackupPolicy`, and `deleteBackupPolicy`. The number of policies you can create depends on your plan. + +# Manual backups {% #manual %} + +Take an on-demand backup before a risky change: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const backup = await mysql.createBackup({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const backup = await mysql.createBackup({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$backup = $mysql->createBackup( + databaseId: '<DATABASE_ID>', +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +backup = mysql.create_backup( + database_id='<DATABASE_ID>', +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +backup = mysql.create_backup( + database_id: '<DATABASE_ID>', +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var backup = await mysql.CreateBackup( + databaseId: "<DATABASE_ID>" +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final backup = await mysql.createBackup( + databaseId: '<DATABASE_ID>', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val backup = mysql.createBackup( + databaseId = "<DATABASE_ID>", +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let backup = try await mysql.createBackup( + databaseId: "<DATABASE_ID>" +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.CreateBackup("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let backup = mysql.create_backup("<DATABASE_ID>", None).await?; + + Ok(()) +} +``` + +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/backups +``` + +{% /multicode %} + +The backup runs asynchronously with status `pending` until it completes. List backups and check their status with `listBackups`, or fetch one with `getBackup`. + +# Restore from a backup {% #restore %} + +Restoring replaces the database's current data with the backup's contents. The database status moves to `restoring` and returns to `ready` when the restore completes; connections are unavailable during the restore. + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createRestoration( + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_restoration( + database_id='<DATABASE_ID>', + type='backup', + backup_id='<BACKUP_ID>', +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_restoration( + database_id: '<DATABASE_ID>', + type: 'backup', + backup_id: '<BACKUP_ID>', +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateRestoration( + databaseId: "<DATABASE_ID>", + type: "backup", + backupId: "<BACKUP_ID>" +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createRestoration( + databaseId: '<DATABASE_ID>', + type: 'backup', + backupId: '<BACKUP_ID>', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createRestoration( + databaseId = "<DATABASE_ID>", + type = "backup", + backupId = "<BACKUP_ID>", +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createRestoration( + databaseId: "<DATABASE_ID>", + type: "backup", + backupId: "<BACKUP_ID>" +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateRestoration( + "<DATABASE_ID>", + mysql.WithCreateRestorationType("backup"), + mysql.WithCreateRestorationBackupId("<BACKUP_ID>"), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_restoration("<DATABASE_ID>", Some("backup"), Some("<BACKUP_ID>"), None).await?; + + Ok(()) +} +``` + +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "backup", + "backupId": "<BACKUP_ID>" + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/restorations +``` + +{% /multicode %} + +Track progress with `getRestoration` or the database status. + +{% info title="Restores overwrite current data" %} +Everything written after the backup was taken is lost when you restore it. If you need the current state too, take a manual backup first, or use a [branch](/docs/products/databases/mysql/branches) to inspect data without touching the live database. +{% /info %} + +# Point-in-time recovery {% #pitr %} + +Scheduled backups recover to fixed snapshots. Point-in-time recovery (PITR) continuously archives the binary log, so you can restore to any moment inside the retention window, for example the second before a bad migration ran. + +Enable PITR when creating the database, or through the API: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + pitr=True, + pitr_retention_days=7, +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + pitr: true, + pitr_retention_days: 7, +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + pitr: true, + pitrRetentionDays: 7 +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + pitr: true, + pitrRetentionDays: 7, +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + pitr = true, + pitrRetentionDays = 7, +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + pitr: true, + pitrRetentionDays: 7 +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdatePitr(true), + mysql.WithUpdatePitrRetentionDays(7), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, None, None, None, None, None, None, None, Some(true), Some(7), None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` + +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "pitr": true, + "pitrRetentionDays": 7 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` + +{% /multicode %} + +`pitrRetentionDays` accepts 1 to 35 days. PITR is billed as an add-on on top of your specification; see [pricing](/pricing). + +## Check the recovery window {% #pitr-windows %} + +You can retrieve the time ranges you can restore to. Right after enabling PITR, no recovery window is available yet; the window opens once continuous archiving has captured its first segment. + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const windows = await mysql.getPitr({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const windows = await mysql.getPitr({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$windows = $mysql->getPitr( + databaseId: '<DATABASE_ID>', +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +windows = mysql.get_pitr( + database_id='<DATABASE_ID>', +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +windows = mysql.get_pitr( + database_id: '<DATABASE_ID>', +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var windows = await mysql.GetPitr( + databaseId: "<DATABASE_ID>" +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final windows = await mysql.getPitr( + databaseId: '<DATABASE_ID>', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val windows = mysql.getPitr( + databaseId = "<DATABASE_ID>", +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let windows = try await mysql.getPitr( + databaseId: "<DATABASE_ID>" +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.GetPitr("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let windows = mysql.get_pitr("<DATABASE_ID>").await?; + + Ok(()) +} +``` + +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/pitr +``` + +{% /multicode %} + +## Restore to a point in time {% #pitr-restore %} + +Pass a Unix timestamp inside the recovery window: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createRestoration({ + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createRestoration( + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_restoration( + database_id='<DATABASE_ID>', + type='pitr', + target_time=1767225600, +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_restoration( + database_id: '<DATABASE_ID>', + type: 'pitr', + target_time: 1767225600, +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateRestoration( + databaseId: "<DATABASE_ID>", + type: "pitr", + targetTime: 1767225600 +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createRestoration( + databaseId: '<DATABASE_ID>', + type: 'pitr', + targetTime: 1767225600, +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createRestoration( + databaseId = "<DATABASE_ID>", + type = "pitr", + targetTime = 1767225600, +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createRestoration( + databaseId: "<DATABASE_ID>", + type: "pitr", + targetTime: 1767225600 +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateRestoration( + "<DATABASE_ID>", + mysql.WithCreateRestorationType("pitr"), + mysql.WithCreateRestorationTargetTime(1767225600), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_restoration("<DATABASE_ID>", Some("pitr"), None, Some(1767225600)).await?; + + Ok(()) +} +``` + +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "type": "pitr", + "targetTime": 1767225600 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/restorations +``` + +{% /multicode %} + +Like a backup restore, a PITR restore is in-place: the database is unavailable while restoring and everything after the target time is discarded. + +# Limits {% #limits %} + +| Limit | Value | +| ---------------- | -------------- | +| Backup retention | 1 - 365 days | +| PITR retention | 1 - 35 days | +| Backup policies | Plan-dependent | diff --git a/src/routes/docs/products/databases/mysql/branches/+page.markdoc b/src/routes/docs/products/databases/mysql/branches/+page.markdoc new file mode 100644 index 0000000000..2b897b0430 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/branches/+page.markdoc @@ -0,0 +1,716 @@ +--- +layout: article +title: Branches +description: Spin up an ephemeral, isolated copy of your MySQL database in seconds from a storage snapshot. Use branches for previews, migrations, and testing. +--- + +A branch is a short-lived, isolated copy of your database. It has its own hostname and reuses the parent's credentials, because it is a snapshot copy of the parent's storage volume taken at a point in time. Branches are not replicas: once created, they diverge from the parent and never sync back. + +{% info title="Branches do not merge back" %} +There is no branch merge operation. Use a branch to validate a migration, data repair, or application change, then intentionally cut application traffic over to the validated database or copy the data you want back with engine-native tools. Appwrite does not reconcile two diverged database histories for you. +{% /info %} + +Use cases: + +- **Preview environments**: one branch per pull request, destroyed when the PR closes +- **Test migrations**: apply a destructive `ALTER` against the branch first, observe the behavior, then run it against the source +- **Reproduce a bug**: branch the database, attach a debugger, throw the branch away when done +- **Heavy analytical queries**: `EXPLAIN ANALYZE` experiments against a branch cannot slow down the primary + +# How it works {% #how %} + +Creating a branch takes a fast `CHECKPOINT` on the parent, snapshots the parent's storage volume with a near-instant copy-on-write operation, and provisions a branch instance from the snapshot on the same engine version with its own isolated storage. Branch compute is fixed and lightweight, enough to validate a change rather than carry production load, and is not configurable. The parent and the branch share storage at the moment of branching; storage cost grows as the two diverge. + +# Create a branch {% #create %} + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_branch( + database_id='<DATABASE_ID>', + branch_id='preview', + ttl=86400, +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_branch( + database_id: '<DATABASE_ID>', + branch_id: 'preview', + ttl: 86400, +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview", + ttl: 86400 +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', + ttl: 86400, +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createBranch( + databaseId = "<DATABASE_ID>", + branchId = "preview", + ttl = 86400, +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview", + ttl: 86400 +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateBranch( + "<DATABASE_ID>", + mysql.WithCreateBranchBranchId("preview"), + mysql.WithCreateBranchTtl(86400), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_branch("<DATABASE_ID>", Some("preview"), Some(86400)).await?; + + Ok(()) +} +``` + +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "branchId": "preview", + "ttl": 86400 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/branches +``` + +{% /multicode %} + +Both fields are optional: + +| Field | Default | Purpose | +| ---------- | ------------------ | ------------------------------------------------------------------- | +| `branchId` | auto-generated | Custom ID (`a-z`, `A-Z`, `0-9`, `.`, `-`, `_`, max 36 chars) | +| `ttl` | `86400` (24 hours) | Lifetime in seconds before the branch expires (min 300, max 604800) | + +The call is asynchronous and returns immediately while the branch provisions in the background. When the TTL elapses, the branch and its storage are removed automatically. + +# List branches and connect {% #list %} + +Each entry carries its metadata and connection details, so there is no separate credentials call: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const branches = await mysql.listBranches({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const branches = await mysql.listBranches({ + databaseId: '<DATABASE_ID>', +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$branches = $mysql->listBranches( + databaseId: '<DATABASE_ID>', +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +branches = mysql.list_branches( + database_id='<DATABASE_ID>', +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +branches = mysql.list_branches( + database_id: '<DATABASE_ID>', +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var branches = await mysql.ListBranches( + databaseId: "<DATABASE_ID>" +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final branches = await mysql.listBranches( + databaseId: '<DATABASE_ID>', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val branches = mysql.listBranches( + databaseId = "<DATABASE_ID>", +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let branches = try await mysql.listBranches( + databaseId: "<DATABASE_ID>" +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.ListBranches("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let branches = mysql.list_branches("<DATABASE_ID>").await?; + + Ok(()) +} +``` + +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/branches +``` + +{% /multicode %} + +A branch gets its own hostname, and reuses the parent's username and password because it is a snapshot copy of the parent's storage. The port is the standard `3306`; branches have no connection pooler. Connect with the branch's `connectionString` straight from the response: + +```bash +mysql --defaults-extra-file=<(printf '[client]\npassword=%s\n' "$BRANCH_PASSWORD") -h <branch host> -P 3306 -u admin -D <branch database> +``` + +# Delete a branch {% #delete %} + +Deleting a branch removes the branch's instance, its storage volume, and the underlying snapshot. There is no soft delete: once the branch is gone, the data is gone. + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.deleteBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.deleteBranch({ + databaseId: '<DATABASE_ID>', + branchId: 'preview', +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->deleteBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.delete_branch( + database_id='<DATABASE_ID>', + branch_id='preview', +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.delete_branch( + database_id: '<DATABASE_ID>', + branch_id: 'preview', +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.DeleteBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview" +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.deleteBranch( + databaseId: '<DATABASE_ID>', + branchId: 'preview', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.deleteBranch( + databaseId = "<DATABASE_ID>", + branchId = "preview", +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.deleteBranch( + databaseId: "<DATABASE_ID>", + branchId: "preview" +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.DeleteBranch("<DATABASE_ID>", "preview") + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.delete_branch("<DATABASE_ID>", "preview").await?; + + Ok(()) +} +``` + +```bash +curl -X DELETE \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/branches/preview +``` + +{% /multicode %} + +# Billing {% #billing %} + +A branch runs on fixed, lightweight compute, so its cost is dominated by storage. The snapshot is free at the moment of branching; storage cost accumulates as the branch's data diverges from the parent. There is no separate branch line item, branches roll into your regular database storage and compute totals. + +# Use case: per-PR preview database {% #ci-example %} + +A CI pipeline that branches on every pull request and tears down on close: + +```yaml +name: preview-database + +on: + pull_request: + types: [opened, reopened, closed] + +jobs: + branch: + if: github.event.action != 'closed' + runs-on: ubuntu-latest + steps: + - name: Create branch + run: | + curl -X POST \ + -H "X-Appwrite-Project: ${{ vars.APPWRITE_PROJECT_ID }}" \ + -H "X-Appwrite-Key: ${{ secrets.APPWRITE_API_KEY }}" \ + -H "Content-Type: application/json" \ + -d '{"branchId": "pr-${{ github.event.number }}", "ttl": 604800}' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/${{ vars.DATABASE_ID }}/branches || true + + teardown: + if: github.event.action == 'closed' + runs-on: ubuntu-latest + steps: + - name: Delete branch + run: | + curl -X DELETE \ + -H "X-Appwrite-Project: ${{ vars.APPWRITE_PROJECT_ID }}" \ + -H "X-Appwrite-Key: ${{ secrets.APPWRITE_API_KEY }}" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/${{ vars.DATABASE_ID }}/branches/pr-${{ github.event.number }} +``` + +The `|| true` on the create call makes the workflow idempotent: if the branch already exists, the call is a no-op. diff --git a/src/routes/docs/products/databases/mysql/connection-pooling/+page.markdoc b/src/routes/docs/products/databases/mysql/connection-pooling/+page.markdoc new file mode 100644 index 0000000000..9a2719a923 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/connection-pooling/+page.markdoc @@ -0,0 +1,274 @@ +--- +layout: article +title: Connection pooling +description: Configure the per-database connection pooler to serve many short-lived clients, with automatic read/write splitting when high availability is enabled. +--- + +MySQL creates one backend process per connection, which makes each connection relatively expensive. Serverless functions, edge runtimes, and horizontally scaled application servers can easily exhaust the connection limit of your specification. The connection pooler sits in front of your database and multiplexes many client connections onto a small pool of server connections. + +The pooler runs next to your database and is reachable on port `6033` on the same hostname. Your application connects to the pooler exactly like it would connect to MySQL directly, same credentials, same TLS. The pooler is available on specifications that run on dedicated compute; the smallest specifications run on shared capacity and do not include it. + +# Pool modes {% #modes %} + +| Mode | Behavior | Use for | +|---------------|-----------------------------------------------------------------------------|------------------------------------------------| +| `transaction` | A server connection is assigned for the duration of a transaction, then returned to the pool | Serverless and most applications (default) | +| `session` | A server connection is held for the entire client session | Session-level features: server-side prepared statements, user variables, temporary tables | + +Transaction mode gives the highest connection multiplexing but does not support session-level state. If your framework relies on session state such as server-side prepared statements or temporary tables, use session mode. + +# Configure the pooler {% #configure %} + +Read the current pooler configuration with `getPooler`, and tune the pool mode and sizes with `updatePooler`. All parameters are optional; omitted values keep their current setting. + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const pooler = await mysql.updatePooler({ + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const pooler = await mysql.updatePooler({ + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$pooler = $mysql->updatePooler( + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +pooler = mysql.update_pooler( + database_id='<DATABASE_ID>', + mode='transaction', + max_connections=500, + default_pool_size=25, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +pooler = mysql.update_pooler( + database_id: '<DATABASE_ID>', + mode: 'transaction', + max_connections: 500, + default_pool_size: 25, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var pooler = await mysql.UpdatePooler( + databaseId: "<DATABASE_ID>", + mode: "transaction", + maxConnections: 500, + defaultPoolSize: 25 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final pooler = await mysql.updatePooler( + databaseId: '<DATABASE_ID>', + mode: 'transaction', + maxConnections: 500, + defaultPoolSize: 25, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val pooler = mysql.updatePooler( + databaseId = "<DATABASE_ID>", + mode = "transaction", + maxConnections = 500, + defaultPoolSize = 25, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let pooler = try await mysql.updatePooler( + databaseId: "<DATABASE_ID>", + mode: "transaction", + maxConnections: 500, + defaultPoolSize: 25 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + mysqlService := appwrite.NewMysql(client) + + result, err := mysqlService.UpdatePooler( + "<DATABASE_ID>", + mysql.WithUpdatePoolerMode("transaction"), + mysql.WithUpdatePoolerMaxConnections(500), + mysql.WithUpdatePoolerDefaultPoolSize(25), + ) + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let pooler = mysql.update_pooler("<DATABASE_ID>", Some("transaction"), Some(500), Some(25), None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "mode": "transaction", + "maxConnections": 500, + "defaultPoolSize": 25 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/pooler +``` +{% /multicode %} + +| Parameter | Range | Description | +|----------------------|----------------|--------------------------------------------------------------------------------| +| `mode` | `transaction`, `session` | How long a server connection stays assigned to a client | +| `maxConnections` | 10 - 10,000 | Maximum pooled client connections. Cannot exceed the connection cap of your specification | +| `defaultPoolSize` | 1 - 1,000 | Server connections per user in the pool | +| `readWriteSplitting` | boolean | Route `SELECT`s to replicas, writes and locked reads to the primary. Defaults to on when high availability is enabled | + +# Connect through the pooler {% #connect %} + +Take your normal connection string and change the port to `6033`: + +```bash +mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database> +``` + +Point your application's runtime traffic at the pooler port. Keep migrations and long-lived administrative sessions on the direct port `3306`, schema changes and tools like `mysqldump` expect session semantics and can misbehave in transaction mode. + +# Read/write splitting {% #read-write-splitting %} + +When [high availability](/docs/products/databases/mysql/high-availability) is enabled, the pooler can route read-only statements to replicas and everything else to the primary. `SELECT ... FOR UPDATE` and statements inside explicit transactions go to the primary. Replicas replicate asynchronously by default, so a read that immediately follows a write can be stale; use `sync` or `quorum` replication mode if you need read-your-writes consistency through the pooler. + +# Sizing guidance {% #sizing %} + +A useful starting point for `defaultPoolSize` is `4 x CPU cores` of your specification, and it rarely helps to go above your specification's connection cap divided by the number of databases sharing the workload. Watch the connection metrics and increase the pool only when clients queue for a connection. + +# When not to use the pooler {% #when-not %} + +Skip the pooler when you have a small, fixed number of long-lived application servers that each maintain their own driver-level pool, and their combined connection count fits comfortably in your specification's limit. Adding a pooler in that setup only adds a hop. diff --git a/src/routes/docs/products/databases/mysql/connections/+page.markdoc b/src/routes/docs/products/databases/mysql/connections/+page.markdoc new file mode 100644 index 0000000000..a855613032 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/connections/+page.markdoc @@ -0,0 +1,509 @@ +--- +layout: article +title: Connections +description: Connect to your MySQL database with the mysql client or any standard driver. Retrieve connection details and rotate the primary password. +--- + +A native MySQL database exposes a MySQL endpoint over TLS. You connect to it the same way you would connect to any MySQL server: with the `mysql` client, any driver in any language, or any ORM. + +# Get connection details with the API {% #credentials %} + +The connection details are returned on the database object itself. Fetch the database with an API key that has the `databases.read` scope: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const database = await mysql.get({ + databaseId: '<DATABASE_ID>', +}); + +console.log(database.connectionString); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const database = await mysql.get({ + databaseId: '<DATABASE_ID>', +}); + +console.log(database.connectionString); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$database = $mysql->get(databaseId: '<DATABASE_ID>'); + +echo $database['connectionString']; +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +database = mysql.get(database_id='<DATABASE_ID>') + +print(database.connection_string) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +database = mysql.get(database_id: '<DATABASE_ID>') + +puts database.connection_string +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var database = await mysql.Get(databaseId: "<DATABASE_ID>"); + +Console.WriteLine(database.ConnectionString); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final database = await mysql.get( + databaseId: '<DATABASE_ID>', +); + +print(database.connectionString); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val database = mysql.get( + databaseId = "<DATABASE_ID>", +) + +println(database.connectionString) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let database = try await mysql.get( + databaseId: "<DATABASE_ID>" +) + +print(database.connectionString) +``` +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + mysql := appwrite.NewMysql(client) + + database, err := mysql.Get("<DATABASE_ID>") + if err != nil { + panic(err) + } + fmt.Println(database.ConnectionString) +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let database = mysql.get("<DATABASE_ID>").await?; + + println!("{}", database.connection_string); + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` +{% /multicode %} + +The response includes the connection fields alongside the database configuration: + +```json +{ + "$id": "<DATABASE_ID>", + "name": "main", + "engine": "mysql", + "version": "8.4", + "status": "ready", + "hostname": "db-<hash>.<region>.appwrite.center", + "connectionPort": 3306, + "connectionUser": "admin", + "connectionPassword": "<password>", + "connectionString": "mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" +} +``` + +The primary user is `admin` and the database name is generated per database. + +# Connect with the mysql client {% #mysql-client %} + +Pass the individual connection values to the `mysql` command-line client and enter the password when prompted: + +```bash +mysql -h db-<hash>.<region>.appwrite.center -P 3306 -u admin -p -D <database> +``` + +# Rotate the primary password {% #rotate %} + +If your password is compromised, or your security policy requires regular rotation, you can issue a new password for the primary user. The change is applied atomically in the engine, and the response carries the new connection details. Existing sessions stay alive until they disconnect, then have to authenticate with the new password. The API key needs the `databases.write` scope. + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const database = await mysql.updateCredentials({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const database = await mysql.updateCredentials({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$database = $mysql->updateCredentials(databaseId: '<DATABASE_ID>'); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +database = mysql.update_credentials(database_id='<DATABASE_ID>') +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +database = mysql.update_credentials(database_id: '<DATABASE_ID>') +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var database = await mysql.UpdateCredentials(databaseId: "<DATABASE_ID>"); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final database = await mysql.updateCredentials( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val database = mysql.updateCredentials( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let database = try await mysql.updateCredentials( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + mysql := appwrite.NewMysql(client) + + _, err := mysql.UpdateCredentials("<DATABASE_ID>") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let database = mysql.update_credentials("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/credentials +``` +{% /multicode %} + +# TLS {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at the edge and forwarded to your database over the internal network. The connection string returned on the database object carries the right SSL settings for your environment, so drivers need no extra configuration. + +For IP allowlists and other network controls, see [network security](/docs/products/databases/mysql/network-security). + +# Connecting from an application {% #drivers %} + +There is nothing Appwrite-specific about the driver setup. A few example snippets: + +{% multicode %} +```server-nodejs +import mysql from 'mysql2/promise'; + +const connection = await mysql.createConnection(process.env.DATABASE_URL); + +const [rows] = await connection.query('SELECT NOW() AS now'); +console.log(rows); + +await connection.end(); +``` +```server-python +import os +import mysql.connector + +conn = mysql.connector.connect( + host=os.environ['DB_HOST'], + port=3306, + user='admin', + password=os.environ['DB_PASSWORD'], + database=os.environ['DB_NAME'], +) +cur = conn.cursor() +cur.execute('SELECT NOW()') +print(cur.fetchone()) +conn.close() +``` +```server-php +<?php + +$pdo = new PDO( + sprintf('mysql:host=%s;port=3306;dbname=%s', getenv('DB_HOST'), getenv('DB_NAME')), + 'admin', + getenv('DB_PASSWORD') +); + +$rows = $pdo->query('SELECT NOW()')->fetchAll(); +print_r($rows); +``` +```server-go +package main + +import ( + "database/sql" + "fmt" + "os" + + _ "github.com/go-sql-driver/mysql" +) + +func main() { + db, err := sql.Open("mysql", os.Getenv("MYSQL_DSN")) + if err != nil { + panic(err) + } + defer db.Close() + + var now string + if err := db.QueryRow("SELECT NOW()").Scan(&now); err != nil { + panic(err) + } + fmt.Println(now) +} +``` +```server-rust +use sqlx::mysql::MySqlPoolOptions; +use sqlx::Row; + +#[tokio::main] +async fn main() -> Result<(), sqlx::Error> { + let url = std::env::var("DATABASE_URL").expect("DATABASE_URL"); + let pool = MySqlPoolOptions::new().connect(&url).await?; + + let row = sqlx::query("SELECT NOW() AS now").fetch_one(&pool).await?; + let now: chrono::DateTime<chrono::Utc> = row.get("now"); + println!("{now}"); + + Ok(()) +} +``` +{% /multicode %} + +Set the environment variables from the connection details on the database object. Once you can run a query, you can use any tool that talks the MySQL wire protocol: MySQL Workbench, DataGrip, your ORM of choice, your migration tool of choice. Appwrite gets out of the way. diff --git a/src/routes/docs/products/databases/mysql/high-availability/+page.markdoc b/src/routes/docs/products/databases/mysql/high-availability/+page.markdoc new file mode 100644 index 0000000000..9a644f549e --- /dev/null +++ b/src/routes/docs/products/databases/mysql/high-availability/+page.markdoc @@ -0,0 +1,631 @@ +--- +layout: article +title: High availability +description: Run up to five read replicas with asynchronous, synchronous, or quorum replication and automatic failover for your MySQL database. +--- + +A single database instance is a single point of failure. High availability (HA) adds streaming replicas next to your primary: they replicate continuously, serve read traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling), and take over automatically when the primary becomes unhealthy. + +High availability requires a specification that runs on dedicated compute; the smallest specifications run on shared capacity and do not support replicas. + +# How it works {% #how-it-works %} + +Replicas receive changes from the primary through MySQL binary log replication. Each replica is a full copy of the database on its own compute. When the primary fails, the most caught-up replica is promoted to primary and the hostname is repointed, your application keeps connecting to the same host and port. + +# Replication modes {% #sync-modes %} + +| Mode | Behavior | Trade-off | +|----------|----------------------------------------------------------------------------------|--------------------------------------------------| +| `async` | The primary commits without waiting for replicas | Fastest writes; a failover can lose the last moments of writes | +| `sync` | The primary waits for one replica to confirm each commit | No data loss on single failure; slightly higher write latency | +| `quorum` | The primary waits for a majority of replicas to confirm each commit | Strongest durability; highest write latency | + +`async` is the default. For production workloads that cannot lose acknowledged writes, use `sync` with at least two replicas. + +# Enable high availability {% #enable %} + +Set the replica count and replication mode on the database through the API: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + replicas=2, + sync_mode='sync', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + replicas: 2, + sync_mode: 'sync', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + replicas: 2, + syncMode: "sync" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + replicas: 2, + syncMode: 'sync', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + replicas = 2, + syncMode = "sync", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + replicas: 2, + syncMode: "sync" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateReplicas(2), + mysql.WithUpdateSyncMode("sync"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, None, None, Some(2), Some("sync"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "replicas": 2, + "syncMode": "sync" + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` +{% /multicode %} + +Adding replicas provisions them online; the primary keeps serving traffic while each replica seeds from a snapshot and catches up. Setting `replicas` back to `0` disables HA. + +# Check replication status {% #status %} + +You can check each replica's role, health, and replication lag: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const replicas = await mysql.getReplicas({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const replicas = await mysql.getReplicas({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$replicas = $mysql->getReplicas( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +replicas = mysql.get_replicas( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +replicas = mysql.get_replicas( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var replicas = await mysql.GetReplicas( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final replicas = await mysql.getReplicas( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val replicas = mysql.getReplicas( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let replicas = try await mysql.getReplicas( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.GetReplicas("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let replicas = mysql.get_replicas("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID>/replicas +``` +{% /multicode %} + +# Automatic failover {% #automatic-failover %} + +Appwrite continuously health-checks the primary. When it becomes unresponsive, the platform promotes the replica with the least replication lag, repoints the database hostname, and marks the old primary for replacement. Your application reconnects to the same hostname; a well-configured driver pool retries and recovers without intervention. + +With `async` replication, writes that had not yet reached the promoted replica are lost in a failover. Use `sync` or `quorum` if that is unacceptable. + +# Manual failover {% #manual-failover %} + +Trigger a failover yourself, for example to test your application's recovery behavior. Optionally pass `targetReplicaId` to promote a specific replica. + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createFailover({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createFailover({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createFailover( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_failover( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_failover( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateFailover( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createFailover( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createFailover( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createFailover( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateFailover("<DATABASE_ID>") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_failover("<DATABASE_ID>", None).await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID>/failovers +``` +{% /multicode %} + +# Reading from replicas {% #reads %} + +Replicas serve read traffic when [read/write splitting](/docs/products/databases/mysql/connection-pooling#read-write-splitting) is enabled on the connection pooler. With `async` replication, a read that immediately follows a write can return stale data. Route reads that must see the latest write to the primary, or use `sync` replication. + +# Limits and billing {% #limits %} + +- Up to 5 replicas per database; the maximum depends on your plan. +- Each replica runs on the same specification as the primary and is billed as an add-on. See [pricing](/pricing). +- Replicas live in the same region as the primary. diff --git a/src/routes/docs/products/databases/mysql/integrations/auth-js/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/auth-js/+page.markdoc new file mode 100644 index 0000000000..e22e5c2491 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/auth-js/+page.markdoc @@ -0,0 +1,222 @@ +--- +layout: article +title: Auth.js +description: Use an Appwrite native MySQL database as the backing store for Auth.js (NextAuth.js). Persist users, accounts, and sessions through the Prisma adapter. +--- + +[Auth.js](https://authjs.dev/) (formerly NextAuth.js) persists users, accounts, sessions, and verification tokens through a database adapter. When you configure an adapter, those records live in your database, which makes database sessions, account linking, and email sign-in possible. An Appwrite [native MySQL database](/docs/products/databases/mysql) is a standard MySQL engine, so Auth.js works through the same ORM adapters you use with other MySQL databases. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one with the create-database wizard, then use [Connections](/docs/products/databases/mysql/connections#credentials) to read the hostname, password, database name, and connection string with `mysql.get()`. +{% /info %} + +# Choose an adapter {% #adapter %} + +Auth.js talks to your database through an adapter. For a native MySQL database, use the adapter that matches your ORM: + +- **Prisma** through [`@auth/prisma-adapter`](https://authjs.dev/getting-started/adapters/prisma). This page shows the Prisma setup with Prisma's MySQL provider and `@prisma/adapter-mariadb`. +- **Drizzle** through [`@auth/drizzle-adapter`](https://authjs.dev/getting-started/adapters/drizzle). Use Drizzle's MySQL schema and a `mysql2` database instance, then pass `DrizzleAdapter(db)` to Auth.js. See the [Drizzle guide](/docs/products/databases/mysql/integrations/drizzle) for the MySQL driver and migration setup. + +# Install packages {% #install %} + +Install Auth.js, the Prisma adapter, Prisma Client, Prisma's MySQL driver adapter, and the MariaDB driver used by the adapter: + +```bash +npm install next-auth@beta @auth/prisma-adapter @prisma/client @prisma/adapter-mariadb mariadb dotenv +npm install -D prisma typescript tsx @types/node +``` + +# Set the connection strings {% #connection-strings %} + +Store the Appwrite connection string in environment variables and do not commit it. Prisma uses `sslaccept=strict` for TLS with certificate verification on MySQL connections: + +```env +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?sslaccept=strict" +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?sslaccept=strict" + +# Runtime pooler, if your database specification includes connection pooling +# DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>?sslaccept=strict" +``` + +`DATABASE_URL` is the runtime connection used by Prisma Client. `DIRECT_URL` is the direct MySQL connection used by Prisma CLI commands for migrations and introspection. Keep migrations on port `3306`; if you use the [connection pooler](/docs/products/databases/mysql/connection-pooling) for runtime traffic, only move `DATABASE_URL` to port `6033`. + +# Create the adapter schema {% #schema %} + +Auth.js expects four Prisma models: `User`, `Account`, `Session`, and `VerificationToken`. Add them to `prisma/schema.prisma` with the MySQL provider. The table names below use an `auth_js_` prefix so they stay separate from your application tables. + +```prisma +generator client { + provider = "prisma-client" + output = "../generated/prisma" +} + +datasource db { + provider = "mysql" +} + +model User { + id String @id @default(cuid()) + name String? + email String? @unique + emailVerified DateTime? + image String? + accounts Account[] + sessions Session[] + + @@map("auth_js_users") +} + +model Account { + id String @id @default(cuid()) + userId String + type String + provider String + providerAccountId String + refresh_token String? @db.Text + access_token String? @db.Text + expires_at Int? + token_type String? + scope String? + id_token String? @db.Text + session_state String? + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@unique([provider, providerAccountId]) + @@map("auth_js_accounts") +} + +model Session { + id String @id @default(cuid()) + sessionToken String @unique + userId String + expires DateTime + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@map("auth_js_sessions") +} + +model VerificationToken { + identifier String + token String + expires DateTime + + @@unique([identifier, token]) + @@map("auth_js_verification_tokens") +} +``` + +Configure Prisma CLI commands in `prisma.config.ts`. The CLI uses `DIRECT_URL` because migrations need a direct MySQL session. + +```ts +import 'dotenv/config'; +import { defineConfig, env } from 'prisma/config'; + +export default defineConfig({ + schema: 'prisma/schema.prisma', + migrations: { + path: 'prisma/migrations' + }, + datasource: { + url: env('DIRECT_URL') + } +}); +``` + +# Run the migration {% #migrate %} + +Create a migration file from the Auth.js schema: + +```bash +mkdir -p prisma/migrations/20260708160000_authjs_init +npx prisma migrate diff --from-empty --to-schema prisma/schema.prisma --script --output prisma/migrations/20260708160000_authjs_init/migration.sql +``` + +Apply committed migrations through the direct MySQL connection: + +```bash +npx prisma migrate deploy +``` + +Generate Prisma Client after you install dependencies or change `prisma/schema.prisma`: + +```bash +npx prisma generate +``` + +Prisma's `migrate dev` command uses a shadow database to detect schema drift. Use it against a local MySQL database, a separate Appwrite database, or an Appwrite branch, then apply committed migrations to this database with `migrate deploy`. + +# Wire the adapter into Auth.js {% #config %} + +Create one Prisma Client with Prisma's MySQL driver adapter: + +```ts +import 'dotenv/config'; +import { PrismaMariaDb } from '@prisma/adapter-mariadb'; +import { PrismaClient } from '../generated/prisma/client'; + +const connectionString = process.env.DATABASE_URL; +if (!connectionString) throw new Error('DATABASE_URL is required'); + +const adapter = new PrismaMariaDb(connectionString); + +export const prisma = new PrismaClient({ adapter }); +``` + +Pass the Prisma Client to your Auth.js config through the `adapter` key: + +```ts +import NextAuth from 'next-auth'; +import { PrismaAdapter } from '@auth/prisma-adapter'; +import { prisma } from './prisma'; + +export const { handlers, auth, signIn, signOut } = NextAuth({ + adapter: PrismaAdapter(prisma), + session: { strategy: 'database' }, + providers: [ + // your providers, e.g. GitHub, Google, Resend + ] +}); +``` + +# Database vs JWT sessions {% #sessions %} + +Auth.js has two session strategies: + +- **`database`**: a session row is written to the `Session` model and only an opaque session ID is stored in an `HttpOnly` cookie. Each request looks the session up in the native MySQL database, and sessions can be revoked server-side. +- **`jwt`**: session state lives in a signed cookie, and the database is not read on the session path. + +When you set `strategy: "database"`, keep the `Session` model in your Prisma schema. With `strategy: "jwt"`, the adapter still persists users and linked accounts, so account linking and user management continue to use the database. + +# Pool connections from serverless {% #pooling %} + +On serverless and edge platforms, each running instance opens its own database connections. On specifications that include the [connection pooler](/docs/products/databases/mysql/connection-pooling), route runtime traffic through port `6033` by setting `DATABASE_URL` to the pooler URL while keeping `DIRECT_URL` on port `3306`. + +The pooler defaults to transaction mode, which gives the highest connection multiplexing. Transaction mode does not keep a backend connection across statements, so session-level features such as user variables, temporary tables, and session-scoped prepared statements need session mode or a direct connection. + +# Use a branch for previews {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are isolated copies of a database with their own hostname and connection string. They are useful for pull-request previews and integration-test jobs that sign users in and out against throwaway data: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL`, and use the pooled variant as `DATABASE_URL` if the branch has the pooler enabled. +3. Run `npx prisma migrate deploy` and your auth flow against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the Auth.js tables and data match the source database at branch time, so preview sign-ins behave like production without touching it. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/integrations/prisma" title="Prisma" %} +Datasource, driver adapter, and migrations for Prisma. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/integrations/drizzle" title="Drizzle" %} +Driver connection, schema definitions, and drizzle-kit migrations for MySQL. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and serverless connection handling. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/integrations/better-auth" title="Better Auth" %} +The same pattern for Better Auth on a native MySQL database. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/better-auth/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/better-auth/+page.markdoc new file mode 100644 index 0000000000..cc9ffe323a --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/better-auth/+page.markdoc @@ -0,0 +1,139 @@ +--- +layout: article +title: Better Auth +description: Use an Appwrite native MySQL database as the database for Better Auth. Configure mysql2, run schema generation and migrations over a direct connection, and store users and sessions in MySQL. +--- + +[Better Auth](https://www.better-auth.com/) is a framework-agnostic authentication library for TypeScript that stores users, sessions, accounts, and verification records in your database. An Appwrite [native MySQL database](/docs/products/databases/mysql) gives Better Auth a standard MySQL engine, so you can use `mysql2`, run the Better Auth CLI, and keep auth data in your Appwrite project. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve the connection string. The primary user is `admin`, and the database name is generated per database. +{% /info %} + +# Set the connection strings {% #connection-strings %} + +Better Auth uses one database URL at runtime and another for schema work. Use the pooler URL for application traffic when your specification includes the pooler, and use the direct engine URL for schema generation and migrations. + +```env +# Runtime: pooled, transaction mode +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>" + +# Schema generation and migrations: direct connection to the engine +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" + +MYSQL_SSL="true" +BETTER_AUTH_URL="https://example.com" +BETTER_AUTH_SECRET="replace-with-a-long-random-secret" +``` + +The MySQL pooler runs on port `6033`, and the engine runs on port `3306`. The smallest shared-capacity specifications do not include the pooler, so use the direct URL for runtime traffic on those specifications. Connections on Appwrite Cloud are encrypted with TLS. The `MYSQL_SSL` variable below lets local development use an unencrypted port-forward while Cloud uses TLS verification. See [Connections](/docs/products/databases/mysql/connections) for connection fields and [Connection pooling](/docs/products/databases/mysql/connection-pooling#modes) for pool modes. + +# Install Better Auth and mysql2 {% #install %} + +Install Better Auth with the MySQL driver: + +```bash +npm install better-auth mysql2 +``` + +# Configure Better Auth {% #configure %} + +Pass a `mysql2/promise` pool to Better Auth. Better Auth drives that pool through its built-in Kysely adapter, so the Better Auth CLI can generate and apply the schema for you. + +The example below gives Better Auth tables a `better_auth_` prefix. Keep those model names if you want the auth tables grouped together, or choose names that match your schema conventions. + +```ts +import { betterAuth } from 'better-auth'; +import { createPool } from 'mysql2/promise'; + +if (!process.env.DATABASE_URL) { + throw new Error('DATABASE_URL is required'); +} + +const ssl = + process.env.MYSQL_SSL === 'true' + ? { rejectUnauthorized: true } + : undefined; + +export const auth = betterAuth({ + baseURL: process.env.BETTER_AUTH_URL, + secret: process.env.BETTER_AUTH_SECRET, + database: createPool({ + uri: process.env.DATABASE_URL, + timezone: 'Z', + ssl + }), + emailAndPassword: { enabled: true }, + user: { modelName: 'better_auth_user' }, + session: { modelName: 'better_auth_session' }, + account: { modelName: 'better_auth_account' }, + verification: { modelName: 'better_auth_verification' } +}); +``` + +`timezone: 'Z'` keeps timestamp values consistent between your application and MySQL. Leave mysql2's default `FOUND_ROWS` behavior enabled, because Better Auth relies on matched-row counts for some updates. + +# Generate and migrate the schema {% #migrate %} + +The [Better Auth CLI](https://www.better-auth.com/docs/concepts/cli) reads your `auth` config and creates the tables it needs. Run schema commands with the direct URL so DDL runs over a session connection: + +```bash +DATABASE_URL="$DIRECT_URL" npx auth@latest generate --config ./auth.ts --yes +``` + +Then apply the schema: + +```bash +DATABASE_URL="$DIRECT_URL" npx auth@latest migrate --config ./auth.ts --yes +``` + +`migrate` is available for Better Auth's built-in Kysely adapter. If you use the Better Auth Prisma or Drizzle adapter, run `generate` to produce that ORM's schema, then apply it with the ORM migration tool over `DIRECT_URL`. See the [Prisma](/docs/products/databases/mysql/integrations/prisma) and [Drizzle](/docs/products/databases/mysql/integrations/drizzle) guides for their MySQL configuration. + +# Create a user {% #example %} + +After the schema exists, mount Better Auth's handler in your framework and call the API methods from your server code: + +```ts +import { auth } from './auth'; + +const result = await auth.api.signUpEmail({ + body: { + email: 'ada@example.com', + password: 'a-strong-password', + name: 'Ada Lovelace' + } +}); + +console.log(result.user.id); +``` + +On a long-running server, create the `auth` instance once at module scope and reuse it. On serverless, keep a single instance per module scope so warm invocations reuse the mysql2 pool. + +# Pooling and session state {% #pooling %} + +Auth workloads, including sign-up, login, and session lookups, are short database transactions. Pointing runtime traffic at port `6033` lets many application instances share a smaller backend connection pool when the pooler is available. + +The pooler's transaction mode does not keep a backend connection across statements. Better Auth's built-in MySQL path works through Kysely and mysql2 text queries, which fit transaction pooling. If your surrounding application code uses session-bound features such as server-side prepared statements, user variables, or temporary tables, use the direct port or switch the pooler to session mode. See [pooler modes](/docs/products/databases/mysql/connection-pooling#modes) for the trade-offs. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooling" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/integrations/prisma" title="Prisma" %} +Configure Prisma with pooled and direct MySQL URLs. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/integrations/drizzle" title="Drizzle" %} +Configure Drizzle ORM with mysql2 and Drizzle Kit migrations. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/integrations/auth-js" title="Auth.js" %} +Use a native MySQL database as the Auth.js database. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/dbt/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/dbt/+page.markdoc new file mode 100644 index 0000000000..ec03efb927 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/dbt/+page.markdoc @@ -0,0 +1,113 @@ +--- +layout: article +title: dbt +description: Run dbt Core transformations against an Appwrite native MySQL database with the community dbt-mysql adapter. +--- + +Use dbt Core with an Appwrite native MySQL database through the community [`dbt-mysql`](https://docs.getdbt.com/docs/local/connect-data-platform/mysql-setup) adapter. Appwrite exposes standard MySQL on port `3306`, so dbt connects with the same host, username, password, and database name you use with other MySQL clients. + +dbt compiles your models into `CREATE TABLE` and `CREATE VIEW` statements, then runs them in dependency order to build transformed tables and views inside the MySQL database you configure. + +{% info title="Adapter support" %} +dbt Labs lists MySQL as a community adapter. The published [`dbt-mysql`](https://pypi.org/project/dbt-mysql/) package is experimental and is not dbt-supported, so pin and test the adapter version you deploy. +{% /info %} + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [MySQL](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve them. The primary user is `admin`, the database name is generated for each database, and the engine listens on port `3306`. +{% /info %} + +# Install the adapter {% #install %} + +Install dbt Core and the MySQL adapter in the Python environment where you run dbt: + +```bash +python -m pip install dbt-mysql +``` + +# Choose where dbt builds {% #build-location %} + +In MySQL, dbt's `schema` setting is the MySQL database name. Set `schema` to the generated database name from your Appwrite connection details. + +Use a naming convention such as a `dbt_` prefix for dbt models and seeds, for example `dbt_orders` and `dbt_customer_revenue`, to keep transformed tables separate from application tables in the same database. For stricter isolation, use another native MySQL database or validate changes against a branch. + +# Configure profiles.yml {% #profiles %} + +dbt reads connection details from `~/.dbt/profiles.yml` or the directory in `DBT_PROFILES_DIR`. Configure a `mysql` target against the database host on port `3306`: + +```yaml +analytics: + target: dev + outputs: + dev: + type: mysql + server: db-<hash>.<region>.appwrite.center + port: 3306 + username: admin + password: "{{ env_var('APPWRITE_DB_PASSWORD') }}" + schema: <database> + threads: 4 + charset: utf8mb4 + collation: utf8mb4_0900_ai_ci +``` + +The `dbt-mysql` adapter uses `server`, `username`, `password`, and `schema`. Read the password from an environment variable with `env_var` rather than committing it. The `schema` value is the generated MySQL database name from your Appwrite connection string. + +# Test the connection {% #debug %} + +`dbt debug` validates your project files and opens a connection to confirm the credentials and host are correct: + +```bash +dbt debug +``` + +A successful run reports `Connection test: OK connection ok`. If it fails, recheck the host, port, password, and database name. + +# Run transformations {% #run %} + +Build your models into the configured MySQL database: + +```bash +dbt run +``` + +`dbt run` executes models only, materializing each as a table or view. Use `dbt build` to run models, tests, seeds, and snapshots together in DAG order: + +```bash +dbt build +``` + +# Choose the right connection {% #connection %} + +dbt opens one database connection per thread and runs DDL during model builds. Point dbt at a connection that preserves the session for each thread: + +- **Direct engine port (`3306`)** is the recommended target. Each thread gets a backend session with the DDL privileges dbt needs. This is what the `profiles.yml` above uses. +- **Session-mode pooler** can work when the pooler is available for your database specification. Connect on the pooler port (`6033`) and use `session` mode. + +Avoid the transaction-mode pooler for dbt. Transaction mode returns the backend connection to the pool after each transaction, which can break workflows that rely on session state. See the [connection pooling](/docs/products/databases/mysql/connection-pooling#modes) page for the mode trade-offs. + +# Size threads to your connection budget {% #threads %} + +The `threads` setting controls how many models dbt builds in parallel, and dbt opens one connection per thread. A `threads: 8` run can hold up to eight backend connections at once. dbt also respects model dependencies, so it never runs more models concurrently than your DAG allows. + +Pick a `threads` value that fits the connection budget for your database specification, and leave headroom for application traffic sharing the same database. Start at `4` and raise it only while connections stay within budget. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes and ports. Use session mode for dbt. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for CI and preview environments. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS behavior, certificate verification, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="https://docs.getdbt.com/docs/local/connect-data-platform/mysql-setup" %} +dbt MySQL adapter reference +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/mysql/integrations/django/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/django/+page.markdoc new file mode 100644 index 0000000000..419751ce29 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/django/+page.markdoc @@ -0,0 +1,151 @@ +--- +layout: article +title: Django +description: Use Django's ORM with an Appwrite native MySQL database. Configure the DATABASES setting, run migrations against the direct MySQL port, and choose the right pooler mode for Django connections. +--- + +A native MySQL database is a standard MySQL engine, so Django's ORM works against it with no Appwrite-specific configuration. Point the `DATABASES` setting at the credentials from the [Connections](/docs/products/databases/mysql/connections) page, then use migrations, models, and the rest of Django as you would against any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one with the create-database wizard, then use [`mysql.get()`](/docs/products/databases/mysql/connections#credentials) to read the hostname, port, username, password, and generated database name. The primary username is `admin`. +{% /info %} + +# Install a driver {% #driver %} + +Django talks to MySQL through a DB API driver. Django's current recommended driver is [mysqlclient](https://pypi.org/project/mysqlclient/): + +```bash +pip install mysqlclient +``` + +`mysqlclient` builds against MySQL client libraries. If installation fails, install the MySQL development headers and `pkg-config` for your operating system, then run the same command again. + +Django's MySQL backend uses the `ENGINE` value `django.db.backends.mysql`. + +# Configure `DATABASES` {% #databases %} + +In `settings.py`, point the `default` connection at your native MySQL database. Appwrite Cloud requires TLS on the public hostname, and the certificate is signed by a public certificate authority. Read every value from the environment so credentials stay out of source control: + +```python +import os + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.mysql", + "NAME": os.environ["DB_NAME"], + "USER": os.environ["DB_USER"], + "PASSWORD": os.environ["DB_PASSWORD"], + "HOST": os.environ["DB_HOST"], + "PORT": os.environ["DB_PORT"], + "OPTIONS": { + "charset": "utf8mb4", + "ssl_mode": os.environ.get("DB_SSL_MODE", "REQUIRED"), + }, + } +} +``` + +The MySQL backend passes `OPTIONS` to `mysqlclient`. `charset` keeps client encoding aligned with Django's UTF-8 expectations, and `ssl_mode` controls TLS for the MySQL connection. Use `REQUIRED` for encrypted Cloud connections. For full certificate and hostname verification, set `DB_SSL_MODE=VERIFY_IDENTITY`. See [Network security](/docs/products/databases/mysql/network-security) for TLS and IP allowlist guidance. + +Populate the environment with values from `mysql.get()` in the [API credentials flow](/docs/products/databases/mysql/connections#credentials): + +```env +DB_NAME=<database> +DB_USER=admin +DB_PASSWORD=<password> +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=3306 +DB_SSL_MODE=REQUIRED +``` + +Port `3306` is the direct MySQL port. Keep migrations on this port, and see [pooling](#pooling) below for when to add the pooler. + +# Run migrations {% #migrate %} + +Generate migrations from your models, then apply them against the direct MySQL port: + +```bash +python manage.py makemigrations +python manage.py migrate +``` + +`migrate` needs a session connection with DDL privileges. The primary `admin` user owns the database and can run schema changes. Always run `migrate` on the direct MySQL port, not through the transaction-mode pooler. + +# Define a model {% #model %} + +Models map to tables in your native MySQL database. Define one in an app's `models.py`: + +```python +from django.db import models + +class Article(models.Model): + title = models.CharField(max_length=200) + body = models.TextField() + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + db_table = "django_articles" + ordering = ["-created_at"] +``` + +Run `makemigrations` and `migrate` again to create the table, then query it through the ORM: + +```python +from blog.models import Article + +Article.objects.create(title="Hello", body="First post") + +recent = Article.objects.order_by("-created_at")[:10] +``` + +# Persistent connections and pooling {% #pooling %} + +By default Django opens a new connection per request (`CONN_MAX_AGE = 0`). On a long-running WSGI server (Gunicorn, uWSGI), you can reuse connections by raising it. Each worker thread keeps its own connection, so the database must allow at least as many connections as you run worker threads: + +```python +DATABASES["default"]["CONN_MAX_AGE"] = 60 +DATABASES["default"]["CONN_HEALTH_CHECKS"] = True +``` + +`CONN_HEALTH_CHECKS` revalidates a reused connection once per request, reducing errors after an engine restart. Do not enable persistent connections under the development server, because it spawns a thread per request and gains nothing. Keep persistent connections disabled under ASGI. + +{% info title="Persistent connections need a session" %} +A worker holding a connection across requests behaves like a long-lived session. Connect it to the direct MySQL port or the **session-mode** pooler. The default **transaction-mode** pooler can hand statements to different backend connections, which makes it a better fit for short-lived runtimes that open and close a connection per request or invocation. +{% /info %} + +If you front the database with the transaction-mode [connection pooler](/docs/products/databases/mysql/connection-pooling), point `HOST` and `PORT` at the MySQL pooler on port `6033` and keep `CONN_MAX_AGE = 0`: + +```env +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=6033 +``` + +Transaction mode does not preserve session state between statements. Use the direct port or **session mode** for migrations, temporary tables, user variables, named locks, and other session-scoped behavior. See the [pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname and connection details. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its connection details. +2. Export them as the `DB_*` environment variables your settings read. +3. Run `python manage.py migrate` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, its schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and connect with common clients. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/drivers/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/drivers/+page.markdoc new file mode 100644 index 0000000000..5312292c13 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/drivers/+page.markdoc @@ -0,0 +1,225 @@ +--- +layout: article +title: Node.js drivers +description: Connect to an Appwrite native MySQL database from Node.js with mysql2 or MariaDB Connector/Node.js. Configure pools, TLS verification, serverless connection management, and troubleshooting. +--- + +A native MySQL database works with standard Node.js drivers that speak the MySQL wire protocol. The [Connections](/docs/products/databases/mysql/connections#drivers) page shows the smallest query. This guide covers driver pools, TLS verification, serverless connection management, and common connection errors. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and the connection values returned by the database object: host, port, username, password, and database name. Store the password in an environment variable and keep it out of source control. +{% /info %} + +# Raw driver, ORM, or SQL API? {% #choosing %} + +There are three common ways to query a native MySQL database from Node.js. Pick by workload: + +| Approach | Use it when | +|------------------------------|----------------------------------------------------------------------------------------------| +| **Raw driver** (this page) | You want a connection pool you control, hot-path queries, or a thin data layer with little overhead. | +| **ORM** ([Prisma](/docs/products/databases/mysql/integrations/prisma), [Drizzle](/docs/products/databases/mysql/integrations/drizzle)) | You want migrations, a typed schema, and query building. The ORM still uses a MySQL driver underneath. | +| **[SQL API](/docs/products/databases/mysql/quick-start#first-queries)** | You're on a runtime that cannot open TCP sockets, or you're scripting a query over HTTPS. | + +The rest of this page is for long-running or serverless Node.js servers that can open TCP connections. + +# mysql2 promise API {% #mysql2-promise %} + +Install mysql2 with `npm install mysql2`. For a long-running server, create one promise pool at module scope and reuse it for every request. The pool opens connections lazily up to `connectionLimit`. + +```js +import mysql from 'mysql2/promise'; +import process from 'node:process'; + +const pool = mysql.createPool({ + host: 'db-<hash>.<region>.appwrite.center', + port: 3306, + user: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: { rejectUnauthorized: true }, + waitForConnections: true, + connectionLimit: 10, + idleTimeout: 30000, + enableKeepAlive: true, +}); + +await pool.query(` + CREATE TABLE IF NOT EXISTS drivers_events ( + id INT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) +`); + +const [result] = await pool.execute( + 'INSERT INTO drivers_events (email) VALUES (?)', + ['ada@example.com'] +); + +const [rows] = await pool.execute( + 'SELECT id, email FROM drivers_events WHERE id = ?', + [result.insertId] +); + +console.log(rows[0]); + +await pool.end(); +``` + +Use `execute` for parameterized statements on the direct MySQL port. mysql2 prepares these statements on the server and caches them per connection, which is a good fit for a stable application pool. + +# mysql2 callback API {% #mysql2-callback %} + +Use the callback API when your application already follows callback patterns. Keep the pool shared, and close it only during process shutdown. + +```js +import mysql from 'mysql2'; +import process from 'node:process'; + +const pool = mysql.createPool({ + host: 'db-<hash>.<region>.appwrite.center', + port: 3306, + user: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: { rejectUnauthorized: true }, + waitForConnections: true, + connectionLimit: 10, + idleTimeout: 30000, + enableKeepAlive: true, +}); + +pool.query(` + CREATE TABLE IF NOT EXISTS drivers_events_callback ( + id INT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) +`, (createErr) => { + if (createErr) throw createErr; + + pool.execute( + 'INSERT INTO drivers_events_callback (email) VALUES (?)', + ['grace@example.com'], + (insertErr, result) => { + if (insertErr) throw insertErr; + + pool.execute( + 'SELECT id, email FROM drivers_events_callback WHERE id = ?', + [result.insertId], + (selectErr, rows) => { + if (selectErr) throw selectErr; + console.log(rows[0]); + pool.end(); + } + ); + } + ); +}); +``` + +# MariaDB Connector/Node.js {% #mariadb %} + +MariaDB Connector/Node.js is a maintained JavaScript driver for MariaDB and MySQL databases. Install it with `npm install mariadb`. Its default API is promise-based and it exposes a pool with `connectionLimit`. + +```js +import mariadb from 'mariadb'; +import process from 'node:process'; + +const pool = mariadb.createPool({ + host: 'db-<hash>.<region>.appwrite.center', + port: 3306, + user: 'admin', + password: process.env.DB_PASSWORD, + database: '<database>', + ssl: true, + connectionLimit: 10, + connectTimeout: 5000, +}); + +let connection; + +try { + connection = await pool.getConnection(); + + await connection.query(` + CREATE TABLE IF NOT EXISTS drivers_events_mariadb ( + id INT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ) + `); + + const result = await connection.query( + 'INSERT INTO drivers_events_mariadb (email) VALUES (?)', + ['lin@example.com'] + ); + + const rows = await connection.query( + 'SELECT id, email FROM drivers_events_mariadb WHERE id = ?', + [result.insertId] + ); + + console.log(rows[0]); +} finally { + if (connection) connection.release(); + await pool.end(); +} +``` + +The connector uses Node.js trusted root CAs when `ssl: true` is enabled. If your runtime image does not ship with a current trust store, pass a CA bundle with `ssl: { ca: fs.readFileSync('./ca-bundle.crt') }`. + +# TLS and CA verification {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at the edge and forwarded to your database over the internal network. Use certificate verification in production: + +| Driver | TLS option | +|--------------------------|-------------------------------------------------| +| `mysql2` | `ssl: { rejectUnauthorized: true }` | +| `mariadb` | `ssl: true` | +| Custom CA bundle | Add `ca` inside the driver's `ssl` object | + +The database hostname uses a certificate signed by a public CA, so Node.js can verify it with the built-in trust store in standard runtimes. Use a custom CA bundle only for images that do not include one, or when your organization requires a pinned bundle. + +For mTLS, where the client also presents a certificate, see the [Network security](/docs/products/databases/mysql/network-security) page. Add the client `key` and `cert` alongside `ca` in the same `ssl` object. + +# Pool sizing {% #pool-sizing %} + +Pool sizing is a connection budget. Each connection in `connectionLimit`, across every running instance, counts against your specification's connection cap. A single app server with `connectionLimit: 10` is usually modest. Ten replicas with `connectionLimit: 50` each can open 500 connections and exhaust smaller specifications. + +Size each driver pool to the connection cap divided by replica count, then leave headroom for migrations, background workers, and admin tools. If you need more client concurrency than the engine can accept directly, route runtime traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling). + +# Serverless connection management {% #serverless %} + +On Lambda, Cloud Run, Vercel, and similar platforms, every cold start is a fresh instance with its own pool. Keep the pool at module scope so warm invocations reuse it, and keep each pool small, usually `connectionLimit: 1` or `2`. + +Appwrite's MySQL pooler is ProxySQL on port `6033`. It is designed for high fan-out runtime traffic and defaults to transaction mode. In transaction mode, use text queries with placeholders through `query`, and keep server-side prepared statements, temporary tables, user variables, and named locks on the direct port (`3306`) or a session-mode pooler. + +Run migrations, schema changes, and dump or restore tools on the direct port. These workflows rely on a stable session and DDL privileges. + +# Troubleshooting {% #troubleshooting %} + +| Symptom | Cause and fix | +|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------| +| `self-signed certificate` / `unable to verify the first certificate` | TLS is reaching the wrong host, or the runtime has a stale or incomplete CA bundle. Verify the database hostname and supply a current public CA bundle only when the runtime lacks one. | +| `ER_CON_COUNT_ERROR` / connection attempts rejected at the proxy | Aggregate pool size across all instances exceeds the database specification's connection cap. Lower each pool's `connectionLimit`, or use the [connection pooler](/docs/products/databases/mysql/connection-pooling) on port `6033` with small per-instance pools. | +| `Unknown prepared statement handler` or prepared statement errors on port `6033` | A prepared statement cache is being used through the transaction-mode pooler. Use `query` with placeholders for pooled runtime traffic, or use the direct port or [session mode](/docs/products/databases/mysql/connection-pooling#modes). | +| `ETIMEDOUT` / `connect ETIMEDOUT` | The database may be cold-starting on smaller specifications or blocked by an [IP allowlist](/docs/products/databases/mysql/network-security#ip-allowlist). Confirm your egress IP is allowed and raise `connectTimeout` to absorb cold starts. | +| Connections drop after a period of inactivity | The proxy closes idle connections after its network idle timeout. Keep mysql2 `idleTimeout` below that window, and enable keep-alive where the driver supports it. | + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials, rotate the password, and connect with common clients. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/quick-start#first-queries" title="SQL API" %} +Run SQL over HTTPS with no TCP connection for edge runtimes and scripts. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc new file mode 100644 index 0000000000..3f1caeb70d --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc @@ -0,0 +1,172 @@ +--- +layout: article +title: Drizzle +description: Use Drizzle ORM with an Appwrite native MySQL database. Configure mysql2, run migrations against the direct connection, and pool runtime traffic from serverless environments. +--- + +Appwrite's native MySQL database is a standard MySQL engine, so [Drizzle ORM](https://orm.drizzle.team/) works against it with no Appwrite-specific configuration. Point Drizzle's mysql2 driver at the connection string from the [Connections](/docs/products/databases/mysql/connections) page and use Drizzle Kit, the query builder, and the rest of the toolchain as you would against any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve the connection string. The primary user is `admin`, and the database name is generated per database. +{% /info %} + +# Set the connection string {% #connection-string %} + +Fetch the connection details with [`mysql.get()`](/docs/products/databases/mysql/connections#credentials), then put the returned connection string in your environment. Never commit it: + +```env +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" +``` + +Connections on Appwrite Cloud are encrypted with TLS. If your runtime or mysql2 configuration does not infer TLS from the connection string, configure mysql2 to require TLS. See [Network security](/docs/products/databases/mysql/network-security) for TLS and network controls. + +# Install and configure the driver {% #driver %} + +Drizzle talks to MySQL through `mysql2`: + +```bash +npm install drizzle-orm mysql2 +npm install -D drizzle-kit +``` + +Import `drizzle` from `drizzle-orm/mysql2` and hand it the connection string: + +```ts +import { drizzle } from 'drizzle-orm/mysql2'; + +export const db = drizzle(process.env.DATABASE_URL!); +``` + +Define your tables in a schema file Drizzle Kit can read. Use the MySQL column builders from `drizzle-orm/mysql-core`: + +```ts +import { int, mysqlTable, timestamp, varchar } from 'drizzle-orm/mysql-core'; + +export const users = mysqlTable('users', { + id: int('id').primaryKey().autoincrement(), + email: varchar('email', { length: 255 }).notNull().unique(), + createdAt: timestamp('created_at').notNull().defaultNow() +}); +``` + +# Configure Drizzle Kit {% #config %} + +Drizzle Kit reads `drizzle.config.ts` for migrations and introspection. Set the `dialect`, point `schema` at your table definitions, and pass the connection string through `dbCredentials`: + +```ts +import { defineConfig } from 'drizzle-kit'; + +export default defineConfig({ + dialect: 'mysql', + schema: './src/schema.ts', + out: './drizzle', + dbCredentials: { + url: process.env.DATABASE_URL! + } +}); +``` + +# Run migrations {% #migrate %} + +Generate SQL migration files from your schema, then apply them: + +```bash +npx drizzle-kit generate +npx drizzle-kit migrate +``` + +`generate` diffs your schema against the last snapshot and writes a timestamped `.sql` file into the `out` directory. `migrate` applies any pending files to the database. Point Drizzle Kit at the direct engine port (`3306`), not the pooler, because migrations issue DDL that needs a session-level connection. The primary `admin` user owns the generated database and can run schema changes. + +For prototypes or preview databases where you do not need committed SQL migration files, Drizzle Kit can push the current schema directly: + +```bash +npx drizzle-kit push +``` + +To apply migrations from your application at startup instead of the CLI, use the mysql2 migrator: + +```ts +import { migrate } from 'drizzle-orm/mysql2/migrator'; +import { db } from './db'; + +await migrate(db, { migrationsFolder: './drizzle' }); +``` + +# Query with Drizzle {% #query %} + +Once the schema is migrated, use the query builder. The mysql2 dialect returns an insert result instead of the inserted row, so read the row back with the inserted ID: + +```ts +import { desc, eq } from 'drizzle-orm'; +import { db } from './db'; +import { users } from './schema'; + +const result = await db.insert(users).values({ email: 'ada@example.com' }); + +const [user] = await db.select().from(users).where(eq(users.id, Number(result[0].insertId))); + +const recent = await db + .select() + .from(users) + .orderBy(desc(users.createdAt)) + .limit(10); +``` + +On long-running servers, create the `db` instance once at module scope and reuse it. On serverless, keep a single instance per module scope so warm invocations reuse it, and use the pooler when your database specification includes it. + +# Pool connections from serverless {% #pooling %} + +Each running instance opens its own connections to the engine. On serverless and edge platforms such as Vercel, Netlify, and Cloudflare, short-lived instances can fan out into more backend connections than the engine allows. If your database specification includes the [connection pooler](/docs/products/databases/mysql/connection-pooling), route runtime traffic through it by connecting on port `6033` on the same hostname. + +Keep `drizzle.config.ts` and the startup migrator pointed at `DIRECT_URL` so DDL still runs over a session-level connection: + +```env +# Runtime: pooler port +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>" + +# Migrations & introspection: direct connection to the engine +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" +``` + +```ts +import { defineConfig } from 'drizzle-kit'; + +export default defineConfig({ + dialect: 'mysql', + schema: './src/schema.ts', + out: './drizzle', + dbCredentials: { + url: process.env.DIRECT_URL! + } +}); +``` + +The pooler defaults to transaction mode, which does not keep a backend connection across statements. Drizzle's regular mysql2 query builder sends text queries and works with transaction pooling, but session-level features such as explicit prepared queries, user variables, and temporary tables need the direct port or a session-mode pooler. See the [pooler modes](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL` and `DATABASE_URL` for the preview or CI job. +3. Run `drizzle-kit migrate` or `drizzle-kit push`, then run your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against representative data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS and network controls for native MySQL databases. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/ef-core/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/ef-core/+page.markdoc new file mode 100644 index 0000000000..2e74ff8480 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/ef-core/+page.markdoc @@ -0,0 +1,178 @@ +--- +layout: article +title: EF Core +description: Use Entity Framework Core with an Appwrite native MySQL database. Configure the MySQL provider, run migrations against the direct MySQL host, and rely on the provider's connection pool from an ASP.NET server. +--- + +A native MySQL database is a standard MySQL engine, so [Entity Framework Core](https://learn.microsoft.com/ef/core/) works with it through a MySQL EF Core provider. Point the provider at the connection details from the [Connections](/docs/products/databases/mysql/connections) page, then use `DbContext`, migrations, and LINQ queries as you would with any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve the connection details. +{% /info %} + +# Install the provider {% #install %} + +Add Oracle's EF Core provider for MySQL, the EF Core design-time package, and the `dotnet-ef` CLI tool: + +```bash +dotnet add package MySql.EntityFrameworkCore +dotnet add package Microsoft.EntityFrameworkCore.Design +dotnet new tool-manifest +dotnet tool install dotnet-ef +``` + +Keep the MySQL provider and EF Core design package on the same major version as your app's EF Core packages. + +# Set the connection string {% #connection-string %} + +ADO.NET providers use key/value connection strings rather than a URL. Store the connection string in `appsettings.json` under `ConnectionStrings`, and keep the password out of source control with [user secrets](https://learn.microsoft.com/aspnet/core/security/app-secrets) or environment variables: + +```json +{ + "ConnectionStrings": { + "Default": "Server=db-<hash>.<region>.appwrite.center;Port=3306;Database=<database>;User=admin;Password=<password>;SslMode=Required" + } +} +``` + +The Appwrite MySQL host accepts TLS connections on port `3306`. `SslMode=Required` encrypts the connection. For full certificate and hostname verification, use `SslMode=VerifyFull`: + +```text +Server=db-<hash>.<region>.appwrite.center;Port=3306;Database=<database>;User=admin;Password=<password>;SslMode=VerifyFull +``` + +# Configure the DbContext {% #dbcontext %} + +Define your model and `DbContext`. The model is ordinary EF Core code, and the table name in this example is prefixed so it is easy to identify the objects created by the guide: + +```csharp +using Microsoft.EntityFrameworkCore; + +public class User +{ + public int Id { get; set; } + public string Email { get; set; } = string.Empty; + public DateTime CreatedAt { get; set; } = DateTime.UtcNow; +} + +public class AppDbContext : DbContext +{ + public AppDbContext(DbContextOptions<AppDbContext> options) + : base(options) + { + } + + public DbSet<User> Users => Set<User>(); + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity<User>(entity => + { + entity.ToTable("ef_core_users"); + entity.HasIndex(user => user.Email).IsUnique(); + entity.Property(user => user.Email).HasMaxLength(255).IsRequired(); + entity.Property(user => user.CreatedAt).HasDefaultValueSql("CURRENT_TIMESTAMP(6)"); + }); + } +} +``` + +# Register the provider {% #provider %} + +Register the `DbContext` in `Program.cs`, reading the connection string with `GetConnectionString`. Use `UseMySQL(...)` for Oracle's MySQL EF Core provider: + +```csharp +using Microsoft.EntityFrameworkCore; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddDbContext<AppDbContext>(options => + options.UseMySQL( + builder.Configuration.GetConnectionString("Default")!, + mySqlOptions => mySqlOptions.MigrationsHistoryTable("ef_core_migrations_history"))); +``` + +The `MigrationsHistoryTable` option keeps EF Core's migration tracking table prefixed with the rest of this guide's example objects. + +# Run migrations {% #migrate %} + +Migrations need a session connection and full DDL privileges, so run them against the direct MySQL host on port `3306`, not the [pooler](/docs/products/databases/mysql/connection-pooling). The primary `admin` user owns the database. + +Create the first migration, then apply it: + +```bash +dotnet tool run dotnet-ef migrations add InitialCreate +dotnet tool run dotnet-ef database update +``` + +`dotnet tool run dotnet-ef database update` reads the same `Default` connection string and applies any pending migrations. EF Core records applied migrations in the configured migration history table so it only applies new migrations next time. + +# Wire up an ASP.NET server {% #aspnet %} + +The route handlers use ordinary EF Core queries: + +```csharp +var app = builder.Build(); + +app.MapGet("/users", async (AppDbContext db) => + await db.Users.OrderByDescending(user => user.CreatedAt).Take(10).ToListAsync()); + +app.MapPost("/users", async (AppDbContext db, CreateUser request) => +{ + var user = new User { Email = request.Email }; + db.Users.Add(user); + await db.SaveChangesAsync(); + + return Results.Created($"/users/{user.Id}", user); +}); + +app.Run(); + +public record CreateUser(string Email); +``` + +# Connection pooling {% #pooling %} + +Connector/NET has connection pooling enabled by default. Each process keeps its own pool keyed on the connection string, so a long-running ASP.NET server usually connects directly to MySQL and tunes the provider pool with connection string options: + +```text +Server=db-<hash>.<region>.appwrite.center;Port=3306;Database=<database>;User=admin;Password=<password>;SslMode=Required;Max Pool Size=50 +``` + +Keep the sum across all your processes under the engine's connection limit for the database's specification. + +If you run many short-lived instances that each open their own provider pool, route runtime traffic through the Appwrite [connection pooler](/docs/products/databases/mysql/connection-pooling) on port `6033`: + +```text +Server=db-<hash>.<region>.appwrite.center;Port=6033;Database=<database>;User=admin;Password=<password>;SslMode=Required;Max Pool Size=20 +``` + +Keep migrations and administrative jobs on the direct port `3306`. The pooler defaults to **transaction mode**, which does not hold a backend connection across statements. If your application relies on session state such as server-side prepared statements, user variables, or temporary tables, switch the pooler to **session mode**, see the [pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +Database [branches](/docs/products/databases/mysql/branches) are isolated copies of a database with their own hostname and credentials. They're useful for running migrations against throwaway data in a pull-request preview or integration-test job: + +1. Create a branch from the API and read its connection details. +2. Build the connection string for the branch host and pass it as the `Default` connection string. +3. Run `dotnet tool run dotnet-ef database update` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against representative data without touching the source database. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc new file mode 100644 index 0000000000..b5859571a3 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc @@ -0,0 +1,193 @@ +--- +layout: article +title: FastAPI +description: Use FastAPI and SQLAlchemy 2.x with an Appwrite native MySQL database. Configure the async asyncmy engine, pass TLS through connect_args, inject a session per request, and run Alembic migrations against the direct database port. +--- + +An Appwrite native MySQL database is a standard MySQL engine, so [FastAPI](https://fastapi.tiangolo.com/) with [SQLAlchemy](https://docs.sqlalchemy.org/) and an async MySQL driver works against it with no Appwrite-specific runtime code. You point `create_async_engine` at the connection string from the [connections](/docs/products/databases/mysql/connections) page and use the SQLAlchemy ORM, the FastAPI dependency system, and Alembic the same way you would against any self-hosted MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one and [connections](/docs/products/databases/mysql/connections) to retrieve the connection string. The primary user is `admin`, and the database name is generated for each database. +{% /info %} + +# Install dependencies {% #install %} + +```bash +pip install "fastapi[standard]" "sqlalchemy[asyncio]" asyncmy alembic +``` + +# Set the connection string {% #connection-string %} + +Fetch the connection string with the [API](/docs/products/databases/mysql/connections#credentials). Put it in your environment, never commit it. SQLAlchemy's asyncmy dialect uses the `mysql+asyncmy://` scheme, so swap the leading `mysql://` for it and add `charset=utf8mb4`: + +```env +DATABASE_URL="mysql+asyncmy://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?charset=utf8mb4" +DATABASE_SSL=true +``` + +This guide uses the [asyncmy](https://github.com/long2ice/asyncmy) driver. SQLAlchemy also supports the async `mysql+aiomysql://` dialect, but the snippets below use `mysql+asyncmy://`. + +# Create the async engine {% #engine %} + +Cloud connections require TLS. Build an `ssl.SSLContext` and pass it through `connect_args`; use `DATABASE_SSL=false` only for a local MySQL server that does not offer TLS: + +```python +import ssl + +from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine + +connect_args = ( + {"ssl": ssl.create_default_context()} + if settings.database_ssl + else {} +) + +engine = create_async_engine( + settings.database_url, + connect_args=connect_args, + pool_size=10, + max_overflow=5, + pool_pre_ping=True, +) + +SessionLocal = async_sessionmaker(engine, expire_on_commit=False) +``` + +The server certificate is signed by a well-known public CA, so `ssl.create_default_context()` validates the certificate chain against the system trust store. See the [Network](/docs/products/databases/mysql/network-security) page for TLS and network access controls. + +# Define a model {% #model %} + +```python +from datetime import datetime + +from sqlalchemy import String, func +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + +class Base(DeclarativeBase): + pass + +class User(Base): + __tablename__ = "fastapi_users" + + id: Mapped[int] = mapped_column(primary_key=True) + email: Mapped[str] = mapped_column(String(255), unique=True) + created_at: Mapped[datetime] = mapped_column(server_default=func.now()) +``` + +SQLAlchemy renders the integer primary key as `AUTO_INCREMENT` for MySQL. The explicit `String(255)` keeps the unique email index within MySQL's indexed column limits. + +# Inject a session per request {% #session %} + +FastAPI's dependency system gives each request its own `AsyncSession` and closes it when the request finishes. Define a dependency that yields a session, then annotate path operations with it: + +```python +from typing import Annotated + +from fastapi import Depends, FastAPI +from sqlalchemy import select +from sqlalchemy.ext.asyncio import AsyncSession + +app = FastAPI() + +async def get_session(): + async with SessionLocal() as session: + yield session + +SessionDep = Annotated[AsyncSession, Depends(get_session)] + +@app.post("/users") +async def create_user(email: str, session: SessionDep): + user = User(email=email) + session.add(user) + await session.commit() + await session.refresh(user) + return user + +@app.get("/users") +async def list_users(session: SessionDep): + result = await session.scalars(select(User).order_by(User.created_at.desc())) + return result.all() +``` + +Create the engine once at module scope and reuse it for the whole process, the pool lives inside it. Don't open a new engine per request. + +# Run migrations {% #migrate %} + +Generate Alembic's async scaffold, which opens the connection asynchronously and hands a sync connection to the migration context: + +```bash +alembic init -t async migrations +``` + +Point `target_metadata` at `Base.metadata` in `migrations/env.py`, then autogenerate and apply: + +```bash +alembic revision --autogenerate -m "init" +alembic upgrade head +``` + +Review the generated migration before applying it. If the database contains tables that Alembic should not manage, configure Alembic's include filters or run the migration against a branch so autogenerate only emits changes for your FastAPI app. + +Run migrations against the **direct** engine port (`3306`), not the pooler. DDL needs a session-level connection, and Alembic's async template already uses a `NullPool`, so a fresh connection is opened and closed per run. The primary `admin` user owns the default database and can run schema changes. + +# Pool sizing {% #sizing %} + +A long-running `uvicorn` server holds a SQLAlchemy pool for its lifetime, so connect to the **direct** engine port (`3306`) with a sized pool. Keep `pool_size` multiplied by the number of server processes under the connection limit of your [specification](/docs/products/databases/mysql#specifications), and let `max_overflow` absorb short bursts: + +```python +engine = create_async_engine( + settings.database_url, + connect_args=connect_args, + pool_size=10, + max_overflow=5, + pool_pre_ping=True, +) +``` + +When the same app runs on a serverless platform (for example an Appwrite [function](/docs/products/functions)) where each invocation is a fresh instance, that can fan out into more backend connections than the engine allows. Route runtime traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling) on port `6033` instead, and avoid keeping another application pool on top of it: + +```env +DATABASE_URL="mysql+asyncmy://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>?charset=utf8mb4" +DATABASE_SSL=true +``` + +```python +from sqlalchemy import NullPool + +engine = create_async_engine( + settings.database_url, + connect_args=connect_args, + poolclass=NullPool, + pool_pre_ping=True, +) +``` + +The pooler defaults to **transaction mode**, which returns the backend connection to the pool after each transaction. Use **session mode** if your application relies on session-level state such as user variables, temporary tables, or server-side prepared statements, see the [pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Rewrite the scheme to `mysql+asyncmy://`, add `charset=utf8mb4`, and export it as `DATABASE_URL`. +3. Run `alembic upgrade head` against the branch's direct port, then your test suite. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against representative data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/gorm/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/gorm/+page.markdoc new file mode 100644 index 0000000000..3cd1a6eba4 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/gorm/+page.markdoc @@ -0,0 +1,217 @@ +--- +layout: article +title: GORM +description: Use GORM with an Appwrite native MySQL database in Go. Build the MySQL DSN, open a connection, size the database/sql pool, and run migrations with AutoMigrate or golang-migrate. +--- + +A native MySQL database is a standard MySQL engine, so [GORM](https://gorm.io/) talks to it through the regular MySQL driver. Build a go-sql-driver DSN from the credentials returned by Appwrite, hand it to `gorm.io/driver/mysql`, and use models, `AutoMigrate`, and the query API as you would against any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [native MySQL databases](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve the hostname, password, and generated database name. The primary user is `admin`. +{% /info %} + +# Build the DSN {% #dsn %} + +Keep the password out of source and read the connection details from the environment: + +```env +DB_HOST="db-<hash>.<region>.appwrite.center" +DB_PORT="3306" +DB_NAME="<database>" +DB_PASSWORD="<password>" +DB_TLS="true" +``` + +GORM's MySQL driver uses [go-sql-driver/mysql](https://github.com/go-sql-driver/mysql) DSNs. The wire format is `admin:<password>@tcp(db-<hash>.<region>.appwrite.center:3306)/<database>?parseTime=true&tls=true`. Use `mysql.Config` to format the DSN so passwords and database names are escaped correctly: + +```go +cfg := mysqlcfg.Config{ + User: "admin", + Passwd: os.Getenv("DB_PASSWORD"), + Net: "tcp", + Addr: net.JoinHostPort(os.Getenv("DB_HOST"), os.Getenv("DB_PORT")), + DBName: os.Getenv("DB_NAME"), + ParseTime: true, + TLSConfig: os.Getenv("DB_TLS"), +} + +dsn := cfg.FormatDSN() +``` + +`parseTime=true` lets the driver scan MySQL `DATE`, `DATETIME`, and `TIMESTAMP` values into Go `time.Time` values. Keep `DB_TLS=true` for Appwrite Cloud connections. Local development environments that terminate no TLS can set `DB_TLS=false`. + +For mTLS, see the [Network security](/docs/products/databases/mysql/network-security) page. + +# Open a connection {% #open %} + +Pass the DSN to `mysql.Open`, then call `gorm.Open`: + +```go +package main + +import ( + "fmt" + "net" + "os" + "time" + + mysqlcfg "github.com/go-sql-driver/mysql" + gormmysql "gorm.io/driver/mysql" + "gorm.io/gorm" +) + +type User struct { + ID uint `gorm:"primaryKey"` + Email string `gorm:"size:255;not null;uniqueIndex"` + CreatedAt time.Time +} + +func (User) TableName() string { + return "gorm_users" +} + +func main() { + cfg := mysqlcfg.Config{ + User: "admin", + Passwd: os.Getenv("DB_PASSWORD"), + Net: "tcp", + Addr: net.JoinHostPort(os.Getenv("DB_HOST"), os.Getenv("DB_PORT")), + DBName: os.Getenv("DB_NAME"), + ParseTime: true, + TLSConfig: os.Getenv("DB_TLS"), + } + + db, err := gorm.Open(gormmysql.Open(cfg.FormatDSN()), &gorm.Config{}) + if err != nil { + panic(err) + } + + if err := db.AutoMigrate(&User{}); err != nil { + panic(err) + } + + user := User{Email: fmt.Sprintf("ada+%d@example.com", time.Now().UnixNano())} + if err := db.Create(&user).Error; err != nil { + panic(err) + } + + var saved User + if err := db.First(&saved, "email = ?", user.Email).Error; err != nil { + panic(err) + } + + fmt.Println(saved.ID, saved.Email) +} +``` + +Connect to the direct engine port (`3306`) for a long-running server and cap the underlying pool yourself, see [pool sizing](#pool) below. If you route runtime traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling) on port `6033`, enable `InterpolateParams` in the driver config so placeholder values are sent as one text query in transaction mode: + +```go +cfg := mysqlcfg.Config{ + User: "admin", + Passwd: os.Getenv("DB_PASSWORD"), + Net: "tcp", + Addr: net.JoinHostPort(os.Getenv("DB_HOST"), "6033"), + DBName: os.Getenv("DB_NAME"), + ParseTime: true, + TLSConfig: os.Getenv("DB_TLS"), + InterpolateParams: true, +} + +db, err := gorm.Open(gormmysql.Open(cfg.FormatDSN()), &gorm.Config{}) +``` + +# Define a model and migrate {% #model %} + +Declare your models as Go structs and let GORM create the tables with `AutoMigrate`: + +```go +type User struct { + ID uint `gorm:"primaryKey"` + Email string `gorm:"size:255;not null;uniqueIndex"` + CreatedAt time.Time +} + +func (User) TableName() string { + return "gorm_users" +} + +if err := db.AutoMigrate(&User{}); err != nil { + panic(err) +} +``` + +`AutoMigrate` creates the table if it's missing and adds any missing columns and indexes. It does not drop columns or change existing column types, so it's convenient in development but not a substitute for versioned migrations in production. Run schema changes against the direct engine port because DDL needs a session-level connection. The primary `admin` user owns the generated database and can run schema changes. + +For versioned migrations, [golang-migrate](https://github.com/golang-migrate/migrate) runs ordered up/down files. Point it at the direct engine port: + +```bash +migrate -path ./migrations \ + -database "mysql://admin:$DB_PASSWORD@tcp($DB_HOST:$DB_PORT)/$DB_NAME?tls=$DB_TLS&x-migrations-table=gorm_schema_migrations" \ + up +``` + +# Size the connection pool {% #pool %} + +GORM manages a `database/sql` pool under the hood. A long-running Go server holds that pool for its whole lifetime, so connect to the direct engine port and cap the pool against the engine's connection limit. Reach the underlying `*sql.DB` with `db.DB()`: + +```go +sqlDB, err := db.DB() +if err != nil { + panic(err) +} + +sqlDB.SetMaxOpenConns(25) +sqlDB.SetMaxIdleConns(25) +sqlDB.SetConnMaxLifetime(time.Hour) +``` + +Keep the sum of `SetMaxOpenConns` across every instance below the specification's `maxConnections`. If you run many instances or a serverless runtime that opens a fresh pool per cold start, route runtime traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling) and keep each instance's pool small. The pooler multiplexes them onto a smaller set of backend connections. + +# Run SQL with GORM {% #sql %} + +Use GORM's raw SQL helpers when you need a query that is clearer as SQL than as model operations. MySQL uses `?` placeholders: + +```go +type Result struct { + Email string +} + +var result Result +if err := db.Raw( + "SELECT email FROM gorm_users WHERE email = ? LIMIT 1", + user.Email, +).Scan(&result).Error; err != nil { + panic(err) +} +``` + +The same connection rules apply: use the direct port for migrations and session-level features, and use the pooler for high fan-out runtime queries when your database specification includes it. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export the branch host, password, and database name into the environment your tests read. +3. Run `migrate ... up` or `AutoMigrate`, then run your test suite against the branch's direct port. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against representative data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS and network controls for native MySQL databases. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/grafana/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/grafana/+page.markdoc new file mode 100644 index 0000000000..3946eac362 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/grafana/+page.markdoc @@ -0,0 +1,99 @@ +--- +layout: article +title: Grafana +description: Connect Grafana to an Appwrite native MySQL database as a data source and build dashboards. Configure the MySQL data source and provision it from YAML. +--- + +An Appwrite [native MySQL database](/docs/products/databases/mysql) exposes a standard managed MySQL 8.4 or 8.0 engine, so [Grafana](https://grafana.com/) connects to it through the built-in **MySQL data source** with no Appwrite-specific configuration. Point the data source at your database hostname, authenticate with your database credentials, and query your tables to build dashboards and alerts. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. Call `mysql.get()` from the Appwrite API to read `hostname`, `connectionPort`, `connectionUser`, `connectionPassword`, and `connectionString`. The primary user is `admin`, and Appwrite generates the database name for each database. See [Connections](/docs/products/databases/mysql/connections) to retrieve the values. +{% /info %} + +# Protect dashboard credentials {% #credentials %} + +Grafana can execute any SQL allowed by the data source user. Keep panel queries read-only, avoid saving write statements in dashboards, and restrict network access to trusted Grafana hosts with an [IP allowlist](/docs/products/databases/mysql/network-security#ip-allowlist). If your deployment has a secondary MySQL user with only `SELECT` privileges, use that user for Grafana. + +# Choose a connection target {% #target %} + +Grafana holds its data source connections open for the lifetime of the process. Long-lived connections should use either the direct MySQL port `3306` or a [connection pooler](/docs/products/databases/mysql/connection-pooling) on port `6033` running in **session mode**. + +Do not point Grafana at the **transaction-mode** pooler. Transaction mode hands a backend connection back to the pool after every statement, which breaks the session assumptions Grafana relies on for connection reuse and prepared statements. For a typical dashboard workload the direct MySQL port is the simplest choice. See the [pooler modes](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Add the MySQL data source {% #data-source %} + +In Grafana, open **Connections** > **Data sources** > **Add data source** and select **MySQL**. Fill in the connection details using the values from your native MySQL database: + +| Field | Value | +| --- | --- | +| **Host URL** | `db-<hash>.<region>.appwrite.center:3306` | +| **Database** | `<database>` | +| **Username** | `admin` | +| **Password** | `<password>` | + +Regions are `fra`, `nyc`, `sfo`, `sgp`, `syd`, and `tor`. Appwrite Cloud encrypts connections to the public hostname with TLS. Grafana's MySQL data source uses MySQL-specific TLS fields such as `tlsAuthWithCACert`, `tlsSkipVerify`, and TLS certificate values in `secureJsonData`. + +If you use Grafana Cloud and restrict database access with an IP allowlist, add the Grafana Cloud outbound IP ranges for your stack to the database allowlist. Grafana Cloud can reach the public Appwrite database hostname directly. Private connectivity features are only needed when the database is on a private network. + +Under **Connection limits**, keep the connection counts modest so Grafana doesn't exhaust the engine's connection budget. **Max open** caps total connections from this Grafana instance, **Max idle** caps pooled idle connections, and **Max lifetime** recycles connections after the given number of seconds. Select **Save & test** to verify connectivity. + +# Provision from YAML {% #provisioning %} + +Instead of configuring the data source by hand, you can [provision](https://grafana.com/docs/grafana/latest/administration/provisioning/) it declaratively. Drop a file into Grafana's `provisioning/datasources/` directory and read the password from an environment variable so it never lands in source control: + +```yaml +apiVersion: 1 + +datasources: + - name: Appwrite native MySQL + type: mysql + url: db-<hash>.<region>.appwrite.center:3306 + user: admin + jsonData: + database: <database> + maxOpenConns: 5 + maxIdleConns: 2 + maxIdleConnsAuto: true + connMaxLifetime: 14400 + secureJsonData: + password: $GRAFANA_DB_PASSWORD + editable: false +``` + +The MySQL data source uses `type: mysql`, keeps the database name under `jsonData.database`, and reads the password from `secureJsonData.password`. Grafana expands `$GRAFANA_DB_PASSWORD` from the process environment when it loads the provisioning file. Add Grafana's MySQL TLS fields if your deployment requires explicit TLS configuration. See the [MySQL data source](https://grafana.com/docs/grafana/latest/datasources/mysql/configure/) docs for every available field. + +# Build a panel {% #panel %} + +With the data source connected, create a dashboard and add a panel backed by it. Switch the query editor to code mode and write a read-only query against your tables. For example, to plot daily sign-ups from a `grafana_users` table over time: + +```text +SELECT + CAST(DATE(created_at) AS DATETIME) AS time, + COUNT(*) AS signups +FROM grafana_users +GROUP BY CAST(DATE(created_at) AS DATETIME) +ORDER BY time; +``` + +Grafana maps the `time` column to the panel's time axis and `signups` to the value. MySQL 8.4 enables `ONLY_FULL_GROUP_BY`, so the selected time expression must match the grouped expression. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql" title="MySQL databases" %} +Overview of native MySQL database engines, versions, and regions. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connect" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes and ports. Use the direct MySQL port or session mode for Grafana. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS modes, certificate verification, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="/docs/products/databases/mysql/connections" %} +Connect to a native MySQL database +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc new file mode 100644 index 0000000000..944c397c74 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc @@ -0,0 +1,215 @@ +--- +layout: article +title: Laravel +description: Use Laravel and Eloquent with an Appwrite native MySQL database. Configure the connection, run migrations against the direct port, and pool serverless traffic through the connection pooler. +--- + +A native MySQL database is a standard MySQL engine, so [Laravel](https://laravel.com/docs) works against it with no Appwrite-specific configuration. Point the `mysql` connection in `config/database.php` at the credentials from the [Connections](/docs/products/databases/mysql/connections) page, then use Eloquent, the query builder, migrations, and queues as you would against any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [MySQL databases](/docs/products/databases/mysql) to create one. To retrieve credentials, call [`mysql.get()`](/docs/products/databases/mysql/connections#credentials) and use the returned hostname, port, username, password, and database name. The primary username is `admin`, and the database name is generated per database. +{% /info %} + +# Configure the connection {% #connection %} + +Laravel reads database credentials from `.env`. Fetch them with [`mysql.get()`](/docs/products/databases/mysql/connections#credentials), then set the matching connection. Never commit `.env`: + +```env +DB_CONNECTION=mysql +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=3306 +DB_DATABASE=<database> +DB_USERNAME=admin +DB_PASSWORD=<password> +DB_CHARSET=utf8mb4 +DB_COLLATION=utf8mb4_unicode_ci +``` + +The scaffolded `config/database.php` wires these variables into the `mysql` connection: + +```php +'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], +], +``` + +Laravel imports `Pdo\Mysql` at the top of this file in new projects. Appwrite Cloud requires TLS on the public hostname. If your PHP runtime needs an explicit CA bundle for MySQL TLS verification, set `MYSQL_ATTR_SSL_CA` to a trusted root store path and keep the `options` entry in the `mysql` connection: + +```php +'options' => extension_loaded('pdo_mysql') ? array_filter([ + Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), +]) : [], +``` + +# Run migrations {% #migrate %} + +Define your schema with a migration: + +```php +Schema::create('posts', function (Blueprint $table) { + $table->id(); + $table->string('title'); + $table->text('body'); + $table->timestamps(); +}); +``` + +Apply migrations from your machine or a deploy step: + +```bash +php artisan migrate + +# non-interactive, for CI and production deploys +php artisan migrate --force +``` + +Run `migrate` against the **direct** MySQL port (`3306`), not the pooler. Migrations issue DDL and schema inspection queries that should use a stable backend connection. The primary `admin` user owns the database and can run schema changes. + +# Query with Eloquent {% #query %} + +Once the schema is migrated, use Eloquent models and the query builder as usual: + +```php +namespace App\Models; + +use Illuminate\Database\Eloquent\Model; + +class Post extends Model +{ + protected $fillable = [ + 'title', + 'body', + ]; +} +``` + +```php +use App\Models\Post; + +$post = Post::create([ + 'title' => 'Hello from a native MySQL database', + 'body' => 'Stored in a native MySQL database.', +]); + +$recent = Post::query() + ->orderByDesc('created_at') + ->limit(10) + ->get(); +``` + +Nothing about the native MySQL database changes how Eloquent, relationships, transactions, or the query builder behave. It is a standard MySQL server behind a TLS connection. + +# Pool connections from serverless {% #pooling %} + +The right port depends on how your app runs. + +A **long-running** PHP process, traditional PHP-FPM with persistent connections, [Laravel Octane](https://laravel.com/docs/octane), or a queue worker, holds its own backend connection for its lifetime. Point these at the **direct** MySQL port (`3306`), or at the [connection pooler](/docs/products/databases/mysql/connection-pooling) in **session mode**. Don't put a long-lived process behind the transaction-mode pooler. + +A **serverless** or per-request deployment (Vercel, AWS Lambda, Cloud Run) opens a fresh connection on every invocation and can fan out into more backend connections than the engine allows. Route runtime traffic through the pooler's **transaction-mode** port (`6033`) on the same hostname, and keep a named direct connection for migrations and other schema operations: + +```env +# Runtime: pooled, transaction mode +DB_HOST=db-<hash>.<region>.appwrite.center +DB_PORT=6033 +DB_DATABASE=<database> +DB_USERNAME=admin +DB_PASSWORD=<password> +DB_CHARSET=utf8mb4 +DB_COLLATION=utf8mb4_unicode_ci + +# Migrations and schema operations: direct MySQL port +DB_DIRECT_HOST=db-<hash>.<region>.appwrite.center +DB_DIRECT_PORT=3306 +DB_DIRECT_DATABASE=<database> +DB_DIRECT_USERNAME=admin +DB_DIRECT_PASSWORD=<password> +``` + +Add a second MySQL connection in `config/database.php` for direct schema work: + +```php +'mysql_direct' => [ + 'driver' => 'mysql', + 'url' => env('DB_DIRECT_URL'), + 'host' => env('DB_DIRECT_HOST', env('DB_HOST', '127.0.0.1')), + 'port' => env('DB_DIRECT_PORT', env('DB_PORT', '3306')), + 'database' => env('DB_DIRECT_DATABASE', env('DB_DATABASE', 'laravel')), + 'username' => env('DB_DIRECT_USERNAME', env('DB_USERNAME', 'root')), + 'password' => env('DB_DIRECT_PASSWORD', env('DB_PASSWORD', '')), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + Mysql::ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], +], +``` + +Run schema commands against that connection: + +```bash +php artisan migrate --database=mysql_direct --force +``` + +For manual schema work, call `DB::connection('mysql_direct')`. The transaction-mode pooler does not keep session state across transactions, so user variables, temporary tables, and server-side prepared statements should use the direct port or **session mode**. See the [pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the trade-offs. + +# Queues and Horizon {% #queues %} + +A queue worker is a long-running process. `php artisan queue:work` boots once and processes jobs for its whole lifetime, holding a persistent database connection the entire time. The same applies to every worker that [Laravel Horizon](https://laravel.com/docs/horizon) supervises. Treat workers like any other long-lived process: + +- Connect them to the **direct** MySQL port (`3306`) or the **session-mode** pooler, never the transaction-mode pooler. +- Restart workers periodically with `--max-time` or `--max-jobs` so a fresh process reclaims memory and reopens its connection. Supervisor or Horizon restarts them automatically. + +```bash +php artisan queue:work --max-time=3600 --max-jobs=500 +``` + +Each worker counts as one backend connection, so size your worker pool (and Horizon's `maxProcesses`) against the connection budget of your [specification](/docs/products/databases/mysql). Horizon itself requires Redis for the queue backend; only your application's data connection touches the native MySQL database. + +# Use a branch for previews and CI {% #branches %} + +MySQL [branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname. Create them from the API for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its connection details. +2. Export them as the `DB_*` variables for the job. +3. Run `php artisan migrate --force` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations and tests run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connect" %} +Retrieve credentials, rotate the password, and create scoped connection users. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/metabase/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/metabase/+page.markdoc new file mode 100644 index 0000000000..6f93a1a296 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/metabase/+page.markdoc @@ -0,0 +1,78 @@ +--- +layout: article +title: Metabase +description: Connect Metabase to an Appwrite native MySQL database for analytics. Configure MySQL connection details, require TLS on Cloud, and build dashboards on a session-safe connection. +--- + +Appwrite's native MySQL database is a standard MySQL engine, so [Metabase](https://www.metabase.com/) can connect to it without an Appwrite-specific adapter. Add the database in Metabase, use the host and credentials from the [Connections](/docs/products/databases/mysql/connections) page, and Metabase will sync the schema so your team can build questions and dashboards. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. Fetch them with [`mysql.get()`](/docs/products/databases/mysql/connections#credentials). The response includes `hostname`, `connectionPort`, `connectionUser`, `connectionPassword`, and `connectionString`. The primary user is `admin`, and the database name is generated per database. +{% /info %} + +# Choose credentials for Metabase {% #credentials %} + +Metabase connects with the MySQL user you provide. Use the least-privilege MySQL account available for analytics. A reporting account typically needs `SELECT` on the tables and views Metabase should query. The primary `admin` user returned by Appwrite can read and write data and schema, so reserve it for trusted Metabase instances. + +Metabase features such as model actions and editable table data need write privileges. Enable them only on a connection whose MySQL account has the specific write permissions that workflow needs. + +# Add the database in Metabase {% #add-database %} + +In Metabase, click the grid icon, then open **Admin > Databases > Add a database**. Choose **MySQL** as the database type and fill in the connection form with the values from the [Connections](/docs/products/databases/mysql/connections) page. + +| Field | Value | +|-------|-------| +| Host | `db-<hash>.<region>.appwrite.center` | +| Port | `3306` | +| Database name | `<database>` | +| Username | `admin`, or your least-privilege MySQL account | +| Password | `<password>` | + +Turn on **Use a secure connection (SSL)**. Appwrite Cloud requires TLS for native MySQL connections on the public hostname. If your Metabase deployment needs an explicit certificate chain, add it in Metabase's **SSL certificate** field. See [Network security](/docs/products/databases/mysql/network-security) for Appwrite TLS and network controls. + +{% info title="Use a session-safe connection" %} +Metabase keeps database sessions open and can use session-level MySQL behavior while exploring data. Connect it to the direct MySQL port (`3306`). If your specification includes the [connection pooler](/docs/products/databases/mysql/connection-pooling), use `session` mode for Metabase. Transaction-mode pooling can break session-level features because a client session is not bound to one backend connection. +{% /info %} + +Click **Save changes**. Metabase verifies the connection and starts its first schema sync. + +# Build a question or dashboard {% #build %} + +Once the first sync finishes, your tables appear in the data picker. To build your first chart: + +1. Click **+ New > Question** and pick your Appwrite MySQL database as the data source. +2. Choose a table, add a summary such as count, sum, or average, and group by a column such as a timestamp. +3. Switch the visualization to a line, bar, or table view, then save the question. +4. Add saved questions to a dashboard and use filters to slice data across cards. + +Use read-only native SQL questions for analytics dashboards. If the connection uses `admin`, use Metabase permissions to limit who can run native SQL or enable write-capable features. + +# How Metabase syncs your schema {% #sync %} + +After you connect, Metabase scans the database to discover tables, columns, constraints, and field metadata, then keeps that metadata current on a schedule: + +- A lightweight schema sync runs hourly by default. +- A more intensive field-value scan runs daily by default to populate filter dropdowns. + +New tables and columns appear after the next sync. To pull them in immediately, open **Admin > Databases > your database** and click **Sync database schema**. You can also restrict which schemas Metabase tracks and adjust the sync and scan cadence from the database settings. Refer to the [Metabase documentation](https://www.metabase.com/docs/latest/databases/sync-scan) for the full set of sync and scan options. + +# Use a branch for testing {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are isolated copies of a native MySQL database with their own host and credentials. Point a second Metabase database connection at a branch when you want to validate a dashboard against a snapshot of production data without querying the live database. Branches are managed through the API, and you can delete the branch when testing is complete. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql" title="MySQL" %} +Provision and manage a native MySQL database for your project. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve connection details and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooling" %} +Pool modes and ports, including why BI tools need session or direct connections. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS, certificate verification, IP allowlists, and idle connection timeouts. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/nextjs/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/nextjs/+page.markdoc new file mode 100644 index 0000000000..74385b46e7 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/nextjs/+page.markdoc @@ -0,0 +1,204 @@ +--- +layout: article +title: Next.js +description: Connect a Next.js App Router application to an Appwrite native MySQL database from Route Handlers, Server Actions, and Server Components, pool from serverless, and fall back to the SQL API on the Edge runtime. +--- + +An Appwrite native MySQL database works with standard MySQL drivers and ORMs, so a [Next.js](https://nextjs.org/) App Router application can query it from server-side code. Point your driver at the connection string from the [Connections](/docs/products/databases/mysql/connections) page and keep all database access on the server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. See [MySQL](/docs/products/databases/mysql) to create one and [Connections](/docs/products/databases/mysql/connections) to retrieve the connection string. The primary user is `admin`, and Appwrite generates the database name for each database. +{% /info %} + +# Where to connect {% #where %} + +In the App Router, every server-side execution context runs on the **Node.js runtime by default**, and the Node.js runtime can open raw TCP sockets. That means you can use a standard database driver from any of these: + +- **Route Handlers** (`app/api/.../route.ts`) for public routes, webhooks, and REST-style APIs. +- **Server Actions** (`'use server'` functions) for form submissions and app-internal mutations. +- **Server Components** (`async` components) for read queries that render straight into the page. + +Never import a database driver into a Client Component (`'use client'`) or ship the connection string to the browser. Keep all database access on the server. + +The one exception is the **Edge runtime** (`export const runtime = 'edge'`), which runs in a constrained environment and cannot use Node.js TCP drivers. If a route opts into Edge, use the [SQL API](/docs/products/databases/mysql/quick-start#first-queries) over HTTPS, see [the Edge runtime section](#edge) below. + +# Install the driver {% #install %} + +Install the MySQL driver for Node.js: + +```bash +npm install mysql2 +``` + +# Environment variables {% #env %} + +Put the connection strings in your environment and never commit them. For local development, use `.env.local`, which Next.js loads automatically and the default `create-next-app` template excludes from Git: + +```env +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>" +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" +MYSQL_SSL="true" +``` + +`DATABASE_URL` points at the [connection pooler](/docs/products/databases/mysql/connection-pooling) port (`6033`) for runtime traffic, and `DIRECT_URL` points at the MySQL engine port (`3306`) for migrations and schema changes. The connection string returned by Appwrite uses the engine port, so change only the port when you connect through the pooler. If your specification does not include the pooler, use the direct connection string for `DATABASE_URL` too. + +Appwrite Cloud serves MySQL over TLS. The examples below use `MYSQL_SSL="true"` to make `mysql2` request TLS and verify the server certificate with the runtime's trusted CAs. For full certificate verification controls or mTLS, see the [Network security](/docs/products/databases/mysql/network-security) page. + +# Create a table for the examples {% #table %} + +Run this SQL once through your migration workflow or the `mysql` client: + +```sql +CREATE TABLE IF NOT EXISTS nextjs_users ( + id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); + +INSERT INTO nextjs_users (email) +VALUES ('ada@example.com') +ON DUPLICATE KEY UPDATE email = nextjs_users.email; +``` + +# Pool serverless connections {% #pooling %} + +When you deploy to Vercel, Netlify, or another serverless platform, each invocation can spin up a fresh instance with its own connection pool. Hundreds of concurrent invocations fan out into far more backend connections than the engine allows. Route runtime traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling) on the pooler port so it can multiplex those instances over a small number of backend connections. + +The pooler defaults to **transaction mode**, which does not keep a backend connection across statements, so session-level features such as server-side prepared statements and temporary tables are unavailable. Use `pool.query()` with `?` placeholders for pooled runtime queries. Reserve the engine port for migrations, schema changes, and workloads that need a full session. + +# Use a singleton client {% #singleton %} + +Instantiate one pool per module scope and reuse it across invocations, so warm serverless instances do not reconnect on every request. In development, Next.js hot reload re-evaluates modules, which can leak connections, so cache the pool on `globalThis`. + +With [mysql2](https://sidorares.github.io/node-mysql2/): + +```ts +// lib/db.ts +import mysql, { type Pool } from 'mysql2/promise'; + +const globalForDb = globalThis as unknown as { mysqlPool?: Pool }; + +function createPool() { + const url = new URL(process.env.DATABASE_URL!); + + return mysql.createPool({ + host: url.hostname, + port: Number(url.port || 3306), + user: decodeURIComponent(url.username), + password: decodeURIComponent(url.password), + database: decodeURIComponent(url.pathname.slice(1)), + waitForConnections: true, + connectionLimit: 5, + ssl: process.env.MYSQL_SSL === 'true' ? { rejectUnauthorized: true } : undefined + }); +} + +export const pool = globalForDb.mysqlPool ?? createPool(); + +if (process.env.NODE_ENV !== 'production') globalForDb.mysqlPool = pool; +``` + +Query it from a Server Component or Route Handler: + +```ts +// app/users/route.ts +import type { RowDataPacket } from 'mysql2'; + +import { pool } from '@/lib/db'; + +type UserRow = RowDataPacket & { + id: number; + email: string; + created_at: Date; +}; + +export async function GET() { + const [users] = await pool.query<UserRow[]>( + 'SELECT id, email, created_at FROM nextjs_users ORDER BY created_at DESC LIMIT ?', + [10] + ); + + return Response.json(users); +} +``` + +# Use Prisma or Drizzle {% #orm %} + +For a typed schema, migrations, and a query builder, reach for an ORM. Both integrate with the pooled `DATABASE_URL` plus direct `DIRECT_URL` pattern above. + +- **Prisma**: point the runtime at the pooled connection string and keep the Prisma CLI on the engine port for migrations, then run `prisma migrate deploy`. See the [Prisma](/docs/products/databases/mysql/integrations/prisma) guide for the full config and migration flow. +- **Drizzle**: use Drizzle's MySQL driver for runtime queries and the direct URL for `drizzle-kit` migrations. See the [Drizzle](/docs/products/databases/mysql/integrations/drizzle) guide. + +{% arrow_link href="/docs/products/databases/mysql/integrations/prisma" %} +Set up Prisma against native MySQL +{% /arrow_link %} + +# Edge runtime: use the SQL API {% #edge %} + +If a Route Handler or route segment opts into the Edge runtime, it cannot use a Node.js MySQL driver: + +```ts +export const runtime = 'edge'; +``` + +From the Edge runtime, you can execute one parameterized SQL statement over HTTPS and get JSON back. `SELECT`, `INSERT`, `UPDATE`, and `DELETE` statements are allowed by default. Use the global `fetch` available in the Edge runtime: + +```ts +// app/edge-users/route.ts +export const runtime = 'edge'; + +export async function GET() { + const response = await fetch( + 'https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/executions', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Appwrite-Project': process.env.APPWRITE_PROJECT_ID!, + 'X-Appwrite-Key': process.env.APPWRITE_API_KEY! + }, + body: JSON.stringify({ + sql: 'SELECT id, email FROM nextjs_users WHERE created_at > ? ORDER BY created_at DESC LIMIT ?', + bindings: ['2026-05-01 00:00:00', 10] + }) + } + ); + + if (!response.ok) { + throw new Error(await response.text()); + } + + const { rows } = await response.json(); + return Response.json(rows); +} +``` + +The response is `{ rows, rowCount, columns, durationMs, truncated, bytes }`. Bindings are sent separately and never interpolated into the SQL string. Add `APPWRITE_PROJECT_ID` and `APPWRITE_API_KEY` to your environment alongside the database URLs. Use an API key with the `dedicatedDatabases.execute` scope. + +{% arrow_link href="/docs/products/databases/mysql/quick-start#first-queries" %} +Read the SQL API reference +{% /arrow_link %} + +# Local development {% #local %} + +`next dev` runs on the Node.js runtime, so a local server can connect to the native MySQL database with the same server-only driver code. Keep `DATABASE_URL`, `DIRECT_URL`, and `MYSQL_SSL` in `.env.local`. + +For throwaway data in tests or experiments, create a [branch](/docs/products/databases/mysql/branches), an instant, isolated copy with its own connection string, and point `.env.local` at it. Delete the branch when you're done. + +# Deploy {% #deploy %} + +When you deploy, set the same `DATABASE_URL`, `DIRECT_URL`, `MYSQL_SSL`, `APPWRITE_PROJECT_ID`, and `APPWRITE_API_KEY` as environment variables on your hosting platform. Run migrations from the direct connection in your build or release step, and use the SQL API from any Edge Functions. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/integrations/prisma" title="Prisma" %} +Datasource config, pooled and direct URLs, and the migration workflow. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/quick-start#first-queries" title="SQL API" %} +Query over HTTPS from the Edge runtime without a TCP connection. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/prisma/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/prisma/+page.markdoc new file mode 100644 index 0000000000..3db720058b --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/prisma/+page.markdoc @@ -0,0 +1,214 @@ +--- +layout: article +title: Prisma +description: Use Prisma ORM with an Appwrite native MySQL database. Configure the Prisma 7 datasource, apply schema changes through the direct connection, and instantiate Prisma Client with the MySQL driver adapter. +--- + +[Prisma ORM](https://www.prisma.io/) works with Appwrite's native MySQL database as a standard MySQL target. Configure Prisma with the connection string from Appwrite, apply schema changes through the direct database connection, and use Prisma Client from your application code. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. The database object returned by the Appwrite API includes `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`; you can read it with `mysql.get()` or from the response when you create the database. +{% /info %} + +# Initialize Prisma {% #initialize %} + +Install Prisma, Prisma Client, the MySQL driver adapter, the MariaDB driver used by the adapter, and the TypeScript tools used by the examples: + +```bash +npm install -D prisma typescript tsx @types/node +npm install @prisma/client @prisma/adapter-mariadb dotenv mariadb +``` + +Initialize Prisma for MySQL: + +```bash +npx prisma init --datasource-provider mysql --output ../generated/prisma +``` + +Prisma 7 generates a `prisma.config.ts` file and a `prisma/schema.prisma` file. Set `"type": "module"` in `package.json` if your project does not already use ECMAScript modules. + +# Configure connection strings {% #connection-strings %} + +Store the Appwrite connection string in environment variables and do not commit it: + +```env +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?sslaccept=strict" +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?sslaccept=strict" +``` + +`DATABASE_URL` is the runtime connection used by Prisma Client. `DIRECT_URL` is the direct database connection used by Prisma CLI commands. + +Appwrite Cloud uses TLS for MySQL connections. Prisma's MySQL connector uses `sslaccept=strict` for TLS with certificate verification. For mTLS and network controls, see [Network security](/docs/products/databases/mysql/network-security). + +Prisma's `migrate dev` command uses a shadow database to detect drift. Appwrite's MySQL `admin` user is scoped to its database and cannot create another MySQL database for that workflow. Generate development migrations against a local MySQL database, a separate Appwrite database, or an Appwrite branch, then apply committed migrations to this database with `migrate deploy`. + +# Configure Prisma {% #configure-prisma %} + +In `prisma.config.ts`, read the CLI connection string from the environment: + +```ts +import "dotenv/config"; +import { defineConfig } from "prisma/config"; + +export default defineConfig({ + schema: "prisma/schema.prisma", + migrations: { + path: "prisma/migrations", + seed: "tsx prisma/seed.ts", + }, + datasource: { + url: process.env["DIRECT_URL"] ?? process.env["DATABASE_URL"], + }, +}); +``` + +In `prisma/schema.prisma`, keep the datasource provider in the schema file and generate Prisma Client into the output directory created by `prisma init`: + +```prisma +generator client { + provider = "prisma-client" + output = "../generated/prisma" +} + +datasource db { + provider = "mysql" +} + +model User { + id String @id @default(uuid()) + email String @unique + createdAt DateTime @default(now()) + + @@map("prisma_User") +} +``` + +Rename the mapped table for your application. If you are connecting to an existing database, use Prisma introspection after you configure the environment variables so your schema matches the current tables. + +# Pool connections from serverless {% #pooling %} + +Prisma Client opens database connections from each running application instance. On serverless platforms, many cold starts can quickly multiply the number of backend MySQL connections. On specifications that include the [connection pooler](/docs/products/databases/mysql/connection-pooling), route runtime traffic through the pooler port, `6033`, for `DATABASE_URL` while keeping `DIRECT_URL` on the direct MySQL port, `3306`, for migrations and introspection: + +```env +# Runtime: pooled connection through the Appwrite connection pooler +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/<database>?sslaccept=strict" + +# Prisma CLI: direct MySQL connection for migrations and introspection +DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>?sslaccept=strict" +``` + +The pooler defaults to transaction mode, which gives the highest connection multiplexing. If your application depends on session-level features such as user variables, temporary tables, or session-scoped prepared statements, use session mode or keep that workload on the direct MySQL port. See [Connection pooling](/docs/products/databases/mysql/connection-pooling#modes) for pool mode trade-offs. + +# Apply schema changes {% #schema-changes %} + +For an initial migration generated from the Prisma schema file, create a migration directory and write the SQL diff: + +```bash +mkdir -p prisma/migrations/20260708160000_init +npx prisma migrate diff --from-empty --to-schema prisma/schema.prisma --script --output prisma/migrations/20260708160000_init/migration.sql +``` + +If this database already contains tables and Prisma has not created its migration history, baseline it once before applying migrations: + +```bash +mkdir -p prisma/migrations/00000000000000_baseline +touch prisma/migrations/00000000000000_baseline/migration.sql +npx prisma migrate resolve --applied 00000000000000_baseline +``` + +Apply committed migrations through the direct MySQL connection: + +```bash +npx prisma migrate deploy +``` + +Generate Prisma Client after you install dependencies or change `prisma/schema.prisma`: + +```bash +npx prisma generate +``` + +The primary `admin` user owns its assigned database and can run schema changes inside that database. Keep migrations and introspection on the direct MySQL port because they need session-level behavior. + +# Seed data {% #seed %} + +With the seed command configured in `prisma.config.ts`, add a seed script: + +```ts +import "dotenv/config"; +import { PrismaMariaDb } from "@prisma/adapter-mariadb"; +import { PrismaClient } from "../generated/prisma/client"; + +const adapter = new PrismaMariaDb(process.env.DATABASE_URL!); +const prisma = new PrismaClient({ adapter }); + +await prisma.user.upsert({ + where: { email: "ada@example.com" }, + update: {}, + create: { email: "ada@example.com" }, +}); + +await prisma.$disconnect(); +``` + +Run the seed command: + +```bash +npx prisma db seed +``` + +# Query with Prisma Client {% #query %} + +Instantiate Prisma Client with the MySQL driver adapter: + +```ts +import "dotenv/config"; +import { PrismaMariaDb } from "@prisma/adapter-mariadb"; +import { PrismaClient } from "./generated/prisma/client"; + +const adapter = new PrismaMariaDb(process.env.DATABASE_URL!); +const prisma = new PrismaClient({ adapter }); + +const user = await prisma.user.create({ + data: { email: "grace@example.com" }, +}); + +const recent = await prisma.user.findMany({ + orderBy: { createdAt: "desc" }, + take: 10, +}); + +console.log({ user, recent }); + +await prisma.$disconnect(); +``` + +On long-running servers, instantiate `PrismaClient` once and reuse it. On serverless platforms, keep a single client per module scope so warm invocations reuse it, and rely on the pooler to absorb cold-start connection churn when your database specification includes it. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname and connection string. They are useful for running migrations against throwaway data in a pull-request preview or integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DIRECT_URL`, and use the pooled variant as `DATABASE_URL` if the branch has the pooler enabled. +3. Run `npx prisma migrate deploy` and your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials, rotate the primary password, and connect with MySQL tools. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooling" %} +Pool modes, ports, and read/write splitting for serverless workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc new file mode 100644 index 0000000000..325fd3228c --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc @@ -0,0 +1,173 @@ +--- +layout: article +title: Rails +description: Use Ruby on Rails and ActiveRecord with an Appwrite native MySQL database. Configure database.yml, run migrations against the direct database port, and size the ActiveRecord pool. +--- + +A native MySQL database is a standard MySQL engine, so [Ruby on Rails](https://rubyonrails.org/) works against it through ActiveRecord with no Appwrite-specific configuration. Point `config/database.yml` at the connection details from the [Connections](/docs/products/databases/mysql/connections) page and use ActiveRecord, migrations, and the rest of the Rails toolchain exactly as you would against any MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. Call `mysql.get()` from the Appwrite API to read `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. The primary user is `admin`, and Appwrite generates the database name for each database. +{% /info %} + +# Install the database driver {% #driver %} + +ActiveRecord talks to MySQL through the `mysql2` driver gem. Add it to your `Gemfile`: + +```ruby +# Gemfile +gem "mysql2", "~> 0.5" +``` + +The `mysql2` gem builds against MySQL client libraries, so the MySQL or MariaDB client headers must be available at install time. + +Then install: + +```bash +bundle install +``` + +# Set the connection string {% #connection-string %} + +Fetch the connection string with the [API](/docs/products/databases/mysql/connections#credentials). Keep it in an environment variable and do not commit it: + +```env +DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" +DB_SSL_MODE="required" +``` + +Rails maps the `mysql://` URL scheme to the `mysql2` adapter by default. Set `ssl_mode` in `database.yml` so mysql2 requires TLS on Appwrite Cloud. For certificate verification (`verify_identity`) or mTLS, see the [Network](/docs/products/databases/mysql/network-security) page. + +# Configure database.yml {% #database-yml %} + +Rails reads `DATABASE_URL` automatically. The simplest configuration points the `url` at the environment variable and lets ActiveRecord parse the host, port, database, and credentials out of it: + +```yaml +# config/database.yml +production: + adapter: mysql2 + url: <%= ENV["DATABASE_URL"] %> + ssl_mode: <%= ENV.fetch("DB_SSL_MODE", "required") %> + max_connections: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +If you'd rather set the fields explicitly, the discrete keys map one-to-one to the values from the [Connections](/docs/products/databases/mysql/connections#credentials) response. Use ERB to read each value from the environment so no secret lands in source control: + +```yaml +# config/database.yml +production: + adapter: mysql2 + encoding: utf8mb4 + host: <%= ENV["DB_HOST"] %> # db-<hash>.<region>.appwrite.center + port: <%= ENV.fetch("DB_PORT", 3306) %> + database: <%= ENV["DB_NAME"] %> # <database> + username: <%= ENV.fetch("DB_USER", "admin") %> + password: <%= ENV["DB_PASSWORD"] %> + ssl_mode: <%= ENV.fetch("DB_SSL_MODE", "required") %> + max_connections: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +When both `DATABASE_URL` and explicit keys are present, Rails merges them. `ssl_mode` and `max_connections` can still be set in `database.yml`, so a `url`-based config can keep secrets in the environment and tune the connection pool in YAML. + +# Size the connection pool {% #pool %} + +ActiveRecord manages a per-process connection pool. In current Rails apps, `max_connections:` caps how many backend connections a single Rails process holds. Older apps may use the `pool:` name for the same setting. The value defaults to `5` and must be large enough for every thread that checks out a connection, your Puma worker threads plus any background job threads in the same process. + +```yaml +production: + adapter: mysql2 + url: <%= ENV["DATABASE_URL"] %> + ssl_mode: <%= ENV.fetch("DB_SSL_MODE", "required") %> + max_connections: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> +``` + +Tying `max_connections` to `RAILS_MAX_THREADS` keeps it aligned with Puma's thread count. Each Puma **worker** is a separate process with its own pool, so the backend connection count is roughly `max_connections × workers × server instances`. Keep that product within your specification's `maxConnections`, see [specifications](/docs/products/databases/mysql#specifications). + +# Run migrations {% #migrate %} + +Generate and apply migrations the usual way: + +```bash +bin/rails db:migrate +``` + +Migrations issue DDL and need a session-level connection, so run them against the direct MySQL port `3306`, not the transaction-mode pooler. Point `DATABASE_URL` (or a separate migration URL) at the direct port when you run `db:migrate`. The primary `admin` user owns the database and can run schema changes. + +# Use ActiveRecord {% #activerecord %} + +Once `database.yml` is configured, models work with no further setup. Define a migration and model, then query through ActiveRecord: + +```ruby +# db/migrate/20240101000000_create_rails_users.rb +class CreateRailsUsers < ActiveRecord::Migration[8.1] + def change + create_table :rails_users do |t| + t.string :email, null: false + t.timestamps + end + add_index :rails_users, :email, unique: true + end +end +``` + +```ruby +# app/models/rails_user.rb +class RailsUser < ApplicationRecord + validates :email, presence: true, uniqueness: true +end +``` + +```ruby +RailsUser.create!(email: 'ada@example.com') + +recent = RailsUser.order(created_at: :desc).limit(10) +``` + +ActiveRecord opens connections lazily and reuses them from the pool, so a long-running Puma server keeps a small, stable set of backend connections rather than opening one per request. + +# Pooling for a long-running server {% #pooling %} + +A Rails app under Puma is a long-running process: it holds an ActiveRecord pool for its lifetime. That pairs naturally with the direct MySQL port `3306`, sized so `max_connections × workers` stays within your connection budget. This is the recommended setup for a persistent server. + +If you instead route through the [connection pooler](/docs/products/databases/mysql/connection-pooling) to absorb spikes or many app instances, prefer **session mode**, which keeps a backend connection for the whole client session and behaves like a direct connection to ActiveRecord. The pooler defaults to **transaction mode**, which hands out a different backend connection per transaction. If your Rails configuration enables server-side prepared statements, disable them for transaction-mode pooling or use session mode: + +```yaml +production: + adapter: mysql2 + url: <%= ENV["DATABASE_URL"] %> # pooler host, port 6033 + ssl_mode: <%= ENV.fetch("DB_SSL_MODE", "required") %> + max_connections: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %> + prepared_statements: false +``` + +See the [pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the mode trade-offs. Whichever runtime connection you choose, always run `bin/rails db:migrate` against the direct MySQL port. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname and connection string. They're ideal for running migrations against throwaway data in a pull-request preview or an integration-test job: + +1. Create a branch from the API and read its `connectionString`. +2. Export it as `DATABASE_URL` for the job. +3. Run `bin/rails db:migrate` and your test suite against the branch. +4. Delete the branch when the job finishes. + +A branch has no pooler and exposes the MySQL port directly, which gives migrations the session-level connection they need. Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations run against realistic data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for high-concurrency workloads. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} + +For ActiveRecord and migration details beyond this guide, see the [Rails configuration guide](https://guides.rubyonrails.org/configuring.html). diff --git a/src/routes/docs/products/databases/mysql/integrations/retool/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/retool/+page.markdoc new file mode 100644 index 0000000000..d29e7d9fb3 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/retool/+page.markdoc @@ -0,0 +1,89 @@ +--- +layout: article +title: Retool +description: Connect Retool to an Appwrite native MySQL database to build internal and admin tools. Fetch connection details with the API, configure the MySQL resource with TLS, and allow Retool Cloud network access when needed. +--- + +An Appwrite [native MySQL database](/docs/products/databases/mysql) exposes a standard MySQL connection, so [Retool](https://retool.com/) connects to it through the built-in **MySQL** resource. Use the database hostname, generated database name, and credentials from Appwrite, then build queries, tables, and forms in Retool for dashboards and admin panels. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state, an Appwrite API key with `databases.read`, and permission to create resources in Retool. Fetch connection details by calling `mysql.get()`, which returns `hostname`, `connectionPort`, `connectionUser`, `connectionPassword`, and `connectionString`. See [Connections](/docs/products/databases/mysql/connections) for the full flow. +{% /info %} + +# Choose credentials {% #credentials %} + +The primary user is `admin`, and the database name is generated for each database. The connection string has this form: `mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>`. + +Use the returned `admin` credentials for the Retool resource and keep access limited through Retool resource permissions, Appwrite network controls, TLS, and narrowly scoped queries. Retool stores resource credentials server-side, so app users query through the Retool resource instead of connecting to MySQL from the browser. + +# Create the MySQL resource {% #resource %} + +In Retool, go to **Resources**, click **Create new** > **Resource**, search for `MySQL`, and select the MySQL tile. Give the resource a clear **Name** and optional **Description** that identifies the Appwrite database and environment. + +In **Resource credentials**, either paste the Appwrite connection string or fill in the fields manually: + +| Retool setting | Value | +|----------------|-------| +| Host | `db-<hash>.<region>.appwrite.center` | +| Port | `3306` | +| Database name | `<database>` | +| Connection options | Optional MySQL query parameters, such as `timezone=UTC` or `connectTimeout=10000` | +| Authentication | **Username and password** | +| Username | `admin` | +| Password | The value from `connectionPassword` | + +In **Advanced options**, choose an outbound region if your Retool organization uses regional egress and you want the resource traffic to originate near your Appwrite database. + +Enable **SSL/TLS**. Appwrite Cloud terminates TLS at the edge, and the certificate is signed by a public CA. If Retool shows **Reject unauthorized**, keep it enabled. If Retool shows **Verification mode**, choose **Full verification**. Leave **CA certificate** empty. + +Click **Test connection**. If the test succeeds, click **Create resource**. + +# Pick the connection path {% #connection-path %} + +For most Retool apps, connect directly to MySQL on port `3306`. Appwrite's MySQL pooler listens on port `6033` only on specifications that include connection pooling. If your database has the [connection pooler](/docs/products/databases/mysql/connection-pooling) enabled and your Retool queries rely on session-level state such as server-side prepared statements, user variables, or temporary tables, configure the pooler in **session** mode for that Retool resource. + +{% arrow_link href="/docs/products/databases/mysql/connection-pooling#modes" %} +Compare pooler modes +{% /arrow_link %} + +# Allow Retool Cloud through the network {% #network %} + +If you enabled an [IP allowlist](/docs/products/databases/mysql/network-security#ip-allowlist) for the database, add the Retool Cloud egress addresses for the resource's outbound region. Retool's default outbound region is `us-west-2`, and Retool also documents `eu-central-1` and `ap-southeast-1` egress addresses. Retrieve the current list from [Retool's IP address documentation](https://docs.retool.com/data-sources/reference/ip-allowlist-cloud-orgs) instead of copying static addresses into your runbook. + +If you leave the database allowlist open, rely on TLS, database credentials, and Retool resource permissions to protect access. + +{% arrow_link href="/docs/products/databases/mysql/network-security#ip-allowlist" %} +Configure the IP allowlist +{% /arrow_link %} + +# Build an admin tool {% #build %} + +After the resource is connected, create MySQL queries in Retool and wire them to components: + +- Use **SQL mode** for read queries that feed a **Table**, chart, or other display component. +- Use **GUI mode** actions such as **Insert a record**, **Update an existing record**, **Update a record, or create a new record if it doesn't exist**, **Delete a record**, **Bulk insert records**, **Bulk update via a primary key**, and **Bulk upsert via a primary key** for forms, imports, and editable tables. +- Bind table edits to the **Save changes** event and refresh the read query after writes complete. +- Show a confirmation modal before delete actions. + +Reference component values with Retool's `{{ }}` embedded expressions. Retool converts MySQL queries to prepared statements by default, which separates values from SQL text and helps prevent SQL injection. Keep that protection enabled unless you have a specific, reviewed reason to disable it. + +# Use a branch for staging {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are API-created, isolated copies of a MySQL database with their own connection details. Create a branch for staging or preview work, fetch its `connectionString`, and configure a second Retool MySQL resource against that branch. Delete the branch when the staging tool is no longer needed. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql" title="MySQL" %} +Create and manage a native MySQL database. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS, IP allowlists, and other network controls. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Create isolated database copies for staging and preview environments. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc new file mode 100644 index 0000000000..983119888a --- /dev/null +++ b/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc @@ -0,0 +1,182 @@ +--- +layout: article +title: Spring Boot +description: Connect a Spring Boot application to an Appwrite native MySQL database with Spring Data JPA and Hibernate. Configure the JDBC datasource and HikariCP pool, map entities, and run Flyway or Liquibase migrations against MySQL. +--- + +An Appwrite native MySQL database is a standard MySQL engine, so a Spring Boot application connects to it through MySQL Connector/J with no Appwrite-specific runtime configuration. Point `spring.datasource` at the JDBC URL from your database credentials, size the built-in HikariCP pool, and use Spring Data JPA, Hibernate, Flyway, or Liquibase as you would with any managed MySQL server. + +{% info title="Before you start" %} +You'll need a native MySQL database in a `ready` state and its credentials. You can fetch credentials with the API by calling `mysql.get()`, which returns `hostname`, `connectionUser`, `connectionPassword`, and `connectionString`. See [Connections](/docs/products/databases/mysql/connections) for the full flow. +{% /info %} + +# Add the dependencies {% #dependencies %} + +A Spring Data JPA application needs the JPA starter and MySQL Connector/J. HikariCP ships with `spring-boot-starter-data-jpa`, and Spring Boot picks the driver class from the JDBC URL. + +```text +org.springframework.boot:spring-boot-starter-data-jpa +com.mysql:mysql-connector-j +``` + +If you use Flyway, add `org.springframework.boot:spring-boot-starter-flyway` and `org.flywaydb:flyway-mysql`. If you use Liquibase, add `org.springframework.boot:spring-boot-starter-liquibase`. + +# Configure the datasource {% #datasource %} + +Build the JDBC URL from the host and database name in the credentials returned by `mysql.get()`. Appwrite uses port `3306`, the primary user is `admin`, and the database name is generated per database. Read the password from the environment: + +```yaml +spring: + datasource: + url: jdbc:mysql://db-<hash>.<region>.appwrite.center:3306/<database>?sslMode=REQUIRED + username: admin + password: ${DB_PASSWORD} + hikari: + maximum-pool-size: 10 + minimum-idle: 2 + connection-timeout: 30000 + max-lifetime: 1200000 + jpa: + hibernate: + ddl-auto: validate +``` + +The equivalent `application.properties`: + +```ini +spring.datasource.url=jdbc:mysql://db-<hash>.<region>.appwrite.center:3306/<database>?sslMode=REQUIRED +spring.datasource.username=admin +spring.datasource.password=${DB_PASSWORD} +spring.datasource.hikari.maximum-pool-size=10 +spring.datasource.hikari.minimum-idle=2 +spring.datasource.hikari.connection-timeout=30000 +spring.datasource.hikari.max-lifetime=1200000 +spring.jpa.hibernate.ddl-auto=validate +``` + +`sslMode=REQUIRED` enables TLS for the MySQL connection. If your security policy requires host certificate validation, configure MySQL Connector/J with `sslMode=VERIFY_IDENTITY` and a JVM trust configuration that trusts the certificate chain. The [Network security](/docs/products/databases/mysql/network-security) page covers TLS, mTLS, and IP allowlists. + +# Size the HikariCP pool {% #pool %} + +A Spring Boot server is long-running, so it holds its HikariCP pool open for the lifetime of the process. Keep `maximum-pool-size` modest. HikariCP guidance is that throughput usually peaks at a small pool, roughly `(CPU cores x 2) + effective spindle count` for the database, not hundreds of connections. A pool that exceeds what MySQL can serve only queues work inside the database and adds latency. + +Each replica of your application opens its own pool, so multiply `maximum-pool-size` by the number of instances and keep the total under the connection budget of your native MySQL database [specification](/docs/products/databases/mysql#specifications). Set `max-lifetime` a little below your infrastructure's idle timeout so HikariCP recycles connections before they are closed. + +# Map an entity {% #entity %} + +Define a JPA entity and a Spring Data repository as usual. This example uses a prefixed table name so it is easy to identify in a shared database: + +```java +package com.example.demo; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "spring_boot_users") +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, unique = true) + private String email; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } +} +``` + +```java +package com.example.demo; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UserRepository extends JpaRepository<User, Long> { + Optional<User> findByEmail(String email); +} +``` + +Inject the repository wherever you need it and call `save`, `findById`, `findByEmail`, and the rest of the generated query methods. HikariCP hands each transaction a pooled connection and returns it on commit. + +# Run migrations {% #migrate %} + +Let a migration tool own the schema and set `ddl-auto: validate` so Hibernate checks the mapping against the live tables at startup but never alters them. Add Flyway or Liquibase to your build and Spring Boot runs pending migrations automatically on boot. + +For example, a Flyway migration at `src/main/resources/db/migration/V1__init.sql` can create the table used by the entity above: + +```sql +CREATE TABLE spring_boot_users ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL UNIQUE +); +``` + +Flyway reads versioned scripts from `src/main/resources/db/migration`. Point Flyway at the direct MySQL port `3306` so migrations run on a session connection with DDL privileges. Setting `spring.flyway.url` gives Flyway its own datasource, independent of the runtime pool: + +```ini +spring.flyway.url=jdbc:mysql://db-<hash>.<region>.appwrite.center:3306/<database>?sslMode=REQUIRED +spring.flyway.user=admin +spring.flyway.password=${DB_PASSWORD} +``` + +Liquibase is equivalent: it reads a changelog from `src/main/resources/db/changelog` and accepts its own `spring.liquibase.url`, `spring.liquibase.user`, and `spring.liquibase.password` pointing at the same MySQL port. + +The primary `admin` user owns the database and can run schema changes, so run migrations as `admin`. + +# Pooling and the connection pooler {% #pooling %} + +HikariCP is already a connection pool, so a long-running Spring Boot server should connect to the direct MySQL port `3306` and let HikariCP manage connections. Routing a server's traffic through the [connection pooler](/docs/products/databases/mysql/connection-pooling) in `transaction` mode stacks HikariCP on top of a transaction pooler and can break session-level features such as server-side prepared statements, user variables, and temporary tables. + +If you put the pooler in front of your server, use `session` mode so MySQL keeps a backend connection for the whole client session. Connect HikariCP on the pooler port `6033` and keep `maximum-pool-size` small. See the [connection pooler](/docs/products/databases/mysql/connection-pooling#modes) page for the mode trade-offs. Always run Flyway or Liquibase against port `3306` regardless of how runtime traffic connects. + +# Use a branch for previews and CI {% #branches %} + +[Branches](/docs/products/databases/mysql/branches) are instant, isolated copies of a database with their own hostname and connection string. They are useful for running migrations against throwaway data in a pull-request preview or integration-test job. + +1. Create a branch with the API and read its `connectionString`. +2. Convert the connection string to a JDBC URL and inject it into `spring.datasource.url`, or split it into `spring.datasource.url`, `spring.datasource.username`, and `spring.datasource.password`. +3. Boot the application so Flyway or Liquibase applies migrations, then run your test suite against the branch. +4. Delete the branch when the job finishes. + +Because a branch starts from a storage snapshot, the schema and data match the source database at branch time, so migrations and `@DataJpaTest` integration tests run against representative data without touching production. + +# Related {% #related %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Retrieve credentials and rotate the primary password. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/connection-pooling" title="Connection pooler" %} +Pool modes, ports, and read/write splitting for the connection pooler. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/branches" title="Branches" %} +Ephemeral database copies for preview environments and CI. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/network-security" title="Network security" %} +TLS modes, certificate verification, mTLS, and IP allowlists. +{% /cards_item %} +{% /cards %} + +{% arrow_link href="/docs/products/databases/mysql" %} +Back to native MySQL overview +{% /arrow_link %} diff --git a/src/routes/docs/products/databases/mysql/maintenance/+page.markdoc b/src/routes/docs/products/databases/mysql/maintenance/+page.markdoc new file mode 100644 index 0000000000..9dc6fd110e --- /dev/null +++ b/src/routes/docs/products/databases/mysql/maintenance/+page.markdoc @@ -0,0 +1,642 @@ +--- +layout: article +title: Maintenance +description: Maintenance windows, online engine version upgrades, pause and resume, and the lifecycle states of your MySQL database. +--- + +Appwrite manages the infrastructure around your database: security patches, engine upgrades, and instance health. This page covers the controls you have over when and how that maintenance happens. + +# Maintenance window {% #window %} + +Routine maintenance that can briefly affect the database runs inside a weekly window that you choose. Set it through the API by picking a day and start hour (UTC): + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.updateMaintenance({ + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.updateMaintenance({ + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->updateMaintenance( + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update_maintenance( + database_id='<DATABASE_ID>', + day='sun', + hour_utc=3, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update_maintenance( + database_id: '<DATABASE_ID>', + day: 'sun', + hour_utc: 3, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.UpdateMaintenance( + databaseId: "<DATABASE_ID>", + day: "sun", + hourUtc: 3 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.updateMaintenance( + databaseId: '<DATABASE_ID>', + day: 'sun', + hourUtc: 3, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.updateMaintenance( + databaseId = "<DATABASE_ID>", + day = "sun", + hourUtc = 3, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.updateMaintenance( + databaseId: "<DATABASE_ID>", + day: "sun", + hourUtc: 3 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.UpdateMaintenance("<DATABASE_ID>", "sun", 3) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update_maintenance("<DATABASE_ID>", "sun", 3).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "day": "sun", + "hourUtc": 3 + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID>/maintenance +``` +{% /multicode %} + +`day` accepts `sun` through `sat`, and `hourUtc` accepts `0` to `23`. + +# Engine version upgrades {% #upgrades %} + +You can upgrade the MySQL version online, such as from 8.0 to 8.4. A second instance is provisioned on the target version, data streams over with logical replication, and traffic cuts over once replication has caught up, with no read or write outage. The target version must be newer than the database's current version: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createUpgrade({ + databaseId: '<DATABASE_ID>', + targetVersion: '8.4', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.createUpgrade({ + databaseId: '<DATABASE_ID>', + targetVersion: '8.4', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->createUpgrade( + databaseId: '<DATABASE_ID>', + targetVersion: '8.4', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.create_upgrade( + database_id='<DATABASE_ID>', + target_version='8.4', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.create_upgrade( + database_id: '<DATABASE_ID>', + target_version: '8.4', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.CreateUpgrade( + databaseId: "<DATABASE_ID>", + targetVersion: "8.4" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.createUpgrade( + databaseId: '<DATABASE_ID>', + targetVersion: '8.4', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.createUpgrade( + databaseId = "<DATABASE_ID>", + targetVersion = "8.4", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.createUpgrade( + databaseId: "<DATABASE_ID>", + targetVersion: "8.4" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.CreateUpgrade("<DATABASE_ID>", "8.4") + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.create_upgrade("<DATABASE_ID>", "8.4").await?; + + Ok(()) +} +``` +```bash +curl -X POST \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "targetVersion": "8.4" + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID>/upgrades +``` +{% /multicode %} + +# Pause and resume {% #pause-resume %} + +A paused database stops its compute but keeps its storage, configuration, and credentials. Pause a database you are not using to stop paying for compute; resume it when you need it again. From the API, update the status: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + status: 'paused', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + status: 'paused', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + status: 'paused', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + status='paused', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + status: 'paused', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + status: "paused" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + status: 'paused', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + status = "paused", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + status: "paused" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateStatus("paused"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, Some("paused"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "status": "paused" + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` +{% /multicode %} + +Set `status` back to `ready` to resume. Both transitions are asynchronous: the request returns immediately and the database moves through `pausing` or `resuming` before settling. A database in the `failed` state can also be recovered by setting its status to `ready`. + +# Lifecycle states {% #states %} + +| Status | Meaning | +|----------------|------------------------------------------------------------------| +| `provisioning` | Being created | +| `ready` | Online and accepting connections | +| `scaling` | A configuration or specification change is being applied | +| `pausing` | Transitioning to paused | +| `paused` | Compute stopped, storage retained | +| `resuming` | Transitioning back to ready | +| `restoring` | A backup or point-in-time restore is in progress | +| `failed` | An infrastructure error occurred; the database can be resumed | + +# Deleting a database {% #delete %} + +Delete a database programmatically or from the databases list in the Console. Deletion stops billing and invalidates the credentials immediately. Deleting a database also deletes its backups, so export anything you need first. diff --git a/src/routes/docs/products/databases/mysql/monitoring/+page.markdoc b/src/routes/docs/products/databases/mysql/monitoring/+page.markdoc new file mode 100644 index 0000000000..125beea074 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/monitoring/+page.markdoc @@ -0,0 +1,215 @@ +--- +layout: article +title: Monitoring +description: Check database health, watch lifecycle states, and inspect active connections on your native MySQL database. +--- + +Every native MySQL database ships with programmatic health checks, and the engine's own instrumentation is fully available to you. There is nothing to install in the database for these checks. + +# Database health {% #status %} + +Poll the database status for live health information after the database is ready: uptime, connection counts, replica state, and storage volumes. Use it from your own monitoring: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const status = await mysql.getStatus({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const status = await mysql.getStatus({ + databaseId: '<DATABASE_ID>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$status = $mysql->getStatus( + databaseId: '<DATABASE_ID>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +status = mysql.get_status( + database_id='<DATABASE_ID>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +status = mysql.get_status( + database_id: '<DATABASE_ID>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var status = await mysql.GetStatus( + databaseId: "<DATABASE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final status = await mysql.getStatus( + databaseId: '<DATABASE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val status = mysql.getStatus( + databaseId = "<DATABASE_ID>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let status = try await mysql.getStatus( + databaseId: "<DATABASE_ID>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.GetStatus("<DATABASE_ID>") + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let status = mysql.get_status("<DATABASE_ID>").await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID>/status +``` +{% /multicode %} + +For the database lifecycle state (`ready`, `scaling`, `restoring`, and friends), read the `status` field of the database object itself. Use that field from deploy pipelines to wait for the database; see [lifecycle states](/docs/products/databases/mysql/maintenance#states). + +# Inspect activity in the engine {% #activity %} + +MySQL's own instrumentation works unmodified. From the `mysql` client or any driver: + +```sql +-- live connections and their current statements +SELECT id, user, host, db, command, time, state, info +FROM performance_schema.processlist; + +-- kill a runaway connection +KILL <id>; + +-- execution plan for a slow query +EXPLAIN ANALYZE SELECT ...; +``` + +A healthy OLTP database keeps its working set in memory. If throughput drops while disk reads climb, move up a [specification](/docs/products/databases/mysql/scaling) so the buffer pool fits the working set. diff --git a/src/routes/docs/products/databases/mysql/network-security/+page.markdoc b/src/routes/docs/products/databases/mysql/network-security/+page.markdoc new file mode 100644 index 0000000000..576abc37c4 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/network-security/+page.markdoc @@ -0,0 +1,500 @@ +--- +layout: article +title: Network security +description: TLS by default, IP allowlists, and idle timeouts for your MySQL database. +--- + +Every native database is reachable through a unique public hostname, secured with TLS, and protected by network controls that you configure per database. + +# Hostname {% #hostname %} + +Each database gets a stable hostname in the form: + +``` +db-<hash>.<region>.appwrite.center +``` + +The hostname does not change for the lifetime of the database, across restarts, resizes, failovers, and version upgrades. You can copy it from the database response. + +# TLS {% #tls %} + +Connections on Appwrite Cloud are encrypted with TLS, terminated at Appwrite's edge and forwarded to your database over the internal network. Use TLS when connecting to the public hostname. If your driver does not infer TLS from the connection string, configure it to require TLS. + +# IP allowlist {% #ip-allowlist %} + +By default, any host that has your credentials can reach the database over the public internet. To restrict access to known networks, configure an IP allowlist. Connections from addresses outside the allowlist are dropped at the network layer, before authentication. + +From the API, pass CIDR blocks or single addresses: + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + network_i_p_allowlist=['203.0.113.0/24', '198.51.100.7'], +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + network_i_p_allowlist: ['203.0.113.0/24', '198.51.100.7'], +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + networkIPAllowlist: new List<string> { "203.0.113.0/24", "198.51.100.7" } +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + networkIPAllowlist: ['203.0.113.0/24', '198.51.100.7'], +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + networkIPAllowlist = listOf("203.0.113.0/24", "198.51.100.7"), +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + networkIPAllowlist: ["203.0.113.0/24", "198.51.100.7"] +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateNetworkIPAllowlist([]string{"203.0.113.0/24", "198.51.100.7"}), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update( + "<DATABASE_ID>", + None, + None, + None, + None, + None, + None, + Some(vec!["203.0.113.0/24".to_string(), "198.51.100.7".to_string()]), + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + None, + ).await?; + + Ok(()) +} +``` + +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "networkIPAllowlist": [ + "203.0.113.0/24", + "198.51.100.7" + ] + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` + +{% /multicode %} + +Rules: + +- Entries are IPv4 or IPv6 addresses or CIDR blocks, up to 100 entries per database. +- An empty allowlist means the database accepts connections from any address. +- The allowlist applies to the database and pooler ports. Appwrite's internal infrastructure, backups, monitoring, and replication are unaffected. + +{% info title="Don't lock yourself out" %} +If you connect from networks with changing addresses (home ISPs, mobile networks, serverless platforms without static egress), an allowlist can block you. Add your serverless provider's egress ranges, or leave the allowlist empty and rely on strong credentials and rotation. +{% /info %} + +# Idle timeout {% #idle-timeout %} + +Connections that stay idle are closed by the edge proxy after `networkIdleTimeoutSeconds`, 900 seconds by default. Long-lived driver pools usually send periodic keepalives and are not affected. Raise the timeout if you hold connections open across long pauses; lower it to reclaim connection slots faster. + +{% multicode %} + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +}); +``` + +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +}); +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + network_idle_timeout_seconds=900, +) +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + network_idle_timeout_seconds: 900, +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + networkIdleTimeoutSeconds: 900 +); +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + networkIdleTimeoutSeconds: 900, +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + networkIdleTimeoutSeconds = 900, +) +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + networkIdleTimeoutSeconds: 900 +) +``` + +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateNetworkIdleTimeoutSeconds(900), + ) + if err != nil { + panic(err) + } +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, None, None, None, None, Some(900), None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` + +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "networkIdleTimeoutSeconds": 900 + }' \ + https://<REGION>.cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` + +{% /multicode %} + +# Locking down access {% #checklist %} + +For a production database: + +1. Set an IP allowlist covering only your application's egress addresses. +2. Rotate the [primary password](/docs/products/databases/mysql/connections#rotate) on a schedule, and after anyone with access leaves your team. +3. Watch [connection activity](/docs/products/databases/mysql/monitoring#activity) for unexpected clients. diff --git a/src/routes/docs/products/databases/mysql/quick-start/+page.markdoc b/src/routes/docs/products/databases/mysql/quick-start/+page.markdoc new file mode 100644 index 0000000000..ffac64735b --- /dev/null +++ b/src/routes/docs/products/databases/mysql/quick-start/+page.markdoc @@ -0,0 +1,104 @@ +--- +layout: article +title: Quick start +description: Create your first native MySQL database in the Appwrite Console, retrieve its credentials, and run your first queries with the mysql client. +--- + +You can create a MySQL database and run your first query in a few minutes. + +# Create a database {% #create %} + +1. In your project, go to **Databases**. +2. Click **Create database**. +3. Give your database a name, and optionally a custom database ID. +4. Under **Choose database type**, select **MySQL** from the **Native databases** group. + +{% only_dark %} +![Create database type selection](/images/docs/products/databases/mysql/dark/create-database-type.avif) +{% /only_dark %} +{% only_light %} +![Create database type selection](/images/docs/products/databases/mysql/create-database-type.avif) +{% /only_light %} + +5. Under **Specifications**, select your preferred tier. +6. Optionally configure **Read replicas** and **Point-in-time recovery (PITR)**. You can change both later. + +{% only_dark %} +![Database specifications](/images/docs/products/databases/mysql/dark/create-database-specs.avif) +{% /only_dark %} +{% only_light %} +![Database specifications](/images/docs/products/databases/mysql/create-database-specs.avif) +{% /only_light %} + +7. Review the database summary and click **Create database**. + +Your database starts provisioning and becomes `ready` shortly after. + +# Get your connection details {% #credentials %} + +The connection details are returned on the database object. Fetch the database with an API key that has the `databases.read` scope: + +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const database = await mysql.get({ + databaseId: '<DATABASE_ID>', +}); + +console.log(database.connectionString); +``` + +The response includes the hostname, port, username, password, and the generated database name, plus a ready-made connection string in the form `mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>`. See [Connections](/docs/products/databases/mysql/connections) for the full response and every language. + +# Connect with the mysql client {% #mysql-client %} + +Pass the connection details to the `mysql` command-line client: + +```bash +mysql -h db-<hash>.<region>.appwrite.center -P 3306 -u admin -p -D <database> +``` + +Enter the password when prompted. + +# Run your first queries {% #first-queries %} + +Create a table, insert a row, and read it back: + +```sql +CREATE TABLE books ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + title TEXT NOT NULL, + author TEXT NOT NULL +); + +INSERT INTO books (title, author) +VALUES ('The Hitchhiker''s Guide to the Galaxy', 'Douglas Adams'); + +SELECT * FROM books; +``` + +You can run the same queries from your application with any MySQL driver. See [Connections](/docs/products/databases/mysql/connections) for driver examples. + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/products/databases/mysql/connections" title="Connections" %} +Connect from your application with any MySQL driver or ORM. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/backups" title="Backups" %} +Configure backup policies and point-in-time recovery. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/high-availability" title="High availability" %} +Add read replicas with automatic failover. +{% /cards_item %} +{% cards_item href="/docs/products/databases/mysql/monitoring" title="Monitoring" %} +Poll live health and status information from your pipelines. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/products/databases/mysql/scaling/+page.markdoc b/src/routes/docs/products/databases/mysql/scaling/+page.markdoc new file mode 100644 index 0000000000..5506e47060 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/scaling/+page.markdoc @@ -0,0 +1,649 @@ +--- +layout: article +title: Scaling +description: Resize the compute specification of your MySQL database with zero downtime and grow storage automatically as your data grows. +--- + +Native databases scale in two dimensions: the compute specification (CPU, memory, and connection limit) and storage. Both can change after creation, without dump-and-restore migrations. + +# List available specifications {% #specifications %} + +Each database runs against a specification that defines its CPU, memory, included storage, and maximum connections. List the specifications available to your plan: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const specifications = await mysql.listSpecifications({ + +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +const specifications = await mysql.listSpecifications({ + +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$specifications = $mysql->listSpecifications( + +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +specifications = mysql.list_specifications( + +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +specifications = mysql.list_specifications( + +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +var specifications = await mysql.ListSpecifications( + +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +final specifications = await mysql.listSpecifications( + +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +val specifications = mysql.listSpecifications( + +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +let specifications = try await mysql.listSpecifications( + +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + result, err := service.ListSpecifications() + if err != nil { + panic(err) + } + _ = result +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + let specifications = mysql.list_specifications().await?; + + Ok(()) +} +``` +```bash +curl -X GET \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + https://cloud.appwrite.io/v1/mysql/specifications +``` +{% /multicode %} + +# Change the compute specification {% #resize %} + +From the API, pass the new specification ID: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + specification='<SPECIFICATION>', +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + specification: "<SPECIFICATION>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + specification: '<SPECIFICATION>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + specification = "<SPECIFICATION>", +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + specification: "<SPECIFICATION>" +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateSpecification("<SPECIFICATION>"), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, None, Some("<SPECIFICATION>"), None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "specification": "<SPECIFICATION>" + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` +{% /multicode %} + +Resizes apply with zero downtime through a rolling cutover: a new instance is provisioned on the target specification, data is streamed over, and traffic cuts over once it has caught up. The database status shows `scaling` while the resize is in progress. + +# Storage {% #storage %} + +Each specification includes a storage allowance, and storage beyond the allowance is billed per GB. Storage only grows; you cannot shrink a database's storage after it has expanded. To reclaim a smaller footprint, restore a [backup](/docs/products/databases/mysql/backups) into a new database. + +# Storage autoscaling {% #autoscaling %} + +With storage autoscaling enabled, Appwrite grows the storage automatically when usage crosses a threshold, so the database never hits a full disk. Configure it through the API: + +{% multicode %} +```server-nodejs +import { Client, Mysql } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +}); +``` +```server-deno +import { Client, Mysql } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const mysql = new Mysql(client); + +await mysql.update({ + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Mysql; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$mysql = new Mysql($client); + +$mysql->update( + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.mysql import Mysql + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +mysql = Mysql(client) + +mysql.update( + database_id='<DATABASE_ID>', + storage_autoscaling=True, + storage_autoscaling_threshold_percent=85, + storage_autoscaling_max_gb=500, +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +mysql = Mysql.new(client) + +mysql.update( + database_id: '<DATABASE_ID>', + storage_autoscaling: true, + storage_autoscaling_threshold_percent: 85, + storage_autoscaling_max_gb: 500, +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Mysql mysql = new Mysql(client); + +await mysql.Update( + databaseId: "<DATABASE_ID>", + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Mysql mysql = Mysql(client); + +await mysql.update( + databaseId: '<DATABASE_ID>', + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Mysql + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val mysql = Mysql(client) + +mysql.update( + databaseId = "<DATABASE_ID>", + storageAutoscaling = true, + storageAutoscalingThresholdPercent = 85, + storageAutoscalingMaxGb = 500, +) +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let mysql = Mysql(client) + +_ = try await mysql.update( + databaseId: "<DATABASE_ID>", + storageAutoscaling: true, + storageAutoscalingThresholdPercent: 85, + storageAutoscalingMaxGb: 500 +) +``` +```server-go +package main + +import ( + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/mysql" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewMysql(client) + + _, err := service.Update( + "<DATABASE_ID>", + mysql.WithUpdateStorageAutoscaling(true), + mysql.WithUpdateStorageAutoscalingThresholdPercent(85), + mysql.WithUpdateStorageAutoscalingMaxGb(500), + ) + if err != nil { + panic(err) + } +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::mysql::Mysql; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let mysql = Mysql::new(&client); + + mysql.update("<DATABASE_ID>", None, None, None, None, None, None, None, None, None, None, Some(true), Some(85), Some(500), None, None, None, None, None, None, None).await?; + + Ok(()) +} +``` +```bash +curl -X PATCH \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "X-Appwrite-Key: <YOUR_API_KEY>" \ + -H "Content-Type: application/json" \ + -d '{ + "storageAutoscaling": true, + "storageAutoscalingThresholdPercent": 85, + "storageAutoscalingMaxGb": 500 + }' \ + https://cloud.appwrite.io/v1/mysql/<DATABASE_ID> +``` +{% /multicode %} + +| Parameter | Range | Description | +|---------------------------------------|--------------------|-----------------------------------------------------------| +| `storageAutoscaling` | boolean | Enable automatic storage growth | +| `storageAutoscalingThresholdPercent` | 50 - 95 | Usage percentage that triggers an expansion (default 85) | +| `storageAutoscalingMaxGb` | integer, 0 = no cap | Upper bound for automatic growth | + +Set a cap if you want a hard ceiling on storage cost; without one, autoscaling grows storage as needed and the overage is billed per GB. + +# Picking a specification {% #picking %} + +Guidelines for choosing a starting tier: + +- **Connections**: count the maximum concurrent connections your application opens, including all replicas of your app server. If it exceeds the specification's connection cap, either move up a tier or put the [connection pooler](/docs/products/databases/mysql/connection-pooling) in front. +- **Memory**: MySQL performs best when the working set fits in memory. Track cache hit ratio with database metrics; a sustained ratio below ~99% for an OLTP workload is a sign to add memory. +- **CPU**: sustained CPU above 70-80% at normal load leaves no headroom for spikes, migrations, or backups. + +Start small and resize up when the metrics say so; resizes are online, so there is no penalty for growing later. diff --git a/static/images/docs/products/databases/mysql/create-database-specs.avif b/static/images/docs/products/databases/mysql/create-database-specs.avif new file mode 100644 index 0000000000000000000000000000000000000000..fac1583d4dc3541bd01f46a2e8a787e89bc6c0cc GIT binary patch literal 32210 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/mysql/create-database-type.avif b/static/images/docs/products/databases/mysql/create-database-type.avif new file mode 100644 index 0000000000000000000000000000000000000000..0f4763f6ad640513a97e1f4de63e3d369bb28c60 GIT binary patch literal 38356 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 W6D)=X*nAR2$*9SW|LY3@_4g^jpk~GZ literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/mysql/dark/create-database-specs.avif b/static/images/docs/products/databases/mysql/dark/create-database-specs.avif new file mode 100644 index 0000000000000000000000000000000000000000..2349dd1482f4f8131d822d3002d7c4d98c2f560f GIT binary patch literal 34014 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∾c=wNjTK@MI?2#IA`GIn^mi9=z&uUBpH=+i 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/mysql/dark/create-database-type.avif b/static/images/docs/products/databases/mysql/dark/create-database-type.avif new file mode 100644 index 0000000000000000000000000000000000000000..4c1257ed5620d2127f37627370043abc7d2f3be0 GIT binary patch literal 41317 zcmaI-Q;;xB4=oChZQHhO+qP}nw(Xf`Y}>YN+va({{r|hp-APwxWu;Qpx#^1}-2eap zIA$)M4u)=)W&r<*t)&^`|7=@J!~gMBTT>Uq|M~wDLJJccr~jV`0N`M0?DBu@|BG-A zmM*schXDSki7ajGjsM3)1ONd4TmO^K|33m0SpUa}EiLW-&!PXvi~1ii1^Qpqf3b#c z42=IX)hr#H9R5QNO9x~7{}9H|jZrv|^#6pRSUNkH{x1js0QA2NwD6xoaIo~S{GSIH z0s`VcK(lnP{lEGDmjrMi5HJ8hfwQfNp$ifK6cneG`A^{>5Ed)}(?&m#xFQVzK>&aP z050Kc=y&`$tmHB8zCn41Gt{qjjr}WGn|n6|K%P92qy`i@Db}dK3`$In<B}9eJ}Fj3 z>>dkuh{|33huBQ6F;5m2m-j{bg#6ng+f-`X(-Ht8_SBwBhCU66<>!wTk$>~8B53$k z!3|d;t!L28mj<Cf&y`cqCe2Kzvxs@Of&(D}H6oh%dWcj*bROZtOmxHw%cmtSE3DbD zgsFpT&%r*q8al3pRp-F3ALk|Styt)>9>y3A=7~xT6uFEX$Abap7DfOuI5{7imml4w zdF(Q#e;Fu;&bNQ^jK(vVf02kAKZu!l{ETN~{-$&%ce})iTcu6LAagfciERyiL}`T? zYjVzy-*<K{*bB}8VW!xz?pc0LQM=&-%AI2WOTD<3sdF)`T#4X=h`9?M9%u0fyd+nF z))k4nJ^~$txn~xL9duwbx*!4ENaaL52`}!eFz(^>KQK=)U`5#gJ=XgCBqvr!wB>MG z3Gd{LVAPsM&DYt(MoWU*dm;=tX{o0<>8h3^6f3AsnZiDCcS1sH9)Y@MlgzrEuhql) z=!8RvX9a%Ins!2Z)OBYh!(dA5T;$BWo7nPaFCJ;`-?B*Vpl5HAg{in^Z*$ecrfd5Y zi{E*X;=o$kq~=30V-O};L35)JZbYXoqwqj31CEJMR|SMazijQu^(HC+<jH;}Uig_^ zdH?rSEX%%oM>dQlET9&;%_#(pChl!;2ZF-WUVK1k5plPGcDyP18Kk4)&?Dn%a5#24 z8S0&{0V1hFo>lcBIm5r+<*ii}wNSygcVubC?=c^33|t_Sf9h&$&KqJdP^N+VBAfEL zKmki-oU(Z!84<KaBrR$<i*m;s1xrS2tkxh>fH~4zYJAoEskU-K3=0N6W^<zY42q4= zeQ{jj2k`Di8Pf5ta=~;DKg=`aqTN`Cu8b;1-2u!&6wjhhOigIxjsgO-z_3ji>W1(B zO;)&FtlNRRrK*mU=eEvP<TscVY294ATz-?wE-Hu*s9jFtSDMBiKEkVkcGA)-*PzD- zqt7bgcs6;rrAe%aRcBmcw2!S+;1(XW0r)#l@3bkxU4X)$cdtgAZr9<DYP)FA1$4;B zY!aWw;^d0cGA4JTs;~J(^p$@7_}1$vy9)ym<!gU8|M&-&Kflp4WMXqy;$FyUJ`1o^ za7U<^2Xo002mPuo<doL0F%OXJf#SkY!-O1oPj9-dE4TIhiFX&OI!{pjz?^idwqU)C z1nKs!WcgtxaZi2MN?e~JM9~$xP0pWU7HF{gtMHo`-1Hw#*Kr9S<IZZt=m04#yh9|b zolKHTr}x^5WoYi@C2k2SpQ<8Q$WI;;&jX|84XRd#YqF#WoGu$w`tsd=sP)3-p&S48 z-@L6J(IOx~@K|<q0`z9&kWnR`nbK?SO#6;UWwe0>nQq-328XE-O*41=iOzIrRxZeM z#4AxvbsSjLxB$yQTnfCMnXcYZGdWDXYdsN?h(J>Ha_!}X*M3ox<OO0>?l{sE_>twG z)f(+jFNNHW60XJzKV-$amNvWjR-%i?C-WekvdoR7ABZ+baz68yq)9NP2<0G#gXG4^ zk3oo_ZT&NJ-)vQuq}NhYJF5c;?zHWLFsfAZoD82*MyfNKUmonk1CXuZ4@B>s*ULja zVBtll!=Vna)^oYpv_vuC4S!}*gkAB$Il!PSLnmG16nb`7KXjxBWXn|=;4u}334ZEv zL(FS3Qs|PWo%ObB20HyN9EW}mpvwr2M|47--Pq*y-y+P&4<O^o8U)sCD42-n-$_Dy zFQZe}jsJC<Bi+EE72vK6hriE~&L7>t_3rw|ql4CA-pQq-k=e8QRTOH1o1dlC>>a&) z@s;BPM=ei>MYygCwFQ+PkbUK@qSC0ZBz%$vw&?dR9R&QxrVx3GP6_?y0qaZV^e=eo zFH5;5zJzCQ_xbhPAz@}Vd8%L_2V^9~T+S2Y2~3z0ioEd&C1^SOd@&la&&o2l=53&+ z8`IsMu(5dvv3DKT1!z6H?eW>nDhkoeR>>faE4cH!O*z5{;vk3?r56TXp#rfF?=ga8 zW$m}5NEVn{5hz{bAR~S|l~L8~OP^uY>Q_W)ndmP714FgI+`oG1$ywoL-;44`Ym8t& zyYj0zJNoJ>6y<t$(|MdH(c0k`7g=TwOCq~(O<U7%@#5Z0{H>nxj3L?hdmQn)#3+Qs zin3Asb(2eYI=_uYDy6;`S+g#{{FFsr0D_akRg4u{2J-Y1I)=AjyFV&<^V&iyECJbL zm`*Q7bd}RICvOiXkr<GHBcGz5Orc=<q^@?aMzkz2&Yp)IBHpAcbdxZKxwi%7sQ;$V z+sbJQ#}V6x6p;!Ggq2ep;go1>N^{Pqk<gPIpNha7d?Y7-E%}`TnSa8nn)eN6pe7~n z)M|XstYi0@<w00111m?<=|hfTE0prN{*tdTo7puWol;Aa9-U_t^6qb&b>2g9X$pdL z<LM^I7a-wl12cieH^<LR8vt;$DY-8g=t3t<46P;J8)o8LID>@inECtmEAV)sk3d$; z-#q+S0GXA9%gPE2Kh5Sz6%$=4i*ZQ1p7QCes#m)WDFf?TA*+aZGaq^fHj$(E2z+|~ zuuhJ<{tM7*4_b_`hReyD-9V#EZ1B>ge6_$Cul@<p6jr$~#b<Vz%-XkreU39Bj95;? z`9YCfM{(nT->1vmFTCoZO%nzVVeTaKHsH*&aJdatTFDvDT-84RXf-dTL(j$n1C^ff z;CJRW&+vV%7m(X=E#h*f%v)NsXU8epsJ9Ad5lZlqMX%c?CA0$hAA;9ckKU9C!PW?F z960k#p)$e3<@2swJGI`n2dZ_Gm$AN9IyzwiZ@}<AFF6jkG!61UM*o9&T3r=IAn9+a z&^tBJ)%<vLS4-0c_`myyJofnNwA}4MiEN)2Hhm{MZ)KnTRgP;owj7+laAO=!1%d^6 zY*kKCnsdDg?D=*|Uroj6upLR^9o?>KWY1Zq;gz^~4+u}qUJ-yieNTM>Zr%}FCk;-V zpeFBnnqG)_+<onyO9oh}+?jUHP5vbZZ9jExMclA8(kA51^k_~lslM4>p$X+nJonGg z3J~jNC-iuu$nY2<sK$Ax?%VSnkFI!@TO*CE-jUPle7c{*BQh;Lm#?GIDB>vP@>?mR zGtzl3K#u#)ISPrUxm5TUD6A(oIWu)Z3u#K{dkq3oz-$73GMMZ;h1Sgqa)N5}lGDZl zjf0>c{tTy4Kt|sOpx6j^W3R+N?f&0d-2^AGkM>pmizl|d6_x5_&7+=rars;tGIWGg z%juAiJ+xI@={SG*fbXcSy;`bb=vau@cGu8XZ;hWRV{PJ^+5nTjo2}5tWtsMgv>uNM zI_4=(ZU>cQcR6%8n}8`a4Q3mfG#|tC`b}f^OI2~r31yUtuHXk0lRK$P@O@*$MpR_E znclhluzZV5&wz?j*Dnhq5pb#cLLm%#D3!vJc_sQwJndVuTu{fzLI)aBB2jpZRN?`9 zwK3VkmvX(w{v@{LjW?557Q&~7(|_uC$*Oq5$J1ZHAxEcA+nw5&H9Y5pQ8ZEnX06Ut z_Gy}Vjz}1*x=B@XK7=H(2gP)w#5&sj4gaQ?@H2sf-V<veTfsd9L@h}VZ3-Y15YBSd z*?(2?o>IhNr7C2+Bx^!43Erd)V>A!|pRuT?)36i#)Fd8trm8x@hWBy(q%%DT`eaM^ zZIrS3pu#d{<>BBqSQa&w>jz-3)VZipY3=5xav7UM&WEt(*|Pa=x_t--(g|lAG0{$? z$wX|?nd9L#K!qC-%T;Zyo>Weq4I?1G$M^Sk5MGelLT{>ZS?~l?p%JmO%14d1UcYFU zr!DWrY1tvHN!g0!js|~pkXoUz!5GkdDWQjy4Jz#u#wUGp;KiT(i$ld^``d`f|8VQr z5+^B)yLgp%AYpmDX^~`GCQ*;|TEw+@3jy*&DX0-tZ})k`Mb#ef(Hli^G`y;ix^O-| z+{hs_l5s>7<U8j8^0eX-{C4{-%7h(I>L&$Tg+|%f1De;$8_MxN^`V|qn!Ots&a4dk zpA{Wd!q>X5HhnxSbG@=$!o5Z-=@GT&5}CreF2#H?j2-4Ct+~J^J@`+L<V9#b=8#3A zYDPuyA;0ouysV7Nxl@^`Ow?|4l;v09oD*c<fO$K9cwG+xT>!dIU^6tER>PVJkT4=u z4alcO80?)lva})(C^sxjB_?08a?Y#6Ag*%@7g($9)G~k~!+sgGX9k+BoFZ-0(OET} zyPAiSJ9P&YDNqRm@F0gd0gYXN=&z`TChLT#k93sC#$uoZbAPVBS;Hb%?O`t#@*nMW zp#$SkyN*^ZcVq2&FsF7)b-mDNk(~oVeMJY@z6YW{52bB}G|OA`)oV_b>aQ^kSpYs$ z4M(?LTqP73FzD>EqMH&speSG?cC_V=G$Na^DfkK=!E5PwwkBTpum_G#sdl|<=-6;8 zT^xAUonUMhAgT@4mAve@^?g8u4|kG{c@Ky@f8AbO_Dt^6Bw-%M8c9XosiZybge*;A z8jpkAIVncACl#yiXW7?KC&pRz#(GVJXz`A|LX=KIK^G)fD8<TXkfv2VN*ly^I`BLY zEs#%e`hs#j2Mb!?Dse!Y&-R`_5`-z;yO>pmY&dpkDzx3tGx9r?8v!gb-p|>ZJRIRa zKIU0<j7Mdfp#GW-32|8BS^A|5QI+lbqY9;i(kf1ree^=i?`F>;(w&E4Z{~YoFk;EV z84?#w7tZ7GlfGt%v8G4um;1wzlWc9+%L2HSlZU4$h8W71obh-hc0{4lngb1}-}lqy z`W|}pM)Uap_T$u)M0?uH>(tFOW7S&xM<5~40I4c3A%X+we><O(hG+JslI`vCeO=gX zJ<`?X;{#fRbr*E_>7<AEE_RN@X$IKoP@_Uat$`}bY#|GPrUyg3rCC5PcUE-qJ@v(b zoS{}~V_hq|uJPSN9vwKP5>kEM0~jGg?in(}1Lj9f$t<ZktgTvS<5DpU^p5z@Tmep3 zKID~9Q^-E)H&VVOOq5?KLFs4yVR|w8iBrAZ%}iKA&(VNW6wsDuspsKccb`jnHR5G} zQowfCg`}sls$Xn>DZ)2$$DIOB1w}-qV^1pVtHl=XgaNV_S7%_F-{x-MVqpV*90;sx zSv8bTt!JC2WP-vQu1Azl_UmGU{P;%D@8!TY&oV}n)r`GiM3QbSuzUqftrm->ni8j` zt3jO!va0y8<HCbT`~yz>IY}c>tVBYP4ol+}CA2QO(@=lqp0s>X_GLhy?dpbV-&a!m zt{1)@Hy*Gljt7A+w%Abj`IG>7^wxE;^lt^w*=DJbH^`8;P6$`0)*<amI8RTBq>WA{ zwYPpMK}M9N#IbAal8kZslEuip#(`+u<klt8y5ohR498)x)}ejZ@`Ax?GOuA>jJ$jY zmh^<UUM#*Q$;kARhQp)GpM`7L@@!~Z;w0)dUeiPLgEjZ1B*X8ksQL3vqnL7^^-K%k z`$Xw_yd{qYMY@#VP@kQ9F>~Mlz7oRU&jrmFn`RqPx{6RGhA16*B$NcXt%(;?av|Fh z^|LEPGdBruxf8t9dv?(!B30@`8#?q2Q?ux6^z5nnQn)ls@Az$Ww5V4aR$umE01sNg z0^gu>v79Lnqj#F~<!&%%=u61&(C-1@%IBtZl)KKJHG-91a<dtks|K;+B81_B-{wqa zpLW58!GHhig#X$$Gvfocb{ZQ^!oN4+aiA-%2;5t-@`Dc1sV|YQ1g(QpvPsoi?w0~9 z_@gO9K6}qSNIKOm(-WNBL6kwh0n4i1D}*g6Z63fOOya`M8Y{>20mk#9C7Ue5DB=09 zaRN;3qCm}b@{U55&4MLH=;y;q=B*n(apx29716;17CH9(fQX5`yWCYlZK-deTvWkX z;bSpsT}W2l{cuZj#536Af!Tmg{lObi5NZ--Ujc9g&!+GMD5~n&%F9bL9mJS8OW|XG zqv~kpFimx{nAmA-#SP;5EeY&+RyB>YLotA5K+awNnhZf=9b$x9bHXJN5dz1?z7gpC z$*_l2R317vZJNt$4JURL2G5$1B8ip>(TE<PBJ+XN<DZ2ESjyJf!&~)t;wHZ}?sei? z!71NiTBv2HQpG+YBlsGc;%QLQc%}*{?5l;@3tBV?zpU!)Rw|N)W%5glOE!uC#E?B? zfk4E>KkSaE``I&{t0SJwQ$b=%B=Y8kS-W9MPSEkf@dvVwxKD@LyWL&M72mF6T<fbI zV<MpP7;P`UxwZ>MFsL%(V-r;*AloKJ5Dft_R~5gpPSHDR$;r(jF+HPvm4`Z4vf%E5 zVl*EEM^b%>IW6t$25QxsA=#_rMbg@CnZZaZ)eMexTwlYstP*N$ZY1Rf>QZQ8>>+$K zKO8SvdzZN2cBaAr@KivT0i6^);|&Q%rZlb#ac%-Y$na^FX)fqJdMZZQKev?rhTb<} zxn-mtci{pciIhm5!!Fmcg1DWPsc4-`cc-RP)NsY!rJPsE;U3IZ*iOxI)PE63pa{SK zE=R*ZYTf&a40+OLI7Io7x8MnpAZ>5?^+oN?Dtv|>k6n5%vQ^VIH;rY0nG+SAC1kVV zKyzcxo3o1EX>V3k(GGB>fE3hB!RW4QwUVVVkY|_|a#yvJQ*~qV#R_Rh+15pb9a{-% zOqpJj=t~f>Xo=rDZwMkApIa;^V@J$lEu>3da~|>R#~626GbcfJa5U83BTC}?T!&Rj zylPJ+)xyyZlOHYmJ0qD@PtZClxSk<I0!(#bW8Dl8lk!|>R;x)66OvsDQQ5M{NgJEi zP;>{_ex|5*Hn$8_0TNfyL+9cqib^s^{z$LuP7OOqYDku}No9mT372Jc0OHRK0bHBm z^VfVDHs-Bfk?#ch%LeTQI{fC{ep68gIt!%l{$J^NVin?L7J!vOpHrulTH5AVA)&^s zOX>4ZR7KFNrl4%8h(QNZF0ZO()D=zQ0PQ810#{>QEg<*WX~PG_OYj@a{AaA3T{Q2$ zv9RL-n_IT;Dh<ZsH6#Cv_8K#thAoTN)EPPUq&*+|{X@<1C_0FsSUEvh2+>1i!R*=` zpdr0Gsk>Xn!R$rcRm6@l<=)O&mMqZ1gd%qcMtz=9a#DsxZc#b-CaBDRH)nXQ<$?Ql zxs!R2e>T<6D#~{=N&G<l5ySbyC7mkuMNMtPzQEfsF29XXGNpS~rY7@Jn1hJw)Pcl_ z%;`%!?7BbPS2lFtRk<q#f(2BEPr={Jw&XsNIDY0%n_Ewj1o=vb&{*>Ac08K0dNYco z>-WBAiL*Q#5AyU*uj-@A!>#BSc^rSBWFK5-Dg5VUGY>HMrbR8aVXNrD>M$FrLh;HE zCw0Gv*--M(o;+<pkAu^f`nk}=8@TuNjkQ(7VC)oQ+3~8zn{?7q5<J-^oy0BI$7{mw zEDsp|cU%)VRM+90hKuz$!PH!V;ef=q@jIe%zv=ObQ5m#V$&5okGx~h9!r0hLvz90( zIlc01s5^&w=s}9;;}}6B324AKo=oIza;6F-)<=D(Wl+{zh}ZPC8_yueNT&%uq1DjK zNPjC*N9VeS{A~4Q-T#y8envDa|I#U+=x`pClKpbHRIRkyo$3wl9?=)jB{>8DC4jI2 z3)BvLvkJawHOGqxU<!Ex3Jv?cDZMnG>19`wC)l(0&do@_>M!dBA=c9v&&hR>neLp^ zgnMXv*i9l#Dnd4w1Aq91A7&>@d<7QwT*~!;kFdNJl8+?sR8MBlfobaMy2?i}G#RL} zIZcMjt&blwnwi{rf$K5Snm3Gw|F8rOFz`fo{0%-EV!sqx99+QRrTwdJQTrPR+6!mz zc|Qll_7CJ;S_QxD@IbuYDKeb%RCpCp>n2kQ&U&z=4{gb+df&)T!uGT=87d)btf7Uk z7#%6p!~^=fMKek}8b3pD$r4<rZD7O@Z8s(xQ$j8gd079+IfltsP8V!m7pM+4bepl) z8+A+<Q(xwugY8~#DZdj|(-uGMZ?@{q`PNFCXebey4o2RuPfkF$>%l%rKjI9j6g|m? zx$2=V&F(5(p(e~}@?QiVu0=b;wS$>E@0(iqksZswbFiGx1rvku^RVMb*)QNco9pa~ zaoGr-(Fd+sJh(&h`D0yixZ!04{wJ4H4(UCR<I81TlVwqsK}orjAU5ZXU>6@ujv|$K zUYb}9-6Qe{g{N~t@1S=Xn7g3cKfMKa$f-BMM}af+<KXnQY;|Ef5k9@d)&A~P_Vize z>ZN-Bzg*saOH<mVo)%8f+_v_m?zexcR1oB-z{_YcJHgDpbz_MiMi9@z!R?o?)}okH zrV<YRMO0xWfU?gP?Hb@@97NPI8xGx(>q~@`K&;jQ=ntq=IMO~6f=y5MIs5?m!OuJ3 z0iL=PE#3q)d@uLufD96n$!GHp`#3XW)NvW9rbUjHsLH-;qFR4k?br`Xz<8$oaR2(m zWWzGsleuj>l1TOM!CK^KIWDw1v$eb7qQ;h#!K<o7RG5!`>}lQ?Ja}&f{bNNqY*uJb zHiCRJ^yKKDtfjho9Nf$O4Qv8-LtrTB6p3w8d<%loulY$XF)2+^Tm#CZjr-85i)S-` zv%Yl3>7W<m<zG}c5&)(0i|52uLTHCj%e6}672>m$O*8&*Q!A~~dlYKk#($*X0`Gxr zP;l8*vM?YfW@=IvNqwmKHPzje%?#5>QWW>ds73h3|7i{~VgLuY$-a0@?ogJ0p`;$Y zhyWLkrb4)?89?Jj{X(>Z2&8-MEJ`(Hm<?>Rbj382F-8X^r2FI+=`ABm*M{B|o?G0k zr4acoJw_lm9ODJ`4y1K=FxAUxI|JR~_I2KAPd;W=`CxJU(~sP<IB>(5{h-lPrT*sf z0MPbUQPJLZG7bUCV;kzy>U%Cf>0-JjABxQ$=0DsfRSpK0AM8J0Ah!Q!D;*nyuJMWg zT`2wTi-2#`e}vX>gg)=zv2@6LKfIt42c54yn7+N^ep|_FxYbCLX*~y`4KmT~8e!eu zJ;I}{m>40<@DG5be&FcdJjZ4d$avj$!C_!8VId|<=<$|S`-)+GS(JX80E~@HlG9ha z(H$H)#~Vs(K->WMLjiWmswErk2``AfSj`r6MMD0y6RN>*)RdtIg;r%-G@RL@zqJ6r z1yT$=%m~X5;zp|0J?zC}g-$vgQG$!0p&Q9KTLmJ(5Tj&vJE8u$RaFnafU0*Hev?$Y zlJ;}lQ}!zqHOO;!d!RT7h1ZNvG^?HQRPxrcX8aK2^8#Pe+%YSxhYqwVJ%!EY6WW^e zKG<7BE2LkNm}HF=37f?dasZq+6({xaJl%uhI}?Z|!o=H#qYQ|Ic2e+1{nzfVdgb1_ zzLb!W{-}R5eT8bYlhep=jWna_0mc3zWYMsEQ2+2k)tKmm<%FbPf-4Ik*U`E`O1$Q@ zwfb9D%Xa0db9fp(Kf1w$&|-_}6t<rrqRRJ3CQ;iMz%k&0(J!2!dPRVjz!?+slhp;= zp7;-Z+c(pvt4Ln32^jPfkINfB=|t&zQx_;czh0wc4DlE=o-lA}?_iyj=qD7!iDy=7 zXqas?!Avz&yB+C$V?=oIJTxYmiF`K26}?UWN7904>Fk)QpCFX={466xz#>NVhr7;R zLGO~6uO8X;j0{QJAUQ`lF%`(*AvzpnNPz){pi!k;;EbWM;UTEH##6W~laVxHXecK$ zjz5dY5uM(TtPbzVXA}5d@CQ}$o%ndb<(xMYCSKY!+%c8p(WpdQJ0}vH<>wKvmO^dQ z?V=Ubh;Alj1{YGxhx6zFh?tz#jX6@aer4vu9oXi3m}d|F3eNxZEQqM-BO*e*(5MO~ zsgJUF>M&@Q&^>g9gfyN3ddLMXqu36NhntpTfP~o&$~jZSY@VbTVQolxN$e=-$O(@^ zkW}M9u-MXdQs`8CZP%&%R{@Kn)w?vq3ce?&V1n!yDdNoB9DuL2bMhCA^r+!3U{W`} zf%f;AEjgU~EUv=?W#Oe2jyh3|en_Ct?7}lk!cyu`nd)B6YQ&`mK+#<ay;wBCqYq+e zWb%aEWTPA_LFb3NzlBAMHxvve_?3w*9k(l31EiTXG6_`!&9{|G14|>wDa&K(c(1a^ zG{P#oRXoH+DGZE!q3g6lxtjhm=%Q3RT>PqJ$0_eCVj^V5&edz$-gR4<-NNkICC4=f zrXLDQYR0mS<QKZyG_6;I?+({W{JSYXl`2nxGS1byo~)0{Hbs!O&lQ~Y9`IUAAd|Y| zirHIAt_#eC1R-9C{c@eI8LRv6x_~C7U}D>SqXYdW<2-rm5QiF)mVjT$tsyVUE2{W9 z*4e}kT(w_MiG-LEhfbr#<7S{rh}&$!=m?SvYchXSml@?jFb(6|9fU~k@Z-+*xHM)5 zWKIjVEg+_4z=dB-wd8cW!rD6$>LPtHDC|9Lk8bqwK}3E$hy;f3-)@eMH)2LaAp{S~ z7l~>8x6tb%=d?WU1zWoD;GY*T`-aM1eG_#ugeX6P_2G4kmCa(}wCQ<l_FyB&9P3cb z!ILO6YV+>hWzJ=ovjWm?CQInQ@XHG8jPp|bJyA93QAaqcjceYn0cbXfX(xgy%&;y< z2ZF3Gboxjry8_uZl25DdM#}r;7SSD|*j&Y09smbnz@M-=EN?}O9P~x7Q|{b;ZKpWV zO`9>5{N;j>d%98-&QIB8>Gh8h2SY+9SL!zZ$kA}aBD0?$j09{Fi6Z{z)V(y<rTyyL z<FeB|9A%AJ7qW7Ao3r2#rcLeX-A^xHoUYzdJ9Z;O^C*#%Dx+fT;NcP8^|Z=%G#pAE zJ9CYe(ltL<@eE>yV7E@94FJP0Vc&hmwb!sYB<y~yU*10~$sH)OIXciH>niHUPhmZ9 z%Sv^O`7K`)5Z%(yV-&XvkZz{4_wP&0rnZH~yLnLs+TfLA7Ry0u&0D5_ZN5&dWfY3b z$9mCsFifsWtC2@Dw0;*`UL!F*SgixR52kI9*dmki3b}qBMZrdvISWZ-KW7}wvA1eg z;7(G6WdA__nGm5aTjZNT+?=`%;{myMaQoKv)ohtR<-mfe>j#ksc7Y2#J$=gtlbTgH zKE<+s6#=0#?*H+nFZk%UaZIs0MZEnKWUs}Aq<kj=>tr!Lf?Wr8CLCO`odHnelp-{Z zl!xTTek0t5gGL+lF7Cpw*X8@%uCoz<;FXE<o-8Hp3WwTtAHWr@CTBvd(E*wRMK?sw zlAaFwxmBAY0K+}CcN4kW`C@%WI`Y+9qx}l^yW^|$tiSXV9jYjeanP)RKb4$(*K777 zJwH8!)v%ARsmQd|wVA@vZ*^`)5W9X8{@!AHf3TX#@_Ud*z)ij=PDRaKV=$feNxSre zUY|KF)N%RUFprZKQ_O9I1FK_Y1YdUSC`a6k$p|kOVfh_`P`Z_4??z7xA0kWf`+$vI z|AeKeVi(KO9PYBq`;2}6xcAX#vJuz4yL55ZFT0t#>r@th<7Otc9OZkcx*4i@DceU? zJ)mZQ8{EnoE-D*peQe5Rww-~#nl?kOs*R~W@ERnLUyvm~Hk9)SCGk4&*cP!V6U-WT zNfOjk1j$>aD$zkTm_wwwTWH&%@?O<etQE#&EAcy&-k}|;wx+{j(r8jTFL&+}rb_Yy ziwPYFfE~`$2{^bfYF<*kAQq(L2zWC+1stC;47`SxL+Phl3utOOW7TUSBj7FPYzdma zH!;?fzLn>N3dP_Xley+kUziKB*-SC05G^3;yUMHHng?oaNPW}ErJZknI|uTEQ=;xX zkZ%|8F+1rpGnvw;-=kCQ*=s_j-x8n$Cfe$V$1Mjx1a&=pu5~p6Dd<eF-gYJ*LJJ(g zxZ_+vHzt(it-it4I~$eCfeY*2q`*t9*DGA~S59MEpa^D4`qj8_(Ib=Xz}C`wtUr+l zvwK0p+zjYDl9#w9<e|FN3=EOHlNqCEoy^|Rs{$Qo5#M9{Lr`V}A79a<f$oG)D{-tu z5180iGL^C*H$0et`xlAZ*$Tn<iam0EBXmbmBneZ5Nc~d$3hYU$Sud7#cu#LPz;Y&O z+uxocIP|(DG596EcpKi*upJgRkD%5en>;JQam4<K)2Fw5gmh%dYzIh&oC`b-rOBWW z_6{t&uFPUGDC*Uq^bbtR@%A@ug}e*v-B42WXkmE%aW8iavk9v-n#D#yD0)>#5e-<G ziC@@Yyq0~qoA`GbC5J!qs86szIg=_)PD2LU@w)syhKb0QWr9|wXu-dU5erQy*&S=) z$lYlWvk>B0t}K0_i1d?nJN__&Y}tSUGqyVEv_m7A<AcJJKv^A5E%h2*BbMWH@t9X3 zzy()7Jy7OXPiol^oYRvD;59n>6Qp9!+eRgr;u?U1Zeg?Dc<?p@^t_A4L}Q(YOOoEF z<*@U1pv%ktBBP?~+GAY(I-|!jNfR;B{$lr}`sxHKI%(FqEsZ~9pxr&w$NFvl%_U}~ zo<PQOyKZIwvI04~InIW_UFGiw%%l2p%Tyt4&(|nxc^U^+@r^V|^Ua&*cBzd@fIQ*> zIRwPB31-+u=^3dcNXey}BW}IAK_n0xyRI#v=ZrlWFxMZf5;}Whyo#%^z|kD9sNb8k zBg@FK(n{qf^k!4Y<0+(q9<3}QJw9$g=La=12>{i0bUE`HDV91sKI9n2reSg1wJqTV zUH1BWhdxE^md-MA=IzQkdHF@^Tc@R8`^h0<sr@UFreGRRoY7ctJmcK`I6`J6e<~!C zIMOPyj!5$vq5>ESKo?&h9O4i>H)qXSC+$b|__f9UfS?;qp}lTR3SxUnO@CTevkLVl zep%}P<fBr6O~Z*}m+^8)TmDxRol7}Ol<*faFpQ-{)Up1TAU8KcTi9|hIm^<L6f**q zq}K`Npthf@jCI(<`PL1ec(h9>zQIN4Vs5Xkta=cr!iIUGpc{btza}kG;7Rc=CS8rh zlF7mo(Tz5~x|erGtu*8nL_gygECV(l&=laeZHsA5FpDIPo2xM#co_DLB~?4L+el1q z<y;Tm$<x_`an-G}fm<xwcmav|RfmM<+rZ~ZMT?H(3^lUQ8iY({-t$8Ik3R>@!lhv| z*L+bKVP9<dF)OPI!{p{mWvP{$OTnvIH(s@b4&*s5!e4Epfr(u<zirweNF)c|lJ#bn zU~o}V83>xf!+}JXca_@HQf~aTP!mJRlGBN^l$7u}76}8&<rGE!8bxZoY`C<?8x%j4 zG^r8PUFtYIJ2Qo$d$BaVAsi+kI!|B`P!4cXLoG(-nh<$KNdA`7aw<cmlWjB+{pfRz z-DD2cyku+A<6|L&zXLkxxbP8v>}!ldZl6lLbLhEc5-2LHT$!cXK4)BU*$F<}LLeQ9 zy0i#plaTBvK{|avzoBf%h%F2G0UEBJYM=&SX|D-46m8%;uiopo{y~nLMAX4)!Ckk& zHzP}e5NA>VcT&+i18f=EkC)!#7tG8DVZSmBI;HaAG81yNBU*n*vS4kcVoE67l2-6y zvgsmyRQt@ep%V81u6YQXYo?DSMxUjEIBlY%SKfyGzn=Tl#0n&JM7XJv$)<ab%dYE3 zlGcr=K%ULdV5m@(S>b4n9MsIXLNTp_tPLrW=_J?byR9SPGLzFn!M1|h1>7qmODk|Q zUBOtH4kDj_hGAc^nnRm`s{tKuPePrY7C;3!9o;Gn{wTuA@!>a8F;wAElwfu}J@CVR zQ=%DTb}_y(&f)IEXAjnYQW@xk;OPn=MQKTC@p=4ZT9!S}A-Dz>&xjjWi$~EKtFuhB zS31BLKW%KOnKv-~Axv0>ek#^wM5<<KVT6|ysqT&f<g14=D*;iM!^O)hEl_1Ogu@tU zF&uQZa48~QVfU_f+JpiJCwv+&SM$GMYIUq2<Ckzkp!_mse<)cLGL+^~Jml&w)suWd zb=$$XbmYM>;@YB(FMT$>Nz5Cs#s@>^bAO)T=If4#fkCi#yqXcE=B`hD6vJT<sNE|t zYDdCGlbZ|INAu!leUd}02xi<$MIAxVTHEyst!X8~?DyV4e6voqgZN$?ET3kDMxeZH zIq5xHc;|p!DRTRg=UGRhyMy(K1p<g5)6R9ov|W*$?=G+j;Ca4R$wI7n)|N|ydv5%f z59+m94U@gdp2}Q~C^9WSUzCl>|IO9-hAGVq`C>n03bN)D8dhMfv@Hg)8@X^CXrDSn zIO#Js*V1FxXRLUrUd`poneK=b&5QL?{cMv7yBcMyFRd<IGW~aP7b^i>LjVinQU_8k zj5c7)SVXQkd@NaW8F9Qm?`uPyM<78s*}Ae4$F`P(7_b7QgDo)`q)2~RDxLx1r&Ww} z{c)?X*5IG!6$b3yiPlH0Ln&=<O&%eB!%~r!M)j$J|K^mYOXOkuXr@z|q;<Y9HPk@i zdT%d_w*;_0a4~2hq&}}`F|YNg=Y32`vd>xu)D#2s4uTSTw~|8Ywp`Pz56Cj$-*{1H zPk?V9JB#`Y-4H>go62K@Y`1_BMIcl1<FDY$=fG`<2w6HbX(S?vvzTW><<o$`A~;td zH9WM#G&0?P#@B~NL=0`lf4(+fiEl?n8g@*4UbpY!?gL^Uk5)Mhj3;4*BGJ=^#s$nY z<V4FxaJ#nM@erps;7Y@#4Zi!|p0v%!n<<M7A0|}(Nlac#`+Si0kyIk;r1_f<O`W5N z_%JEyPWA#xi_;V>PeX~739MiCeR;Fzb24#o^$^?U`bu})P6P|9D_;mQT#*+{$4)r$ zj9$^gIh%Cr#+WRIt^A==aZ<aSgjpp`@EVmux=!`^tx8cpn4`T=<QH<Z*}=0+U3LJB zl&kf3-+R9=mz{p*=b_IHS4)+C?Ye%6Vs#P>Hq}wGMioJ&!?!5%P0Eu97U}fAU`1%6 zNqy?3ppq!)?^l((gClJFl(J}Lx<QN%n(*YpqNODP2UE2&iYLeE-A)glnw4LB)kN%? zmTq7}o`?nGLt`dEy=_^~pm2wqSnksQA*Z>SIYNqepj6Kxzmf1gG<uxY9k9f-wzULu zJlL^|L|)_!298y7kJg6wNY?s8$Z&yfS`|LCv%47N>Ts(N3WL~}>+dhwqg=7_LnXqQ zCj4B^X4-a6TLywB_*dKezEU_jpLq<#iU|N5Y8nO(_$(^0BmFCLmgyi~;?JLGM=jBG zDsQuBD~%D!%(yOWo2Sj=aryq-Iw<PKO7FfguR#K0o|AJh1tu@skivJQ;CBrtDua$P z=aqaW)TE3*syXY|uFV3PXA5Hov{-BUr<%XiF9z!%K=~{76nmiThvfEasXDmtJUL^N zeLjkVa&P^i9RTUli?07U4-m4u<-sBD@?HUL`1A#bM*yM3BJY8n`aR(J+W-OAl}7Vy zKI)6!%NoLM{SFP2Z5CU;zGY+vyQ<fU!g_Gum1={*X%a=m0Zp(<M_iLj(WSnfXARuK zJYYVOUT@Z>=?y3@3yhFLDZu)DJPSc0QYuX{0(!P~vJE%d7o{T1Ua9sOH^sN`-($q| z&v0x)d&6lUG_?cE@$^S+h?&AECA65oq^ws?&p&+ymm?X-v-qC|+R;3OC{~d)Aw!Ku zn1$O4;&8Xgy5gcpHudbkAz`-xe$g_%>S-j`RP@!n#4Z$W65VHZyrYR8o0HeN1oW%V zJzFo=G?M(IcrTQMjUd!Ac&gGS;2HD#d;NrCTlE2+;*_qB1i&{qnx@ECmcJ5tXs#9C zt&0$V{iwH#VDBK8(600g4nH7U6Y_y6`Wxa^DAaofHdeU^DS~gm5aY<I5Y&m9f*+LF z--G<o^mDqG1I)q+^~X#&l45d*q;aSTr5hV&3@R<piMSw4)KE5pihe9S_DZXjQRqpG zJSY1#^B6!&B<%^_6KrJ%y?bJ&dgsJRoF>6!2_*s`7t)%sR>0dq>DzQm;Gf0(VejJk z0wtZrLX1*;2Np-|m0hrPx1zKAIGK>@nyzvc@LX|bjv&)J!8dVAJ4+W*PCf6Gf*l1n z^mQC3$$utkZ+0;OG_e04RUnQ3H$`K8ZB{79*jUt=IF_>Y*<ye(dY)+4@hu5WZ)Xzb z^mtnUtKv*MYARt)Tw%wynna_IhO@abr1#&S&we_3J>A}jU72z4CYT1`I?$D$Vqf@k zT-SEhB@=W?$O^>lC)#H<VNv3Q<C9rd-6G=UXrA-wDp#1LY&Ez6l3ePu)b(RiW&42X zvvj#ts&QdC0tP-ko<jk4Wts=NVjJ@0YyLdD=X;;#{0o(eHY$X5d?1BJw7Rj{PqJb^ zGbjG$qg;&)_lGv**u@)l8UXP)I}5=<%JstWYij;zw#Jycc>|6ATCrRX<}IaVfOwTX z4oBngq%wnx$y}De3WJqq3f@t!qs0ynIZyfHK;Ms=vq%I#mz|4~oyS1e&Ar)3newY* zhs{8^-uv&9HsGPflNg$@8BW|6qT3<frws3G%um8>bgGm0>a8^SP4pO0W$K`#bpduF ze6KULbhxj!4J9c{us}Q;OvYv|pkT+8V&X`}8BlRzJO$f?trPPuj;uuDLVbT#Rsy~| zIx_7KCN<=UytMz|Veu=x08xAA9bUjk+(cWT){G_i-HzOuE>gwFyhFm@kM-~t(&DE~ z>LWz$Tv)fPsSjD?1<Dh6_q3_CaDZgS!YXmqp?6}k=>*5uiTP7HKf*a&ct}^TD8f@C z9OyK-{mrAned)l_3ZX>%k#9aKxJJXr6%hQ!cXZcwaetv>7pN$m+26}pRir&Tw_rI~ z&E+shF#>SrroDsbfzmrkR3ApEVuFuvm=ao8PYpLezBAUwn!s~){h1gkV6Yc)q2ueb z?)_jcBL>mo+9;|e{GQv4;WT0(vX_e;HvFbqd!jSN8r<5WHXwbdSH1JVrSYp_q~zcS z-mGA$X-n|K4I?rNPBSD?U<=(3c*t8l8}(7HGW@qu{M=Q0Q%?ZGIK%E=ZC(%<vNHxT zl&yFUTbXtv=BJ=bUuQ4Vt);$9h{|fpUpqm9X=;AQiRk8Jo2WM@(A^p~<iIta;!gpY zw51u*6ok3(#j%C9bT*Bq2u;|)wY9)+;-AIMpxBHFrOA70125$&_>{$^KayTSp2eNW z1vE|N-Et}13q5}r7{>U}znfyz^J<pD*bEgGOi(r&LhJ|mYT@`#7hbW{tZe4-N)sR` zmH>`tJNF49GSw>?e0KtduYhv>%kHF3bIf#o)+U+Sl~-oeLZF$YgttC{q7gqmePjTj zfCBpdZn7VgWje;mt-x-9b(vwy6E_)tg^hx{edk~3<*VW+pB7dOqIHu8!U##vv6LP@ z&bHO7s+oCKx{<34rk8}1fkpe>aEJ;ey|O;Op6Qy#zFO(!*AVszVK4em+oH%v^BekS z{b~fz@$_~Vt+4>-a7Q;6mo=snc2;5{zI3)v^!ap7b>xbtRbP7dFbe(BI>}hGuO)-x zk<jVmF<N?oIlB!PhWox1$pyCF{;J4<+&E|x8Ya*mPDDDbdI6RYEP&Z1=8)iIPvfE% zg9U%J^}|yF?+AAGj`&@T6zOt?e1__k@c(WAF;JU$ViKRWj~UyRR8Qqx_3V$svPhu~ zcCOa?pTY&#<VR8T=F{$an&IofIlURM@en*8;^4JD(Wyv>30)Co7@z)!RxshMpM(LV zM>X(XbV>I+p~=Q*qO^4Ga!|3P4&X;k4gOh;khwwgT{;j=T?Zoz;X|H;fJ^aER4u7K zwu9bAZ+z!{_n>^t_?`tXAVmD?r8G^0JpO?igQWHHQFQ2W#nb^{p!%*+uaVK^KQ!Db z03l$uv{$nx8XZHpORj#S%KgFv6BC3vRaqHN)0xXy^17p!uTf-BMTUq`S5oo+2GL`# zVUQ~F;Xg7b49FE*HXE<~+sAF?FoiAQN8~vFt~sW*ZT583u50{0iThK<b+hgR=wnv( zD&M2L=URX->kHJXYFj?tYQc55ShS2^ev1EGfB9OQ=?Q_qePpARVAGF--~5esjN4G< z`H&7kBCnl3I&0N&y3UO6ZA-icU6(5A7MXr`wb~xJy&i;Uk5~$jt>(6tLm{D^`WI8+ zc*<QtPa|w4hitx#D8WM58Y{j{8{%g0Ka1o1hOk(ReF*9)Kk$Y2)v2~PzZN$-gYj|y zY*RSUQeAc`OVWZVVuAa<xaR}~b$n$)Vm<V^5KF|T2`PI#7Kw$PCnZvzkFY|i-1Tu@ zPO+w+g6(K|2-)`6aEc{wodOFE8yyGWt8OR6w!n77x`!s?oCUhW;~}``X*V~TH{wG> zQd@pcXYaW6r?%AWAK3<u(v_k#$mo$$U7HuT+Ib@W#y|AVGS>N+5n}U%*iXV^l^Gp) z==fVLcgIMT3!I}lSjL7g+LGD`>BKf%Xm!BKa_xXnism&m(~wWD_7|iVNy!s<+!Qw} zXpHg%VkZs}Gs#T)|Ga7kV?tn8V`yx1lE}U=Mh>xZMY&Y2$G$bb6PN*bct)NHzsAC{ zj@%j4Xrw9J(o*{?xxgg{#QyuclWAoBk9?cepwX1581(`_U7AB_gqzVzk@wngsIyzA z9lR%b6T^;^sy(Z?14q>^7M(Ge`pwva>UL=-AZSuy)1M0{IfhaOrSS%RRj3pa31lzV zN{dc}fcj`CZCKJ7VC~EMRR$A#bSuoatI*y_;By2d%}crt?IyCivo(DD76j_f5V5t# zmyS_SmzhX){x?uS!T(426zF(K?#*iDLwx4}OEQ6_CBowxBOOiNlxFrtN{06Q;ot$L z5n`WFj?E%+%GhNL$-RSAqrT`5&7-)OYl*_r>xP^g#s2xAcwfvNN_7`!>}i%P+GU=M zT%S3p*Lj4+nBTJ8!uPRNRM+XD@Z}?9dO4WqGRtZ=3q?XVYU9SR2=5Js*-dD0o$Ztk zmrpLS0|=U4@|!fn01tut_4r<QFBX�+5dX<$m`kZY7i|10er67-vI~+hAu^bLkPG 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 Ez#0VUYXATM literal 0 HcmV?d00001 From 02bc531d1b851e19062839e772148ad3e5838fbc Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 9 Jul 2026 01:28:49 +0530 Subject: [PATCH 11/38] Add draft announcement posts for DocumentsDB, VectorsDB, and native databases --- .../post/announcing-documentsdb/+page.markdoc | 328 ++++++++++++++ .../+page.markdoc | 80 ++++ .../+page.markdoc | 88 ++++ .../post/announcing-vectorsdb/+page.markdoc | 418 ++++++++++++++++++ 4 files changed, 914 insertions(+) create mode 100644 src/routes/blog/post/announcing-documentsdb/+page.markdoc create mode 100644 src/routes/blog/post/announcing-native-mysql-databases/+page.markdoc create mode 100644 src/routes/blog/post/announcing-native-postgresql-databases/+page.markdoc create mode 100644 src/routes/blog/post/announcing-vectorsdb/+page.markdoc diff --git a/src/routes/blog/post/announcing-documentsdb/+page.markdoc b/src/routes/blog/post/announcing-documentsdb/+page.markdoc new file mode 100644 index 0000000000..08d51ba866 --- /dev/null +++ b/src/routes/blog/post/announcing-documentsdb/+page.markdoc @@ -0,0 +1,328 @@ +--- +layout: post +title: "Announcing DocumentsDB: Documents that evolve with your product" +description: Store flexible JSON documents, query them with the Appwrite SDKs, and let your data model evolve with your product instead of ahead of it. +date: 2026-07-09 +cover: /images/blog/announcing-documentsdb/cover.png +timeToRead: 5 +author: atharva +category: announcement +featured: false +callToAction: true +draft: true +faqs: + - question: "What is Appwrite DocumentsDB?" + answer: "DocumentsDB is an Appwrite database for schemaless documents. Collections hold flexible JSON, so you can add or change fields as your application grows without defining columns or running schema migrations. You work with it through the Appwrite SDKs and APIs, with the same permissions, queries, and pagination used across Appwrite Databases." + - question: "How is DocumentsDB different from TablesDB?" + answer: "TablesDB is relational: you define typed columns and indexes up front, and every row follows that schema. DocumentsDB is schemaless: every document is JSON and its shape can vary between documents in the same collection. Choose TablesDB when your data is structured and consistent, and DocumentsDB when it changes shape often or arrives in unpredictable forms." + - question: "Does DocumentsDB support transactions and bulk operations?" + answer: "Yes. DocumentsDB shares the platform capabilities used across Appwrite Databases, including transactions, bulk operations, atomic numeric operations for counters, pagination, and ordering. Permissions work at the document level, so client applications can read and write data safely." + - question: "Can I import existing data into DocumentsDB?" + answer: "Yes, DocumentsDB supports JSON imports and exports. You can bring existing documents in from a JSON file and export collections back out, which makes migrations into and out of Appwrite straightforward." + - question: "How is a DocumentsDB database provisioned?" + answer: "You create a database, choose DocumentsDB as the type, and select a compute specification that fits your workload. From there you can back it up and scale it as usage grows, all from the same project as the rest of your Appwrite backend." + - question: "Is DocumentsDB available on Appwrite Cloud?" + answer: "Yes, DocumentsDB is available on Appwrite Cloud as a database type in the create database flow, with a compute specification you choose per database." +--- + +Most application data does not arrive with a fixed shape. Early products change weekly, integrations return payloads you do not control, and user-generated content rarely fits the columns you designed three months ago. Forcing all of that through a rigid schema turns every product change into a migration. + +That is why we are announcing **DocumentsDB**, an Appwrite database built for schemaless documents. + +# Create your first database + +In your project, go to **Databases**, click **Create database**, and choose **DocumentsDB** as the type. Pick a compute specification, and the database is ready to hold collections in minutes. + +![Creating a DocumentsDB database](/images/docs/databases/documentsdb/dark/create-database.avif) + +# Schemaless collections + +A DocumentsDB collection holds documents as JSON. There are no columns to define and no schema to migrate. Two documents in the same collection can have different fields, and adding a new field is as simple as writing it. + +You still get the full capabilities of an Appwrite database: document-level permissions, queries, ordering, and pagination, through the same SDK patterns as the rest of Appwrite Databases. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { title: 'Hamlet', year: 1601 }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const documentsDB = new sdk.DocumentsDB(client); + +const result = await documentsDB.createDocument({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: sdk.ID.unique(), + data: { title: 'Hamlet', year: 1601 }, + permissions: [sdk.Permission.read(sdk.Role.any())] // optional +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\DocumentsDB; +use Appwrite\ID; +use Appwrite\Permission; +use Appwrite\Role; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$documentsDB = new DocumentsDB($client); + +$result = $documentsDB->createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID::unique(), + data: ['title' => 'Hamlet', 'year' => 1601], + permissions: [Permission::read(Role::any())] // optional +); +``` +```python +from appwrite.client import Client +from appwrite.services.documents_db import DocumentsDB +from appwrite.id import ID +from appwrite.permission import Permission +from appwrite.role import Role + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +documents_db = DocumentsDB(client) + +result = documents_db.create_document( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + document_id = ID.unique(), + data = { "title": "Hamlet", "year": 1601 }, + permissions = [Permission.read(Role.any())] # optional +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Permission +include Appwrite::Role + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +documents_db = DocumentsDB.new(client) + +result = documents_db.create_document( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + document_id: ID.unique(), + data: { "title" => "Hamlet", "year" => 1601 }, + permissions: [Permission.read(Role.any())] # optional +) +``` +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +Document result = await documentsDB.CreateDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.Unique(), + data: new { title = "Hamlet", year = 1601 }, + permissions: new List<string> { Permission.Read(Role.Any()) } // optional +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/permission.dart'; +import 'package:dart_appwrite/role.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +DocumentsDB documentsDB = DocumentsDB(client); + +Document result = await documentsDB.createDocument( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + documentId: ID.unique(), + data: { "title": "Hamlet", "year": 1601 }, + permissions: [Permission.read(Role.any())], // (optional) +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.Permission +import io.appwrite.Role +import io.appwrite.services.DocumentsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val documentsDB = DocumentsDB(client) + +val response = documentsDB.createDocument( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + documentId = ID.unique(), + data = mapOf("title" to "Hamlet", "year" to 1601), + permissions = listOf(Permission.read(Role.any())), // optional +) +``` +```java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.DocumentsDB; +import java.util.Map; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +DocumentsDB documentsDB = new DocumentsDB(client); + +documentsDB.createDocument( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID.unique(), + Map.of("title", "Hamlet", "year", 1601), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let documentsDB = DocumentsDB(client) + +let document = try await documentsDB.createDocument( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + documentId: ID.unique(), + data: ["title": "Hamlet", "year": 1601], + permissions: [Permission.read(Role.any())] // optional +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::DocumentsDB; +use appwrite::id::ID; +use appwrite::permission::Permission; +use appwrite::role::Role; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let documents_db = DocumentsDB::new(&client); + + let result = documents_db.create_document( + "<DATABASE_ID>", + "<COLLECTION_ID>", + ID::unique(), + serde_json::json!({ "title": "Hamlet", "year": 1601 }), + Some(vec![Permission::read(Role::any()).to_string()]), // optional + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite documents-db create-document \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --document-id 'unique()' \ + --data '{ "title": "Hamlet", "year": 1601 }' +``` +{% /multicode %} + +# Platform capabilities included + +DocumentsDB is a first-class member of Appwrite Databases, so the capabilities that make application data manageable come built in: + +- **[Transactions](/docs/products/databases/documentsdb/transactions)** group writes so related changes succeed or fail together. +- **[Bulk operations](/docs/products/databases/documentsdb/bulk-operations)** create, update, or delete many documents in one request. +- **[Atomic numeric operations](/docs/products/databases/documentsdb/atomic-numeric-operations)** increment and decrement counters safely on the server, with no read-modify-write races. +- **[JSON imports](/docs/products/databases/documentsdb/json-imports) and [exports](/docs/products/databases/documentsdb/json-exports)** move existing data in and out without custom scripts. +- **[Backups](/docs/products/databases/documentsdb/backups)** protect your data with scheduled and manual snapshots. + +Because permissions are enforced at the document level, you can serve data directly to client applications without building an API layer in between. + +# Compute specifications + +When you create a DocumentsDB database, you select a compute specification that fits your workload, and the database is provisioned for your project with its own resources. As usage grows, backups and scaling are handled from the same place you manage the rest of your Appwrite project. + +# When to use DocumentsDB + +DocumentsDB fits workloads where the shape of the data is the moving part: + +- Product catalogs where every category carries different attributes +- Event and activity payloads from third-party integrations +- User-generated content with optional and evolving fields +- Prototypes that need persistence before the data model settles + +If your data is structured and consistent, [TablesDB](/docs/products/databases/tablesdb) with its typed columns and indexes remains the right choice. The two share the same platform, so mixing them within one project is normal. + +# Get started + +DocumentsDB is available on Appwrite Cloud today. Create a database, choose DocumentsDB as the type, and you can write your first document within minutes. + +- [DocumentsDB documentation](/docs/products/databases/documentsdb) +- [Quick start](/docs/products/databases/documentsdb/quick-start) + diff --git a/src/routes/blog/post/announcing-native-mysql-databases/+page.markdoc b/src/routes/blog/post/announcing-native-mysql-databases/+page.markdoc new file mode 100644 index 0000000000..c1063ae58b --- /dev/null +++ b/src/routes/blog/post/announcing-native-mysql-databases/+page.markdoc @@ -0,0 +1,80 @@ +--- +layout: post +title: "Announcing native MySQL databases: Bring your MySQL workloads to Appwrite" +description: Provision a managed MySQL 8.4 instance inside your Appwrite project and keep using the drivers, ORMs, and tools your applications already depend on. +date: 2026-07-09 +cover: /images/blog/announcing-native-mysql-databases/cover.png +timeToRead: 5 +author: atharva +category: announcement +featured: false +callToAction: true +draft: true +faqs: + - question: "What is a native MySQL database in Appwrite?" + answer: "It is a managed MySQL instance running on dedicated compute inside your Appwrite project. Appwrite provisions the engine with its own hostname, credentials, and TLS, and you connect with the mysql client or any MySQL driver. Appwrite manages the infrastructure; your code talks to MySQL directly." + - question: "Do the Appwrite SDKs manage data in a native MySQL database?" + answer: "No. Native databases are accessed with standard MySQL clients, drivers, and ORMs, not the Appwrite SDKs. If you want SDK-driven data APIs with built-in permissions, use an Appwrite database such as TablesDB, DocumentsDB, or VectorsDB instead." + - question: "Which MySQL versions are available?" + answer: "MySQL 8.4 is the default, with 8.0 also supported. Version upgrades run online with logical replication and a traffic cutover, so moving between supported versions does not require a dump and restore." + - question: "Can I move an existing MySQL application to Appwrite?" + answer: "Yes, that is the primary use case. Because the database is a standard MySQL engine, existing applications built on frameworks like Laravel, Django, Rails, or Spring Boot connect with a changed connection string and no code rewrite." + - question: "What infrastructure features are included?" + answer: "Scheduled backups and point-in-time recovery based on binary log archiving, database branches, high availability with up to five replicas and automatic failover, online compute resizing, storage autoscaling, IP allowlists, a ProxySQL-based connection pooler, and maintenance windows." + - question: "How is the MySQL offering different from the PostgreSQL one?" + answer: "The platform features are the same: identical compute specifications and pricing, backups, PITR, branches, high availability, scaling, and network controls. The engine-specific difference is extensions, which are a PostgreSQL concept and do not apply to MySQL." +--- + +MySQL runs an enormous share of the software already in production. Most teams considering a backend platform are not starting from zero; they have a Laravel application, a Django service, or a decade-old schema that works, and the real question is where it should live. + +Today we are announcing **native MySQL databases** in Appwrite, so the answer can be: inside the same project as the rest of your backend. + +# Create your first database + +Provisioning happens in the Console: + +1. In your project, go to **Databases** and click **Create database**. +2. Under **Choose database type**, select **MySQL** from the **Native databases** group. + +![Choosing MySQL in the create database flow](/images/docs/products/databases/mysql/dark/create-database-type.avif) + +3. Under **Specifications**, pick the tier that fits your workload, and optionally configure read replicas and point-in-time recovery. + +![Selecting a specification](/images/docs/products/databases/mysql/dark/create-database-specs.avif) + +4. Review the summary and click **Create database**. + +The database provisions in minutes and reports `ready` when you can connect. + +# Connect your existing application + +A native MySQL database is a standard MySQL 8.4 engine (8.0 is also supported) with its own hostname, credentials, and TLS. Connecting is exactly what you expect: + +```bash +mysql -h db-<hash>.<region>.appwrite.center -P 3306 -u admin -p -D <database> +``` + +Change the connection string in your existing application and it runs. We verified the common paths end to end and published [integration guides](/docs/products/databases/mysql/integrations/laravel) for Laravel, Django, Rails, Spring Boot, EF Core, GORM, Prisma, Drizzle, and more, each with the MySQL-specific configuration spelled out. + +Because this is the engine itself, the Appwrite SDKs are not part of the data path. Reads and writes go through your drivers and ORMs, the way they already do. If you want SDK-driven data APIs with document permissions instead, that is what [Appwrite Databases](/docs/products/databases) are for. Native databases and Appwrite databases live side by side in the same project, so you can use both. + +# Managed operations + +Provisioning MySQL is straightforward; operating it over time is where the cost accumulates. The managed layer covers that operational work: + +- **[Backups and PITR.](/docs/products/databases/mysql/backups)** Scheduled and manual backups, plus continuous binary log archiving that restores to any point in the retention window, such as the second before a bad migration. +- **[High availability.](/docs/products/databases/mysql/high-availability)** Up to five replicas with a choice of replication mode and automatic failover behind a stable hostname. +- **[Branches.](/docs/products/databases/mysql/branches)** Instant, isolated copies of the database for previews and CI, created from a storage snapshot. +- **[Scaling.](/docs/products/databases/mysql/scaling)** Online resizes across eight compute tiers and storage autoscaling with a configurable threshold. +- **[Connection pooling.](/docs/products/databases/mysql/connection-pooling)** A ProxySQL-based pooler absorbs connection churn from serverless and per-request runtimes. +- **[Network security.](/docs/products/databases/mysql/network-security)** TLS on by default and IP allowlists enforced before authentication. + +Compute specifications and pricing are identical to the PostgreSQL offering, starting at **$10 per month**, with the full table in the [documentation](/docs/products/databases/mysql#specifications). + +# Get started + +Native MySQL databases are available on Appwrite Cloud today on dedicated infrastructure. + +- [MySQL documentation](/docs/products/databases/mysql) +- [Quick start](/docs/products/databases/mysql/quick-start) + diff --git a/src/routes/blog/post/announcing-native-postgresql-databases/+page.markdoc b/src/routes/blog/post/announcing-native-postgresql-databases/+page.markdoc new file mode 100644 index 0000000000..815ec150e4 --- /dev/null +++ b/src/routes/blog/post/announcing-native-postgresql-databases/+page.markdoc @@ -0,0 +1,88 @@ +--- +layout: post +title: "Announcing native PostgreSQL databases: The full engine, provisioned in minutes" +description: Run a managed PostgreSQL instance inside your Appwrite project and connect to it with psql, your ORM, and the entire PostgreSQL ecosystem. +date: 2026-07-09 +cover: /images/blog/announcing-native-postgresql-databases/cover.png +timeToRead: 6 +author: atharva +category: announcement +featured: false +callToAction: true +draft: true +faqs: + - question: "What is a native PostgreSQL database in Appwrite?" + answer: "It is a managed PostgreSQL instance provisioned on dedicated compute for your Appwrite project. You get the raw engine with its own hostname, credentials, and TLS, and you connect with psql or any PostgreSQL driver. There is no Appwrite abstraction layer between your code and the database." + - question: "How is a native database different from Appwrite Databases like TablesDB?" + answer: "Appwrite databases such as TablesDB, DocumentsDB, and VectorsDB are accessed through Appwrite SDKs and platform APIs, with document permissions and platform features built in. A native PostgreSQL database is the engine itself: you bring your own ORM, migrations, and drivers, and Appwrite manages the infrastructure underneath." + - question: "Can I use the Appwrite SDK to read and write data in a native PostgreSQL database?" + answer: "No. Data in a native database is accessed with standard PostgreSQL clients, drivers, and ORMs rather than the Appwrite SDKs. That is the point of the product: your existing PostgreSQL code and tooling work unchanged." + - question: "Which PostgreSQL versions are supported?" + answer: "PostgreSQL 18 is the default, with 17 also supported. Version upgrades run online: a second instance is provisioned on the new version, data streams over with logical replication, and traffic cuts over without a read or write outage." + - question: "What infrastructure features are included?" + answer: "Scheduled backups and point-in-time recovery, database branches, high availability with up to five replicas, online compute resizing, storage autoscaling, IP allowlists, a connection pooler, and maintenance windows. Extensions like PostGIS and pgvector can be installed per database." + - question: "How much does a native PostgreSQL database cost?" + answer: "Compute specifications start at $10 per month for 1 vCPU and 1 GB of memory and scale up to 8 vCPU and 64 GB. Storage and bandwidth allowances are included per tier, with overages and optional add-ons like high availability replicas and point-in-time recovery billed on top." +--- + +Some projects outgrow abstractions. You want `psql`, your own migrations, an ORM you chose yourself, and the thirty years of tooling that surround PostgreSQL, without also taking on provisioning, backups, failover, and patching. + +Today we are announcing **native PostgreSQL databases** in Appwrite. You pick a compute specification, Appwrite provisions the engine in your project's region, and you connect to it like any PostgreSQL server, because it is one. + +# Create your first database + +Provisioning happens in the Console: + +1. In your project, go to **Databases** and click **Create database**. +2. Under **Choose database type**, select **PostgreSQL** from the **Native databases** group. + +![Choosing PostgreSQL in the create database flow](/images/docs/products/databases/postgresql/dark/create-database-type.avif) + +3. Under **Specifications**, pick the tier that fits your workload, and optionally configure read replicas and point-in-time recovery. + +![Selecting a specification](/images/docs/products/databases/postgresql/dark/create-database-specs.avif) + +4. Review the summary and click **Create database**. + +The database provisions in minutes and reports `ready` when you can connect. + +# Direct access to the PostgreSQL engine + +A native database gets its own hostname, credentials, and TLS out of the box: + +```bash +psql "postgresql://admin:<password>@db-<hash>.<region>.appwrite.center:5432/<database>" +``` + +From there, everything you know applies. Prisma, Drizzle, Django, Rails, Spring Boot, EF Core, and GORM work against it with no Appwrite-specific configuration, and we ship [integration guides](/docs/products/databases/postgresql/integrations/prisma) for each. Extensions like PostGIS, pgvector, and pg_trgm install per database. + +This is a different product from [Appwrite Databases](/docs/products/databases). TablesDB, DocumentsDB, and VectorsDB are accessed through Appwrite SDKs with platform permissions built in. A native PostgreSQL database has no Appwrite layer between your code and the engine, and the Appwrite SDKs do not manage its data. Your drivers do. + +# Managed infrastructure features + +Appwrite manages the operational work that self-hosting PostgreSQL would put on your team: + +- **[Backups and point-in-time recovery.](/docs/products/databases/postgresql/backups)** Scheduled and manual backups, plus continuous archiving that can restore to any moment inside the retention window. +- **[Branches.](/docs/products/databases/postgresql/branches)** Ephemeral copies of your database created from a storage snapshot, ideal for previews and testing against production-shaped data. +- **[High availability.](/docs/products/databases/postgresql/high-availability)** Up to five replicas with asynchronous, synchronous, or quorum replication and automatic failover behind a stable hostname. +- **[Scaling.](/docs/products/databases/postgresql/scaling)** Resize compute online between eight specifications, and let storage autoscaling grow the disk before it fills. +- **[Connection pooling.](/docs/products/databases/postgresql/connection-pooling)** A per-database pooler multiplexes serverless traffic, with read/write splitting when replicas are enabled. +- **[Network security.](/docs/products/databases/postgresql/network-security)** TLS by default, IP allowlists, and a dedicated hostname per database. + +# SQL tooling in the Console + +The Console treats the database as a first-class SQL environment. The SQL editor runs queries with formatting and explain plans, the Monitor tab tracks compute, connections, storage, and workload, and the active connections view surfaces what `pg_stat_activity` knows with actions to cancel or terminate sessions. + +![The SQL editor in the Appwrite Console](/images/docs/products/databases/postgresql/dark/sql-editor.avif) + +# Specifications and pricing + +Specifications run from **$10 per month** (1 vCPU, 1 GB memory, 10 GB storage) to **$699 per month** (8 vCPU, 64 GB memory, 3 TB storage), each with included storage and bandwidth. High availability replicas and point-in-time recovery are add-ons, priced as a percentage of the tier. The full table lives in the [documentation](/docs/products/databases/postgresql#specifications). + +# Get started + +Native PostgreSQL databases are available on Appwrite Cloud today on dedicated infrastructure. + +- [PostgreSQL documentation](/docs/products/databases/postgresql) +- [Quick start](/docs/products/databases/postgresql/quick-start) + diff --git a/src/routes/blog/post/announcing-vectorsdb/+page.markdoc b/src/routes/blog/post/announcing-vectorsdb/+page.markdoc new file mode 100644 index 0000000000..89867d70e9 --- /dev/null +++ b/src/routes/blog/post/announcing-vectorsdb/+page.markdoc @@ -0,0 +1,418 @@ +--- +layout: post +title: "Announcing VectorsDB: Similarity search as a first-class Appwrite database" +description: Store embeddings, generate them from text with built-in models, and rank documents by similarity without adding a separate vector service to your stack. +date: 2026-07-09 +cover: /images/blog/announcing-vectorsdb/cover.png +timeToRead: 6 +author: atharva +category: announcement +featured: false +callToAction: true +draft: true +faqs: + - question: "What is Appwrite VectorsDB?" + answer: "VectorsDB is an Appwrite database for vector embeddings and similarity search. Every collection is created with a fixed dimension, documents hold an embeddings vector plus optional JSON metadata, and an HNSW index keeps similarity search fast as the collection grows." + - question: "Do I need a separate embedding service to use VectorsDB?" + answer: "No. VectorsDB can generate text embeddings with built-in models, so you can turn strings into vectors and store them in one flow. If you already produce embeddings elsewhere, you can store those instead, as long as their length matches the collection's dimension." + - question: "Which similarity metrics does VectorsDB support?" + answer: "VectorsDB supports cosine, dot product, and Euclidean distance. You choose the metric when you create the HNSW index, and query with the matching vector query method to get documents ranked from most to least similar." + - question: "What is an HNSW index and why does it matter?" + answer: "HNSW (Hierarchical Navigable Small World) is an approximate nearest neighbor index. It keeps similarity search fast even as collections grow large, which is what makes vector search practical in production instead of a linear scan over every document." + - question: "Can I combine vector search with regular queries?" + answer: "Yes. A vector query can be combined with other queries, such as limits, so you can cap how many results come back. Results return as documents with their metadata, ready to render or feed into your application logic." + - question: "What can I build with VectorsDB?" + answer: "Semantic search over content, recommendations based on similarity, deduplication, and retrieval for AI applications such as RAG. Anywhere ranking by meaning beats matching by exact value, VectorsDB applies." +--- + +Semantic search, recommendations, and retrieval for AI features all reduce to the same primitive: store vectors, then find the ones closest to a query. Until now, that primitive usually meant adding a dedicated vector service to your stack, with its own hosting, its own client, and its own auth model to reconcile with the rest of your backend. + +Today we are announcing **VectorsDB**, which makes that primitive a first-class Appwrite database. + +# Create your first database + +In your project, go to **Databases**, click **Create database**, and choose **VectorsDB** as the type. Pick a compute specification, then create your first collection with the `dimension` your embedding model produces. From there, every document you write is a vector ready to be searched. + +# A schema designed for vectors + +Where other Appwrite databases let you define your own fields, a VectorsDB collection has a deliberate, fixed shape. You create it with a `dimension`, and every document carries two things: + +- `embeddings`: a vector of exactly that length +- `metadata`: optional JSON for whatever belongs alongside the vector, such as the source text, a URL, or labels + +That constraint is the feature. The collection always knows what a valid vector looks like, and the HNSW index built on `embeddings` keeps search fast as your data grows. + +# Built-in embedding generation + +VectorsDB can generate text embeddings with built-in models. You pass a string, and Appwrite turns it into a vector you can store directly, so a working semantic search does not require standing up an embedding service or wiring a third-party API into your ingest path. If you already have embeddings from your own models, store those instead. + +# Run a similarity search + +Searching is a two-step flow. First, turn the search text into a vector, either with your own model or with the built-in embedding generation: + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createTextEmbeddings({ + texts: ['The quick brown fox jumps over the lazy dog'], + model: sdk.EmbeddingModel.Nomicembedtext // optional, defaults to nomic-embed-text +}); +``` +```deno +import * as sdk from "npm:node-appwrite"; + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const vectorsDB = new sdk.VectorsDB(client); + +const result = await vectorsDB.createTextEmbeddings({ + texts: ['The quick brown fox jumps over the lazy dog'], + model: sdk.EmbeddingModel.Nomicembedtext // optional, defaults to nomic-embed-text +}); +``` +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\VectorsDB; +use Appwrite\Enums\EmbeddingModel; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$vectorsDB = new VectorsDB($client); + +$result = $vectorsDB->createTextEmbeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel::NOMICEMBEDTEXT() // optional, defaults to nomic-embed-text +); +``` +```python +from appwrite.client import Client +from appwrite.services.vectors_db import VectorsDB +from appwrite.enums import EmbeddingModel + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB(client) + +result = vectors_db.create_text_embeddings( + texts = ['The quick brown fox jumps over the lazy dog'], + model = EmbeddingModel.NOMIC_EMBED_TEXT # optional, defaults to nomic-embed-text +) +``` +```ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +vectors_db = VectorsDB.new(client) + +result = vectors_db.create_text_embeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel::NOMIC_EMBED_TEXT # optional, defaults to nomic-embed-text +) +``` +```csharp +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +EmbeddingList result = await vectorsDB.CreateTextEmbeddings( + texts: new List<string> { "The quick brown fox jumps over the lazy dog" }, + model: EmbeddingModel.NomicEmbedText // optional, defaults to nomic-embed-text +); +``` +```dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +VectorsDB vectorsDB = VectorsDB(client); + +EmbeddingList result = await vectorsDB.createTextEmbeddings( + texts: ['The quick brown fox jumps over the lazy dog'], + model: EmbeddingModel.nomicEmbedText, // optional, defaults to nomic-embed-text +); +``` +```kotlin +import io.appwrite.Client +import io.appwrite.enums.EmbeddingModel +import io.appwrite.services.VectorsDB + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val vectorsDB = VectorsDB(client) + +val response = vectorsDB.createTextEmbeddings( + texts = listOf("The quick brown fox jumps over the lazy dog"), + model = EmbeddingModel.NOMIC_EMBED_TEXT, // optional, defaults to nomic-embed-text +) +``` +```java +import io.appwrite.Client; +import io.appwrite.enums.EmbeddingModel; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.VectorsDB; +import java.util.List; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +VectorsDB vectorsDB = new VectorsDB(client); + +vectorsDB.createTextEmbeddings( + List.of("The quick brown fox jumps over the lazy dog"), + EmbeddingModel.NOMIC_EMBED_TEXT, // optional, defaults to nomic-embed-text + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let vectorsDB = VectorsDB(client) + +let embeddingList = try await vectorsDB.createTextEmbeddings( + texts: ["The quick brown fox jumps over the lazy dog"], + model: .nomicEmbedText // optional, defaults to nomic-embed-text +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::vectors_db::VectorsDB; +use appwrite::enums::EmbeddingModel; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let vectors_db = VectorsDB::new(&client); + + let result = vectors_db.create_text_embeddings( + vec!["The quick brown fox jumps over the lazy dog"], + Some(EmbeddingModel::NomicEmbedText), // optional, defaults to nomic-embed-text + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite vectors-db create-text-embeddings \ + --texts 'The quick brown fox jumps over the lazy dog' \ + --model 'nomic-embed-text' +``` +{% /multicode %} + +Then pass that vector as a query to the same `listDocuments` method used across Appwrite Databases. Choose the metric when you create the index, cosine, dot product, or Euclidean distance, and query with the matching method. The vectors below are shortened for readability; in practice you pass the embedding returned by the step above: + +{% multicode %} +```server-nodejs +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + sdk.Query.limit(3) + ] +}); +``` +```deno +const result = await vectorsDB.listDocuments({ + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + sdk.Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + sdk.Query.limit(3) + ] +}); +``` +```php +$result = $vectorsDB->listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query::vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query::limit(3) + ] +); +``` +```python +result = vectors_db.list_documents( + database_id = '<DATABASE_ID>', + collection_id = '<COLLECTION_ID>', + queries = [ + Query.vector_cosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```ruby +result = vectors_db.list_documents( + database_id: '<DATABASE_ID>', + collection_id: '<COLLECTION_ID>', + queries: [ + Query.vector_cosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```csharp +DocumentList result = await vectorsDB.ListDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: new List<string> { + Query.VectorCosine("embeddings", new List<object> { 0.11, 0.21, 0.30, 0.40 }), + Query.Limit(3) + } +); +``` +```dart +DocumentList result = await vectorsDB.listDocuments( + databaseId: '<DATABASE_ID>', + collectionId: '<COLLECTION_ID>', + queries: [ + Query.vectorCosine('embeddings', [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ], +); +``` +```kotlin +val result = vectorsDB.listDocuments( + databaseId = "<DATABASE_ID>", + collectionId = "<COLLECTION_ID>", + queries = listOf( + Query.vectorCosine("embeddings", listOf(0.11, 0.21, 0.30, 0.40)), + Query.limit(3) + ), +) +``` +```java +vectorsDB.listDocuments( + "<DATABASE_ID>", + "<COLLECTION_ID>", + List.of( + Query.vectorCosine("embeddings", List.of(0.11, 0.21, 0.30, 0.40)), + Query.limit(3) + ), + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```swift +let result = try await vectorsDB.listDocuments( + databaseId: "<DATABASE_ID>", + collectionId: "<COLLECTION_ID>", + queries: [ + Query.vectorCosine("embeddings", [0.11, 0.21, 0.30, 0.40]), + Query.limit(3) + ] +) +``` +```server-rust +let result = vectors_db.list_documents( + "<DATABASE_ID>", + "<COLLECTION_ID>", + Some(vec![ + Query::vector_cosine("embeddings", json!([0.11, 0.21, 0.30, 0.40])).to_string(), + Query::limit(3).to_string(), + ]), + None, // transaction_id + None, // total + None, // ttl +).await?; +``` +```bash +appwrite vectors-db list-documents \ + --database-id <DATABASE_ID> \ + --collection-id <COLLECTION_ID> \ + --queries '{"method":"vectorCosine","attribute":"embeddings","values":[[0.11,0.21,0.30,0.40]]}' '{"method":"limit","values":[3]}' +``` +{% /multicode %} + +Results come back as documents ranked from most to least similar, with their metadata attached, ready to render. + +# Shared Appwrite Databases capabilities + +VectorsDB shares the platform capabilities available across Appwrite Databases: + +- **[Permissions](/docs/products/databases/vectorsdb/permissions)** control access at the document level, so clients can search safely. +- **[Queries](/docs/products/databases/vectorsdb/queries)**, **[pagination](/docs/products/databases/vectorsdb/pagination)**, and ordering work alongside vector queries. +- **[Transactions](/docs/products/databases/vectorsdb/transactions)** group writes so related changes succeed or fail together. +- **[Bulk operations](/docs/products/databases/vectorsdb/bulk-operations)** ingest large embedding sets in one request. +- **[CSV imports](/docs/products/databases/vectorsdb/csv-imports) and [exports](/docs/products/databases/vectorsdb/csv-exports)** move vectors and metadata in and out. +- **[Backups](/docs/products/databases/vectorsdb/backups)** protect your collections with scheduled and manual snapshots. + +Your vectors live next to the rest of your application data, behind the same SDKs and the same access control, instead of in a service on the side. + +Every VectorsDB database is provisioned for your project with a compute specification you choose at creation, so search performance scales with the tier you pick. + +# Get started + +VectorsDB is available on Appwrite Cloud today. Create a database, choose VectorsDB as the type, pick a dimension, and you can run your first similarity search in minutes. + +- [VectorsDB documentation](/docs/products/databases/vectorsdb) +- [Quick start](/docs/products/databases/vectorsdb/quick-start) +- [Vector search](/docs/products/databases/vectorsdb/vector-search) + From 633146285d4567ab611e9ca5f609811992b3a73d Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Sat, 11 Jul 2026 00:45:52 +0530 Subject: [PATCH 12/38] docs(partners): add OAuth server section and Sign in with your product guide --- .optimize-cache.json | 20 + src/routes/docs/Sidebar.svelte | 7 + .../docs/partners/oauth-server/+layout.svelte | 64 + .../docs/partners/oauth-server/+page.markdoc | 68 + .../oauth-server/authorization/+page.markdoc | 522 ++++++ .../oauth-server/clients/+page.markdoc | 1578 +++++++++++++++++ .../oauth-server/device-flow/+page.markdoc | 171 ++ .../oauth-server/quick-start/+page.markdoc | 468 +++++ .../oauth-server/scopes/+page.markdoc | 40 + .../sign-in-with-your-product/+layout.svelte | 10 + .../sign-in-with-your-product/+layout.ts | 11 + .../sign-in-with-your-product/+page.ts | 5 + .../step-1/+page.markdoc | 50 + .../step-2/+page.markdoc | 55 + .../step-3/+page.markdoc | 74 + .../step-4/+page.markdoc | 86 + .../step-5/+page.markdoc | 219 +++ .../step-6/+page.markdoc | 130 ++ .../step-7/+page.markdoc | 57 + .../oauth-server/tokens/+page.markdoc | 348 ++++ .../dark/oauth2-server-apps-empty.avif | Bin 0 -> 25267 bytes .../dark/oauth2-server-apps-list.avif | Bin 0 -> 26947 bytes .../dark/oauth2-server-create-app.avif | Bin 0 -> 24357 bytes .../dark/oauth2-server-discovery.avif | Bin 0 -> 38896 bytes .../dark/oauth2-server-secret-created.avif | Bin 0 -> 16069 bytes .../dark/oauth2-server-settings-disabled.avif | Bin 0 -> 22789 bytes .../dark/oauth2-server-settings.avif | Bin 0 -> 31883 bytes .../dark/oauth2-server-token-lifetimes.avif | Bin 0 -> 38664 bytes .../oauth-server/guide/taskflow-consent.avif | Bin 0 -> 15748 bytes .../oauth-server/guide/taskflow-login.avif | Bin 0 -> 9317 bytes .../oauth-server/guide/vantage-dashboard.avif | Bin 0 -> 16679 bytes .../oauth-server/guide/vantage-landing.avif | Bin 0 -> 27710 bytes .../oauth2-server-apps-empty.avif | Bin 0 -> 24515 bytes .../oauth-server/oauth2-server-apps-list.avif | Bin 0 -> 25399 bytes .../oauth2-server-create-app.avif | Bin 0 -> 22852 bytes .../oauth-server/oauth2-server-discovery.avif | Bin 0 -> 35800 bytes .../oauth2-server-secret-created.avif | Bin 0 -> 15143 bytes .../oauth2-server-settings-disabled.avif | Bin 0 -> 21061 bytes .../oauth-server/oauth2-server-settings.avif | Bin 0 -> 29507 bytes .../oauth2-server-token-lifetimes.avif | Bin 0 -> 35339 bytes 40 files changed, 3983 insertions(+) create mode 100644 src/routes/docs/partners/oauth-server/+layout.svelte create mode 100644 src/routes/docs/partners/oauth-server/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/authorization/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/clients/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/device-flow/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/quick-start/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/scopes/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/tokens/+page.markdoc create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-apps-empty.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-apps-list.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-create-app.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-discovery.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-secret-created.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-settings.avif create mode 100644 static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.avif create mode 100644 static/images/docs/oauth-server/guide/taskflow-consent.avif create mode 100644 static/images/docs/oauth-server/guide/taskflow-login.avif create mode 100644 static/images/docs/oauth-server/guide/vantage-dashboard.avif create mode 100644 static/images/docs/oauth-server/guide/vantage-landing.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-apps-empty.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-apps-list.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-create-app.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-discovery.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-secret-created.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-settings-disabled.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-settings.avif create mode 100644 static/images/docs/oauth-server/oauth2-server-token-lifetimes.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 854da251a0..bfba95b3cc 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1586,6 +1586,26 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", + "static/images/docs/oauth-server/dark/oauth2-server-apps-empty.png": "b81617a77c6489bc93cfe3c118c2fd075eebda850fc5803cba4b1b62792269f1", + "static/images/docs/oauth-server/dark/oauth2-server-apps-list.png": "a0b1a9bcc5708bb48f7d4684d754cfc8af8e666f808e11d00fc42182ee7ccf6e", + "static/images/docs/oauth-server/dark/oauth2-server-create-app.png": "8237a7890f6246661086cf80b7eb6cdbf0b27b4bc1a5cbcf485209ef9a27dfcf", + "static/images/docs/oauth-server/dark/oauth2-server-discovery.png": "e688439f87c4ae73086b76ee094e036d5bddb14b9431aaad5901d281ab3ca413", + "static/images/docs/oauth-server/dark/oauth2-server-secret-created.png": "d675fe574706d58b224ce823c8904145482472f64ab940a8bb37b92fcc33008e", + "static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.png": "ad51d531eaa3736839859097c024bca41a28d1339ceef773e376c06936e040ee", + "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", + "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", + "static/images/docs/oauth-server/guide/taskflow-consent.png": "5c4f4cbc6b225c60d5d6e2f1616abe45f0e6b66a5014438961fca98db349bd18", + "static/images/docs/oauth-server/guide/taskflow-login.png": "5d0013b31b211efe4d3a2f6a9f224a5b547d3ef1370e507b9a183bb276fc90e1", + "static/images/docs/oauth-server/guide/vantage-dashboard.png": "b2e95c34ec9c19be090e5f3384e0c3278dd840059b3f015ccdb13a16c135dde1", + "static/images/docs/oauth-server/guide/vantage-landing.png": "dc597717bcc93de02b2e5336a0f05d743ea66e6d91cef40fbdc61f8380577bec", + "static/images/docs/oauth-server/oauth2-server-apps-empty.png": "6f7b5c2021df2db7a3a1c4da3dfcf9b2ff119e98450e755eb64f03263030da0a", + "static/images/docs/oauth-server/oauth2-server-apps-list.png": "e3f38509e45e502f742e7532ae1a19bdd35b0891821b6a81601b7960ff16b38c", + "static/images/docs/oauth-server/oauth2-server-create-app.png": "182c207475ebd8f386d3d1ec522058f23f59cb47d85f4b681889d0dd08eb8cd8", + "static/images/docs/oauth-server/oauth2-server-discovery.png": "5b75f8e780cac92a68fda24a9686ba89ce83d89ac66e5f651428b4c62bb81cbd", + "static/images/docs/oauth-server/oauth2-server-secret-created.png": "5a6d48595018a8faaa26aeafe099c3dda23613a35e49884decbecb0029449168", + "static/images/docs/oauth-server/oauth2-server-settings-disabled.png": "648091d9d81308ab93dd456f172fa1c1977c2fbce9b8aa03893398bdefe10595", + "static/images/docs/oauth-server/oauth2-server-settings.png": "914aa6511caedb568f199eacef837366c523f78125c551afa992e39098707431", + "static/images/docs/oauth-server/oauth2-server-token-lifetimes.png": "895bf62c7f5171c8f244fda37b516760266c47447f2c66c93c3c812139823b96", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/routes/docs/Sidebar.svelte b/src/routes/docs/Sidebar.svelte index 1dd3ea69ec..b1c7a1edfa 100644 --- a/src/routes/docs/Sidebar.svelte +++ b/src/routes/docs/Sidebar.svelte @@ -101,6 +101,13 @@ href: '/docs/partners/project', icon: 'icon-briefcase', isParent: true + }, + { + label: 'OAuth server', + href: '/docs/partners/oauth-server', + icon: 'icon-key', + isParent: true, + new: isNewUntil('31 Aug 2026') } ] }, diff --git a/src/routes/docs/partners/oauth-server/+layout.svelte b/src/routes/docs/partners/oauth-server/+layout.svelte new file mode 100644 index 0000000000..409e8402dc --- /dev/null +++ b/src/routes/docs/partners/oauth-server/+layout.svelte @@ -0,0 +1,64 @@ +<script lang="ts"> + import Docs from '$lib/layouts/Docs.svelte'; + import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; + + const parent: NavParent = { + href: '/docs', + label: 'OAuth server' + }; + + const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/partners/oauth-server' + }, + { + label: 'Quick start', + href: '/docs/partners/oauth-server/quick-start' + } + ] + }, + { + label: 'Concepts', + items: [ + { + label: 'Clients', + href: '/docs/partners/oauth-server/clients' + }, + { + label: 'Authorization', + href: '/docs/partners/oauth-server/authorization' + }, + { + label: 'Tokens', + href: '/docs/partners/oauth-server/tokens' + }, + { + label: 'Scopes', + href: '/docs/partners/oauth-server/scopes' + }, + { + label: 'Device flow', + href: '/docs/partners/oauth-server/device-flow' + } + ] + }, + { + label: 'Guides', + items: [ + { + label: 'Sign in with your product', + href: '/docs/partners/oauth-server/sign-in-with-your-product/step-1' + } + ] + } + ]; +</script> + +<Docs variant="two-side-navs"> + <Sidebar {navigation} {parent} /> + <slot /> +</Docs> diff --git a/src/routes/docs/partners/oauth-server/+page.markdoc b/src/routes/docs/partners/oauth-server/+page.markdoc new file mode 100644 index 0000000000..b3ec80274e --- /dev/null +++ b/src/routes/docs/partners/oauth-server/+page.markdoc @@ -0,0 +1,68 @@ +--- +layout: article +title: OAuth server +description: Turn your Appwrite project into an OAuth 2.1 and OpenID Connect provider so third-party apps can sign in with your product. +back: /docs +--- + +Appwrite can act as an **OAuth 2.1 and OpenID Connect provider**. When you enable the OAuth server on a project, third-party apps register as clients, send your users to a consent screen you host, and receive tokens your project issues. The users in your project become an identity provider that any standards-compliant OAuth or OIDC library can integrate with, the same way apps integrate with "Sign in with Google" or "Sign in with GitHub". + +{% only_dark %} +![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-settings.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) +{% /only_light %} + +This is the inverse of the [OAuth providers](/docs/partners/project/oauth) feature. OAuth providers let your users sign in to your project *with* an external service. The OAuth server lets external services sign their users in *with your project*. + +# How it works {% #how-it-works %} + +The OAuth server has three moving parts. + +1. **The authorization server.** Enabling the server on your project exposes a full set of OIDC endpoints: authorization, token, userinfo, discovery, JWKS, revocation, and introspection. A keypair is generated for your project on first enable and used to sign tokens. +2. **Clients.** Each third-party app registers as a [client](/docs/partners/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). Clients declare the redirect URIs they are allowed to return to. +3. **The consent screen.** You host a consent screen at an authorization URL you configure. When a user authorizes a client, Appwrite redirects them to your screen, your screen confirms the grant, and Appwrite issues an authorization code the client exchanges for tokens. + +The flow follows the OAuth 2.1 authorization code grant with PKCE, plus the OpenID Connect layer for identity. Because the server is spec-compliant, integrators can point any OAuth or OIDC client library at your project's discovery URL and it works without Appwrite-specific code. + +# Standards support {% #standards %} + +The server implements the current OAuth 2.1 and OpenID Connect security practices: + +- **Authorization code grant with PKCE.** PKCE uses `S256` and is required for public clients. The password grant and the implicit access-token grant are not supported. +- **Refresh tokens with rotation.** Every refresh issues a new refresh token and invalidates the previous one. Reusing an old refresh token revokes the whole token family. +- **Exact redirect URI matching.** A returned redirect URI must exactly match a registered one, with a narrow loopback-port exception for public native clients (RFC 8252). +- **OpenID Connect.** The server issues `id_token` values, serves a discovery document at `/.well-known/openid-configuration`, and publishes signing keys at `/.well-known/jwks.json`. +- **Device authorization grant** (RFC 8628) for input-constrained devices like TVs and CLIs. + +# Concepts {% #concepts %} + +{% cards %} +{% cards_item href="/docs/partners/oauth-server/quick-start" title="Quick start" %} +Enable the server, register a client, and run your first sign-in end to end. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/clients" title="Clients" %} +Register confidential and public OAuth clients and manage their secrets. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/authorization" title="Authorization" %} +The authorization code flow, PKCE, and hosting your own consent screen. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +Access, refresh, and ID tokens, their lifetimes, introspection, and revocation. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +The built-in OpenID scopes and the custom scopes your clients can request. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +Authorize TVs, CLIs, and other input-constrained devices. +{% /cards_item %} +{% /cards %} + +# Guide {% #guide %} + +{% cards %} +{% cards_item href="/docs/partners/oauth-server/sign-in-with-your-product/step-1" title="Sign in with your product" %} +Build a full sign-in with your product experience end to end, from the consent screen to the token exchange. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc new file mode 100644 index 0000000000..be7872d8d9 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc @@ -0,0 +1,522 @@ +--- +layout: article +title: Authorization +description: The OAuth 2.1 authorization code flow with PKCE, and how to host a consent screen for your Appwrite OAuth server. +back: /docs/partners/oauth-server +--- + +Authorization is the step where a user allows a client to act on their behalf. Appwrite's OAuth server uses the **authorization code flow with PKCE**, the flow the OAuth 2.1 draft recommends for every client type. This page covers the flow end to end and how to host the consent screen it depends on. + +# The authorization code flow {% #flow %} + +1. The client sends the user to the **authorization endpoint** with its client ID, a registered redirect URI, `response_type=code`, and the scopes it wants. +2. Appwrite checks for a user session on your project. With a session, it creates a grant and redirects to your **authorization URL** with a `grant_id`. Without one, it redirects to your authorization URL with the full request so you can sign the user in first. +3. Your **consent screen** loads the grant, shows the user what is being requested, and approves or rejects it. +4. On approval, Appwrite redirects back to the client's redirect URI with a short-lived authorization `code`. +5. The client exchanges the code for tokens at the token endpoint. See [Tokens](/docs/partners/oauth-server/tokens). + +# PKCE {% #pkce %} + +PKCE (Proof Key for Code Exchange) binds an authorization request to the client that started it, so an intercepted code cannot be redeemed by anyone else. The client generates a random `code_verifier`, hashes it with SHA-256 into a `code_challenge`, and sends the challenge on the authorize request. When it later redeems the code, it presents the original verifier, and the server checks that they match. + +The server supports the `S256` challenge method only. PKCE is **always required for public clients**. For confidential clients it is optional and controlled per project by the **Require PKCE** setting, since those clients already authenticate with a secret. + +# Start authorization {% #authorize %} + +Send the user to the authorization endpoint. A public client includes its `code_challenge`; a confidential client includes it when PKCE is enabled. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.authorize({ + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com', + responseType: 'code', + scope: '<SCOPE>', // optional + state: '<STATE>', // optional + nonce: '<NONCE>', // optional + codeChallenge: '<CODE_CHALLENGE>', // optional + codeChallengeMethod: 's256', // optional + prompt: '<PROMPT>', // optional + maxAge: 0, // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '' // optional +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Authorize result = await oauth2.authorize( + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com', + responseType: 'code', + scope: '<SCOPE>', // optional + state: '<STATE>', // optional + nonce: '<NONCE>', // optional + codeChallenge: '<CODE_CHALLENGE>', // optional + codeChallengeMethod: 's256', // optional + prompt: '<PROMPT>', // optional + maxAge: 0, // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '', // optional +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2Authorize = try await oauth2.authorize( + client_id: "<CLIENT_ID>", + redirect_uri: "https://example.com", + response_type: "code", + scope: "<SCOPE>", // optional + state: "<STATE>", // optional + nonce: "<NONCE>", // optional + code_challenge: "<CODE_CHALLENGE>", // optional + code_challenge_method: "s256", // optional + prompt: "<PROMPT>", // optional + max_age: 0, // optional + authorization_details: "<AUTHORIZATION_DETAILS>", // optional + resource: "" // optional +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.authorize( + client_id = "<CLIENT_ID>", + redirect_uri = "https://example.com", + response_type = "code", + scope = "<SCOPE>", // (optional) + state = "<STATE>", // (optional) + nonce = "<NONCE>", // (optional) + code_challenge = "<CODE_CHALLENGE>", // (optional) + code_challenge_method = "s256", // (optional) + prompt = "<PROMPT>", // (optional) + max_age = 0, // (optional) + authorization_details = "<AUTHORIZATION_DETAILS>", // (optional) + resource = "", // (optional) +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.authorize( + "<CLIENT_ID>", // client_id + "https://example.com", // redirect_uri + "code", // response_type + "<SCOPE>", // scope (optional) + "<STATE>", // state (optional) + "<NONCE>", // nonce (optional) + "<CODE_CHALLENGE>", // code_challenge (optional) + "s256", // code_challenge_method (optional) + "<PROMPT>", // prompt (optional) + 0, // max_age (optional) + "<AUTHORIZATION_DETAILS>", // authorization_details (optional) + "", // resource (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.authorize({ + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com', + responseType: 'code', + scope: '<SCOPE>', // optional + state: '<STATE>', // optional + nonce: '<NONCE>', // optional + codeChallenge: '<CODE_CHALLENGE>', // optional + codeChallengeMethod: 's256', // optional + prompt: '<PROMPT>', // optional + maxAge: 0, // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '' // optional +}); + +console.log(result); +``` +{% /multicode %} + +Without a session on the project, Appwrite redirects to your authorization URL with the original request parameters attached. Sign the user in there (with your normal [Appwrite authentication](/docs/products/auth)), then send them back through the authorize endpoint so a grant can be created. + +# Host the consent screen {% #consent %} + +Your authorization URL is a page you host. When Appwrite redirects a signed-in user to it with a `grant_id`, the page reads the grant, presents it, and records the user's decision. The consent endpoints authenticate with the user's session on your project. + +**Load the grant** to see which client, scopes, and resources are being requested, then render your UI. + +{% info title="Required scope" %} +Reading a grant requires the `oauth2.read` scope. Approving or rejecting one requires `oauth2.write`. +{% /info %} + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.getGrant({ + grantId: '<GRANT_ID>' +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Grant result = await oauth2.getGrant( + grantId: '<GRANT_ID>', +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2Grant = try await oauth2.getGrant( + grant_id: "<GRANT_ID>" +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.getGrant( + grant_id = "<GRANT_ID>", +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.getGrant( + "<GRANT_ID>", // grant_id + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.getGrant({ + grantId: '<GRANT_ID>' +}); + +console.log(result); +``` +{% /multicode %} + +**Approve** the grant to continue. Appwrite responds with the redirect URL back to the client, carrying the authorization code. Send the user there. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.approve({ + grantId: '<GRANT_ID>', + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + scope: '<SCOPE>' // optional +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Approve result = await oauth2.approve( + grantId: '<GRANT_ID>', + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + scope: '<SCOPE>', // optional +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2Approve = try await oauth2.approve( + grant_id: "<GRANT_ID>", + authorization_details: "<AUTHORIZATION_DETAILS>", // optional + scope: "<SCOPE>" // optional +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.approve( + grant_id = "<GRANT_ID>", + authorization_details = "<AUTHORIZATION_DETAILS>", // (optional) + scope = "<SCOPE>", // (optional) +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.approve( + "<GRANT_ID>", // grant_id + "<AUTHORIZATION_DETAILS>", // authorization_details (optional) + "<SCOPE>", // scope (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.approve({ + grantId: '<GRANT_ID>', + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + scope: '<SCOPE>' // optional +}); + +console.log(result); +``` +{% /multicode %} + +**Reject** the grant if the user declines. Appwrite responds with the redirect URL carrying an error instead of a code. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.reject({ + grantId: '<GRANT_ID>' +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Reject result = await oauth2.reject( + grantId: '<GRANT_ID>', +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2Reject = try await oauth2.reject( + grant_id: "<GRANT_ID>" +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.reject( + grant_id = "<GRANT_ID>", +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.reject( + "<GRANT_ID>", // grant_id + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.reject({ + grantId: '<GRANT_ID>' +}); + +console.log(result); +``` +{% /multicode %} + +# Redirect URI matching {% #redirect-uris %} + +The `redirect_uri` on an authorization request must exactly match one of the client's registered redirect URIs, character for character. This is what stops an attacker from redirecting a code to a URL they control. + +There is one narrow exception. For **public** clients, an `http` loopback address (`localhost`, `127.0.0.1`, or `[::1]`) matches on everything except the port. Native and CLI apps bind an unpredictable local port at runtime and cannot register it ahead of time (RFC 8252). Confidential clients get no such exception; their redirect URIs must match exactly, port included. diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/partners/oauth-server/clients/+page.markdoc new file mode 100644 index 0000000000..d5e364907f --- /dev/null +++ b/src/routes/docs/partners/oauth-server/clients/+page.markdoc @@ -0,0 +1,1578 @@ +--- +layout: article +title: Clients +description: Register confidential and public OAuth clients against your Appwrite project's OAuth server and manage their secrets. +back: /docs/partners/oauth-server +--- + +A **client** is a third-party app that authenticates users through your project's OAuth server. Each client registers the redirect URIs it is allowed to return to, and, depending on its type, receives a client secret. Clients are managed from the **Auth > OAuth2 server > Apps** tab in the Console, or with a [Server SDK](/docs/sdks#server). + +{% only_dark %} +![OAuth2 clients list in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-apps-list.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 clients list in the Appwrite Console](/images/docs/oauth-server/oauth2-server-apps-list.avif) +{% /only_light %} + +# Confidential and public clients {% #client-types %} + +Every client is one of two types, and the difference comes down to a single question: can the app keep a secret? + +A **confidential** client runs code on a server the developer controls, so it can store a `client_secret` that users never see. It authenticates to the token endpoint with that secret, which lets your server prove which client is calling. A **public** client runs entirely on the user's device (a single-page app, a native mobile app, a CLI), where any embedded secret would ship to the user and could be read. Public clients receive no secret and rely on PKCE instead. + +{% only_dark %} +![Token lifetimes for confidential and public clients](/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.avif) +{% /only_dark %} +{% only_light %} +![Token lifetimes for confidential and public clients](/images/docs/oauth-server/oauth2-server-token-lifetimes.avif) +{% /only_light %} + +The type a client uses changes what it can do: + +| | Confidential | Public | +| --- | --- | --- | +| Client secret | Issued, sent on token requests | None issued | +| PKCE | Optional (configurable per project) | Always required | +| Token introspection | Allowed | Not allowed | +| Default access token lifetime | 8 hours | 1 hour | +| Default refresh token lifetime | 365 days | 30 days | + +Choose confidential whenever the app has a backend. It is the safer default: the token exchange is protected by a secret, tokens never touch the browser, and sessions can last longer. Reserve public for apps that genuinely have no server to hold a secret. + +# Register a client {% #register %} + +Create a client from the **Apps** tab, or with the `create` method of the `Apps` service. Registering a confidential client returns its secret once. Store it immediately, because the full value cannot be retrieved again. + +{% only_dark %} +![Create an OAuth2 client dialog](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) +{% /only_dark %} +{% only_light %} +![Create an OAuth2 client dialog](/images/docs/oauth-server/oauth2-server-create-app.avif) +{% /only_light %} + +{% info title="Required scope" %} +The API key used for this call needs the `apps.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.create({ + appId: '<APP_ID>', + name: '<NAME>', + redirectUris: [], + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + postLogoutRedirectUris: [], // optional + enabled: false, // optional + type: 'public', // optional + deviceFlow: false, // optional + teamId: '<TEAM_ID>' // optional +}); +``` +```server-deno +import { Client, Apps } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.create({ + appId: '<APP_ID>', + name: '<NAME>', + redirectUris: [], + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + postLogoutRedirectUris: [], // optional + enabled: false, // optional + type: 'public', // optional + deviceFlow: false, // optional + teamId: '<TEAM_ID>' // optional +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$apps = new Apps($client); + +$result = $apps->create( + appId: '<APP_ID>', + name: '<NAME>', + redirectUris: [], + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + postLogoutRedirectUris: [], // optional + enabled: false, // optional + type: 'public', // optional + deviceFlow: false, // optional + teamId: '<TEAM_ID>' // optional +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.models import App + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps(client) + +result: App = apps.create( + app_id = '<APP_ID>', + name = '<NAME>', + redirect_uris = [], + description = '<DESCRIPTION>', # optional + client_uri = 'https://example.com', # optional + logo_uri = 'https://example.com', # optional + privacy_policy_url = 'https://example.com', # optional + terms_url = 'https://example.com', # optional + contacts = [], # optional + tagline = '<TAGLINE>', # optional + tags = [], # optional + images = [], # optional + support_url = 'https://example.com', # optional + data_deletion_url = 'https://example.com', # optional + post_logout_redirect_uris = [], # optional + enabled = False, # optional + type = 'public', # optional + device_flow = False, # optional + team_id = '<TEAM_ID>' # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps.new(client) + +result = apps.create( + app_id: '<APP_ID>', + name: '<NAME>', + redirect_uris: [], + description: '<DESCRIPTION>', # optional + client_uri: 'https://example.com', # optional + logo_uri: 'https://example.com', # optional + privacy_policy_url: 'https://example.com', # optional + terms_url: 'https://example.com', # optional + contacts: [], # optional + tagline: '<TAGLINE>', # optional + tags: [], # optional + images: [], # optional + support_url: 'https://example.com', # optional + data_deletion_url: 'https://example.com', # optional + post_logout_redirect_uris: [], # optional + enabled: false, # optional + type: 'public', # optional + device_flow: false, # optional + team_id: '<TEAM_ID>' # optional +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Apps apps = Apps(client); + +App result = await apps.create( + appId: '<APP_ID>', + name: '<NAME>', + redirectUris: [], + description: '<DESCRIPTION>', // (optional) + clientUri: 'https://example.com', // (optional) + logoUri: 'https://example.com', // (optional) + privacyPolicyUrl: 'https://example.com', // (optional) + termsUrl: 'https://example.com', // (optional) + contacts: [], // (optional) + tagline: '<TAGLINE>', // (optional) + tags: [], // (optional) + images: [], // (optional) + supportUrl: 'https://example.com', // (optional) + dataDeletionUrl: 'https://example.com', // (optional) + postLogoutRedirectUris: [], // (optional) + enabled: false, // (optional) + type: 'public', // (optional) + deviceFlow: false, // (optional) + teamId: '<TEAM_ID>', // (optional) +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +App result = await apps.Create( + appId: "<APP_ID>", + name: "<NAME>", + redirectUris: new List<string>(), + description: "<DESCRIPTION>", // optional + clientUri: "https://example.com", // optional + logoUri: "https://example.com", // optional + privacyPolicyUrl: "https://example.com", // optional + termsUrl: "https://example.com", // optional + contacts: new List<string>(), // optional + tagline: "<TAGLINE>", // optional + tags: new List<string>(), // optional + images: new List<string>(), // optional + supportUrl: "https://example.com", // optional + dataDeletionUrl: "https://example.com", // optional + postLogoutRedirectUris: new List<string>(), // optional + enabled: false, // optional + type: "public", // optional + deviceFlow: false, // optional + teamId: "<TEAM_ID>" // optional +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val apps = Apps(client) + +val response = apps.create( + appId = "<APP_ID>", + name = "<NAME>", + redirectUris = listOf(), + description = "<DESCRIPTION>", // optional + clientUri = "https://example.com", // optional + logoUri = "https://example.com", // optional + privacyPolicyUrl = "https://example.com", // optional + termsUrl = "https://example.com", // optional + contacts = listOf(), // optional + tagline = "<TAGLINE>", // optional + tags = listOf(), // optional + images = listOf(), // optional + supportUrl = "https://example.com", // optional + dataDeletionUrl = "https://example.com", // optional + postLogoutRedirectUris = listOf(), // optional + enabled = false, // optional + type = "public", // optional + deviceFlow = false, // optional + teamId = "<TEAM_ID>" // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +apps.create( + "<APP_ID>", // appId + "<NAME>", // name + List.of(), // redirectUris + "<DESCRIPTION>", // description (optional) + "https://example.com", // clientUri (optional) + "https://example.com", // logoUri (optional) + "https://example.com", // privacyPolicyUrl (optional) + "https://example.com", // termsUrl (optional) + List.of(), // contacts (optional) + "<TAGLINE>", // tagline (optional) + List.of(), // tags (optional) + List.of(), // images (optional) + "https://example.com", // supportUrl (optional) + "https://example.com", // dataDeletionUrl (optional) + List.of(), // postLogoutRedirectUris (optional) + false, // enabled (optional) + "public", // type (optional) + false, // deviceFlow (optional) + "<TEAM_ID>", // teamId (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let apps = Apps(client) + +let app = try await apps.create( + appId: "<APP_ID>", + name: "<NAME>", + redirectUris: [], + description: "<DESCRIPTION>", // optional + clientUri: "https://example.com", // optional + logoUri: "https://example.com", // optional + privacyPolicyUrl: "https://example.com", // optional + termsUrl: "https://example.com", // optional + contacts: [], // optional + tagline: "<TAGLINE>", // optional + tags: [], // optional + images: [], // optional + supportUrl: "https://example.com", // optional + dataDeletionUrl: "https://example.com", // optional + postLogoutRedirectUris: [], // optional + enabled: false, // optional + type: "public", // optional + deviceFlow: false, // optional + teamId: "<TEAM_ID>" // optional +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/apps" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + appwrite.WithKey("<YOUR_API_KEY>") +) + +service := apps.New(client) + +response, error := service.Create( + "<APP_ID>", + "<NAME>", + []string{}, + apps.WithCreateDescription("<DESCRIPTION>"), + apps.WithCreateClientUri("https://example.com"), + apps.WithCreateLogoUri("https://example.com"), + apps.WithCreatePrivacyPolicyUrl("https://example.com"), + apps.WithCreateTermsUrl("https://example.com"), + apps.WithCreateContacts([]string{}), + apps.WithCreateTagline("<TAGLINE>"), + apps.WithCreateTags([]string{}), + apps.WithCreateImages([]string{}), + apps.WithCreateSupportUrl("https://example.com"), + apps.WithCreateDataDeletionUrl("https://example.com"), + apps.WithCreatePostLogoutRedirectUris([]string{}), + apps.WithCreateEnabled(false), + apps.WithCreateType("public"), + apps.WithCreateDeviceFlow(false), + apps.WithCreateTeamId("<TEAM_ID>"), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let apps = Apps::new(&client); + + let result = apps.create( + "<APP_ID>", + "<NAME>", + vec![], + Some("<DESCRIPTION>"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some(vec![]), // optional + Some("<TAGLINE>"), // optional + Some(vec![]), // optional + Some(vec![]), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some(vec![]), // optional + Some(false), // optional + Some("public"), // optional + Some(false), // optional + Some("<TEAM_ID>") // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +The `type` parameter accepts `confidential` (the default) or `public`. Set `deviceFlow` to `true` to let the client use the [device authorization flow](/docs/partners/oauth-server/device-flow). The branding fields (`logoUri`, `tagline`, `privacyPolicyUrl`, `termsUrl`) appear on the consent screen your users see. + +# Manage client secrets {% #secrets %} + +A confidential client authenticates with a secret. Generate a new secret with the `createSecret` method. The plaintext value is returned only in this response. + +{% only_dark %} +![OAuth2 client secret shown once on creation](/images/docs/oauth-server/dark/oauth2-server-secret-created.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 client secret shown once on creation](/images/docs/oauth-server/oauth2-server-secret-created.avif) +{% /only_light %} + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.createSecret({ + appId: '<APP_ID>' +}); +``` +```server-deno +import { Client, Apps } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.createSecret({ + appId: '<APP_ID>' +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$apps = new Apps($client); + +$result = $apps->createSecret( + appId: '<APP_ID>' +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.models import AppSecretPlaintext + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps(client) + +result: AppSecretPlaintext = apps.create_secret( + app_id = '<APP_ID>' +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps.new(client) + +result = apps.create_secret( + app_id: '<APP_ID>' +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Apps apps = Apps(client); + +AppSecretPlaintext result = await apps.createSecret( + appId: '<APP_ID>', +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +AppSecretPlaintext result = await apps.CreateSecret( + appId: "<APP_ID>" +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val apps = Apps(client) + +val response = apps.createSecret( + appId = "<APP_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +apps.createSecret( + "<APP_ID>", // appId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let apps = Apps(client) + +let appSecretPlaintext = try await apps.createSecret( + appId: "<APP_ID>" +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/apps" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + appwrite.WithKey("<YOUR_API_KEY>") +) + +service := apps.New(client) + +response, error := service.CreateSecret( + "<APP_ID>", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let apps = Apps::new(&client); + + let result = apps.create_secret( + "<APP_ID>" + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +A client can hold more than one secret at a time, which lets you rotate without downtime: create the new secret, deploy it, then delete the old one. Deleting a secret immediately breaks any client still using it, including token refreshes in flight. + +# List clients {% #list %} + +{% info title="Required scope" %} +The API key used for this call needs the `apps.read` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.list({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +import { Client, Apps } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.list({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$apps = new Apps($client); + +$result = $apps->list( + queries: [], // optional + total: false // optional +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.models import AppsList + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps(client) + +result: AppsList = apps.list( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps.new(client) + +result = apps.list( + queries: [], # optional + total: false # optional +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Apps apps = Apps(client); + +AppsList result = await apps.list( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +AppsList result = await apps.List( + queries: new List<string>(), // optional + total: false // optional +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val apps = Apps(client) + +val response = apps.list( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +apps.list( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let apps = Apps(client) + +let appsList = try await apps.list( + queries: [], // optional + total: false // optional +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/apps" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + appwrite.WithKey("<YOUR_API_KEY>") +) + +service := apps.New(client) + +response, error := service.List( + apps.WithListQueries([]string{}), + apps.WithListTotal(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let apps = Apps::new(&client); + + let result = apps.list( + Some(vec![]), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +# Update a client {% #update %} + +Change a client's redirect URIs, branding, or type with the `update` method. + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.update({ + appId: '<APP_ID>', + name: '<NAME>', + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + enabled: false, // optional + redirectUris: [], // optional + postLogoutRedirectUris: [], // optional + type: 'public', // optional + deviceFlow: false // optional +}); +``` +```server-deno +import { Client, Apps } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.update({ + appId: '<APP_ID>', + name: '<NAME>', + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + enabled: false, // optional + redirectUris: [], // optional + postLogoutRedirectUris: [], // optional + type: 'public', // optional + deviceFlow: false // optional +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$apps = new Apps($client); + +$result = $apps->update( + appId: '<APP_ID>', + name: '<NAME>', + description: '<DESCRIPTION>', // optional + clientUri: 'https://example.com', // optional + logoUri: 'https://example.com', // optional + privacyPolicyUrl: 'https://example.com', // optional + termsUrl: 'https://example.com', // optional + contacts: [], // optional + tagline: '<TAGLINE>', // optional + tags: [], // optional + images: [], // optional + supportUrl: 'https://example.com', // optional + dataDeletionUrl: 'https://example.com', // optional + enabled: false, // optional + redirectUris: [], // optional + postLogoutRedirectUris: [], // optional + type: 'public', // optional + deviceFlow: false // optional +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.models import App + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps(client) + +result: App = apps.update( + app_id = '<APP_ID>', + name = '<NAME>', + description = '<DESCRIPTION>', # optional + client_uri = 'https://example.com', # optional + logo_uri = 'https://example.com', # optional + privacy_policy_url = 'https://example.com', # optional + terms_url = 'https://example.com', # optional + contacts = [], # optional + tagline = '<TAGLINE>', # optional + tags = [], # optional + images = [], # optional + support_url = 'https://example.com', # optional + data_deletion_url = 'https://example.com', # optional + enabled = False, # optional + redirect_uris = [], # optional + post_logout_redirect_uris = [], # optional + type = 'public', # optional + device_flow = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps.new(client) + +result = apps.update( + app_id: '<APP_ID>', + name: '<NAME>', + description: '<DESCRIPTION>', # optional + client_uri: 'https://example.com', # optional + logo_uri: 'https://example.com', # optional + privacy_policy_url: 'https://example.com', # optional + terms_url: 'https://example.com', # optional + contacts: [], # optional + tagline: '<TAGLINE>', # optional + tags: [], # optional + images: [], # optional + support_url: 'https://example.com', # optional + data_deletion_url: 'https://example.com', # optional + enabled: false, # optional + redirect_uris: [], # optional + post_logout_redirect_uris: [], # optional + type: 'public', # optional + device_flow: false # optional +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Apps apps = Apps(client); + +App result = await apps.update( + appId: '<APP_ID>', + name: '<NAME>', + description: '<DESCRIPTION>', // (optional) + clientUri: 'https://example.com', // (optional) + logoUri: 'https://example.com', // (optional) + privacyPolicyUrl: 'https://example.com', // (optional) + termsUrl: 'https://example.com', // (optional) + contacts: [], // (optional) + tagline: '<TAGLINE>', // (optional) + tags: [], // (optional) + images: [], // (optional) + supportUrl: 'https://example.com', // (optional) + dataDeletionUrl: 'https://example.com', // (optional) + enabled: false, // (optional) + redirectUris: [], // (optional) + postLogoutRedirectUris: [], // (optional) + type: 'public', // (optional) + deviceFlow: false, // (optional) +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +App result = await apps.Update( + appId: "<APP_ID>", + name: "<NAME>", + description: "<DESCRIPTION>", // optional + clientUri: "https://example.com", // optional + logoUri: "https://example.com", // optional + privacyPolicyUrl: "https://example.com", // optional + termsUrl: "https://example.com", // optional + contacts: new List<string>(), // optional + tagline: "<TAGLINE>", // optional + tags: new List<string>(), // optional + images: new List<string>(), // optional + supportUrl: "https://example.com", // optional + dataDeletionUrl: "https://example.com", // optional + enabled: false, // optional + redirectUris: new List<string>(), // optional + postLogoutRedirectUris: new List<string>(), // optional + type: "public", // optional + deviceFlow: false // optional +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val apps = Apps(client) + +val response = apps.update( + appId = "<APP_ID>", + name = "<NAME>", + description = "<DESCRIPTION>", // optional + clientUri = "https://example.com", // optional + logoUri = "https://example.com", // optional + privacyPolicyUrl = "https://example.com", // optional + termsUrl = "https://example.com", // optional + contacts = listOf(), // optional + tagline = "<TAGLINE>", // optional + tags = listOf(), // optional + images = listOf(), // optional + supportUrl = "https://example.com", // optional + dataDeletionUrl = "https://example.com", // optional + enabled = false, // optional + redirectUris = listOf(), // optional + postLogoutRedirectUris = listOf(), // optional + type = "public", // optional + deviceFlow = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +apps.update( + "<APP_ID>", // appId + "<NAME>", // name + "<DESCRIPTION>", // description (optional) + "https://example.com", // clientUri (optional) + "https://example.com", // logoUri (optional) + "https://example.com", // privacyPolicyUrl (optional) + "https://example.com", // termsUrl (optional) + List.of(), // contacts (optional) + "<TAGLINE>", // tagline (optional) + List.of(), // tags (optional) + List.of(), // images (optional) + "https://example.com", // supportUrl (optional) + "https://example.com", // dataDeletionUrl (optional) + false, // enabled (optional) + List.of(), // redirectUris (optional) + List.of(), // postLogoutRedirectUris (optional) + "public", // type (optional) + false, // deviceFlow (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let apps = Apps(client) + +let app = try await apps.update( + appId: "<APP_ID>", + name: "<NAME>", + description: "<DESCRIPTION>", // optional + clientUri: "https://example.com", // optional + logoUri: "https://example.com", // optional + privacyPolicyUrl: "https://example.com", // optional + termsUrl: "https://example.com", // optional + contacts: [], // optional + tagline: "<TAGLINE>", // optional + tags: [], // optional + images: [], // optional + supportUrl: "https://example.com", // optional + dataDeletionUrl: "https://example.com", // optional + enabled: false, // optional + redirectUris: [], // optional + postLogoutRedirectUris: [], // optional + type: "public", // optional + deviceFlow: false // optional +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/apps" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + appwrite.WithKey("<YOUR_API_KEY>") +) + +service := apps.New(client) + +response, error := service.Update( + "<APP_ID>", + "<NAME>", + apps.WithUpdateDescription("<DESCRIPTION>"), + apps.WithUpdateClientUri("https://example.com"), + apps.WithUpdateLogoUri("https://example.com"), + apps.WithUpdatePrivacyPolicyUrl("https://example.com"), + apps.WithUpdateTermsUrl("https://example.com"), + apps.WithUpdateContacts([]string{}), + apps.WithUpdateTagline("<TAGLINE>"), + apps.WithUpdateTags([]string{}), + apps.WithUpdateImages([]string{}), + apps.WithUpdateSupportUrl("https://example.com"), + apps.WithUpdateDataDeletionUrl("https://example.com"), + apps.WithUpdateEnabled(false), + apps.WithUpdateRedirectUris([]string{}), + apps.WithUpdatePostLogoutRedirectUris([]string{}), + apps.WithUpdateType("public"), + apps.WithUpdateDeviceFlow(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let apps = Apps::new(&client); + + let result = apps.update( + "<APP_ID>", + "<NAME>", + Some("<DESCRIPTION>"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some(vec![]), // optional + Some("<TAGLINE>"), // optional + Some(vec![]), // optional + Some(vec![]), // optional + Some("https://example.com"), // optional + Some("https://example.com"), // optional + Some(false), // optional + Some(vec![]), // optional + Some(vec![]), // optional + Some("public"), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +# Delete a client {% #delete %} + +Deleting a client immediately invalidates every token issued to it. + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.delete({ + appId: '<APP_ID>' +}); +``` +```server-deno +import { Client, Apps } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const apps = new Apps(client); + +const result = await apps.delete({ + appId: '<APP_ID>' +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$apps = new Apps($client); + +$result = $apps->delete( + appId: '<APP_ID>' +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps(client) + +result = apps.delete( + app_id = '<APP_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +apps = Apps.new(client) + +result = apps.delete( + app_id: '<APP_ID>' +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Apps apps = Apps(client); + +await apps.delete( + appId: '<APP_ID>', +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +await apps.Delete( + appId: "<APP_ID>" +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val apps = Apps(client) + +val response = apps.delete( + appId = "<APP_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Apps apps = new Apps(client); + +apps.delete( + "<APP_ID>", // appId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let apps = Apps(client) + +let result = try await apps.delete( + appId: "<APP_ID>" +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/apps" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + appwrite.WithKey("<YOUR_API_KEY>") +) + +service := apps.New(client) + +response, error := service.Delete( + "<APP_ID>", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let apps = Apps::new(&client); + + let result = apps.delete( + "<APP_ID>" + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} diff --git a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc new file mode 100644 index 0000000000..53e233e687 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc @@ -0,0 +1,171 @@ +--- +layout: article +title: Device flow +description: Authorize TVs, CLIs, and other input-constrained devices against your Appwrite OAuth server with the device authorization grant. +back: /docs/partners/oauth-server +--- + +Some devices cannot show a browser or take typed input: a TV app, a CLI on a remote server, a hardware device. The **device authorization grant** (RFC 8628) lets these clients get tokens by having the user approve on a second device, like their phone or laptop. + +# How it works {% #how-it-works %} + +1. The device asks the OAuth server to start a device authorization. The server returns a **device code**, a short **user code**, and a **verification URL**. +2. The device shows the user code and verification URL to the user (for example, "Go to example.com/activate and enter WDJB-MJHT"). +3. The user opens the verification URL on another device, signs in, and approves. +4. Meanwhile the device polls the token endpoint. Once the user approves, the poll returns tokens. + +Device flow is available to a client only when both the project has a **verification URL** configured on the OAuth2 server settings and the client has **device flow** enabled. Device clients are public clients, so they authenticate with no secret. + +# Enable device flow on a client {% #enable %} + +Turn on **Device flow** when you create or update the client. In the Console, it is a toggle in the client dialog; with a Server SDK, set `deviceFlow: true` on the [client](/docs/partners/oauth-server/clients#register). + +# Start a device authorization {% #start %} + +The device requests a device authorization with its client ID and the scopes it wants. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.createDeviceAuthorization({ + clientId: '<CLIENT_ID>', // optional + scope: '<SCOPE>', // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '' // optional +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2DeviceAuthorization result = await oauth2.createDeviceAuthorization( + clientId: '<CLIENT_ID>', // optional + scope: '<SCOPE>', // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '', // optional +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2DeviceAuthorization = try await oauth2.createDeviceAuthorization( + client_id: "<CLIENT_ID>", // optional + scope: "<SCOPE>", // optional + authorization_details: "<AUTHORIZATION_DETAILS>", // optional + resource: "" // optional +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.createDeviceAuthorization( + client_id = "<CLIENT_ID>", // (optional) + scope = "<SCOPE>", // (optional) + authorization_details = "<AUTHORIZATION_DETAILS>", // (optional) + resource = "", // (optional) +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.createDeviceAuthorization( + "<CLIENT_ID>", // client_id (optional) + "<SCOPE>", // scope (optional) + "<AUTHORIZATION_DETAILS>", // authorization_details (optional) + "", // resource (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.createDeviceAuthorization({ + clientId: '<CLIENT_ID>', // optional + scope: '<SCOPE>', // optional + authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional + resource: '' // optional +}); + +console.log(result); +``` +{% /multicode %} + +The response contains the codes and where to send the user: + +```json +{ + "device_code": "8575375669b9031cb5371b0ee39985c2...", + "user_code": "WDJB-MJHT", + "verification_uri": "https://example.com/activate", + "verification_uri_complete": "https://example.com/activate?user_code=WDJB-MJHT", + "expires_in": 600, + "interval": 1 +} +``` + +Show the `user_code` and `verification_uri` to the user. The `verification_uri_complete` embeds the code so a phone can open it directly, often as a QR code. + +# Poll for tokens {% #poll %} + +While the user approves on their other device, the client polls the token endpoint with the device code grant, waiting `interval` seconds between attempts. + +```http +POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/x-www-form-urlencoded + +grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code=<DEVICE_CODE>&client_id=<CLIENT_ID> +``` + +Until the user approves, the endpoint returns `authorization_pending`; keep polling. Once they approve, it returns an access token, refresh token, and ID token, exactly like the [authorization code flow](/docs/partners/oauth-server/tokens). If the user declines or the codes expire, the poll returns a terminal error and the device restarts the flow. diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc new file mode 100644 index 0000000000..e91f61c9eb --- /dev/null +++ b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc @@ -0,0 +1,468 @@ +--- +layout: article +title: OAuth server quick start +description: Enable Appwrite's OAuth server, register a client, and run your first authorization code sign-in end to end. +back: /docs/partners/oauth-server +--- + +This guide turns a project into an OAuth provider and runs one sign-in through it. By the end you will have an enabled server, a registered client, and an access token issued by your project. + +# Enable the server {% #enable %} + +In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **Enable OAuth2 server**. + +{% only_dark %} +![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-settings.avif) +{% /only_dark %} +{% only_light %} +![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) +{% /only_light %} + +Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization. You can point it at a placeholder for now and change it later. The `openid`, `profile`, and `email` scopes are always included; add any custom scopes your clients will request. + +You can also enable and configure the server with a [Server SDK](/docs/sdks#server) using the `updateOAuth2Server` method. + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const project = new Project(client); + +const result = await project.updateOAuth2Server({ + enabled: false, + authorizationUrl: 'https://example.com', + scopes: [], // optional + authorizationDetailsTypes: [], // optional + accessTokenDuration: 60, // optional + refreshTokenDuration: 60, // optional + publicAccessTokenDuration: 60, // optional + publicRefreshTokenDuration: 60, // optional + confidentialPkce: false, // optional + verificationUrl: 'https://example.com', // optional + userCodeLength: 6, // optional + userCodeFormat: 'numeric', // optional + deviceCodeDuration: 60 // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const project = new Project(client); + +const result = await project.updateOAuth2Server({ + enabled: false, + authorizationUrl: 'https://example.com', + scopes: [], // optional + authorizationDetailsTypes: [], // optional + accessTokenDuration: 60, // optional + refreshTokenDuration: 60, // optional + publicAccessTokenDuration: 60, // optional + publicRefreshTokenDuration: 60, // optional + confidentialPkce: false, // optional + verificationUrl: 'https://example.com', // optional + userCodeLength: 6, // optional + userCodeFormat: 'numeric', // optional + deviceCodeDuration: 60 // optional +}); +``` +```server-php +```php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$project = new Project($client); + +$result = $project->updateOAuth2Server( + enabled: false, + authorizationUrl: 'https://example.com', + scopes: [], // optional + authorizationDetailsTypes: [], // optional + accessTokenDuration: 60, // optional + refreshTokenDuration: 60, // optional + publicAccessTokenDuration: 60, // optional + publicRefreshTokenDuration: 60, // optional + confidentialPkce: false, // optional + verificationUrl: 'https://example.com', // optional + userCodeLength: 6, // optional + userCodeFormat: 'numeric', // optional + deviceCodeDuration: 60 // optional +);``` +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +project = Project(client) + +result: ProjectModel = project.update_o_auth2_server( + enabled = False, + authorization_url = 'https://example.com', + scopes = [], # optional + authorization_details_types = [], # optional + access_token_duration = 60, # optional + refresh_token_duration = 60, # optional + public_access_token_duration = 60, # optional + public_refresh_token_duration = 60, # optional + confidential_pkce = False, # optional + verification_url = 'https://example.com', # optional + user_code_length = 6, # optional + user_code_format = 'numeric', # optional + device_code_duration = 60 # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +project = Project.new(client) + +result = project.update_o_auth2_server( + enabled: false, + authorization_url: 'https://example.com', + scopes: [], # optional + authorization_details_types: [], # optional + access_token_duration: 60, # optional + refresh_token_duration: 60, # optional + public_access_token_duration: 60, # optional + public_refresh_token_duration: 60, # optional + confidential_pkce: false, # optional + verification_url: 'https://example.com', # optional + user_code_length: 6, # optional + user_code_format: 'numeric', # optional + device_code_duration: 60 # optional +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Project project = Project(client); + +Project result = await project.updateOAuth2Server( + enabled: false, + authorizationUrl: 'https://example.com', + scopes: [], // (optional) + authorizationDetailsTypes: [], // (optional) + accessTokenDuration: 60, // (optional) + refreshTokenDuration: 60, // (optional) + publicAccessTokenDuration: 60, // (optional) + publicRefreshTokenDuration: 60, // (optional) + confidentialPkce: false, // (optional) + verificationUrl: 'https://example.com', // (optional) + userCodeLength: 6, // (optional) + userCodeFormat: 'numeric', // (optional) + deviceCodeDuration: 60, // (optional) +); +``` +```server-dotnet +```csharp +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Project project = new Project(client); + +Project result = await project.UpdateOAuth2Server( + enabled: false, + authorizationUrl: "https://example.com", + scopes: new List<string>(), // optional + authorizationDetailsTypes: new List<string>(), // optional + accessTokenDuration: 60, // optional + refreshTokenDuration: 60, // optional + publicAccessTokenDuration: 60, // optional + publicRefreshTokenDuration: 60, // optional + confidentialPkce: false, // optional + verificationUrl: "https://example.com", // optional + userCodeLength: 6, // optional + userCodeFormat: "numeric", // optional + deviceCodeDuration: 60 // optional +);``` +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val project = Project(client) + +val response = project.updateOAuth2Server( + enabled = false, + authorizationUrl = "https://example.com", + scopes = listOf(), // optional + authorizationDetailsTypes = listOf(), // optional + accessTokenDuration = 60, // optional + refreshTokenDuration = 60, // optional + publicAccessTokenDuration = 60, // optional + publicRefreshTokenDuration = 60, // optional + confidentialPkce = false, // optional + verificationUrl = "https://example.com", // optional + userCodeLength = 6, // optional + userCodeFormat = "numeric", // optional + deviceCodeDuration = 60 // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Project project = new Project(client); + +project.updateOAuth2Server( + false, // enabled + "https://example.com", // authorizationUrl + List.of(), // scopes (optional) + List.of(), // authorizationDetailsTypes (optional) + 60, // accessTokenDuration (optional) + 60, // refreshTokenDuration (optional) + 60, // publicAccessTokenDuration (optional) + 60, // publicRefreshTokenDuration (optional) + false, // confidentialPkce (optional) + "https://example.com", // verificationUrl (optional) + 6, // userCodeLength (optional) + "numeric", // userCodeFormat (optional) + 60, // deviceCodeDuration (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); + +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let project = Project(client) + +let project = try await project.updateOAuth2Server( + enabled: false, + authorizationUrl: "https://example.com", + scopes: [], // optional + authorizationDetailsTypes: [], // optional + accessTokenDuration: 60, // optional + refreshTokenDuration: 60, // optional + publicAccessTokenDuration: 60, // optional + publicRefreshTokenDuration: 60, // optional + confidentialPkce: false, // optional + verificationUrl: "https://example.com", // optional + userCodeLength: 6, // optional + userCodeFormat: "numeric", // optional + deviceCodeDuration: 60 // optional +) + +``` +```server-go +package main + +import ( + "fmt" + "github.com/repoowner/reponame/client" + "github.com/repoowner/reponame/project" +) + +client := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") + client.WithProject("<YOUR_PROJECT_ID>") + client.WithKey("<YOUR_API_KEY>") +) + +service := project.New(client) + +response, error := service.UpdateOAuth2Server( + false, + "https://example.com", + project.WithUpdateOAuth2ServerScopes([]string{}), + project.WithUpdateOAuth2ServerAuthorizationDetailsTypes([]string{}), + project.WithUpdateOAuth2ServerAccessTokenDuration(60), + project.WithUpdateOAuth2ServerRefreshTokenDuration(60), + project.WithUpdateOAuth2ServerPublicAccessTokenDuration(60), + project.WithUpdateOAuth2ServerPublicRefreshTokenDuration(60), + project.WithUpdateOAuth2ServerConfidentialPkce(false), + project.WithUpdateOAuth2ServerVerificationUrl("https://example.com"), + project.WithUpdateOAuth2ServerUserCodeLength(6), + project.WithUpdateOAuth2ServerUserCodeFormat("numeric"), + project.WithUpdateOAuth2ServerDeviceCodeDuration(60), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your secret API key + + let project = Project::new(&client); + + let result = project.update_o_auth2_server( + false, + "https://example.com", + Some(vec![]), // optional + Some(vec![]), // optional + Some(60), // optional + Some(60), // optional + Some(60), // optional + Some(60), // optional + Some(false), // optional + Some("https://example.com"), // optional + Some(6), // optional + Some("numeric"), // optional + Some(60) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +# Copy the discovery URL {% #discovery %} + +Once enabled, the server publishes an OpenID Connect discovery document. Integrators point their OAuth or OIDC library at this URL and it learns every endpoint automatically. + +{% only_dark %} +![The OIDC discovery URL in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-discovery.avif) +{% /only_dark %} +{% only_light %} +![The OIDC discovery URL in the Appwrite Console](/images/docs/oauth-server/oauth2-server-discovery.avif) +{% /only_light %} + +Open it in a browser to confirm the server is live. It returns JSON describing the authorization, token, userinfo, and JWKS endpoints. + +```http +GET /v1/oauth2/<PROJECT_ID>/.well-known/openid-configuration HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +``` + +# Register a client {% #register %} + +Open the **Apps** sub-tab and create a client. Give it a name, add at least one redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. + +{% only_dark %} +![Creating an OAuth2 client](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) +{% /only_dark %} +{% only_light %} +![Creating an OAuth2 client](/images/docs/oauth-server/oauth2-server-create-app.avif) +{% /only_light %} + +See [Clients](/docs/partners/oauth-server/clients) for the full set of options and the SDK equivalents. + +# Run the authorization code flow {% #flow %} + +With the server enabled and a client registered, you can run a sign-in. The flow has three steps: send the user to authorize, let them consent, then exchange the returned code for tokens. + +**1. Send the user to the authorization endpoint.** Include the client ID, a registered redirect URI, `response_type=code`, and the scopes you want. If the user has a session on your project, Appwrite redirects to your authorization URL with a `grant_id`. Otherwise it redirects there with the full request so your screen can sign the user in first. + +```http +GET /v1/oauth2/<PROJECT_ID>/authorize?client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI>&response_type=code&scope=openid%20profile%20email&state=<STATE> HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +``` + +**2. Approve the grant.** Your consent screen loads the grant, shows the user what the client is requesting, and approves it. Appwrite then redirects back to the client's redirect URI with an authorization `code`. Building this screen is covered in [Authorization](/docs/partners/oauth-server/authorization). + +**3. Exchange the code for tokens.** The client sends the code to the token endpoint. A confidential client authenticates with HTTP Basic auth using its client ID and secret. + +```http +POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> +Content-Type: application/x-www-form-urlencoded + +grant_type=authorization_code&code=<CODE>&redirect_uri=<REDIRECT_URI> +``` + +The response contains an access token, a refresh token, and an ID token: + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3Qi...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJ0eXAiOiJKV1Qi...", + "scope": "openid profile email", + "id_token": "eyJ0eXAiOiJKV1Qi..." +} +``` + +The client can now call the userinfo endpoint with the access token, or validate the ID token against the server's JWKS. See [Tokens](/docs/partners/oauth-server/tokens) for token structure, refresh, and revocation. + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/partners/oauth-server/authorization" title="Authorization" %} +Host your consent screen and drive the authorize, grant, and approve steps. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/clients" title="Clients" %} +Confidential vs public clients, secrets, and rotation. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +Token lifetimes, refresh with rotation, introspection, and revocation. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc new file mode 100644 index 0000000000..fc9474765d --- /dev/null +++ b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc @@ -0,0 +1,40 @@ +--- +layout: article +title: Scopes +description: The built-in OpenID Connect scopes and the custom scopes clients can request from your Appwrite OAuth server. +back: /docs/partners/oauth-server +--- + +Scopes are the permissions a client asks for during authorization. The user sees the requested scopes on the consent screen and approves or declines them. The access token the server issues carries the scopes that were granted. + +# Built-in scopes {% #built-in %} + +Four OpenID Connect scopes are always available and cannot be removed: + +| Scope | Grants access to | +| --- | --- | +| `openid` | The user's subject identifier. Required for OpenID Connect and to receive an ID token. | +| `profile` | The user's profile claims, such as their name. | +| `email` | The user's email address. | +| `phone` | The user's phone number. | + +These appear as locked entries in the **Scopes** field on the OAuth2 server settings. A client requests them by listing them in the `scope` parameter on the authorization request, space-separated, for example `openid profile email`. + +# Custom scopes {% #custom %} + +Beyond the built-in scopes, you define your own to represent permissions in your product, such as `read:projects` or `write:billing`. Add them in the **Scopes** field on the OAuth2 server settings, or with the `scopes` array on the `updateOAuth2Server` method. The `openid`, `profile`, `email`, and `phone` scopes are always merged in, so you only list the custom ones. + +{% only_dark %} +![Configuring scopes on the OAuth2 server](/images/docs/oauth-server/dark/oauth2-server-settings.avif) +{% /only_dark %} +{% only_light %} +![Configuring scopes on the OAuth2 server](/images/docs/oauth-server/oauth2-server-settings.avif) +{% /only_light %} + +A project can define up to 100 scopes, each up to 128 characters. A client can only request scopes you have defined; requesting an unknown scope fails the authorization request. + +Custom scopes are labels the OAuth server carries through the flow and stamps onto the access token. Enforcing what each scope allows is your resource server's job: read the `scope` claim from the access token (or from an [introspection](/docs/partners/oauth-server/tokens#introspect) response) and allow or deny the request accordingly. + +# Requesting scopes {% #requesting %} + +A client lists the scopes it wants in the `scope` parameter, space-separated, when it starts [authorization](/docs/partners/oauth-server/authorization#authorize). The user is shown exactly these scopes on your consent screen. Whatever they approve is what the issued access token carries in its `scope` claim, so a client should request only what it needs. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte new file mode 100644 index 0000000000..c1c9c5a8cb --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte @@ -0,0 +1,10 @@ +<script lang="ts"> + import { globToTutorial } from '$lib/utils/tutorials.js'; + import { setContext, untrack } from 'svelte'; + + let { data, children } = $props(); + const tutorials = untrack(() => globToTutorial(data)); + setContext('tutorials', tutorials); +</script> + +{@render children()} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts new file mode 100644 index 0000000000..c8884f46b8 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts @@ -0,0 +1,11 @@ +import type { LayoutLoad } from './$types'; + +export const load: LayoutLoad = ({ url }) => { + const tutorials = import.meta.glob('./**/*.markdoc', { + eager: true + }); + return { + tutorials, + pathname: url.pathname + }; +}; diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts new file mode 100644 index 0000000000..deeb96a18b --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(303, '/docs/partners/oauth-server/sign-in-with-your-product/step-1'); +} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc new file mode 100644 index 0000000000..56f071e9f6 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc @@ -0,0 +1,50 @@ +--- +layout: tutorial +title: Sign in with your product +description: Build an end-to-end "Sign in with your product" experience against your Appwrite OAuth server, from the consent screen to the token exchange. +step: 1 +difficulty: intermediate +readtime: 25 +framework: TanStack Start +category: OAuth server +back: /docs/partners/oauth-server +--- + +Once your project's [OAuth server](/docs/partners/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. + +# What you will build {% #what-you-will-build %} + +Two apps play the two sides of an OAuth integration: + +- **TaskFlow**, the provider. It owns the Appwrite project with the OAuth server enabled, and it hosts the **consent screen** where its users approve access. +- **Vantage**, the consumer. A separate product that adds a **Sign in with TaskFlow** button, exchanges the authorization code for tokens on its server, and reads the user's profile. + +TaskFlow is your product. Vantage stands in for any third party integrating with it. + +# The flow {% #the-flow %} + +When a Vantage user clicks **Sign in with TaskFlow**, this happens: + +1. Vantage redirects the user to TaskFlow's **authorize** endpoint. +2. The OAuth server sends the user to TaskFlow's **consent screen** to sign in and approve. +3. On approval, the server redirects back to Vantage with an **authorization code**. +4. Vantage's server **exchanges the code for tokens** using its client secret. +5. Vantage reads the user's profile from **userinfo** and signs them in. + +The authorization code flow is standard OAuth 2.1, so nothing here is Appwrite-specific on the wire. The two pieces you build are the consent screen TaskFlow hosts and the sign-in Vantage adds. + +# Why the token exchange runs on the server {% #server-side %} + +Vantage is a **confidential client**: it has a client secret. That secret authenticates the token exchange and must never reach the browser. TanStack Start makes this natural, the exchange runs inside a **server function**, so the secret stays on the server the whole time. + +# Prerequisites {% #prerequisites %} + +- An Appwrite Cloud project. +- [Node.js](https://nodejs.org/) 20 or newer and a package manager (this tutorial uses `pnpm`). +- Basic familiarity with React. + +{% info title="Get the finished code" %} +The complete apps from this tutorial are on GitHub at [appwrite-community/oauth-guide-taskflow](https://github.com/appwrite-community/oauth-guide-taskflow). Clone it to follow along or to compare against your own. +{% /info %} + +Continue to enable the OAuth server on your project. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc new file mode 100644 index 0000000000..97c5a91157 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc @@ -0,0 +1,55 @@ +--- +layout: tutorial +title: Enable the OAuth server +description: Turn on the OAuth server on your Appwrite project and register the client app. +step: 2 +--- + +Before writing any code, turn TaskFlow's project into an OAuth provider and register Vantage as a client. + +# Enable the server {% #enable %} + +{% only_dark %} +![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-settings.avif) +{% /only_dark %} +{% only_light %} +![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) +{% /only_light %} + +In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **Enable OAuth2 server**. + +Set the **Authorization URL** to where TaskFlow will host its consent screen. In this tutorial that is `http://localhost:4000/oauth/consent`. This is where the OAuth server sends users to sign in and approve. + +Leave the scopes at their defaults. `openid`, `profile`, and `email` are always included, which is all Vantage needs. See [Scopes](/docs/partners/oauth-server/scopes) to add your own later. + +# Register the client {% #register-client %} + +{% only_dark %} +![Creating the Vantage client in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) +{% /only_dark %} +{% only_light %} +![Creating the Vantage client in the Appwrite Console](/images/docs/oauth-server/oauth2-server-create-app.avif) +{% /only_light %} + +Open the **Apps** sub-tab and create a client for Vantage: + +- **Name**: `Vantage`. This appears on the consent screen. +- **Client type**: `Confidential`. Vantage has a server that can hold a secret. +- **Redirect URIs**: `http://localhost:4100/oauth/callback`. The OAuth server only returns codes to registered URIs. + +When you create the client, copy the **client secret**. It is shown once. You will also need the **client ID** from the clients list. + +{% only_dark %} +![The client secret shown once on creation](/images/docs/oauth-server/dark/oauth2-server-secret-created.avif) +{% /only_dark %} +{% only_light %} +![The client secret shown once on creation](/images/docs/oauth-server/oauth2-server-secret-created.avif) +{% /only_light %} + +{% info title="Keep these three values" %} +You now have everything the apps need to talk to the OAuth server: the **client ID**, the **client secret**, and your **project ID**. Keep them handy for the next step. +{% /info %} + +For the full set of client options and the SDK equivalents, see [Clients](/docs/partners/oauth-server/clients). + +Continue to scaffold the two apps. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc new file mode 100644 index 0000000000..6dc848baf8 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc @@ -0,0 +1,74 @@ +--- +layout: tutorial +title: Create the apps +description: Scaffold the two TanStack Start apps and wire up their environment. +step: 3 +--- + +Both sides are TanStack Start apps. Scaffold them in a single folder. + +# Scaffold the projects {% #scaffold %} + +Create the consumer (Vantage) and the provider (TaskFlow): + +```sh +npx @tanstack/cli create consumer --framework React --package-manager pnpm --no-examples +npx @tanstack/cli create provider --framework React --package-manager pnpm --no-examples +``` + +This gives you two full TanStack Start apps with server functions, file-based routing, and Tailwind CSS already set up. + +Give each a fixed port so the redirect URIs stay stable. In each app's `package.json`, set the dev script: + +```json +// consumer/package.json +"scripts": { "dev": "vite dev --port 4100" } +``` + +```json +// provider/package.json +"scripts": { "dev": "vite dev --port 4000" } +``` + +# Configure the environment {% #env %} + +The apps read the OAuth values from environment variables. Add a `.env` to each. + +Vantage needs the client credentials and its redirect URI: + +```sh +# consumer/.env +OAUTH_ISSUER=https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID> +OAUTH_CLIENT_ID=<CLIENT_ID> +OAUTH_CLIENT_SECRET=<CLIENT_SECRET> +OAUTH_REDIRECT_URI=http://localhost:4100/oauth/callback +SESSION_SECRET=<A_LONG_RANDOM_STRING> +``` + +TaskFlow needs its project details and an API key (used only to read a client's display name for the consent card): + +```sh +# provider/.env +APPWRITE_ENDPOINT=https://<REGION>.cloud.appwrite.io/v1 +APPWRITE_PROJECT=<PROJECT_ID> +OAUTH_ISSUER=https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID> +APPWRITE_API_KEY=<API_KEY_WITH_APPS_READ> +SESSION_SECRET=<A_LONG_RANDOM_STRING> +``` + +Vite only exposes variables prefixed with `VITE_` to the browser, and these are secrets, so load them into the server with `dotenv`. Install it in both apps: + +```sh +pnpm add dotenv +``` + +Then import it at the top of each `vite.config.ts`, before anything else, so `process.env` is populated when the server runs: + +```ts +// vite.config.ts +import 'dotenv/config' +import { defineConfig } from 'vite' +// ...rest of the config +``` + +With both apps scaffolded and configured, build Vantage's sign-in next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc new file mode 100644 index 0000000000..cbed8da94f --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc @@ -0,0 +1,86 @@ +--- +layout: tutorial +title: Add Sign in with your product +description: Build the consumer's sign-in button and the redirect that starts the OAuth flow. +step: 4 +--- + +Start with Vantage, the consumer. It needs a helper for the OAuth values, a landing page with a **Sign in with TaskFlow** button, and a route that kicks off the flow. + +# The OAuth helper {% #helper %} + +Create `consumer/src/lib/oauth.ts`. It reads the config and builds the authorization URL. Import `@tanstack/react-start/server-only` at the top: it makes the build fail if this module is ever pulled into the browser bundle, which keeps the client secret server-side. + +```ts +// consumer/src/lib/oauth.ts +import '@tanstack/react-start/server-only' +import { useSession } from '@tanstack/react-start/server' + +const issuer = process.env.OAUTH_ISSUER! +const clientId = process.env.OAUTH_CLIENT_ID! +const redirectUri = process.env.OAUTH_REDIRECT_URI! + +export const SCOPES = 'openid profile email' + +/** Build the URL that starts the authorization code flow. */ +export function authorizeUrl(state: string) { + const params = new URLSearchParams({ + client_id: clientId, + redirect_uri: redirectUri, + response_type: 'code', + scope: SCOPES, + state, + }) + return `${issuer}/authorize?${params.toString()}` +} + +type SessionData = { accessToken?: string; user?: unknown; state?: string } + +/** A signed, httpOnly cookie session for Vantage. */ +export function vantageSession() { + return useSession<SessionData>({ + name: 'vantage_session', + password: process.env.SESSION_SECRET!, + }) +} +``` + +# The start route {% #start-route %} + +Clicking the button navigates to `/oauth/start`. Its loader mints a random `state` value, stores it in the session to protect against CSRF, and redirects to the OAuth server. Create `consumer/src/routes/oauth.start.tsx`: + +```tsx +// consumer/src/routes/oauth.start.tsx +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' +import { authorizeUrl, vantageSession } from '../lib/oauth' + +const start = createServerFn().handler(async () => { + const state = crypto.randomUUID() + const session = await vantageSession() + await session.update({ state }) + throw redirect({ href: authorizeUrl(state) }) +}) + +export const Route = createFileRoute('/oauth/start')({ + loader: async () => { + await start() + }, + component: () => null, +}) +``` + +# The sign-in button {% #button %} + +![Vantage landing page with a Sign in with TaskFlow button](/images/docs/oauth-server/guide/vantage-landing.avif) + +On the landing page, the button is a link to `/oauth/start`: + +```tsx +// consumer/src/routes/index.tsx (excerpt) +<a href="/oauth/start" className="..."> + Sign in with TaskFlow +</a> +``` + +Start the app with `pnpm dev` and open `http://localhost:4100`. You have a landing page with a working sign-in button. Clicking it redirects to the OAuth server, which sends the user to TaskFlow's consent screen. That screen does not exist yet, so build it next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc new file mode 100644 index 0000000000..0cdffe9d85 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc @@ -0,0 +1,219 @@ +--- +layout: tutorial +title: Build the consent screen +description: Host the consent screen where your users sign in and approve access. +step: 5 +--- + +The consent screen is the page TaskFlow hosts at its authorization URL. When the OAuth server sends a user here, the screen signs them in, shows what the client is asking for, and records their decision. All of it runs on TaskFlow's server, carrying the user's Appwrite session. + +# Types for the consent card {% #types %} + +Create `provider/src/lib/consent-types.ts`. It holds only client-safe values, so the browser can import it: + +```ts +// provider/src/lib/consent-types.ts +export type Grant = { + $id: string + appId: string + scopes: string[] + redirectUri: string +} + +export type ClientApp = { $id: string; name: string; tagline?: string } + +// Human-readable labels for the scopes shown on the consent card. +export const SCOPE_LABELS: Record<string, string> = { + openid: 'Confirm your identity', + profile: 'See your name and profile details', + email: 'See your email address', + phone: 'See your phone number', +} +``` + +# The server helpers {% #helpers %} + +Create `provider/src/lib/oauth-server.ts`. Every function here calls the OAuth server on behalf of the signed-in user. Appwrite returns the user's session token in a cookie on login, and that token is passed as the `X-Appwrite-Session` header on later calls. + +```ts +// provider/src/lib/oauth-server.ts +import '@tanstack/react-start/server-only' +import { useSession } from '@tanstack/react-start/server' +import type { ClientApp, Grant } from './consent-types' + +const endpoint = process.env.APPWRITE_ENDPOINT! +const project = process.env.APPWRITE_PROJECT! +const issuer = process.env.OAUTH_ISSUER! +const apiKey = process.env.APPWRITE_API_KEY! + +const projectHeaders = { 'X-Appwrite-Project': project } + +/** Log a TaskFlow user in and return their Appwrite session token. */ +export async function login(email: string, password: string): Promise<string> { + const res = await fetch(`${endpoint}/account/sessions/email`, { + method: 'POST', + headers: { ...projectHeaders, 'Content-Type': 'application/json' }, + body: JSON.stringify({ email, password }), + redirect: 'manual', + }) + if (!res.ok) throw new Error('Invalid email or password') + const setCookie = res.headers.get('set-cookie') ?? '' + const match = setCookie.match(new RegExp(`a_session_${project}=([^;]+)`)) + if (!match) throw new Error('No session returned') + return match[1] +} + +type AuthorizeParams = Record<string, string> + +/** Create a grant for the signed-in user, or get a redirect if the OAuth + * server auto-approved a request the user already consented to. */ +export async function authorize( + params: AuthorizeParams, + sessionToken: string, +): Promise<{ grantId?: string; redirect?: string }> { + const qs = new URLSearchParams(params).toString() + const res = await fetch(`${issuer}/authorize?${qs}`, { + headers: { ...projectHeaders, 'X-Appwrite-Session': sessionToken }, + redirect: 'manual', + }) + const location = res.headers.get('location') ?? '' + const grantId = new URL(location, endpoint).searchParams.get('grant_id') + return grantId ? { grantId } : { redirect: location } +} + +export async function getGrant(grantId: string, sessionToken: string): Promise<Grant> { + const res = await fetch(`${issuer}/grants/${grantId}`, { + headers: { ...projectHeaders, 'X-Appwrite-Session': sessionToken }, + }) + if (!res.ok) throw new Error(`Grant not found: ${res.status}`) + return res.json() +} + +/** Read a client's display name for the consent card, using a server-side key. */ +export async function getClientApp(appId: string): Promise<ClientApp> { + const res = await fetch(`${endpoint}/apps/${appId}`, { + headers: { ...projectHeaders, 'X-Appwrite-Key': apiKey }, + }) + if (!res.ok) throw new Error(`App not found: ${res.status}`) + return res.json() +} + +/** Approve or reject a grant. The OAuth server returns the URL to send the + * user back to, carrying the authorization code (approve) or an error (reject). */ +async function decide( + action: 'approve' | 'reject', + grantId: string, + sessionToken: string, +): Promise<string> { + const res = await fetch(`${issuer}/${action}`, { + method: 'POST', + headers: { + ...projectHeaders, + 'X-Appwrite-Session': sessionToken, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ grant_id: grantId }), + redirect: 'manual', + }) + const location = res.headers.get('location') + if (!location) throw new Error(`${action} failed: ${res.status}`) + return location +} + +export const approve = (grantId: string, token: string) => decide('approve', grantId, token) +export const reject = (grantId: string, token: string) => decide('reject', grantId, token) + +type SessionData = { token?: string; email?: string; params?: AuthorizeParams } + +/** TaskFlow's own signed session cookie, holding the Appwrite session token. */ +export function taskflowSession() { + return useSession<SessionData>({ + name: 'taskflow_session', + password: process.env.SESSION_SECRET!, + }) +} +``` + +# The consent route {% #route %} + +Create `provider/src/routes/oauth.consent.tsx`. The loader decides what to show: the login form if the user is not signed in, or the consent card once they are. It captures the incoming authorize parameters so it can resume the request after login. + +```tsx +// provider/src/routes/oauth.consent.tsx (loader and server functions) +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' +import { getRequestUrl } from '@tanstack/react-start/server' +import { + approve, authorize, getClientApp, getGrant, login, reject, taskflowSession, +} from '../lib/oauth-server' +import type { ClientApp, Grant } from '../lib/consent-types' + +const AUTHORIZE_KEYS = ['client_id', 'redirect_uri', 'response_type', 'scope', 'state', 'nonce'] + +type ConsentView = + | { view: 'login' } + | { view: 'consent'; grant: Grant; app: ClientApp; email: string } + +const loadConsent = createServerFn().handler(async (): Promise<ConsentView> => { + const url = getRequestUrl() + const session = await taskflowSession() + + // Capture the authorize request so we can resume it after login. + const incoming: Record<string, string> = {} + for (const key of AUTHORIZE_KEYS) { + const value = url.searchParams.get(key) + if (value) incoming[key] = value + } + + if (!session.data.token) { + if (Object.keys(incoming).length) await session.update({ params: incoming }) + return { view: 'login' } + } + + let grantId = url.searchParams.get('grant_id') + if (!grantId) { + const params = { ...session.data.params, ...incoming } + const result = await authorize(params, session.data.token) + if (result.redirect) throw redirect({ href: result.redirect }) + grantId = result.grantId! + } + + const grant = await getGrant(grantId, session.data.token) + const app = await getClientApp(grant.appId) + return { view: 'consent', grant, app, email: session.data.email ?? '' } +}) + +const submitLogin = createServerFn({ method: 'POST' }) + .validator((d: { email: string; password: string }) => d) + .handler(async ({ data }) => { + const token = await login(data.email, data.password) + const session = await taskflowSession() + await session.update({ token, email: data.email }) + }) + +const decideGrant = createServerFn({ method: 'POST' }) + .validator((d: { grantId: string; action: 'approve' | 'reject' }) => d) + .handler(async ({ data }) => { + const session = await taskflowSession() + const act = data.action === 'approve' ? approve : reject + const location = await act(data.grantId, session.data.token!) + throw redirect({ href: location }) + }) + +export const Route = createFileRoute('/oauth/consent')({ + component: Consent, + loader: async () => loadConsent(), +}) +``` + +The component renders one of two cards from the loader data. The login form submits `submitLogin` and then calls `router.invalidate()` so the loader re-runs and moves to the consent view. The consent card reads `grant.scopes` and maps them through `SCOPE_LABELS`, and calls `decideGrant` on **Authorize** or **Cancel**. Only the styling is left out here. + +# Sign in and approve {% #sign-in %} + +![TaskFlow consent screen sign-in form](/images/docs/oauth-server/guide/taskflow-login.avif) + +When the OAuth server sends a user to the consent screen, they first sign in with their TaskFlow account. + +![TaskFlow consent screen showing the requested permissions](/images/docs/oauth-server/guide/taskflow-consent.avif) + +The consent card then shows the client's name and exactly what it is asking for. On **Authorize**, the OAuth server redirects back to Vantage with an authorization code. Vantage handles it next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc new file mode 100644 index 0000000000..874fbedfdf --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc @@ -0,0 +1,130 @@ +--- +layout: tutorial +title: Exchange the code for tokens +description: Handle the callback, exchange the authorization code for tokens on the server, and sign the user in. +step: 6 +--- + +The OAuth server redirects back to Vantage's redirect URI with a `code` and the `state`. Vantage exchanges that code for tokens on its server, reads the user's profile, and signs them in. + +# Add the token functions {% #token-functions %} + +Extend `consumer/src/lib/oauth.ts` with the exchange and userinfo calls. The exchange authenticates with the client secret using HTTP Basic auth, which is why it must run on the server. + +```ts +// consumer/src/lib/oauth.ts (additions) +const clientSecret = process.env.OAUTH_CLIENT_SECRET! + +export type Tokens = { + access_token: string + refresh_token: string + id_token: string + expires_in: number + scope: string +} + +/** Exchange an authorization code for tokens. */ +export async function exchangeCode(code: string): Promise<Tokens> { + const basic = Buffer.from(`${clientId}:${clientSecret}`).toString('base64') + const res = await fetch(`${issuer}/token`, { + method: 'POST', + headers: { + Authorization: `Basic ${basic}`, + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: new URLSearchParams({ + grant_type: 'authorization_code', + code, + redirect_uri: redirectUri, + }), + }) + if (!res.ok) throw new Error(`Token exchange failed: ${res.status}`) + return res.json() +} + +export type UserInfo = { + sub: string + name?: string + email?: string + email_verified?: boolean +} + +/** Read the signed-in user's profile from the userinfo endpoint. */ +export async function fetchUserInfo(accessToken: string): Promise<UserInfo> { + const res = await fetch(`${issuer}/userinfo`, { + headers: { Authorization: `Bearer ${accessToken}` }, + }) + if (!res.ok) throw new Error(`userinfo failed: ${res.status}`) + return res.json() +} +``` + +# Handle the callback {% #callback %} + +Create `consumer/src/routes/oauth.callback.tsx`. Its loader runs on the server: it checks the `state` against the session, exchanges the code, reads the profile, stores it in the session, and sends the user to the dashboard. + +```tsx +// consumer/src/routes/oauth.callback.tsx +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' +import { getRequestUrl } from '@tanstack/react-start/server' +import { exchangeCode, fetchUserInfo, vantageSession } from '../lib/oauth' + +const handleCallback = createServerFn().handler(async () => { + const url = getRequestUrl() + const code = url.searchParams.get('code') + const state = url.searchParams.get('state') + const session = await vantageSession() + + // The state must match the value we set in /oauth/start. + if (!code || !state || state !== session.data.state) { + throw redirect({ to: '/', search: { error: 'invalid_state' } }) + } + + const tokens = await exchangeCode(code) + const user = await fetchUserInfo(tokens.access_token) + + await session.update({ + accessToken: tokens.access_token, + user, + state: undefined, + }) + + throw redirect({ to: '/dashboard' }) +}) + +export const Route = createFileRoute('/oauth/callback')({ + loader: async () => { + await handleCallback() + }, + component: () => null, +}) +``` + +The client secret and the tokens live only inside these server functions. The browser only ever holds Vantage's own signed session cookie. + +# Show the signed-in user {% #dashboard %} + +![Vantage dashboard showing the signed-in user's TaskFlow identity](/images/docs/oauth-server/guide/vantage-dashboard.avif) + +The dashboard reads the user from the session and renders it. Create `consumer/src/routes/dashboard.tsx`: + +```tsx +// consumer/src/routes/dashboard.tsx (loader) +import { createFileRoute, redirect } from '@tanstack/react-router' +import { createServerFn } from '@tanstack/react-start' +import { vantageSession, type UserInfo } from '../lib/oauth' + +const loadUser = createServerFn().handler(async (): Promise<UserInfo> => { + const session = await vantageSession() + if (!session.data.user) throw redirect({ to: '/' }) + return session.data.user as UserInfo +}) + +export const Route = createFileRoute('/dashboard')({ + component: Dashboard, + loader: async () => ({ user: await loadUser() }), +}) +``` + +The component renders `user.name`, `user.email`, and `user.sub` from the loader data. That profile came from TaskFlow, through the authorization code flow you built. Run the whole thing next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc new file mode 100644 index 0000000000..4ffa7df73e --- /dev/null +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc @@ -0,0 +1,57 @@ +--- +layout: tutorial +title: Run the flow +description: Start both apps and sign in with your product end to end. +step: 7 +--- + +Everything is in place. Run both apps and sign in. + +# Start both apps {% #start %} + +In two terminals: + +```sh +# in consumer/ +pnpm dev +``` + +```sh +# in provider/ +pnpm dev +``` + +Vantage is at `http://localhost:4100` and TaskFlow's consent screen at `http://localhost:4000`. + +# Sign in {% #sign-in %} + +Open `http://localhost:4100` and click **Sign in with TaskFlow**. You will: + +1. Land on TaskFlow's consent screen and sign in with a TaskFlow user. +2. See exactly what Vantage is requesting, and approve it. +3. Return to Vantage, signed in, with your TaskFlow name and email on the dashboard. + +That round trip is a complete OAuth 2.1 authorization code flow against your project's OAuth server. + +# What each side did {% #recap %} + +- **TaskFlow** enabled the OAuth server, registered Vantage as a confidential client, and hosted a consent screen that authenticates its users and approves grants. +- **Vantage** redirected to the authorize endpoint, exchanged the returned code for tokens on its server, and read the user's profile from userinfo. The client secret never left its server. + +Because the flow is standards-based, a real integrator does not have to use Appwrite or TanStack Start. Any OAuth or OpenID Connect client library pointed at your project's [discovery URL](/docs/partners/oauth-server/quick-start#discovery) works the same way. + +The full source for both apps is on GitHub at [appwrite-community/oauth-guide-taskflow](https://github.com/appwrite-community/oauth-guide-taskflow). + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +Refresh access tokens, and revoke them on sign-out. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +Add custom scopes to represent permissions in your product. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +Support TVs, CLIs, and other input-constrained devices. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc new file mode 100644 index 0000000000..91a8901fce --- /dev/null +++ b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc @@ -0,0 +1,348 @@ +--- +layout: article +title: Tokens +description: Access, refresh, and ID tokens issued by Appwrite's OAuth server, their lifetimes, and how to refresh, introspect, and revoke them. +back: /docs/partners/oauth-server +--- + +When a client redeems an authorization code, the OAuth server issues three tokens: an access token, a refresh token, and an ID token. This page covers what each one is, how long it lives, and how to refresh, validate, and revoke them. + +# The three tokens {% #tokens %} + +- **Access token.** A JWT the client sends to call APIs on the user's behalf. It is signed with your project's key (`RS256`) and carries the granted scopes. Present it as a `Bearer` token to the userinfo endpoint or your own resource server. +- **Refresh token.** An opaque token the client exchanges for a new access token when the old one expires, without sending the user through authorization again. +- **ID token.** A JWT from the OpenID Connect layer that identifies the user (subject, and any profile claims the granted scopes allow). Clients validate it against the server's published keys. + +# Exchange a code for tokens {% #exchange %} + +The client exchanges its authorization code at the token endpoint with `grantType: 'authorization_code'`. A confidential client sends its `clientSecret`; a public client sends its `codeVerifier` instead. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.createToken({ + grantType: '<GRANT_TYPE>', + code: '<CODE>', // optional + refreshToken: '<REFRESH_TOKEN>', // optional + deviceCode: '<DEVICE_CODE>', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>', // optional + codeVerifier: '<CODE_VERIFIER>', // optional + redirectUri: 'https://example.com', // optional + resource: '' // optional +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Token result = await oauth2.createToken( + grantType: '<GRANT_TYPE>', + code: '<CODE>', // optional + refreshToken: '<REFRESH_TOKEN>', // optional + deviceCode: '<DEVICE_CODE>', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>', // optional + codeVerifier: '<CODE_VERIFIER>', // optional + redirectUri: 'https://example.com', // optional + resource: '', // optional +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let oauth2Token = try await oauth2.createToken( + grant_type: "<GRANT_TYPE>", + code: "<CODE>", // optional + refresh_token: "<REFRESH_TOKEN>", // optional + device_code: "<DEVICE_CODE>", // optional + client_id: "<CLIENT_ID>", // optional + client_secret: "<CLIENT_SECRET>", // optional + code_verifier: "<CODE_VERIFIER>", // optional + redirect_uri: "https://example.com", // optional + resource: "" // optional +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.createToken( + grant_type = "<GRANT_TYPE>", + code = "<CODE>", // (optional) + refresh_token = "<REFRESH_TOKEN>", // (optional) + device_code = "<DEVICE_CODE>", // (optional) + client_id = "<CLIENT_ID>", // (optional) + client_secret = "<CLIENT_SECRET>", // (optional) + code_verifier = "<CODE_VERIFIER>", // (optional) + redirect_uri = "https://example.com", // (optional) + resource = "", // (optional) +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.createToken( + "<GRANT_TYPE>", // grant_type + "<CODE>", // code (optional) + "<REFRESH_TOKEN>", // refresh_token (optional) + "<DEVICE_CODE>", // device_code (optional) + "<CLIENT_ID>", // client_id (optional) + "<CLIENT_SECRET>", // client_secret (optional) + "<CODE_VERIFIER>", // code_verifier (optional) + "https://example.com", // redirect_uri (optional) + "", // resource (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.createToken({ + grantType: '<GRANT_TYPE>', + code: '<CODE>', // optional + refreshToken: '<REFRESH_TOKEN>', // optional + deviceCode: '<DEVICE_CODE>', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>', // optional + codeVerifier: '<CODE_VERIFIER>', // optional + redirectUri: 'https://example.com', // optional + resource: '' // optional +}); + +console.log(result); +``` +{% /multicode %} + +The response contains the access token, refresh token, ID token, granted scope, and the access token's lifetime in seconds. + +# Token lifetimes {% #lifetimes %} + +Lifetimes default by client type and are configurable per project on the **OAuth2 server** settings. + +| | Confidential | Public | +| --- | --- | --- | +| Access token | 8 hours | 1 hour | +| Refresh token | 365 days | 30 days | + +Public clients get shorter lifetimes because their tokens live on user devices, where the risk of theft is higher, so the window of exposure is kept small. + +# Refresh with rotation {% #refresh %} + +To refresh, the client calls the token endpoint with `grantType: 'refresh_token'` and its current refresh token. The response includes a **new** access token and a **new** refresh token. + +Refresh tokens rotate: each refresh invalidates the token that was used. If an old refresh token is presented again, the server treats it as a compromise and revokes the entire token family, forcing the user to reauthorize. This means a client must always store the newest refresh token it received. + +To refresh, reuse the `createToken` call with the refresh grant: + +```http +POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> +Content-Type: application/x-www-form-urlencoded + +grant_type=refresh_token&refresh_token=<REFRESH_TOKEN> +``` + +# Validate tokens {% #validate %} + +Access and ID tokens are `RS256` JWTs signed with your project's key. A client validates them offline by fetching the server's public keys once from the JWKS endpoint and checking the signature, issuer, and expiry. + +```http +GET /v1/oauth2/<PROJECT_ID>/.well-known/jwks.json HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +``` + +To read the user's profile from an access token, call the userinfo endpoint: + +```http +GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Bearer <ACCESS_TOKEN> +``` + +# Introspect a token {% #introspect %} + +A resource server can ask the OAuth server whether a token is still valid with the introspection endpoint. Introspection requires client authentication, so only confidential clients (or an API key with the `oauth2.read` scope) can call it. A public client, having no secret, cannot introspect. + +```http +POST /v1/oauth2/<PROJECT_ID>/introspect HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> +Content-Type: application/x-www-form-urlencoded + +token=<ACCESS_TOKEN> +``` + +A valid token returns `"active": true` with its scope, subject, and expiry. A revoked or expired token returns `"active": false`. + +# Revoke a token {% #revoke %} + +A client revokes a token it no longer needs with the revocation endpoint. Confidential clients authenticate with their secret; public clients revoke without one. + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.revoke({ + token: '<TOKEN>', + tokenTypeHint: 'access_token', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>' // optional +}); + +console.log(result); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + + result = await oauth2.revoke( + token: '<TOKEN>', + tokenTypeHint: 'access_token', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>', // optional +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let result = try await oauth2.revoke( + token: "<TOKEN>", + token_type_hint: "access_token", // optional + client_id: "<CLIENT_ID>", // optional + client_secret: "<CLIENT_SECRET>" // optional +) + +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.revoke( + token = "<TOKEN>", + token_type_hint = "access_token", // (optional) + client_id = "<CLIENT_ID>", // (optional) + client_secret = "<CLIENT_SECRET>", // (optional) +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.revoke( + "<TOKEN>", // token + "access_token", // token_type_hint (optional) + "<CLIENT_ID>", // client_id (optional) + "<CLIENT_SECRET>", // client_secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); + +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.revoke({ + token: '<TOKEN>', + tokenTypeHint: 'access_token', // optional + clientId: '<CLIENT_ID>', // optional + clientSecret: '<CLIENT_SECRET>' // optional +}); + +console.log(result); +``` +{% /multicode %} diff --git a/static/images/docs/oauth-server/dark/oauth2-server-apps-empty.avif b/static/images/docs/oauth-server/dark/oauth2-server-apps-empty.avif new file mode 100644 index 0000000000000000000000000000000000000000..ccfb9ddc613453ea004aebafdb86a706e450e08d GIT binary patch literal 25267 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-apps-list.avif b/static/images/docs/oauth-server/dark/oauth2-server-apps-list.avif new file mode 100644 index 0000000000000000000000000000000000000000..44aaed98789a69d2976a5c24941ad3bdc6ef1111 GIT binary patch literal 26947 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 H2QA!yHIw1j literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-create-app.avif b/static/images/docs/oauth-server/dark/oauth2-server-create-app.avif new file mode 100644 index 0000000000000000000000000000000000000000..a38ed59cfced29c781c521ab2c33dd606be79c58 GIT binary patch literal 24357 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 z≫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 SPGnXXpMm0ZMSUv@lWj`Rfe9)A literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-discovery.avif b/static/images/docs/oauth-server/dark/oauth2-server-discovery.avif new file mode 100644 index 0000000000000000000000000000000000000000..1ac2b6017623d0d47218545a33302da4c5afaf49 GIT binary patch literal 38896 zcmXu}Q?M{R(=?1O+qP}nwr#I#*|u%lwr$(CZTr8UckgdfneLwIs?0$u2T1?`0C3El zJ?sr#EzAJ^3mXeF#{Y2}3&a2ERU1=h!~fO)3&MXU){g%_3IJelVeI_>`2RyVdkbfq z{}X`!Wg-h}JLCT;5di?e|Hl8~^Z$<ksjvSjVhan~|6BC`s;K`7Q=tF3{_`5TGBEy+ zs#(}O+W&_f7WT$={~?T_E2D4#>HpbKES&63|7QXK0R3+QE&P`d>@D0a{#OBpfPnZ9 z&@Ak2{$Kz9H31v|1PlO>`fFoi=!^sa1;uG;{!=grgau2$bX)@@E=mJ{AONBOuz>vm z!&<9Y((n8#JhCfVLf%NkgZi9(9;%^GB=U;WTPr_N$TsUV?v|aMzq&c>VifMu)iQ!4 zbq$PJPgV0ZiYL^y>k!>7JG=0q0jDsfx^P~-jd_iej<Ye6lFVb?WFHvwT(v<PyHgJv zT869@eBjbzbQ^Dr5!mH<p6rDy9r*R2z$$qI%M1TZ4Dg1Z-vJ|43p%t81Z0MuIWJNn zTl{A)KK$ZzoSV4{Lp3~}<~16Co$XOj^5|_;yifaLsKGu#2sk!<6`gY@+}cQjAlP4g zw9`?DmWh}%4>fS_!JxWpImE&+M<xxL?|w4`AYjTHnAZe+p&}9}skgH(dOP~;IF^1? zFwNn!foX_R_{pc%{hp($ZQRiU{0<_8LbD!4KuKb0yc6-EvI|1Rl(~}z*slxwAoerf zq=Pq&|8HE%VE+oK5SB%Mqer$w@K%Q3^iPe56Orm?Ge1VwRn@=&43vmr)7sm{Sh)l^ z+$G$R1G)r=W0{TPxai*Lia4G@4#$dd+qpB`1ysP8lh5hu^Jiem=tj#P^sEWWwjX(U z5_0X+O{{=F_~|(Szew7>+2-CK%Ph7V!(>`)pVPBxWiSE3r@3ddR%bM3=<EG)Y!dS0 zofmTqVY$rZP&kF2p5}-kL}MHu+ZTePx{~$?XHKzTOdIvDTvp@d!OYge?ab~<4Y6Ke z(MKaG$uf_A2uA^l0sAEug^u=|F%(>9+T-IQE>~>moN~mj&%9ck<2IU8iVkHO+~qK_ z32P4g-?Gj|9z9W0LIYo;N`|a86@z@&ft@u^oI3E=nl=klCTc`7<Vmb?OUaMz9W`pK z!L~=*J%kM_!-t%LUW^rV+*z@&a_L^q(H(z{nTG{nEl%m%BR#xO<cA7*(}%KXKu=-0 z`qjjUizo8>GZ796<{f^6d}JZj5&>za11Q9esxayJ@_XUNThdOL7w^^<n&nBuD)+X) zo%Qz#Th^=UB;IAXOiCBY+FSTQ#OpP=3v4$FV3fGkU_RPi5cP!%rKD)zy6ym*!Lz|D zW!St3z{scyx3cn(ztTG#YC?I^`h0b%)EB&QKK(cvxigGjvjVHng%2DE#U!3?c%9RQ zK~`P<n{Ppj#B=Bretf+_Dg{xNH)tvy9fYU=@qVb^gZhc|63XO^s4A$YJ$l8AFw4Zt z8etwEiv%lroaI&VmFWzf4`zYgeBWT(0KPL~{Q>Hl2So%kg~le)^SPCwc{kqVpQd*` zY3755$;lr&-IV_d*s#=?9(8ia<(RTKxI7t}(5ae?$WQV7+()?CtcYqz;*+tyQ87>* zU9Zjp1u3sDBwuBN9&FRuv;Z5&^o73x=TZ?H&;IUE(C3z=QQYow9Kh(APW&*6Z}w!( zu+cRmAt~*)L(h_w?0BiD*n3J7*Yc%h<tLF_oGQSH8MgD<H^K4a6eqQ?IE3()pru+k z1Dh!FB>}xb!s?_Jm&jUFwp{R7;BCVq<Z%Z%yThFY8O^%yuuPXP1r~`WGR~jcc_gK4 zPbL>|%pV*RRQDFR!44c*5J4?0&-~zx7tsk+_P>TqIt?q}phB^fe;0O%X4F1xaeM5e zJ#M0mVAe{598I`HO~BwHBxWa5#;(%<aCDj^WOVS3(3@P732w*5i^*Wsbjq>M3*Ty7 z9-m8jQhl2?baN{xLP&ZE86gkDNq{`b^q$$eksc~7;F=ps--P-pkNqaalx6re<?peF zwgDcXqhBZ}JG}`ImDuo-@2+nD`t8bn$#`yP8sp}U5N8T^L3zX<9|F2c$22j9T4=4D zj$J_~b>ppW7WF^~A_<vz$+oQWoVE6&o125Fag|}Ozb#3~&`Rk#^_A^<%n3GfLbavq zFgl+dU-Qw1W}ViaC|-Acg?`spv;(Nr-2~`JE?v1YJ3opK3_xEiyTaDMkc>{(?=&l1 z9~kPSWbMh7`|1G84`qt|x3(_X|NQY~a&llEHbbaAl)i&tik&Wh2TpO`-(1ZB%mX!G z;_7Kx)L)mA?!jFAwscYw>)B%D)T{x>SJ(y*s(y45!7ekH2tBc?laW?mvBHJut~G%s zi}`ISJ<9L{z6S==KPA$Rvn25LWRcokp=Kg5Jrm|>{a1av0nSuc92LMc3(MJ9oz!*W z@n=VCB@Q^?nTxzUIN9~`TECkIu2(8oYy2m_1cq!{5ZC;-mr=HTud>_Z7bpB1v?L(b zQn;?;xW4@kQ{NL>kS?L{<GPh8h;(Qz(m+f@UePEoAy!w6xxqnU6`^8{|2y~-C|J<v z`1csvLnVu8JbPjdhz#TvR3^+?F+O(i?k7SDflP@I?XwG?L+ex#mtubz?^PToUs96W zuTF(bUOVXO2(s(-qZl}8&HG0V#jO)aaVQkDk?0|cJgjXG8#l9OmB-{oMmA83!?@Rh zEEj8J>FD{*E<r|RkdHw9v;#WwVXS6@?#qa(=7->Xpp<op>~rbHN|cPZE`zV}*@jRi zkOc9+<$EH|^isZWz_}!U0iomE?VhV;hv#=E_wkj_r?KVO5{fy0;;Oba{d?>kc((Fp zy-h73wh#9G2YnBlk?@A|?`^IX41FL~400r0hSvJH44O=shn`oE`v)7{B$vJ;_2&r1 zr+zqF3%q+q^$b=Ej_93^sS6Fm?GwG<j1q>V3zGKaw;^UmX3vWwNW)D>zi%~!b-Qmk zl=BWD=eYiEpmIE~@bgf_yg^6sIE9ZuHxgg{9DH@BLJ5@Tzd1&@Z;JsWat@K$J8%b8 z@+xPFV6|@2D7>G6xA@dNYwuPMFVDFyN_0U((QOo2da7o$<UU-dz_{pq@ksOgFaOQ| z)=&HIMS{WQB(AKwrONx+^}4P*(p+RNCVOwp<?>3W4^=_0@dzNC9>3|ykGChCgZWsl zn^;I9y7i--Fw2&`JG1RMVxYIKY!M_XcVy+DJ3(@rX!yOQ%Pa!8tQkIgD|s34<OcFq zIB0rELTT$=1m7vTWT6Bz>D2g}ACiXV@~xkXFZCicm0-7gX{Dbq1CJvFcFgUF_b?0V zsPx8mQ3ow$HK52NKsQR0+TOeE08rH$jWwrhq@#DP?kzlVHKfjE<%ASP=iGW&axCFK z3)Tp-ww=^;o!#Ym&CPK-W&$1qxIC!)%dQ}-m873Bs^YS4I>Rg!o_V+a0W>4IvqzE^ zM!Wo}TCn|+B8yq-#k0`0z|<$qk3w#KH=y5$40n@!DP?Pg`OFETtS3gnvI`suqSB$x zu9IYYhp_LNgw>{J!XhylUeW)6eZO9R20Sz{i9R4(wP}T=1(_C+AzV3q9@<-N*G3S( zTJ`SEh#0b9TcRHxb${HNNNhO8W-WQ!mr2X4^|0R&?<<VN;WT=Uw@21^M|_vyuXN8} z8UfE-i8i)pfQuf5g5!s*bb}8<#IjB)t3yI(7#{Ms%tLf{i48J|U>|+~)q#cM1xsyd zDCRDIN&lnm4Ec(SS%T<alV;lcVXMW3i~5ZR!13|c2gsm8>zz1-fRr$@I65l(E3O8B z%C-a*riZK{P}L<8>3LZWH1Zrrj19YCGRq;2FLt!4^p@OmKVsnJa7KkJBpmW@BpWRS zTn?0a%EH;*$2u&6FrAG~y(Z+6AJF=tNW11W;%jobxxZ^5jW;~tb{0Mj2m(Ll30sa{ z=R8EO+!lg*lyk$<-+r?<X+2);>Ws0KaSX@Z{NB4PQ)&zo-be^Zi7KA_Z%as!Ct~aU zdokEkbd|nO6?;}!rQO>*rB~R(-Nt2R63J>!{|PvaruhUm2n54m=cs1kKYofr;cutI zzyrnn&c5O%1-qKN9bV^L(A+@?VA49LH3RSV=yDEbZ_T@R{Br671)ixPtXx@E*(pks zAZ+li>r0KSLvs~n=kSlvj|Ku~L3NSH8e&recxQL0U~tH08@cw?ujnJ^DNx^J3lVKl zC9a^XeTcIkZON)Q8t;kzejit@*l}sx*WKY8$odq+q~8VM4Jj37;5rWG`c^syNp^0v zRcwaO&VTT5D3{mgrFvB%3yZ?Z$(|bi4Go;?Bpb^i@+Or#MUeqbYBUQG{!H{`#btDE zn`)ZK%&AI4q%IKet6Psp2NG6{veua7cQy=yc0RQBfcpYz7oDyb1iHUMUr?G_GvDTD ziVT8%8f5Hf5}3Nxkkftkms<R*MewYqwH2R<HTLBGm1qod;aD=a^xN3j#HrcTzj_|n zhS{MKA=amcI==Ogc$Rcp41_EcM=S5LD?l{3wx8?Na@cAT=2nGpQn+q-KZ()YH#km& zEL=GnHA~KN2yvbJ!+d=D6DDN4Bg$h-*=^kt_}1qaK-br(bTfXyRtS`e=!W|(zqBM^ zy%Cjh<$E!NfVO(Bn-;P>^~?xS-kP|fq7ULntD0eL%#zFOXXdU-5Uzxb1!YI5V9z66 z(WK7sFdN!jsxUb}V(=touo$UyQ7w@UHn#+hYTdNr>zZb}%aw|ynEDsBxetJB5nkDd zrbe`pC{Z_@M1%WHKRP~LSjX!P(E!^nN$aF08)InQAcn+@(kXCdQ1vJxwZuz#;_H{t zgtYz>vrWOi_G~7dD}0?x7$sG7VFt??lgrm-%hIA}k=jqvFsVHCJ|&L76E3>9-)qqC zILtjF$P5mi;x%Ziu25M`Ez?E831WreK+(ax_7#2x_kdL9b2&@x@G<^r;v9Dt_(sIm zqK<JkwW!`+ZvUkzA44?E8{3|yaz)48<jko?vRBpoc@8~&5O^$1gEFL5(Web}`#~3R z2E<#W^!%|4uXgtoNu8t6rsWAG`%KqSp|BDv?Gh$5qGqwNt0WC|AKDHN{OK9DM6=-) zdtJ-<61q%j99KiiyazY)c+A=PURy?Fl;)*?St1B3W=7#fyY^L2mC^TBbh4s*CD#e; zfr-V@w-lIk&Hyq~Bc%2m{?lT7-vhrQ=ww@&Yxa}ai3svCeV)6MCjYYAw5fCXYL=Dx zA+65LMEN}uCeq@yGd%foNu^joM087VVVKr*m7BE1+inA1Igy4(aizkgy&VD$|4DEg zPcQ14YI?nt%hg}w43Wq4tY5FGA5bdtcNLUpdsSY5cq5POc&HJ7_jSv<NT!#gx-z)@ z{V#;`{{7V`HW4GT(L^bs24nO+*{nM)Vgh<f7z(n9&@R$EMM17^)%pqeYe*xJ0sN2k z-zC?~_MR6MBnLP;rnDf6wx~OZB^L6oF!KZrWhU0Q>MTrH0u=gvrG6p5I`rRmP02%V zD*c&s8S)CdXWXGa2bT6t7vl895Wu;4)t~?yvz6pqOz9ohoV4G`@yN|~uU&D(h>88+ z<)GMV@GS9cY+aOeZj?K<!Ld^(6UbL2+CS38z~Hfc*D^%;=e$bx$rwG0<q>)45+nf_ zm-&D!xoju+xJhntIg`JC&K8D3NYg%5OZeLO$tSam9-a5OAJ4U;YtLNmT?X~~5D_rS zMAnV&`DFcZlG5yUnd0}X=u6$MyMDn7HN^BEvXi?$v-IglU^|I+-L#0f;W}kJ%;S+< z$(=pcraTWli!}3IcN|3+z_^C^<_Qb1$Us}Hx!bXo7<?x#m1RNxiR*<)NBQT51k`#T zMIA&^;{_EX_KuPX$6|_Mx-W0wMG6UM9PwpgTn5ZAu7J~|KV!F{jMwAEk>PSQwH^0s z3o?>hJ41baGHGQndT-1|wRyc-C@#r53>!%f)I;f0=!$|?rkT}s2UQJ$JVj4s7Wp5z zz}3!b$x;B{!jO>BfZ%O_oZD)MnrWdIp@xcU798<GaJM>~hB@7x?<*`6$c&7%K<IxJ z6k@%z)WvD7!I|8xL+CcZntypJ2N=(dEkk6HxTeq5bHJ`4r=LvwXTk~nh<lA%QXk5Z zUwBGU<O|Y{B5{6V#=jh^TZ5l|F%iYYAprU!-HPUC%nom&of%s=FqjtU=v#w`&a$v- zORdDg>_7}Ri`sKK=gK=}4DQzy>Jeb|gI2+O#m`Ttb$NITRU68U+;CWaYEexmWG&El zEV~E0fwAI<)g3O>uE%{&LpD%kREoP^d6i2+Fq!TqQww)o`J{_yzrkMSQ|1ETJsqkE zZcbc`eXQc_-z9-kcyxY_{&3~RNB7Qniq>pZJ{FZ-9ba2lnVxL&rMtlkpVuPz<RvPM zjrdwIyHJ-8uG6JawZWob9}(yUnHm<VUb?x&U>7!#4So;y1ODO8gp-u4XrTOSW!D*> z&l^2BTmsE6vg4_x0psvTrpgRp{6dTNlf!@b9Xe}X9l0m)*Q*xknPYTT<Bx}cjdTuV zqC<!^F8M?C<XaLH*R*&rL4G@<#zYQLiMF{~p|QLpSOI5mc_eEI8si_-6?_-M>(=5Y zbrgf?A%7!&F#lAsluju4f`Na)FJ1x#UulEV84*2GuJevad>uATAaZ2uvDau}0OIoe z_TdY6fb^F~lNT&97tj~<1-}i>N4sp>gxcq5XbBj)C+r3A?S8Qp%D^`D$_Cc`A6xIc zb8hFP$}=9^A!zqouPi%OggveWBy@9Sj%GFdcfCxIrc6Sj<Z^dojCt1MiTkllN=mpi z-0klPPqQ$XBZ|l0hW&W`ePrELLXe8>j#kp238PklVsH=?WJu;voj)n#+o&Nh>_UhN z!6F)OhU&C=g|rt_soSH6Y|i9TBX&8E1hruYchEnw?ogFn62ibnmRLFr^WXUnG+Bk! zMj5n7oS5yps|$~}jino&4L>o_*<qId4IsGv%_176zzLvST<C0r2V%;8V6~x^kex!C zltqde%k4JBjU)i*=vPE2@=!en5`AJ63viisu1kND;UV~Sd+7WH)w~@;(SSBA#jrWD zWFF7=WnZS@{>Vtdxw9L9AiKEMxuYpBx(q$m%+nq!Mf=Z~d^7N=HBLvAQ-?a~$toX@ z&~h69g#zDe_I(c+;T6*B_ebO@vl6T<<<Nk0F5fYrx{H8gkJx_p<thBQXB`Rohpz9S zw`9p!Ll6Cdnr;c60hutRbXGoXg!I`9>pQmca%rz$rBy96TqzR85ReF}6oyD8z%Y9i z@iU^_BIFi5R}1zKvRq+s|CLnzr5?*_@<~PKgT~cUgt&y^mxZ>1!r0BzBNFP^T?1{w zgs$}SR+fha)>7SS2j@B#81hllc|f=4eDyA)U^gWB^_~yILcQ76H9}GBL1s0jp=%*E zOzQryXXE5>*ZHC0(v>AdgYU~?!7+k%<17I7%GU7j*~O*PhuR;#XbmKb&3)RC_PGia z>*LXO`=hNtzis^+y-<JVgo}0_S0d>@i6Q^#EB>7UBc@^Xks?$zg{VuZKbmN!He!G| zqt{o4s*vUlt-2h<>4UKN43P3|b@vu|1>k2=l3CoZY)U9WGQ=krTZUHJX62}EN>9_p z+zs@4&TIw71@@R0mLmJ_vI`VXp9;Z;NU@jW1(TP+*7X_)3<rna);XN{<$ef??KE-| zNQy?6Spv>KiVzd%EO%Y&=(Ls&;@^&%TpRc#{J*jIQmxl#t>&a~&GJEN<qriJ*;Us) zO_GW9_Sl{BeCTSl^=R#FI+(2kk#3X&T0UN-Sd)|H(Or(}GsCk=8K8Wz4`vV)m9gp2 zWzCa8TfYr>6#;pPdhTq)7lTS~1oLk5e?7XQL^u-5xx-0tVfmaM6HNjqL>~tmUvuO^ z#;dkvt<$?E%Xw>%*t%S~w$9((z3oWtm%Tr|jlpJEe}_bw?>;q2r7`;_2tR{f@yK3p z5X`q`zG105FBYg{UlH`)nf_B95oo%Q^GZyaSBK?dY7Tezlw?RR+@+d6zEusWxhFm$ zHIP_N9r=s>LdPN5KWBD)5%miP64+1t%b7o&PGZaU@tI6<y>{tgVSQsF!-CbAm88ra z_=10dY+=5`{2o&<W*O!Hh?j#c$Qjzj7Mbb#q9#jxZ0#B?7ks7HsaZM(Mzb2?3;a!s zkNj~0;q+w`JeHT?1RrymJy;<Pa2yD3((wIk1q8WyXIwCO=a&cd&ORno>fl3?>PD{m zQqpy@>L152*~B02ZJ+QT(XoEI2c-U=eEo<J_2Q-&p4Nm-ctmMEct6TC)h>>)xSd03 z`NkE~K6g3+G$TrExP-nJ5_q3&R#|#cX+ChI+N1cF<g9R8F!8;wy;l|Gk!Kv!K@_7B z=0x~5%0}PUkiYmwOsJ*mc<#%Zws6pPjpWH>n&3fS6j6u1OM7kiH_?2t3ecZoCCr%a z2Kuf(xN0}M5spUXr`pqeOzXftNckWfV^be@l2`p!$=csZD`}W$iv%*>dpM^9dq_1< z(gm$Xn%NU9dsU<nf3LLN-kRJ$vca{s0~*OZyxa`}M(@-Uu&4Gu1%lQnk=xyl7g)K0 ze7nH{1`uDkH8Iyfp;gCkPlC!fCRJ6G0aty3Y8fXc-p!+F$F%;=c49X~EqgIfFSowW zJ&-Xq<l*f0MO6u;u~yu}WC4qJoB*Eq2p>V!{5RBk<bi1MW>Oa=iJphlbW#}XxpKCw zl)+PP@1PG={KU<17y~u|3pj360<0Ss;-4z64sjVLRRpuU>$?q$aP0B}@&pa_;&MXd zDH-5d;{5mm><ZaVm(`~z7L6$iI|fwAlNBJwA+Towajo7>ho?id{rS^XKoy4~EB~x3 zgC4C05}i6zh-wMo1@U;=7nVy4lS6D2l@fwDCEiw@&p_k4dQR)vcL`MKQ5U4iiynqc zik|Xp?T!^-<y0*$>|wxw+g<YLYHT#6Uy`=JsqM<e9W}8K@Y|FgLPlhc#lxgW%9!c9 zWUi|g-`UjfM)}H<=tvpmo^YqhdLJx_++Yil>X9Y5nGNZ4s0r#rC?7&}Tod?jK+NH3 zNTb^8%>-md+*Y=J;JBO859}XPH%?_(gzqJBj;*vUhxoq(kxJZ1@U;kb9pvePM&b^g zCj+sru2d9)tRt8=-k--6$>LA=DqN_z^jphi<fGlj?U?<Etx_LT@@$24Es_9r@vy3i zOAd51QCjWj#o08)SPrhA9z~Qk^;mdwAW8LJp?%kF$|}MwF>0B}e=|id@rzlUifb<c z7%1{hX}&Q>nlCEVW4Q*xwx5OqXw>r<z%Oena_0tD7)oBSh(=Hu2ZINn0AP7sKa>;s z`nB@G#ds#zSY_Mcb{)JWlN!CiRBQRql|CLD`|5Jt15~Q&%8{{D<v+k~jdE^h=3GlU zo3IQ)H<GbMAEjALB6L#@E|)sZxF)wDhu)nFMA?8cL&5sxB7xynoNGnxOCb$~=AJ7P z7~Yz~#k*FwPx{Y3M=d#Wv+~olSi@wH8-|q@b?oCrZFL7tBy`}$jApx9=}f8y8wJwZ z)BI~5BwZ)^tM-h-;1u??*uAALZ~6s=&ESoKP0%2Q^$uMVDYm5gTo!0yA>GH?O9tG- z=b=%VZI(cr#aNa4y939k$`HmDJrDWhL?H4QR6a6+Bg$#G_ni3psxP2nst_^X?`|uy z2|jX|%4#&MN6B<-G?3Tt_e)1dVzYn@0GX&RNVAD4`O17v6!#-C1sq?#Le$B)+f@a$ za!TMF!?T-26e%UFdg3sn(gaObvaSg1yJU(d&+MZ+<DL;KiK~zB2JKv@wE5H+uFQpR z$~f`iM)_Q5XCMMc!|0yPUxoISbE)FrLgnN1mGXSStXfF6!|&j}-dw!HaFBMD`zu(a zvn%jLY2$Jr_T5zc0n(E4{uuGr^JDFS{(cucVyKE?7L(oi)D~b*%*`W8gtc2@MX%Gh zKL)SDlO8b$$!K$<yb7Z^S(*Sbcx%YGN}i~EGpK?*r`=kYDnKTCA>&1yM(=!YAN63A z;#;9|O^K_oWw4Lc<4}f@au~RBz(aX=b#p_=)pKg-19H?D;xWm~(tE;G!Id^<aLt$Q zgfQA_vUcIQ?FKuKOpo0zQRF4MkE_W8I4uWTi5C$5vf*W8dKT39#%;~A|9iZ7#E~SC zGG+ny3vAt8rP}cFp&QC=cl9~Z8YA?nQYV|NbXupSb4{TF6Nqlm{O3iwyF=>$Kxt#e z?JP<y1Pv2nuhi<sFrfKOEAr7UfLFweyThDr928v!Wx)hzN0f==s8kF2#u=01>^0=0 zf}D+89W_I}AUx4d@s5g2a%y^c^&VjdtI0u!Ld)IHoSg+o&QEmBAf3vGpOnT}i;$1~ z7MfmZmH}n%!i%lpd{px*=vzXZvGCL0zn^&45@H)1F)Qs61_&tzviOZh3;$)8)_BQV z45^c!^hDF!NY})a=UTqE1k@%^sg3TU25{3@wx^<GbgxC)#)f{Z%f+D?(y6Vp_lqJd zx3A;Vx0M;XqV-ptYW%5Uvuj3d<t&oqrE0YtU6|1+%2N_KMi89MyC|#BM$OOz=-HUS zB};{5?z$jAmq&b*6MrmO4tAf+4M-=;zx7jH^qV>hGh@HNNk#qhKri6n6l`>jG`y&k zG}<0t>$2RxDkdT+x`|avkFYiEi7_2g@}Y-uGz1peb~0LXMWCZ)c39yo(k~qw_s|e_ z#z+s5#P?I~D>tZ{)Oq74!ZS`$+<JxU)74YVE`}Q171+6pevUGcFjMqLD??${I8K`T zXt=MCz)@=jH1!l}wHdzk*jmZ?UJ(gDruQOhWwu81C|7hZuP*`;tokvi5OZ&Za7WeU z#jUM#YGAWksIIcJP;-|UgW$gE4RTtXZD;M_I=W~6k>GlDuTNG5=**{~eNhUdhS8^} z;y8jR8J8#4Ef`tX7Y+SFr$gi7p7Zj2k7dI*Q+tz@cHKFDNz@}?(Q6VLzt(7NF<2>H zv=zt?d^e#Jyh=}BrffUpneG8L6F@HwW!5G1S1%S-S8sPFEX6i3Sy^z>6zY|_w|~a` z(BJQ8v(J;3U~?EeNZ}1`>uBY@o6^ia{X7!obvApC$&a|G|K?fVHji`NxXQ+-yYpQw zc)8Q>-&x6pD@g^;_02b-7%|5bs)~Ry!x1?55-nO7?J6rOz_8r-(6-OwSXS`Ihr&v` zG99^it&IR8Ksb51VU`jMtNmQI_0PMnGoScU13j5eZ0YLr%NRr}f(S<3QK4iI-I&w6 z_ni-4q+mSSHSsf83`U_z-t8YFXi@Hg)XcvOri~2^6yXmUejiY2oi$!@900zj`b&XS zUWN<K`KCz!LS_aZ6`)*1vGsx73hPkPcu3H|u$drri-HKIl4_*!sJr2l=Y>p|i~^@w z5d!i3LAL6z`2CoO%ic9rQ&iLb@Q8ZyKjRWzu$KI#(r`PLTI?)Sl~(gd59=AkvMJ*; zhG)Cr-)<~u9IqD}bYH)bh5$Vj--}VKoUxZPJaw}j7>d3tyHXQ%->J{)$iwVAQFQb9 z<^hR$#Q88nrOIbhk+EWlOxX0}NV0Q_9+<;&uUhd<|8-6BP=m3&a!wDaTAVrRtr){| zuy{EJf1*@w3TIC5!B;{I>T&fP)T8q>$}+q6VduC|%~F1P^0<o&&aM-hkEBDG%)K^x zd#Wk=g{{Y*zlGvQtWo-GsCSO@d7%&^5N%_$ETxFibadsb`Z^0<UZ(|Hp=i6u*apA4 z1nz(dajWaZ>+4l%MJJjBnN?YJn<YhTXj22+ROGb;m4atD0L~{Ovy}v*m<PPeBt?`t z(!EZ<^J8}+Wzh}+o*9L*u9(dI^r~+Rydvn0d$%%irU#GaU|vaQ5Z?E}?6(|Yg);nv z(-2V!lN6q!6?ompmKbu=o8237)k0#?GtC<c`I~;PQUZ;47Sj^C+-K4X0SnG%u){A9 zcN_aP1ZC#1VxC+IIHO3b$++|nSbL?Sw(Y3#zUbIte_5l9U=G<?bZYiX`?}{6mpfjk zVjiakc=VzZ^l=s<^5Y1I^%|ALySZgs2EfG%o+kwm7W0M(w^KYFK>eW=@9vR|qPS)@ z^buP{tCmqpeVdYZlKs4jl^=2ZAM#80d>|LWv$cfHC=3?TIw^G}a(3*d+#(?CKtV~k z!;9NcZ~_ZL(0ENS@kGun(D%7BAOX*IvyR1Qc{kg_km&{~^qhb`h7`5NH~mQ~5OD{? zzaE8u$kE&zQZ{*&pBWYV!_GB2A+@FGGxk2Pk<L~Uczp3YlD_ixm6!1zdC|fND$>IZ z=-`Aeh%_taGK9x7yNQ3wdVNy3clf{dtPSS==}+(^a+pNf>DDMpFHr;cIg8(}l=!=m z(2b<LSkicH>HySN5t>60y{G?@9hund5C~%C1UtbS?-iB_#v#*HBD!DNab#<?R#JNA z(H?VYv0?fMIie7Bwp5kkmS=GXEqCM^q;n9s+v5*F$|)|MDF^VQT%{sE+2w7(vC$yk z6S|Y$&+Jy;tX8K3hEx($x=MN7V_H1v=mQA+r~d4FTQ`I><z5l0Voh?bXrJLceF%^+ z{jq9=c48g>0f%D%W<gKYrX1<+=0U((iu$v{kHa9$aS4-3U>pK&H`=3!yL8uv*G|x5 ztekW2AQ3;eSr(}R8x1plwT(xtev?iR#@)y>Nl)O<o|r$otZ0I<(=F-)xeJVqKk3zM zk<di(+Lm!CJ&Bj~DhgDoI_sa+<~Dm<>;?`ANh!=lr6ii9FEd*fw-2`c?ARXLVJ#*7 zjkiUPwXyR2bOuKM!7OP-7i)}|x7WilywI%)uHWy;N3_(ev~sgJdw&j^Ead-qAn68a z7vF^T;f@@mbZ31a+gcP^PjT$d&z@y~c}IouUF~cLPjU0egJQysCsD??L*?ZvN2mY^ zSj^JO4c$dlr$z&WCn%4V7yMQ8mb`3j41+joA;f-BsIW(A8iQaiZ4w|#J)P+;5zl&k zp=LTF(zq%qG4tWpS?GtJM|+@f{-QT$k&q@UdB?W)*f2Lji;QRRI7}BKJj$7)7R>Co z3{($q6fl`9Ox>vK!uz6A;@W=es|~y~y)>WM!(f%&TrF^{f3FLzxGA&Fm0{no0!$Cu zl2#t`SWJwvmY%m{A$Y90fjD*j^4Ay5bqTrDSS$MIZ5j4hXT{GL$bopa<CXSJbG>;~ z4c@nqpq3Vo6aPCJ4B7yU0}hH;V?;=ea>ZOLEGiN~yp{C}-=d}^KJCEPbl+VX+QmOW z_36FTjEX&la^J7OmTpGQ3$O?)(p9NM?tJ2bcW^4d{IIJ!LabWdy(8A>6KqJC3{P5m z7DwT>Iz!##M9Wad@q%Yr4ljQ`-qgSS>pez5NuH2<Ahz4Io2{!0%R-q1K*If6>P%IN zYQ=7d_O>K%pV(ni=tkNQs!57^QE{B<;MTFjj)Ns6n}YsUu5}C|15c%ILz1=%Iv`{Q zps<Cnek3lLU~3ES*JAg{AuAIn!K5DV65S=DATQbBA6*YV3U<|T1o?1aQTAitrB+QR z$XX-HSsl%_u>Y5MAw&@n{ei#wHn<BoaR<)TSzxIAo`1Nl+5%vXcoZL2b=sg)Wx-G& zgHW$3Mkt~aGE(R?OH;D1es$QJXJ1*cnke0jTHyc%XU@VpL*$o?oO+Axwaq1N8ncb3 zKxNJ)4W{`vvWSMZwfkC9itC_>D%8K55%(;U@L6boe#I|XP>m0HJrTe|f!*FS&G6>L z^^zI7+<FY~cYqm$)8=HONpAADanpab)fD>#K@f6y)6Whx(XX$ui;&7Tr7`mIFG!E& zA65h+Q4MK|#!tHcsKWU1bEfV@vU?$7PAQZJdo%ERDU>|!wZ4*8)jC%#nh@63lp_D` z>gM22Bq^_o3J+%A+0NbAWB4&C3Jv!6>$iQ+vM}IMhNh&{Cbqb#8Z9^N6h-BTqc>F5 z`&SnOQ@<T^@tKb$#d<R$3Y$dwZ<uAJcF~sXbP4Jc$usMES|dFmwDk=QFp8<YaoimE zmhU4_hx~l{>G#9jVZ)A)OD7N&2uG{!sjm7$)q_^3ir5IO7gd5CWgJW=k5(RZdu~Zr zd2Q)~5a09%F}Rv9ttDMb3OIJPWwSb>e>3m2iYA(|-YaOJTf%qW*{**dFHUUZaB#)Z zc@HiS_0+`LDCIWMvIbJOm2;%Kc7!Ba7CH~wO>l`sD&?<7?WT)@#6jfQW+Wne;}PHc zIl1#CH5KWypQ+w}Zxxl`5)|_Y-13h6E<;I?*#$0EeH?uL$f==ghR39g8^{1>lNud2 zl{FBXrk1OsHQ4hM(mkE=h0UawM>lDsPk!#k(014PBhnIMLuApmnpSdtU_?;;`P6g$ zvB5z=_b$_G*CVB0MEyq|y!ys(+Lw(@`@aajuuP0&6euSY$K*J_P%nPBHXNPbg6VAW z0Z;vt`|`I4nS1yafD+mgx!jDf{6Z2*VTjpI&dTO1Y$BjuJB;E)gs>fYMF886G?w?2 z>l)gOOFNjkxYyoNKC^GGYKU2uF0;Opgdut2JDtW=?+|5f-`+>idBFPSa8=8TIrmWw zk0|{=ga>_AZXcLIpK6Og=+#O1(9*He=lfn?{U!J@WiePKt&jN-4&Awj=i#wb!?L!Z zw`e*GADj#ccuLwyrXCW5Tdi&CrbQQ?Fwps=-!Cm68@_Gsxq6HG@R8;v4lk`FUOhV> z57TNCgB~j&$xpinN^tb|-^X(3pWe==-yvF+-;)@oKvrjmq)K5;L_0q~%nQzzF^~}* zl1<V^C0Z!H-O0qh9Kq_v;GAR1727@$PY5lx8;yp}ciVvreA&?FwQ<g*;Oo>DD~c$t zLM#X$I<bU#ema9w;()8YMp}uEYEwiguU_U5jkK%Wq8%HxShq+cu!ziK-!FPdSOhXH zHC(0ICGP8@?03tc&^T^Wj;79ota8s8ZJ>gEeqes=8M*lOwbqOK>azxJKf?9Of`hEH zFVl*m*k?M1n2)8Uuz*udPcyww?Sw~xuz1!3Xo!@#zIVo*^nunHA(mg-g#cS~2TC6r zUSKLHPzNssDmuv_LRCLiV-PB7P}wo7HfFDFm=pzu#v-iWkL+(O3qMB-ZI@jKp@wDw zBl1U*sO+qHW=zPS_4G*oqh@L5l4ndG((50PxFag(GOuM8dYnt&aQBX6A>=MfCzVvp z#A_bc#=D^Y;?0{I(w#8MBtg}9nMrOi7>nY(bfKZ$>>KXtz+|5k5@BSS%@u;4NL1?{ ztHGI<;MiT#QtCN~TXB_A;57fD{qhLUtc#+&sh05sc&K_VDG0Mt`kTRlN2rN=9ESM` zHsP^c3=PDQO_+=WqF1$2T?_i73e5Ph+Dl=;{qxo<_z008CQYXWeYq*0Y+zI)<zYDl zEgkmtL<$9BK`S37bW!aT>!uay2WLps?(K!Cg=OZ)LI03|*y2ZTt)}R?Y-+1pZVLqH z>Q#eto9*v9bwLg<l^NYzzCtFPR}~Qso6YaERa|Dz`m;(<C^Vz_v~s<kdG!u^J6m3K zQ20S@{MU98T5qQciU%){D2DrFK5eE`jl}{3#e(~~4T?1saK1O5p&WC3GvBzRR_`)E z*Co}us>r44%Z+JM?z?|RDSKSgDo;<{(zKnamjYI_N4-!nl~IvzG5Hh`Ni|`thq#yy z?%J*~R|KXl;lW=OeyNR({*_G4&dYEMp_5fYUH5u>FNb%3JnTcZkw+*4X3qF{BEO#i z5P_g`3@}5We7?>;DUb<SQAaZ<QW@ooc;bC8g&#GRR%$rek$4*2d5tKdxhfEjuRjn$ zN@ak}ctsW~#yeQQJ0%wxY!%#vE{Zwkc|oNu(cBBTpH@-AnG3WgXn^G5Uw0=HISniq zg|lthUKeEXA|3oC0C1;=!di#%U$X9ZPZvr}jR6Um_C)(zop>7piu+SXng!U&JyrT+ zqQh{1{qzxhy~j-6oiytxHm}VGwcHPpC<f^Um6Hyw*z(;)bL|PiU)2~93T4&r`wVcH zfR_VBLUYUaQVYT`u_en!F`aT;Z;|x-i2*A&C&8`{s?}PuK@;j>FjRcJQ>=eKvH<{K z79{no1B;@&N1dj(0_nY^&=2|*{;!ig|JpzLoMB!BTKlm-qF#Vr)JB~|6j@G*4Ucpb zNIcsg?It5m*Xt$Y?pc3)-m%3&mtrww*cBow3nP9pU~wvPx|onT7ZneyV7<pgjfLk% z68mB~;~%Xhd{p=)+Gk=HBOwJ*19bg->c!01q!G>EBKKTaE?d+!Z}g>MP~3m!OuB$j z&@;n!?oVm-QtxMGC~|z(3DrndzoELW*1B)83(&~sfUhtO#pJ`(Y0xdj>pzrbNZft3 z`WJ2W`+b=tZ?4k2;(;wyN;IeaWVfn?J0Q>kkY6oe#_%<t*9eGRep;j%;SHFTnNbGf z%(_G*Ep`B=77}&L02|C`ti3x^55DNyl>vh1&86}q_>iUBw#JTrBZug=gZ`kG8!}z~ zmhbnx_%Ca9VF)kaH`&U*Nf_*dNzTp9Nit00cK4r)KKgtKhmMg$CwKx8=<#K9A3GWj z%K8=a3gXA(Zr^Fj9k8sxu%ol8-!y)&gWBQQnb#5}PjvC<ADx(c33Qp;WXdd69B=#o z^gwqYxO(pv*>k@a<P~C_8@p$x(rmWw*l=3=*c~R(#g0}U9dnXAcyhQ4uJ@%Oo%P|% z871dGEuHW0p_Lhl5(5K^*~V6T-*Bk}dJlGRW<46Z-54RN?%DM!x?<s)f`&)sm_^_k z$BOyj{A^ts=WIam1TjT4B0Tn;uP>#lXGrCSj8{?DdW#jX`9Wgr|E%o%-}wxA-*-00 zNZvg-hV8`=)M4?f-=c<$6Cif}4$yA<WJTJIxWWhWKSqXnMZ}Y+GFl}F;7YfNN1{md zZS>dpTfR}>c%)Sy&9J#@i<O@A0q4!&h7%?8=P<^RMv>JKaU}$hKvo_xke=QPd>1(8 z$Yi87K-dY>zqcGQQL=$hrFi4kBy9#-FSTsQtpJr%KmPc@$DL#v-&qWmLw#7TI^aXd zB$*O6^NLp_;o)nA4oEnKnAd4O8mV^ynFxMETDMv7mKZ-iLjK@RMSu2g&kqRoC39q^ zm<eOtLIX#_Ssq0-anBeS<7epuh;aHL)0Z!beU6y*gV{#W%<{SL5n_J%JP5uN0d{K; z_l&ZQc;7^kBsc*?OFF;R_t!-nWb98u^2Zrko1B=wq>*fcP0Jl~(?keD@1rlUhLy6+ zAha~Un!HoX%9j8i<?CK%sAPs}>-P<_4|tKXb1ws8ixy)&+Wj<0dS`Rm#pY>wIv6HK zfR?y9DM4v!Os#UcVu}IGP9^y+Y5L)YjSi>%+>XM(g*F-HHYt+aP2U&>8ipMq{96*e zwm!#HDhN{bvK2erLid4o6?4GauHazl5wLJvW~^<~t|p|IK9&pjWc!xHGw5~nTvV4U zu3aZQTjgm~r@maQ)X(<+05$;7>%)bG*}V-x<jOEbu$e#@3N#)Sf43@vOSFZyy1Wbd zM_}ojCq>z-M7K`esoDOq7K3P*G#E3XAMKM>CbC=>G1Jys9NO(M;wVn{UxKD6839nM z>1jkG=kwb2bTeGzH<jRhP=^F<b;Ev_9dwtv1X{;=SV|l(?EckC&+1XTvFwmFoq$&! zI0yl8**t?0MLOR3%P&p`2Tptt8~@3OMB4d7^ARxm8dIJ_C&cjLC8=Aknx&iE5D~~E zp|9)Py)M<5S|pAAVLwK^A@$9ulvW|F9bOzknE)dHxmqj|JC&A{Xi{emYBg_|dhOrw z%#Vo@7d$!WXkKYAN8p_eO26(w&F!sxAWX;pd(Uo<w({}g3rU<u{%xM$!4XdTLdA4M zWyRK-VGmd{OgWsrQgFy@Up<@P)^0ZQY&9_z4LeuEGhx)=W@@)vV;3YMJ%hP;c7YM( z7ApDLCUSrhPEPH%Z@XT-y~x)nB$^Rlj(2yg$!*LNOm$?N3mP&3!IN%<4aFRsm3zmn zKA#Dl-Vb;i@E92-;Yh3cnMXgkuP&9qzIzqWZtk#I#K*J`wAbpcpG5}Un>Bs{Nkh`_ z>_A|cTN{EYv9CWdr@N|{A`oQ4v8Dau0|u!nx6QePd%#1gGhoiXjE0WHQhTJVH_h}U z+hW%m(hH47$g2rc@_vVVG!co5uB8Ol=>T9anH>8hCg$h!!ZJ~NkZ{3JM{1yEU!R5- zt>?PvxzQjtZ?Zv^w))&TOOWCKc)F*ufQ!z_y8GUY)Y}5{aGE|vOBctbu(2Kl)l;1K z9V5;H%(EL9@NT(ZG*d$=QJap#A4(r2k|1a8PBR(pC4XcyrS+OW9~`E79i0hY5qf?S zzUSUe-lCY*2IY1dVC=|RKz@n>KRE4v)H{YB=U<>G>)~Mz8e`rC)olqWc3nCRmiVlS zbPQOo1IUzvfDhlRCsmKR-M1GNZJ6YSSP2Z+tc3!@gXhIsACox^0xUobW-0fJkOOd3 zq2b8lL9=-V^7Prgi2Gat-(mT1!3X50am!6|QcP!t^xnzGhB}I_DrDVXjpt#1s`aue zRf*;=DO>Z!ZpfD%@*L)5^sOWbhD)A;e1uJr0D`sOqMtDf^|D=&%<@55+QC~~AK=TW zQ@p2xL3Sth>jp3sa=IX+Z+LJyTM<4CQkYxm7cUpiP3@MM!%~l!gh;ET^ENAOc+WX@ zyTP-f`K}ELqR{F^*L{Led*VRzHkq4qsVQoV3Um8IBuQ0Xw3zt%28+*o^WioB_=r&q z5!B~6s&CGC_4m)5IDIU_8DFA!^;d@lzCg@ewJbdFOBpw>kj!&GRBkI?PaHcfRHGdd z2O~89VJ0hLskz&uevSg??*hnu%nnU+GBai$<>k=pwt`SNrW@icd|oSvflfLJZ{(@^ zU}$^;Q8H~xx?CnvZ1dd6<MD_N&A0_K(2vU`+>S2>&4J5sj&)uBR<o_7PnuH$17~er z<||9<6^_7jpRUi2KXCEywBU1hw6v^En=bsf&eq)4E#?D{ix^Wm1Kjxq)G*6%#(C12 z0YzY(L8L^uZrI6P015!Ba<yZI)B-va5eyIm4$#WoCJLT59TCFHhjO-2V`q}_D6ug# zv<f?vmGOB3P1o7Q6Ua649>RTe7PNuQf&JF+rfME$Il3^L<jmQ@7gRn9t6VjVlIBMn zmn<IMJ#x8T=M5-za3RcZI+M^oQcXausULBFJ=*w?n8(L8^5361z=x><Nc~Cq;OSD< z>4RO7>tpBrmt5$eLiA|9AH_W8pBwE`#)#|QJOnm(+(QoC@qA6hZzm6kb;WW7q+eNC z@hPL65JKg6Dp9S3y8dA~kcU;b7nm=zY4`17^~|Ic-j5DjXsBje`g0g26V(+IHr#3Z z+H$~C)_E1aGcHSVZm5<Wg6JSLlEG?Fq)RcjW^>rXwUY+18-@O!)+gw0xc7g={61Ks zZMPB{<p*1Z9kW9FIuKnVLyeW>?^N5c%s=qKk;-W2EmH_c3CQuvRix2lDY5?VYcuZ6 zne~K9-Hf)PW1&TSU6=G+Hhc`03hZnX8WKK0m^@A^Y1+Jk5MZqCz?4AQ0)8Rumn?-~ zLtSm21S;{G_dlDvP}Bgmog0ZSeYsp*?OMaj0FQYQvuOo%%;Je2e3;gPQuvIBDdIR- z%z-9#<!B!41K1_`dQj(eIb;qvS?9fG=OghnA0GU(pTEDY0n<?fc!YBI0gu1vJtpjg zbbWbp7vs2U^*dK(g(2fK6-Me`+3P|}5#mb&ZfY;qXY1tZay?!mDFUl-WA_R<UmkDf zaBm?ACS+Tl5~*RbsW3aTu6-)_4mx=uAkt`-)cQR*$7L)9yJ9VUUP_UpQn~_eQTuY} z9$C|oj<N&r0U~Pb@kFrDEqWvI`hohL-}k8|+iI7hbvTjFiErqv8&5Eq$V{ayG*ir4 zelEat%HEOk?l2tjJ^twRE>c7i1jC|(x-Y$h>tUSJKk1OCAC4p{a9u|z9Ky_7vK-~v zc#WHvD0MBw8U6JAl{$StX*<a)t3B~!J=%S;n?|e-R?p>D4wq)^Hu!Q*p4v{Eb~$Lz znj3(l<BCt$cUq3v`WX_an`6=<Tg=F<F&!9*jVRW)YGIR$FcQ4Ao>f(F->l%Q15z;p zkE(q{&?1yFS((@aCKRDU7k-2iNl(vTKhzr2k`l%?rtgA9`VsMM`}hF{a1Rh!GMR_x zx-e`{ZNNCxZrctzLyZo0CZn|4zud+uF&Rs>2=KFfmq6=;g23eP5z4ej6OnUPnQ>Dh zdvRZtm1ekzh#qK5w6x3@C#(WqtSN5u7y*0!z&Qtqbs>4(iXICwIj!o{j}o*caeW@d zWW?7f?<e}#twLO=B{B)(m{(3P;#`stQ5j<8Wc5USiW<oMX;cGc(R1(K7m_<wO5hbc z+e#Vy7Tr{bn)w3a#HA7(y~ajtfN3lwJwpxLLQ+0@eDepiNl&NVsskxBUCfau8fnYq z9g5tTMlRlwo4=-VNfgr%R2Z{}Rty0poH49iUZ(CJh0dIbkiR+j2L4qUkso@zr0@Ci z{a(XyY`B`H*~`D0`^8Q#b61{D7NWi3T$_$<_B_ew^DVgB+x<_0n~>J{tu}zO79dB9 zq*-JkGrx5)s>dX<zP@Tlj7mv!2ZAJY{xRa>k^^6kh-{*mig8SaaiR&E{QugN$o<nl za)3k|C!9Ord+EEY&~SaTXJ2F)iqW8aD^PVY8xyjJT3?_aZj~W&n|MI)9llVEYqP}U zARnknXookS6-vvgDrndHa+o>#qLkm+X&IHpE}DgrMM$NKxDPtz;M0|Rk<NTtSHiD^ z{$Z@%2*o5hy{YLp^)N)9;gIdldhW|k1fGqPEf$q8lYahL^kVCddNrvG3$CGvV9oHy zc)jwo=cBir3cku?*C!L74}cpQY{)LSh?DAj0!oswfU;@QIFFGVF`2g#5Ljee7Afb+ zBpr0nBvKNUi~ntE(OJHiun%0ThpPZ_9COhpSTZ!Ihy^(n56tIqBZB_Sp;ZqrEj3}- zP`~?DV^8H#o&<{MegZk35Z3K)A~d@i0{>Gbb`tJtat}^u!M@uy6pIV(=_ZEyLArX8 zoZcpjW&>&IBPMvFfL4JZ;lIcFXL)CuG^Q|cz_qZlF4w<9PD%uk$(OHu!VDJelGNUe z?vw4i>n6C$p5fK}8VfgKIo=bLYQ6da0lmsT4llq`bj$Vg+6?N<><%Z5@&&x+Ra?K> z?&GV<2^yppF&bV&v}0y(I1OhbW2hDN^k)jChdU3f!o+iesgZz!$1E@nDJ<{Bet&cU zMa;QbAOJwk@}AV7t#pTrE`ej+;rr162#n#%z1b|GZfRT13rW7(2VY_#KYe=P&DRA> zlIh68+6-&AbOL!i$9j2<i72<mFM)bM*jXJB5D8r_A#VhXFAj@3(6HC}i*-RU&_SxM zY|cSIP|GaD$#B5jXeaBlQQnc|rXlv<Wo5%K%y&QFH`x?T+&+rTBE1N~*KiOAhR52Q zwERl3Dq1!ZjW5H53T^v4wUeTw&Ub;>YhgUZwt@4}b|oVg`msy?Ix(}Q9E5~Kct5t# z_*+|GyZWUdw8oI(%HgFALtvEBOnxx{gRfJbe60%$FpV>Ma1nEvq06hZJB)Kdumz=X z=pAwK%vdbL9F~<lq~L{DkC-`z3Q5zEkfBoSo>-X4-L}4faMPWhI7#?m4X4!}wZi`g zML@d0if8mx^K+%VlcF8!Il-Y}%Ptz7+Ar7$uC6QnujL3zR7cd2RIyC+0aP>=GI2B& z45au1rA>d*fk7$685;~FJaPh7Z5^!i+(P;w3>DnG7Pc_qsfAesIRta++p(fO;_mHg zXVOACk;s_fZ3+5#o<zEo$H<esBrm9)PBWP13bHi;zIs`no}>E7yB~td=CLi7(%HT* z)+!!UAo|RvOE2IyRb_V@4N$m-MA5x<{8)-My<ygPbHbYmyq0>DZ=0Cj#~vJcv}kvP zqUUeY8t^`UtO7x|n;wdY(Z8V=YPs!eqkD7W&MglyYQe%guc_52)7j~+W|&0hzm%7D zRvT%4euB*Ya?znj_QAg$zzHA`c%1=?@|v>_wnsVx?rEOMuDUPIKsF4zID#i690NyR z>_eJZrO@zMtz6Wuv(%g{QfBE*NM4BMj53<e$H&X1$c_5?{q(rdbc35#SE9;`SM=@s zN((JBxu>+hz`+I*Ch(UIszGL^&+3nq1B@jFx{#`J>hz*ug%j(4`EA+DIX-=(OjK+% zQEGl$#0;q_?ZNOg!4L6w<d64-5d9HZ4P&U;?jt%XEFitzJbvWzrbzPy<uayqPZK(` z)oj$k4_8v9dIikRcemd6%NkA!#SxYd6~S10Uh#HXpy}4|TxZ4}Z9<q$i$Iy=>_J{y z!&vY2IpC*0#umKj6)8zEdu+Aolg}@INm4~3_FDi>0|^1;^dak{<EH7|65sFlgQ*z- zA<ROG<;||OC_<sFj@ws{?UO!wQ>9ytXh=6bQ<JL1i>wKG{BRNnjg>^g&JUH~?aGkv zcEH1mO7#rNoM?gNw(ugJj*hJxbt*)t1cebcow04uIu<0SJfq^U-)=n)=-n;zjffy} zw6-@)f&mkZM8SBGSONjpjJ|!Bem+KYyr~vmeA<^f=ke&lFq?@*#JvwaW(BDmkBuQ) zi#hYxxxXz?@Y0y}H<iI<X}`H;nN9;-?{h^{at56j@l{q9w>*3`%d~2C2i?OtAYY8a zJdn_%w)c|mIMF27=?F@z#m{Ga&cg9jBsd_T?a*7{qo0*F{zj6b;plJU5cRq9A&^*1 zPCo^VR6j1}r}cc>eVOk!wAI|1H(#kldRZnX_bd|nZ==~Z00!CFein_QgNb&Y1}{P6 zJ1O*sD!7;sV?YderpAR&aCY!I9vpHzXS(6a6=#lEOoD*-TrQu8$lWsvxC^OgI_qs1 z7EGl)@;O-T0tJ(j)<JfZou2PGI|?Ii5q=XHH3|#MXsr{R?LhQ%o$&l}wX9F7Y8LbP z4#X-)Gi5L!zkW$eU>&fSltZ(*%F^Ic9Tpg!?sx4QdT35LG0mcr9F?tC-+gA1mxWWx zOI9VpOdh+V7<jpLfVmaK#`iKwy6?i*`Wk*JNb))SR5mYoaD&m3{KsoKG{NPCcIa3Y zHFBEoE#OFSF*msE7~-@Pm4L$8;ayCIO*4S=^Ts<c1oqo=D>3vAr63l{hh<$o06m0c z#026egeG;og51{AMQcYy7;%mT^6h3YFx`oCdD~qp`b?YqhxVrzK1_ECk$&X$RjK&7 z8YYmfM67%=$9uJ<>mpbVdFKI#j#wcF$?XDi$((W?k3a##REksfExf=cVN@k?&-Nh! zXoPJ&gfQR+114zX%WL+`<Or$j(ChZ&_CP7ALuLuv)NewOxFt|75YJNsZLtyf4fMo` z0g22{my=9!jMXs%BiV?GT*rRR=tn{vzP3hMCwlNE!f%|Ey>=gGttx@?TUFKc|9*wQ z^ZwGFj`@65EHi0^qHxe_;`{#VJbQX^eAX$0%px3N@{6gb#EHcCi+a|#3S)#1yk-e7 z{{!q?k(y$wj}I-g_FQCLCd|YbrX$#l5|8gj#|k_Sq3~l%kRB=e>2pwi0DXOa-^&>d zsE>bGD_*Y7DSGA6PoyA#hr#C~o`F4q5KdTJiq0SkT4e)5rooFO;;HY3RF3{_iP>Xd zokf)}Lc;d4#6L85AybI|;eqeQCG@2)k^eS_3*@0y#ZDD9pTMepBjhKSUegJ1<uJ&Z zfP0ng2-ar4Md+F&t(mx1Q3AN4|Kj+(W4sawn#G*HYNfY-7Q_fJiq44~7MXp!+Z!PY zpc$f@czE}UXhuy0d}-5D^mHa(M%@;b?BFO8U(a7P!GoUL4#${BaN@}y9Goge84=X& zcjd2kLOhm|gYhW}{amRS;zpB~J1c^a9RCis;#|N~We|-929xPj@l?>q#3o@AT#Y%H zL`KAGescu^4G2qnY<q#oWB7DALf(CG)z^F`_iI?N1ZAxKJb+z0V&zY9utTPjZ_wH8 zxbY~^qC1#LT6lt>A&OGcHfrr1%RI3I{oqfV*O*^-DoeIkzxrkF5RxBHd#ojl(6-;q zyF!@jsgA?sUUnGEi=OgUOq(8>P&Q`X@mN^O{Fx8N9z|iy7=pE`E6t2qRH{fWzzgU4 z`u9j+|KHe-2m#m&me%V<A&8$qsvK!QTU6PKGn}B4NvIS%I?WZ{@JbeDN?zZE!4rLc z%BRe9{TiD}aUyXL1GKbdOY|)A5$X|wyiO#gQVsdRLT_Lhc_J45XpHr>VRjfJ4I(FN z&}D8Rk>-(J_w4vNZ+dO92Uv&`U-zWIPbfo%;;US{2x5h48ttB7y7PP5Hb>t9je;Ex zI1_&cHX+e3`a|qsFbd|yyyZ(nc?Xxcs0r{j3oPgHKEnNbQn*T)DtJs*r6C7(X_oI4 zdK>S{$07aH!$PH%AZ<7FoWbRjXv-GhbNr#r-m`gC7c$J8^sxaxlgcql<oQzabzc4i z0N+yG0fS3gUp$c`6kIn!uYr^2JeQFF%0ahM$qZ<pZbvqCkrXu`2J(}6?FI;)+krQS z+yIn0-j^9Gzf=SD?7YdAdO*azR30?)$d?CAN`S)dCWTRiHo*&5OX}&#UyK$^iaveV z5`ZGc4V$<E{tv>x=+X${6cv%I)*+q5#*<b#SrO>+#xk;+2;&DPSjmfU(mXTz=8d4O zJeMk)J$taLv9Q55+rJZ=g<P!;HrUIxrbkM1&3b)+Srg6L)&uzrHLg*mz-UU6>L^4I z+TqnGGYkKG2dzadc)`~qoiMOEZyu?bWZ*4dihU?aX)W?-46EWNaB)~_t|+fi7*D+{ z*<u;YtnSxY({+)1gT$9g6m%3WUv<+=9KT7?ZKC{6p^8U4ftU-0jdHIJFz}?T&ybDC zG&l#BLyUnfoPetjz8^b1Be{3>AKEKf*s@ZYl#@nILWD~6B{xYx&kFD9hf;$=y7!w^ zr^x7o^oT1&`cE^t^;w%#9NC<<R{o@vm*wC2@+M3zhtzA&!d~WZ<SWlB_pnq4<^^a# zKtjJ>ya#KH-c%s8zFUCDpF=+$Ki*3~BV!y~1N+`ov^xK6C2H9Ru8#?nl~w8Gi=B)5 zh9-k-*?tZEr#v?qBA@44ZODoWO8ifqI%p)R+duYn2IzKv^l5jxT!796HKIM_3}I!O zT~7K<uQr^>&E;F<R|@id2yp5N=2kMSOO7CpG=-GE@3it~V>9hGI^Fc9j%V`>4-()2 z_y4QzwV0N{gHzf((w7%me5fgciW^SNdy<b^rzT04Wb`7Ak_#Z!YS0+t{;RREfLXhY z$FQofvJ&DRTmxRgBNR?WB7%ORQ^@kkOkH9qymS`2$2T1|;rJ)9kbyL6YOg$1SfHot zPgQkNomoDe^tQ^=7ywQi8e5?6n-nyrM$e@#e(J$}k*}+*X!#IJ4dLZ_3+nRNChDC` z3xnBCD*c8&VXVeEsI%oMh$(Es7j{6)J3<+0zA(fmVfB(pnRT<r*ZfYA<cX~9g4jp7 z(?@Nv@Ssu^zr^8gT=3kqNhTI*C<tNsq6jT(FSVi#s)+HPU@Ye(d8!<NJjZ_ty3&OX z;kp<Kneg(cFd)TX4m_fh&g3#D1Hne6GRmG+z&WgMUz0*w2zlFiJh+>8Rs}U5v}>+{ zm?m=#cBTWNeHT<DcI8JOv$E!*mhHtz(}yLFWctzq^^&9@1E^<JvKvU_u71SS$STM| z_XP(t-^xZK%4!tD1mSXWNL(26LnsI}LpB38jhAKxMt10~`>gD36T?R5ka(IF62YdI z@XBcNaj@uD-Tz-Leh`f3H1+u>XH+E<R%Jr*$gu^aLkDj*1XMQ}X&GO>NiVEdrR1CE zRC|@Nn0DmacGr2EfiF5fdiT6F3KYy39olI=Fs2hn5>xDH75_X)d6O=fb_Oc6J0SH> z7hQbr7)_1fEwo>AO!S^J@jtBS=0Iw+pKiR1oE><2bLl=r+KAY#Czk-PT;+x+K3;3V zYezvX-#pW~JyGYyMe96J+Yk&rf=e5mAHsg8Mi_Ehn5Gc<3^lG%rNDJl*XE}-v{698 zS<btgNtm>RMv&Ml+XQ}vm=x)RMWm;|{iIbUs;JBr4;%y1q`C-7)njUp%Tkt(UZ)DC z*7xi$HQR#oZTLWO^k>JwStWksSbT&x^Ip;?K~CtK_HvS=R~f0m22uXyC4HNz#F|jJ z%EF2buTrZr2poi5q?njF&rC?aJ6PHr$b$f0Z=|g$i6mLhUZ)sH+ABgB2CyEzr|Lw- zKm?-b%Tr-(J`T2ODc|-fjmgh=b9LNuI*ns(f-TnH+-+TJ+S@&HC1yI>-QMG04c@b> zR)eYISL>+@G!iQ<3u-dSR$`nxeDM%}vZ#TTrXmrm=%H^1<jR@7O-JcbyaRXv{({d! z)-kuYZ)$tbx4aBRz`F{l1x#Nh!F1WasM0`&7I@9*F!HG7gif$Hmf~0$z_E_YZfK3* z>=ob|`8W*BIo>)jN=Oey&FFl&vi>vWeiDMuI}Lk0omVX2!y+m!88!9?^R}Ush$U|* zJfW5k$DeKB*09gdtzj`G&2>A>O(%eX!?njw$Bj`I6qc><o$|4Bh@SV)ZNyeSZ({)| zyI{m$1`0SbPz-rD!MvvOB%U=%kk?OW_dA?~Vuf1}N;!>OYH(^2uX=MBhsTg*3v z4-A<y&k8P2m)@wbmEynyW*b#BWLTSt^nU9|BQLbYat4I$i%ScfRxbL5{|-WWLw>f; zAX-C?x)(76omkigCyYEg8G2DLDzi7U$~bcB9zEiuuBSwGro1>dC_u0wVj;t+g^m<g z=J#^N6;ih7`9CwhG>hCz7jLfMngs~?7I96O)tP&={jOYRro7ylpWk4dnTc`}a8^m< z@ub04@z>d$J!#+F0$C#g(u3o}Y^8e=R_S`=d~ps^`Cb7V$+Jv$YK*^z8CcjfIn`6z zDdR^Ux%Pmo+{0p0T=OejS+irpea1;S)aQ#eUf|)116ROc$IycJ_`iPE`+Nb03Y4c} z4bX#;K3Ggsx3wkj6z?;d<w+WwuT~~ZVoIFrVVM6_7r13V`bCsjh2JZcD7;%^ONsJ= zPzLWb*w~*QPw9?9zbHZ;JixY55hz@gp(3KoSwb4uZ6fFyB&|dnF1?i@6%eN)433$^ zL20H4z*t)j;pTkw=={ju5OZ}Pi!-m6UM*SWU6yOpC(|mXepV6C3}|_o#FfVr10Srm zm0rC;k5x==-(7=9^On3YpLVl<yi4xBRi|eB91zKtjcY9<K0nAUo51v6tKeF<$dVVH zFVFhAa7AlQ*&dK%Cvt_AC+Q`fBRSjb^7Qn5+~)mxsDxDlD8V5B=IpI4>iiSHsCW`^ z71NvL&(~3d0uya>pxZvc31a!<@NPXNRgr-^SwJ|;wwA@R2};8#G<AQm-m}LJKi&SW z-vU_LgUYES$)?cmdO&Q)0jSLnoqocq+<JFTk^^z^G=pjK=Tp5_A}tQg0%Vz=ESI## z1@~tCFd*7~EIYD9(<7NSI;Wq6(x}_P`rkyHquk{4qvpM*9F(~JUx>1sED?$>zKqI6 zoK2R0Hk1VtSRtyf5Slg->k6q=q9_24bwQh>F1|^#$vkFwc6BHFE^Zd)si5i?A1rbT zN=S6imiKc)K$aMY_rFr9DDGf{;RZ<yH<2YLo|~~nNl-nPR2HRxqMF=UUo0NcFeo^L zuh;~yWo0bt36eK5%HH;I*=uy>I5II@&gL6vZ{rL5m1n1OC06#DBrK+N*K7|`{&syo z)1LM&q<USZ&~}<h{L_X@>*PqW63qAoq;S34oXRk;w{hvtK@j&PU#Gv5y9EBR;rQV( zggyXV_^H}i5iHeGf6ZcY=WcjXYk}k5saf*@2x)ACF2ZQ90#csAaBAJ)@3AKd0hqJp zna0V%l^#lfREN}cKggcZj4uupv4+b&$bou#5$tM>w%Q6;tz&$_Yw{L62TW-!Bj2Nl zvBFKK+MKXMP_fWOrkyGk-y0Ds3KWw<3y*Gq1@Ap_xZY>9KCvf5r4XasEM<yIPD-)J zI5Sg8(IH~{?r8>12m*P<_ZMF-q%w`>Im=hw7RL{3K?D93uyl!B0PR>I{2`#yV>tsc z|0cxpRj(RKn@`E%8NqQdb=>##Ok%Rl<^qqOGKKKAU!i%RabjT>ZM$Owk-hEDcN0GV z;v~6-#&HPz2vY~sKCpUjh~f|$g86`I=9F(eXu+3X`jJ<-zsini*D0#Vg!GD<_0d86 zKGV_SeT<aF%Ehp+P<ZT(2M!X<CM1<X%NkvCjSm~rKnB(f5@@LduvVJDzygMwUPBr< z##f-0PEz%!@==y+Oe#RfL*8;*ny~MJZ@6_n1}Uo`2DYlwc<+tEg%l!pW*yROsph|| zu{mHLq(KU(^saMom3H$`xU;C+k}qbNz~Ce^2UR~Wm1^SM+zHM5%OLp0IQWIqW|RD; zu^CF3owNwN02XPPc5EhMLfOl4_P^^zuVIOSRV>5`(!QZ_Fk~7S1O@f~$!+wPL4ZO| z3V@=ssi<h_zFER3Y$3=iBS^X0VMP@IJ)7X78L{|vDw~e;k_erjggZ3zaS>uA@WyXu zlBtBzOA%bz?6@sNp`D7(JU4JdJjf_6!LoK5LvCP8(q@ArWD2N99AJ4C%Yx(1jA0I- zRG0jPpim`q@$2~9B;a&E-nz*(XH7%G=UM6FDpRhKG>Hu}hmmpL{=&i8=;4KfcaW4b zv<p^zS-dp+w%&7wO)*&>Xp^Y9R*_;$%LY))f{F_~7EKX_0{3J4-Fq}cIlujW4Lil? z7%}m=L?TY$)ENZ<Plkk53tY7gP*A!Anhyd*t<BM?Hl_Y;em*z|;kD}C-Feht&@Sz# zlsR2NGit#w@8m_AvbSOj@v+o<yF5#xpBJ5$Tb=qggv7&PS^TG)cGng87zKFsT0Eqm z7p=9ySq9|!aU8Dy1C$yR!{tWVIgdbSr@O4?RvBH!>S~#vd>o$K!;-$CeX00#AXEMz zuK8T{3aE;D?H}111^y_GmJBWBcrYHt6v<h-mfOxKkrHoRp9HPSPr+&15JF>kzgDQ) zrCHo`?_>k15^&8XjW=aR-C%?Nd+u%w&;(+Ft`y*ICxP5@ACL_+?7zaswSgMn;zMt_ z&mR;9woeKCW(KD^O5T2~$&{Pp4@^72LA2XWi7faCAz)Abg{Vi)wb;qRGZk0r*@3P! zStC3{kXjZd5rZC!*=*fVHrwQhzjfn68f0Zwx9=_h>UH;~E6t>0S*@-=A~!%lCFBNU z7Zs^@?-eFQI0W!HSQG(<;IP=);JYeXr>)9URB_es=LF<b3Q;0dsqwT8b}Nfo%o~}s zD2UO3rK>G;ghOE&wjS(FCx*4^EG!D+Bw>O-AY^_c#s{5}iQ3pi8pfL&vw=4f^as8t zq<hmafDQ=d>aEV{9KT>7W$5S<j`!wW<>i4z{@*fVb7Cf<ZkEVrCBW_^2i}HVU^@<Z zEGyiCHZEwx_MJpJuSw>Nbn8F{8Mgekcb<h6awHEt0HzFE+Y*BxifmC*GQaTtY~H-U zKs4kK)E$LaGQ&~95}8F-=AUs&k$5Wu0-&>vQw%vy)c?AB_7-CoN|&O>=w#|npQzq& zQ+Pv5?`wC}&^+?hX7YOD2TwWRwB$o@ig;v!qtN2eCyTYDNhh_{@Tr|HDG5SGFVTwR z!?^%=Dj*k;R~jw5=9&&{_bR$u2OVmL|0<4Q6MX6*GW0`Z>AQ8b07G6IxA-myl`~;A z*cFR>?_j9AoyaN6ZBd#de%<j?h%wRhm3w_vvi@+Cmf?~S_4<j3)FIb2AS=9Ja*_92 z3P%?kkt4b<#rV5LWIUxm*vL%aUcbI1orgat9e(4l`x$yHM1p3{E=sCly7h=kU{pi^ zpL-AqH|jcB^bi60(S8F9;{hlhdoaHR1X{b7mCMM{)QK%}C#5x0KzDPwv2-0UbwQXP zCa>#jAutV1HTM9pAVQeFb}pKVJg6`sDz7O4YAl5l!0cY3cUQ)0gJ!_`;IHcQ?9PYp zUPm`;Gk2A4Y;Qfuz5?<-!?E>exjIkuGt=@>uJ_I?vg>?O?IdXeFYVp0x-9Fgy@2qq z;yFcIe+=@(QNKx+9NYmG4RYpMDo)A7Qu>}^X?N%2xN2H#Bvf@1nHsXSmK;n7mxpW# zx&{FyO*PM$=6K>mh=G`%{n0{QdV!ELEOx%4XD8g(ekuUtG_ZTX*gLW8mf7t3W>dsa z00_(=HT-cOe3g7uR`2sh@mh&e5K5!7lN2S{?Evc?TgsFRG}vQ*>=5p%@%c@ph4j9U zTYbt}dVdlE%+dq?wGTUZrtu!M<%rd78_H5cMQi6wLu(IG7;O~@>aYsBp9ArOy2?-y z3{DYkAJiZCOK+K5zB@(;9TA?+!mH?iX#$hMTXrhr)D^^f3V{&%BF=yV4Sf*bV*k)C z`+IP{%v>BZf&d|@W}M4icHhEm5mHB#^qBjM_~UvU$xf805qfUb6wt*k4duOfHCNp! zm+QSx#3t=*j1;ig2w#BOwC;e*{Ijf2ZvAf&a0kc~=2Z$5=yGnzM7F-zio2wHg9J@5 zGf15!f2aWk2`1W>dSCq1aLzlbyxR`mP;E%_b%iQ`&xqPAzFZ*&e?jcXoo|dCuzMdi zokF)(F=D*;xZ`%STMI1mheqo8MO1>ib9s$X25z~@AR58z=ZzuA5TtY9^&f)73=8G| zAU{&!A6iMFJc}j*)z_)ozVbjicO>&#?G`L_TxDO1R<`)ji0klG5fu;S)vWL+5GeN& zV%eAx<r4Vlb?#xk=7OTc41~kh8&?(B=a}F5Kv33WV3%LcRzL#Mol`3*3##!&QQNUj zKp{ilonbjvlCOVgtcXp{fyFPjks;~tB>A)Z?ae&J<jWg&Hi%((iJ&Sjv|t1xWCK|r z0#+IacS9jo1QKW72zaOFJT}AL&c#!Qso<=^(j9@5yj4uRP^oEEErpxIC}L7*I=1md zA-KdmNHw2#IKuu{5Oaz)Qk;_=S8c5)b5W4F;F&$?`!M7rwZEROgjG$>!9aF5Mq{$x zls~>+u0+0t#he%{HlUV+BmS;0>W-=5563pz25j366!07Kt8GPmr35VepIeR<Y$qvu z6(?i^#3EN|TIiBEE?v_wg^{)Ta(U&%kovq+t?w!w*m6XlUU4NjcdBOPW#^whW$lI0 zqg~D4f8gGBL$IIflIq!0H#lW93{S&NnF4dIDJ<8QN;9v!#P31#;{-gNc;jF~jO;aN z2P@^u`DhzfUfq3`lk|X}3Kq!S7?>~4f|o5$W?<ubdgK$S^SUQaGtO(ipg4E)H1v)R zxwy(y6Kht{_%ZdXBU(`R&IF`2spg#uqyl6Rb?-@rG?$Ygaj{PC&RqOkWhGq09_AgJ zGz{0qt4BE+Qqlf}&fF?r0m(cuCu5T$P=aXseF@i(Oa&xvjV4HBc;@7eo+@hC!GX&8 z_wjnHhJWq=YAs<6yOy*wjI_?l)D*;fI}HFpJVgp&F&olTYK+<R{aD}CT>D{n4=o71 zU8-h|mk75Wy#=8Z?X1d>^aBSR3(sS67;Wb@j%-6}UNAa6E62X5bWr|i?1T^fO_(>u z_jcKFnX+5ts8i}U;oLu3<46QXwayk9wINpK(NzS22q4rS^F!gmL?A;XWSI-~Dx+!a z9NcNLcrxaj-aa&VGdNjs!Jd0!X+((;hyyX7m)I2X)*f+*mPCsLbiQy7A)=AcbBwLe zB+3mN5%==K<Ic@ni$pkQ4{|!Gt1>+KUib}p@q$9O`Jj^%o=x*~EjenfIf*Y;6{*3n zT&Z(5ue4Om$tRIT*!{5JQ4wCwJqVnemW*7vS26MYr_=*Wl*va#*$Pb{ZvH{_U<(8c z*nP&zc4WL;luH#r1`9Nq!z}S->-gG@Tk83<9rfuKtzR7#!{o{v6=EsMnfLA$GtSVT zb<Kr6C<xZ%LolDhv+>$DJFAT&)hi+`)X;Gi{;EWI$!eJA&dPm8gG6{A>V$eDMslTT z3hjo?T)s(own$w)hN}tT%syH$rnkgxp-!x1hJl;#5~5d?)nGm4DNhShLpvaD>P9*a z&tH04D-^EW!X#&DTezEn)NE2Zc{|n^OFBOLmvn*EAePvps<a@`=IQ3@sQ~Kj|K)yz z#3|^_0-cBOXXX4Zl04908g7MH%*~3o9>8(6P#%WOc8aCm|Ek;~4k&Zd3jDMJ_r@D& z#K`wniC){ReD?%0pTPhAIZF7zf*ihk|J;WEg;{)oFBvR<$02#h!ikWm1|sj6=?r(} zh>Y>)8e*LV`B;}skqH$&kr_st7<xpe+TgDTX;eThqd$aTGt*EFN%omO62WMTKl|Ox z#qJpP1R<4esIz<q-y3cR1xQnrocfQO-OS~ihRIwIpRE^QSB$HHK~M<uBal=7`Hk{N z`&jh<|Le4oxz#;Rp|-zp&r^b9ixf*8c5q_p1|mUB<?amIo{NllCljzr&Oj?URJ5W| zSRF3MsVR_k4VTqJOegULNyo|PF*d1)LIs%xMmNep=Qmo|5{Zgys~U}3fGgxLMlWqg zYvo>-`4ey-sC^fIIVyUl@}tTq)sQCM0<g#TT_qRoSG{x46eExlS`-9*4rbEPz0=`9 z&OO)sA}vhTV5kkt#;9Z|9B52s(lT_7nOCUNR$S8kZ#JIlIOLEw3BW7R7Gj@TKs}Tr z-FC&D*9jx&-VTSF)43QnWhG$|h#2$!6@|%Kqmc<OK;W>?h@`M~&K=)X`0W0pt=R_+ zM(Sv#htbQKUVINyP6+exu%}|)^+WqF!KE7l1dwVnAS#=YOw~ht^kA2ciGo~|`ec^& z>bRjTN>)^>g>=!>;Muw?tgGrXCzELB<N_0#c<eb+xck(?q2#2bow`k`_@dOV$vO!B zmK1J@pg=yiy(Cj0T}@($6nMvqzQk;exU$jSXMM7ssvV4D^`rMD<d&{xvFID>ro}E; zzEZxAn{*f0RP6n9y4Pb^hy#81xbhfA*029y0RXGfv%mQ`u-pC2+RaSVBA6M=mglN? zDw@5Zx5o%&*-w;2Q2o_l^aIy%BavUSCTNAisgMKWX+vtEofq5A{(F}dl~Bl!UOoQ2 zqyzfb+TaEZ_fO9ZXU-!KzdM;EQ9yq2Dgkf7y=WTcok)oSLT~F-CVmp898*{Q%uqBN zhrVLYCJ`sXDV;5YD{4{sTD3nMMkFt{7t{@Efc*mvM58nrodLt-S>ETNd%j;vQZ`*g zYg>$^ZQjg9XiGcD#1%D=G<I-)-aB6|e7lqTXcvw?U!xF{#KhF<g_!pSA-q`(>Q=sK zgz0)F@4_n4A#z@48Ct6-2N#M}DMozVcccN&i&lr%GYyVYS9%wShHITC;=fx};I~-b zm-R9%7aj>p>9_(4HFR?Uw?ju+k19#$IHDN$b7`_L;vIHvw{-`?6r*z_w$57_D`SNT zGIr*{Boml*aPQut7s*#-DRxRsVQI{!^5L0^#ZLia$l-%SDZW&S;C#5`Q~p$)Y1FT6 zm(*qO35DlFFrE*WyOYUsZ~c*u_k3dhUAn;Mk;zaCh8tBiKdyK%XAO0}0Ygsy>8{Yq zkCNrd88Ni}W@JRy3IieQ5JfxEa-Lh0K~vqO8mdLrok+a7YgNnWF5c{TETCNkR9!JN zqfdjxtfU!KNO#BM={m<wZbMl2H;=Si3IpPg1mGT)kyko<A@E_EDe0iwuvbOK&wW>G zA@>Vb43Dg>te}05?01B6Vc5`Ts;ZLy6Gxwv-S|Iii+P?PUN=ct-W;@FHT%~wED}h1 z%NX@m7-K+Tr03d#?YjxdPJiBL9#vFRG96<C%M5Dbf<bO^#uBl5JkHr7F(3hKbZSKb z5U!i(965|SrE$JGq;vjk8H;09Ql-SJR|R)jqzQxAYQOT-G#9RXKXw{bE*`&D8mC?1 z>mnJG&Pjvhb0#G@nv1vBM;d(z<5y`x25S~oU)U`9FPz{JVyrEBh{IEtJ*)7lBa7Qe z%GcqP#9S#W93`E8<VZvbh<5LJ+r;V_q?mjhTk(E`ZR5lH(s!;lE&{7%*~R|A+V(BU zp?3+_l$nwtsivW8H=pk&@wOcWHTLV1TaUU1{kzdWwg(@f;8#ESKSDKQ4^eEC=W3T7 zMFETxHXQ;dw`q;J=VH0h=!~qB46ggrbU(f$U!w)e?V(o}342JqzASDr)uO1NJ$H9{ zh5y$u#rqsnGJ{L~FlksTk^zzX_1|z^WUByWtE7s>Eu^!zOl^Xt>JpV8aIUeX0=Fvp z&?N5b_A6e{Zav3DeI_w?XP3LB`#iNAXIC7g!fg}<x(AxaZBtkh;Q#n08AEBvD%ypc zV)UeXRt#g`4?CcCLa^<JeBO-&nos}BBjuNcw_E)V-IVkOz9ymD^s;KM|62;u<+s2; zj5ZwTw5368ZU5NBP-4ny%wPjm0-ZGP#PevbTAZ5Ns2Z}PP4p_}L|;s(T~+S{0U{mL zRDXAV_1ra?j{;#z-**O79x8yIaoVrJjVJPg%#sCj7fB6`o4n!V_XZr(Pu}!5kZl3M zXJ;i?L2vV!6K-HGR++!?$l(Vo7gKhdCr_qdDQJ_P5Hg4tzm}tn3``i?kOX61`FD*( z@!1X+rpCV6#7?s%E~P{E-NrPN(0gpJDqOoQ7Jr>Ftte7cU=h$?-GS6iYy+gGS{Dw} z8i%|+fUrxjQ2m^<<MD1p+m3zBI^s>kWF3IW9)HZ3x~wrqX_vMq&7Ejv$KkN#iNm<) zgvF!3O{{*Cn{EG*?O;>GKi#L!9#@mdN_a;AtqzNoiThe4W4Wjf!7ppbh}8@rj_{<) zgGZFvwcgp_7psSdn*R%#(muu`yyE2;1!l$SZ8zl1lgX?inW)ew3$>-+q3gy@B5%OO zy-5#XVi^-2EX%&i{RCLyjxhvog%OEGh^?2_gD~9@M1l}{^R&QWx(a@C;b;|9)`D&@ z>%-2`eFxm_teDbp=IHOP!DjiR^n`1F264s;#MNHac}ux8vq%f<4zQ8tuI!7((~`gc z^?D>SrfyT4OGD{Y(itGTSlrQ=_YTBQ|LS?*aDSQ{?(A}o6<V@`HQ8(+q+deyMyE-v zc`#=3U<(}Q2z2NEB>ulFFd~O&iAKvjb+OlD3uV$OTab=F?t=y&hvCSHT%(z9!uzkx z%g`U1)VVZ1O3<r@4XxUjHTJqRsWJjtBra$^J!BX&g{TQI*IF~87k6UfG&j-bJ5m04 z|NVfE@U0E_O49SXF#(hgT3fN5nQ=xm!OuIT{dwj?q#~*c>PFR~B!fE|7J;2RPRyJJ z;pScGm7~;>ndfMc%qtPvT~Gi0k^5=g<E0RSZk#VgYewt5i{nj!d1uJWwh0}fhPC5f zeQDSc<;)7A+whzGy5R%g4A^a!22Wo0YN;CWxdRO2YT!!%31m=R@zBMdJ5|UBVq&{e zV}q*?v#oUjYDP#Wi$q<RW+;zM9^{Z;9m_Ao<asWs@DBO+YKv@L@N;lO7g_C7o=YJG zbt_nRj3neZcTehv>Ve;l&r3}poI@tmG9srx;l~+a1>8BsPDghU=q2^HCef%^O0}kp z5O<#Ol9)aj86&4iy}__85PGe^SaVxf!Y*1PMPU-lyt1;&V$mz*cpXWIN;ju$UN+|` zY6;3#M@HnAR*K&8cya$MtR-!bOiDG;PBQJE(Pu*yf@4Af#aCCtBWT|J0jVp;^?CbQ z2f?VqBL%uI_GI6CUcmUJJ$o?{{J9^Uz2M(<o^5(v1S0)XkMiO=AJ;w~p^IQL9p`xL zm7Uu`As<^Q0twL{$Rqie*@qbc(Qjnf*u7SHT*IZIicwB}7Xs8J<}O?8VnV9Cf#~ zULZ(n3Juy7USaBAW@$;ym_()oewDsP(pc!wMMJ)|HY8SUAGwJ;J@DZ}ZQ%JdM*9y7 z1L?6chvGDs?vpd6k;1Ll1qI}4T!;zBvqjJnuGKXt6u|t=Kxj*Q)C6Cc9X&Ngm9bFF za+yAt4gkN89Zlq~^0!59=sf<&(cz24_o|_6y^!{?;|}Iv0{m7`yd<h-$#Foo6XkwV zOqpZ#GT5)(pEM^ar0k*!+)8oEQj<<`eK8?6>aMb=B_p|Wslc^#42FbHzl&d0@)e@I z;B+=$^pvE)B*L5B5yHvqC_%#51MWiF8isx}bU?kCv`DlXHNdG-?B0~0^^t3Zy~BM9 z7uQ?v^|oJ#O{hRi=-e{4p;ch-m*DjkUEMRZ@a2|D_ctcA_L@;dHu%?^;bGV~o__04 z#spiCk>4}=bnvdMB!WuDJSF=@XYHW-FnWSEt5$<M_c`SCa6M_4diqMjpP&Cz`a=4S z-iz~~i|&x&EqU**>mnMxtkTL?*zsD~uIFJG2bmgH(b0ck1O0+;X-=XQX4*O){sUc- zSmWk-g#@#y67H(e21(A{bu$U9u?Fns$fNmZHXA~9W$cOZ5$R1wmQk;3hyK~nShAuO zgf!g1Go$1e8zV-x43KcanY}vi<xv{VPS)2`tf*>V>|nTiAQm^<P47sMNmHc>qk6dp zR|zK04KuJYrvK1_7Z-<bNk0B`4OdiXN#$|WDo-Tz9v!Xj3J`N6zlhL$)|%~nU6?n9 z&8j2?xtEynn^SaZ8HyS3+6ZMEh|fv7SOFm)8pqzXH)U2}T@N53kx0oAx>JSXbXP@z zdn9}Eq;#c@W{^3~?Gq65+Fza37N0aDtU29XEGowq2e$99F%*Y^bA``YVqP~+5n5B^ zM@Z?j0+E=z@3F8muY7V35T*kbbl@^=6ugjZ80m>d;T~$Qt9o7rAG8TLmPao1(`Sng zuwkanF<Vc<_FCl4Ixoi7ICnenAJ;*Syl#S?MoYUJ)qg=(9L|tL2j`#VIcjY}?U=2t z_QhfXz;@d>6wly<IqTdgHsgxph=Tn5@(-RIyZ%dy9P5OkmmFv;8|3Hj40C+IX}d;v zumH#<c%K~kC{8$G>2e3p1&DTx8{bGl{)3*AQ7*rz&~n^Eo0!+$Rxi^G3a+GAkdmzB z=vLa*FZ5d-Ub2<a2NIed>ma$uH^*Ob`78^HE?o_%iF2jK9uJyzS{CuPkw3U9R3DKy zMZPi25)s01?WV1wYkzq>5dUB^W}B0J$!UP@SH%W!+4}pGF7m489(7MMi+I9FCLZfE zy$h}~Rm`#&V-OMouh4fle7wkAOP)0Vhp_ZnG{1b2Jf*en-LeIhP`^CJ&Y*)8JW99$ z!dB@`7H7En!)!Hh-g>9OP+-B7CQI;UB1=qW&gToL+Fb0fpjrG&@h*D>yYJLt%+?n} zGC0%CrFgbXr4=jX`x@@yT1{83!{A4t<!lKlX&-$o3srz;K*c%kYe4R`)AdMbI5Nf- z<4t-9G?9?x;c-D~?WMWVqf=SGNNpvMx)s{k&tLrlavE~Zv*qB;7yPb+(gB>3$fwCv zyQ45<GAzQ<2X<(kWhiI$Y(&{}1BIxS+qA<1*HVSQtGT{&53sru`q*7yO?c!oH?gj< zQ|~jHON(?UTJVHbXv$CV_yXHwLvr4)aU(h+9b{^b?EZ7D0KkzCqbFbRAVq^sU-kQ- z+$P%_!rlTCxm_RH;Nyh`9$~zU2j)k8qAqNRc9g+IjmLW4t_c2YsYk1+K$q2$^0@%i zxHiy`7P;TV-ay)5UE!ajE-9{@VfYG<Gk>u~9P5}e7@@1>D_>UZj$-TCAw2+eHSqyw zW3_(a2aEDWnerNu(SiH3Y_tI8M<^$Yj%Heyz+qq<GSdAF<*!!y?5>FSYjxRijlmO} z<#Ep>S1|{y1YKoAzD}!ZbTAFn`yLA#t#y|#m3s(J6n|H&drPl*g2&mGj1v_RnF+{F zcQnAHQyxeUXR}%CCXm`@m5^=Nd^?#$i7T||nt=G_typnN5HfXXKDghSHoq)a51yhr zjDbzx{JBTEbUkV)Ay|D8Q~ZA`B5ffThLvKj0Lm@CA&Yf5RWuEbB$bSXVxG?>T-d97 z{1T%NUH!#?)dshyq(FWT^8r4W%&#VY3Re00U0Hpq)Bsj>q%A#1*5QA06ymXb=_*Rt zL0eIlTJ#5_JZyz3kbJHp2juX8Fl&aYHb)1pMJ^uY38H6#P|ZQLF0_!SMIR(t8NQ&5 z?O2fi`%%>|g7u1+5kckoMs(-%KF`|prYRV0zNXAttbVc1xlSWw)6bh6a;bBSevJQ* zrJ<PlDd^bSU@-9$TL6jZ%YoTRa?0#q4>fF<hp@@93HG<GmWdPMUkc$Ynl1`sUq++s zLeY1uK@<k4EZ0g@GRnb9IGN~TCqu3$f*wpzg`^;4E9cVr6nOV94lco4-V$5--U>KT zBbf>x2Ug29oJ?R%-=Sb)y~q|jm1MQ1U6etWYj1*!sPH=%SISR4VZ;H@XZbIONxB4W z3SrUpke73iB2O(tJtSXjotXL@4Ms(3<${?ROsBeh84C(hI)=wAT%?4cIQX0uer}77 z*9%;>Fd5$$rC7vK*CfhpV91em>(zau9}1myXw9!T4hY)SU~sqDnT`ZSRhZ?oN5|Rm z>k%+_9PSu}@Mg@WErrI4ZR{y}C6fqG--tR0@Y}G;iK;x=+qYTCnHEjE-T7=SVHw+b zur9V;XeZKT*Ap<Q79r+l;PCk8^_0b#>Hf-F3$)`T@1QzMI--zS+(E_nV1;OkcxTqI zzCGS<bjmD~-jrTo8WNa^g-}w{b4tH7!44ctq1jkPpS7jjB9ebA>U*U1!o0l*UUu5U zMOqP~&u2KBRhU~Uf4n9W>D<zlvcAysRqbrqb$)1%UpI$^4~3|xKBe1qlQhTRw1)=P zGnhvT-vvseDGms4`*7SGx^q};<7#fSp3B*wOl~2}@DUY4h`_{Ufro0N8LG8lCb-ls zhr4*8<rL|ysR9!(=UD#ZQX9?Ju^tErg8pt+kc?GR4WTXP<>S8+m6_p7<1$>k2+^2w zS{Z@<&d^Hl{bN+jA1cYJM+yz27LcFF&Djf|k7~ZWwPM67->FpR$V<uu>_P3N^wuaZ z6>BV*A$WSzPosu2ZK>>vqfoDC_$sMHv#f*Nxxq`%xxa-8bP-K9m0WI$u9o*=5ex}; z!v7tvz_|VqJN!!}5=L>hVL_R23<r&ks5u^}8)KRPPgv8Jz|lLn2|jFd=ESE1H1YtN z?f@RAK0NK|v?Q$^lTe*~Uu4N`4t61qS<ITw^%9G?qgDZ2D-fm@7wE90NE6#_%c$VW z_N+v$FeM|aZDk_{9|gxB`7Qv#rsQ2V;6&pK$i3Z9mt%z)KQJ>Xb&|7Z$MBLe;|nBo zYjq~f?>_hrRAZSDjoib_*#cr#f_)}v-^_hgP7?jo<WX_%`K;eX_Y~JM#Wa!G7lS~d zdout2+UFdzuM0rMdTJy1N;~alen#+_Cgrl>j)-XZ)E!!~#F4~S;^IV@f+t$F6clxp z?Qcd;tHq*&BznKcVUG^;@$!)c_>^j_DDX#1H$3yrr5+1&ukM&$&i{<IEQ#PAU63Cr zQlyZY^?@WAWI%yMw&n9K6EUQZdz{{X@`qa!jE9<pRP#t_AL(w(*V|m1hZ`8}A`VZd zJ=gL$X`0<GFaF1IUj{0VEc9C7)q6si5#yR~O16<3Z$GI52E?ZU_WF#uoM$f~dJFr@ zHuiIT0IrYtxv~ZVwdNbW4l!tPicF)jFcGLoWdm|e2e%7-g~J;Z3fI3{>~sN|7`!0{ zv<E4$R%Ee6`iwgD=K0>LagK;@bYR()08fzi;d_+RnK+t~<hbW_?|(5D_rM?#<U~BX zUXj?gINxFGzS;gI^6=#B5zrtJ_f5P|#kQGKOR(1bbVkA)IyLZNr!U7!K=fZ6NcNmp zE?ZIukZ3pWmuriQAxB#P7o6|kF+M4JRW@8fkU!XQ=^>Q-K^+ub?s*RBv0cxX+1L&- zL>1SGr>cwwb>1d(X3(J(Jh)&(P&@p9{aG_GhZfzt1gzp-r4_u;dYj#*>d-o_gf%;@ z`8AP+!}mT8P`O)rq(rIv>(dH@o!ifOM!)`031taukromLT!1L3^cfJ1u7;i$bVj%P zTLv%Tr*zY3I!C7K{}kLi`t(|2OOdq&|5d4&W!7}b`E;FDzk9-cTNqr3=+A62EfZw@ zRcscg4?3$K>;pBd!zM~4uh}@4?c_1eSsOc$c5bN?mha5SEJbIcL793R?{dvQdX{G3 zS2O>08nUp%`yycJ?!_&rZWYs>NEqMD;5fy>hE7HR2;jhnoq51LUBlfw<klm-lMHm* zlc&zY)%!v#$3rTsHdPZ+Ht;}6j54T5t!@Eo^gZl@ji|z&SQ&wc>;u3<IR@>814B4{ z%Kc`j%UuF}6fNX!$K6?>7B>rw-QjEy#ivxrjbLoL?Unu!jt}`$EIFzx^SK;aHy)jh z_>`)X!=?W;$B9y)LjTwwO_5IN#<R)5ZnR${u*O3l?TlLO-r$dwWC~NrE`#LpP^vq( z<v~CzhRH0-wm!lD7B$}}5^B@8G+X!Va_e)9<qQK>hINBkf_$o$;OpjGaw;@Z9Xnia zlN4#mGfH>}s`h6Fn{YaXScq~~O0Du|I4e+00Q-(eq;@<*cukhU4g-4(<4>91AY553 z@m@Pg0U_=t=f8;4A22e<@Uz>>!L37o*Kn_r*bqJeA)W{R;t_kcBwU4O37vHQB6Q~~ zwx=99*_L+vt~g&P<7|uW*ADNGe&9x_(X7yg5LSJVLvEHRtx6Sz)dhCCKE&PCDbH1f z+xJa#PTfM$fn4lqItV##^zDA#&ib*vW^5JRg7LzQAw+kzIB~J+0R407>V;VW|8>$P zrMzW1);$=|)A&5`8C@cHK=4%zWV5`^1dw!=^d($i@~4jJYHZ1O$LY<rd-Wgf-5)RE zc4;T~(}W{zWI9@PV{Y3mE<W4EwMY3e+Yulysu&Kxn<^InX+{-y*%~z~P9$pI4FIk) zif`hKKhkjaO148`iKje8|3p=T1cZDrg@xCLhVC~6q>Dw=uz5w*j|4AC^gj0o`(-uz zES#TW!jHsjB%UOQo8#l9v9(7y+O<|kz@wrpBIA9M-dWUi9xfYoHsFUQA9TVlYIm@c z%MYWdfYu|%5|h8EG1~_*Mr16eR5&6XZ(GwXMZRcW9C2g5ZegZpC&p!ZjqU@mefh$V ze0r*MAz*)VA0&&Tk@U*Gwp@(&Wpfc-1?Px0I|^#xpJCR?tYh;Mb+qPI^JUEzOl1;6 z7XydEg>=?Avfh~xw;}($2#>oJ^?2?thFUM%>fq{Yi6(9~OG@7F#*h$34FgZHq91xy z<E+)Z^|i3kc&v0!f_tBp;3(qd)dV5#g18vJXSAM<)XFXLH&UH(`1`&>qt0F=TJnH) zPhnls{Rky#(X5kKsQIY>eAk9_=*L;5;EMwI9(r4Wgx75>8e9_-<(JY_!B-{#A=uXm zLVo4rE-9>m?Ep5fqjv&dLBxo=hoPOy^KDR5PAX@=CD+--4ioQ(B&hAh4e~xXfiEHz z$f?3*Ux~%zE_oN8N4=&_9L)cJ5Q)yhnx}MuGky?ud6`*DGIspL(eP-mcR;I(Xf)Ky zC-SDU+LHJhlu;IrQwcy}SicQduGV~WR;9$;>SbSGKClmIIv0-Nf^1q(?uzxXmW{bX zfcrirJQ5F2kq*Uv5+8O<y?2zGhp_H*q4YMIn)R1a-NE=0LiNEMZuTJ$3DHKRa%xu1 zF2Jy!a0U|-ca;Fn-7y#&Rk<k&;a|XKlKn!6?H=;kH6qtp*AGIvL;`jJ<pp_szRo|( zD7<#L@~)GP`mTJA=3fOnMrMQ2N`p`Kjh<tHX}bleIz<}kfTsF*@#6?nS*C}xMBn&b z!>EX{t4lhtEp@ghK~x+u@ku(pDf~D}LaxQL)K-xeTLLrhW`wub&hTF5_Nv9fTcrDP zFg)<I8y=m2$#K22SffJxGvVwro690$t1uip@&Y?A1a@YWP2GokF*r#T34s<BBrDkh z>bS#^umbWv*9bVnq4r`LgfkHQW>V!U+B{$KxrqIH%^=95x~=vh(xZrlL3CQ6-C=x2 ziulwUtP#zycE^L=Dy=+O{Ag+FFZ&sY8|1*&l`;?KjE9@g-m@me8-#LUF-#K5y@M>a z)&a}Y9?-+Wo{~^%JFn9i_z(tcTVEW-^^zm75PhCJLfdFxgg=&uRvwI2%LdZGZ2$x5 zrRiMr78=p&RJEU|qm6U{1bwGh98|ps6GK^>$Gc5<*Whwa4h&~i8@zu|coK#qi?E?` z;Kc?XcnlIZ|Mh)UM_njq({FF+axV0Gk|MruQwLcg`X_N!<AnbhWQ1^`6dBs1R(|CF z8!TdCWRWZ1W=+}F)jsn{OswI=;GcB{uh0r(dG;>NF^dmCS%CBH%LJ<zUugShV$uBh z<&u=-aBn|Paus3#IQ$jdmZF-fYzr6pcLIyLVOK%_%o~cR!P_lr>%Tv?@-j0z$Kocy zfg(PA%hes`?NfTgQgzgl`6fYdJLwEK4X7*wKi7-e?Z2L@haBqI{Ags-Jpj7!SvGnM zjmI{ND%*U-WL&oYlzFM06=Kk^#ID<zq7kzFeI3)pgIm!rkD-5?s-|~XgR`)mdin@d zYy)~$H<_zrbjH0sA#%fGvto21{!}e)p;=?mvrJz%nU%px>>)gZuG{k5YuRjc*67_f zxpo(FiIhrboX4Nc2}ranC*YRLp9I3dANEF{Zd|TIJr(Xo=!-a!e^Wr8_^s&-=;~2{ zkZ{hEeMy+BQK=YcLDGtU>zE{-yY1mBCkO6xQ@PjR3E3Ww&--PnytNgwDl4i(^Wl9& zJ5;R1V+h1?8#=x(O>bS<OL?zQH8~)Z`~B`LdACovrgs=p@c)<ms;p8_OIiodMS{*! z^S9}#LNE1^z`+Kv0aO*%@Be29bu@d7?@K(nJTqHx1sOk$36}MGP6RFDSLLxM(2gVy zisN&Sh7c|smUt(etxkxr<+IX$pyRMOlx39CR>;{;rk&?gR|9oG6yJ#T$zF1#C<Oeo zDqL!^<3ArWnbHdF6AYq?6sGF>%%OPiD?(F#{n#x&s^{=-N~_o%P0oaI0=Ks{ugNRO zkTp~jUE=rbAh^|8Q9<KB_X&|Y#(~$e&b^OA=xdOcBbTEfLu|RYPBAN7qjTelFcnSz zuinZC!$`ZFz5A1^z~C<rLLKN=`QtrchMQ2{v|qgy@}YQ>U$Qp7Bi-H%&I(0}-RV|K ztFK2QEaTUv1o$Kt-tUP(_S;&Aev@Ma#gqZk_C7;Wul_OB0*ZD#Nt?x;_02aX1O(7J z{YTQ`O{Kq_);%a_h@>;UVC;t~QdWLtH4_j(s06_`*I2_4{1z6b{@XuX8E$#f?o5}~ zq@L@zgeoywENog{y&m#5SneChrd=e^;{iJt#OT>`^s4YG&!15deGdFd?-JcOml6{m zM0}@o8k(Vg5rTLD1dR|qA`iqkwr?6{FJ6dEJ219wO&eXdmDCi_6Ys|f5br_BDYoRq zJ7eov#JZ8LbH(Q0aHP`FegC$uHno!olGZh2DEy^peNK~`!wKk7{<^4_H3HUzEna=N z26$w;ky<y;P>_5ekG}Nor75U1$C_79T(^@i9=9L3^z?vF^f?rEgm<sq73gB%T+Zwv zt}z9s!mf0$DXNRh6R47X*9U?#=wp+9r%eyZzK~Xib91l~jb<@qOZ<*QZ3g_HD9>Y5 z?+;_K4Z7Rw`E@2uo1glpRX}m%6ie~MO=dU47>AgJrB$xpK5sr$IkF*fqjfJ9c1CU{ zv~;4*iBssJ(DW~M86}M1!v`1581@){GA#ysiDL9H@l!grY5r}T-IwPeTc*u5nU=Oi zGEUCO4NjD~z@im@1>y-Z3JDuSs!NXIUHr9TYX{r+s+Z5E3mwiIA#UWnrtc6WZ@cGg zWBB0Wf|JLWt<*AEKsJ=0cz8H5?mSO7>oQ;%)v_tP?6iu<u7oUSZA_<-N_ac3s#7Lq z^*Zc``sTExO>lyvfhpIRqQS+C$8GXG2dV2k`wuZ0zop6ft(VtJz5HgS#wDjjjme5L z`9i*9(Zzv@>Uh@Vx=PaIgN>sKi|mh+h`0iF9_EBYIJ|;dH+3UwnZ>$hp3=X>(4fV> zKFpj;LKO|fGUbqYS1utONm>?BA649vp@c^WnPt1dx;~%Fz!J6hAI=Ie-DRnZ06z4f z?f77dWoMzZIHbWFT?dJk;<eeS%Vwf!j0*~-EDqVTJ8W_tOW1y2H;};@^u4Wa5)5u~ zH(?)Piz~ybCe@2o;kpbZSuR|e_QU?57_Mp-F({40+WE#lgAf3s-$BzXmbwoTM_j19 zRGBl@`5ZMiGbIJn623MFa6D&D0*e7oSE=)+S^6PozgqFSI0lX8NU;m0XsUV}(7$Mb zK11ZU4HB|OzF5ze8}$a$8M8DT9$sDpux6ndzK6%c6^)4OOTZ>B#O>Xz$vE3Ne+W3D zv+TuLo05^|71o8Pdvpb31^Ph{Li<Yn3Ru+clXPOO(>(B1v3rr=vA$$McEVp34;Mw# zvy==Q<8?(r8c?qi378`V#Ii<M!KRZs&L8KaK2DQzSZPPCTQ_E&J>r_h8BI>dlFo+~ zS-+B&BQeL;rA=z?@@fc?@U5Ezb_4y@=%~(HphEsOoYBX<=~Vozilb;)C@9ZkE!{F9 zbqjROwr75;j_OeNqYC8LuSBH9&y$yGe&ICm;IPrpb<+>(RCIOH6VMn_a|w><BMzn` z%&E-t|L=NPUf^2-=--bwYfm(gGtIL9(bj+qDY#B2SVS%kD=4Fu;u=9w28p>1f;&6j zy|9fH5rYPNhhZWDxdC{+G0?EQ&utGzu?t^Uz(tN?bwOUI%yEm}*Zw{63o_V=IYI!< zv+A!NGaZ2pYHv}YRDzCc_rasNq|xs9##sCeGzIDq%0h!DjtZIYMCOVJI3*?xTA&cF z!?`+rP{N9|-O}n;WlZ4O;F&1jKFgz@&V-fnQP+a>)wne+cx_xkRpKh;)qkDt9XFZl zvLDp7;p}HybdfI?V<z(6y<HN{E5Y303_c=}+EOg5{gaP^o$&Vxk|TwU={-GfP(ii? zE>rnuJ0;HQAbb&(cnlrtLQv%2Uet_W2z11_y1__am6^Am{^!^gK!FC`N4w`U_MH12 zNB^9Y9WC=p!1x0d^IIlGXD^F#%__oqq)NLpgkOSk2Z7;(QtcJH`U~zz7Xl3K55Qq^ zmAY8z9JsBT@$TPL@XlwHMcV{ddKT1OZ-86@FMyn}-#Uj?aV3-XwbCwmeA0AHD3Q@H z+P5_x-cIc>^VIL5-B{nfcynHFv7nTXKUbQ7SFm3`JK^axrhZ;ygdmPz&+d8Q!tgY> z=-Y8rhn&$#p__^DZDklLP$Lkawa=pTQnOYAeZ&26t^XqBLJKt<jw<m+zL4>8jMCAj zZK}Twn~VOVC=SF~70tjwC#1?Z#lLP_Km>FVp$06!57=6f-dQ63z+beOzWd*Lp&Ia! zZo}+=ljP=2s2QF_9mL8~KiLq<Ks|A@2S?#LFu*4hU+>=q1iwW!|0?g`FsWFzG_G5| ztZ#<_a;l<8wmXMAjkLd_@P~mCUSkWCm+YjLWH**9Z|*5MuE<t_=E4?ih1CU80ovhv z>Uy)slGRLP6K)s-3t$!`U~;D!Ji}Gv+$@W9eEFEL4l`~3`Fm8FI7Y)pAH1Q3`5(Mi zZZLA(QrP>`g5~UM>c@WG<a945&2O8SV<p%!TdDdlnGa}FF+k-+%~Y+gd^UrU3acDd zuaCr>>mBxqK-XALM2OF~U4(T3yhfgk$HY|r^R_xCo3n5wO7<jRDbKaXBO-f}IM(=& zDEaZFSJ|XFLGU_8hGfUE$*8q`8@>6tJJmVU@o~~FYN@^aBh8Y*$;Cf}e)1r3VMsl1 zWzkExmZg-rp75t;0iUvZ1E@#IfIR2+tWU#>E8a>H{$T@YBXXi8h7Hm?QoUL3x&c9h z<yg>PVVb->a}l3YwsGyr)f&Ys{BJZZjQ;XqhSn<-#-Fv!RnMcB*?ETph!g{H4#uJt z;5(rajzVd>-!yRIrr}3<3Kn|vPij3ep1K|Ef3k48Z31_Ac9{d_7nf$K%`A(weXcLv zlK}-$_Z6uLzLlD|3JJ(~+KUzT*;OjN<(1X1JeW<ZJqJ6#&&8g(EF1itRshep62tBn zl5ekcamkjWV;7B5;C*}lo{1ioaSzSuwH*9U!N@1{{tDpnWj##aJ^Wm=5NSYwDoy{% z$0BsBu5QtZ^{9e>2>@4WlCVQ1LNEyGPGAUA--~(VoBJc@jv{)nfs#jO0;^$mN7?qm z)<LAq1ZfR!-NE#OVWhU6V+cumM#<=M69=i!r_@USkpJ_J(}!M8V*|e**yLYqiaSC_ zk=+N=Hv=X(S{6wdK9A>%HtxaUpx-Gb=^bhIV9G_&&wKUDJ~X(L>ay}cg|u|6QzPEE zR=9_K_sW@|Tk|4&fEE1unj}Fo+AiRA(Zx&Jg*Sel4S%lm;I7qbUSN7b=WIla2DUB1 zsvukF>x3%C@xGK_D@9~vr=F^-O&SJq4e~1E?oR$wtF0$b$IcMhcs;1C#ew~i!Q9<; zXkIyG(tb?ZyCgDJhpztw2t$6<4Wu`5*{*^;W$h6j#O{1HDT5?uyReT$q}PdgkbeO7 zFpLyoa<`&!3AhM2hDRG}|9Ks~RzVH2|LR<Ts>Ot@zslH8;t1rosX&xv#k;Z^w>8SQ z0;N-U>(p-)KfxO$TeVpM)kMVeNJ8muLXmoFv|=BaJ$yy#dc^n;9Tvh}mT%zW(2S6I zDiiL`$7U^~_>=B*4(@$JJSRH=D%F{lck9!g33#B(0z-S?X?ORzLee$U)JVqib4VPa z4ZnemX}~~s6(7;LAnN4jqDpR2nOWS=I5TqT>36;-ZA??pwIg;PLmNV6ce-|08~h@A z#V?=b`WL2<XmaICcC)+s2W;PcX)+~K4IAN*P-|*X7>}}jAsszPIJ$3*7N_cHUCDF8 z&$V}2+Tiie2l1^Q_}(CJV&J(Ts+~pI6+)N4m+t8e?d8g~-;6|ZpK>bNo71HY!#^-! zyJ$F%t@hHkGfeU14l(TF22y#Wg?X4u`D~EQ(9FbyDHR*T2Axl9@O7p%sTFC#UrX|u zV$WQ=eV5)P61k?a)T77f5CC)pwxg<Shkn35OACJ7eH$A-l|;tp(Wmc^vI~?2vuK8V z+e^Ut@Vx4btsr`p#hHUnMB^&1rLR7Xp85?T-UC4}g^_QPFgVq7A}TkCV}C-8U3FcL z{l5cJ>I2%za7N8czKa^aB)X@NB}iQdrZ=>>AtO=B3ri=Rs{h5VoLAZ_J4eVzBeZ_; z-unB&WuFBGMLHTV@jX;$q{Dfi-8O>qi?sb5U7ZS;LX?6y_Saz?7oY!|O|WKD?0MU@ z$?aHZz@PHKj%c5&ub?F~L<pl4OU3_|w`V1h5u>I)G=%{TM{4<+DBe9F?vgJ&hG<(4 z&_bXDaW3>q+pkFN`$aq+w(h_wJ6JcZ2-N6sFNsX;og=&srvxlVI4sVVn4iqZo7czT zOp$bE-pfCS<T<~*fh+6*oeh7jh&PEw@)XWOL8)Rt*scZyckgHT99m{VFrl;Nl5ND~ zM-os}3cc&RiA&)#dQMZ_y#nONC?=qL>}}z1)%3bF&VVNxT6AX`VaH$Hh$7Kh1xv!O zG$bsWIJpftR1N<(FP>^QD!H6ZbTYm!RTFk!1?O<cVN#d`O&fPUs~g5tgaaT}iS|AE zhJz4zegPKpaTeJY;RxClB&xh?d7K^xZhhUK$5~=0>dfMcGAmT{QDQiqKjOMXZBiJp zbES`Hp^swCq90Rkh2exCyQxMF=Y^<^La6*)|9wK#Ql;F5HC1#{({^R{(I~ouw{IBc zs}~ko=b36&c%T0!PH2HV>1}%_Sg21s?qvFU&<qNCc+V}j<OgA{R7M}VH(s~*WfBAO z<{kPhgt~UX^-moRJB^;QWDOjp8Qx=2zk+n^cl-~({ma(9h#78Zn{C*P@>&7lO4mN} z8lt#+2F1@eZYor@-1O5-y@KNB$%kizC$9=+lY7er-GRX_EbrijYrv)8Zqb-n>h^~$ zr9V2DhlVhKJ*ZN|DN%Wz42c+aI58tksZ<vY(^W{Pl!AAk_J73ERAsGW`(uC0cAhN; zJQiUSQoO=j439xaTTUdvt`8ySwnXi0<4L1Px%Cqr5%O)~)$lhFcvcenL%#Dr`t`8( z;%9aD>>U67f2;%-Br$8owbI=1HWtxO8)0p0=a6i><RWPtmjFf49<Fi?#D~k$1JsKK zHyt6y9LI3aH%8r&QmK;iKP9$*1>?ruJ-9fwry;mmE>VuW8scRdd7n|!N(n#i;=qWk zYP%j0wb!fu^TT@>O*8b$oSEdQgCw-d9*V0UgZY<Lf3oM)vbQensPY*=Vpu-U;8FzS zl@h3EFcO`mk@|x`z5}M6Dv(D^>BKj}xD6{tqvW#Cb)yxZ<BV`znbelhN>e)O-9qU< z0DK#ps*#KZtXG4by0mJ&a8D#LnS%b#bp+1eg$<e~We=4MWtsJjJImNPgj_{CglX1s z+l~!GF`3=Nu^t=QDmnH{LA>wTx#6qY5?0|KlkSj{rXX$#0`7xEQ3dT()(#5pspg;Q z#a8w`IkG)b3sD}HOuxPBQ2{o(XOG`UUepL11g-L_Cv!CPCp(!T8{|ZlX}ZL>!xGnB ztIu3#K9eydr!&sdb;D$phb#m&Swon@hmgCW(1J}TMv{b)+pjr8WdV!Jo9VV-hmy4# zhA{bnZ002sshH^i{K)|=gr;^Jf?<?&nH+K|iyQ)$0BPY+*Mkfv&aeF+*&~EUf*DyY zM9^l)3w{x73;!hfig59TciHhSwuf_bJlB?1G<V<~&dGfFe^|q9k&BL%vV@My=ebmn z^BGD?d^~y%nh4C>8O(2Q?d*z;Wbf+#68*87#E}fj{n+zNe6i>0_e*ugg<Y+CM}PbC zB9{Mt&pt)hYTmM4ElI0zwN=vVE~?DKmaDb+9To0U)i(YHXzVtT*bD+g+op2;&**3Y zpT+Gi(xt0i8mZnvVx?E|%nONYa4FS8gUWGiy)IHuGeAHUis6lE0Q2KlV=fc1xpT>z z6}TH4BbrJ{o{;0XRfch$<m#8r7~+P?SaiC_Y9opR$0zxtMBd-KLUJj>Ok%1%en9AQ zZ<8*kwz&%mPJ@|~{Q%WFmj7Sp9dhDC4saBz3-kY0QgLCA<t84k1j|K3CGeFLC%B3n zG9;7iJr8fh6FgSh8lN|hF2REagKecu1dS6^WiGqS7(O|+G!3s+TlZ91S}^QN*@=yP zfwo4V&5BlHTe6}ZC&&TDiKH>?*nq>Q(@(dSrRYr95cNL|+Wn4HU*Xn9?pF{5FG?D& z&<OMmW!d^+jE1P7bq+9<M5GemdQafn9Jy5nWox75!x@;u_X5-!)4?K{4Tij=OxV*| zrIF^U#_B|wfufZbzwc|^!XOJ=3^P8RPVZkdIuB>%3-(t}=Ky{3c(;BUK}YD^%f0G; z@N0S0&+iRD)a$ff1)I;Dz!&T;yRH`XFY5j_eOxgH*O{YxyaZt?>5ZeeQ!7ypu<<j) z96!V6|53?!{HqfV!nYwyGPNMc44Mp7nZJ&mFh4!u_6~APkptBL^WRf}_oZn=y0k1( zJnQ9K8|dI|O5D2rr5+RWL4MV_CsMBgjUP0tyv1E1eUP;qnefNUI}|Dgp4#Nk+9`3? zn|iH?V$Q(*huVmn(G0*18HW_HG|DZ(I=$Bf0w%=lxmAT1tWJd<AfC4SIg48=c29(X zRJwvkLqh`V&h~$Xh6~x)2~&S7s-xCGO+vT+pp4s|^#&GXJ{e_9uPTfs;C(sxRmP_9 z%%BxP+_KR+FR6@c2@oG~EdtLB;Gu;M1rTEv<d%p|Z&RrEO;`>-#}cXYLOEz?BtHDk zr`?$G%5n(4gO|)r;m)wuZXf;X9ARq+ub`*~sbTb;aqE>O<h`Ar88_s?5WdO(MI1D? z(x+Pv0k1W&<;qh0*jJCLa`^jt4AuW*)-}#kg=@WmGA4{&=!kK)WeREBjQWIhb=oD# zgo^^6lp2_ezb4XhB|h}+-am&lyaMg1_VOz<*z!XqJcc6gyP8f7)?^N`rpD7AD@*n| zBI>f~quIq)a4%gIfpC-Op(~-BDWwsrG|YWsF}o>*xwypa4Q%6elMl$UJo)=@cAcCt z`F8eA3H0ECm5vo|ks;+W=F~&1vkrXw{DsWps60@zrwqUBEzLklK^8SRt=u=5RbqFK z#7rGhZ0g+>CTM&3S>(|-jw!jJKHcFmRQxwH6*RrNi^F&B*df~s+$qnG(&N|I>ZdKw zo$vB`9utxRGu2n{0u!fCm)28!6`-U1-o_DMI^fL;RGQlTjb!5{<1~ze^a><s4}ZY% z(;z#TiFFtlhGDHFf&n_#>7&2w^37%8%5(5=0(OZ72wNgc`4ndR?`H{wCv%E8Uu;@~ zK|j?e0$|+*Z6knR-wn!5a>dk_!<}rr$O-nB0Ncy9-~aq(vBn>LAu_6TQ)jPkc2bxD z?g8sY<3&Yfj%=@*-FD!GO~;a|M3fIlAG<kgiGud5Zg~%w)hYy6*^i6j(|`$KUoV)m z`pLKDaIRvCH%{Y7y`_v$inc@QjCO(ty%iI7M=Z#TA5&mAyHFrSqTyFnaRaPL;=w58 zrrRE8H<(IkLB4{)sWw|2?YXgl+fR|^!&GXkW2q0#u?6K2nv&E2EJJ%RGV3no5cn9s zs;D<k>SJskjR;DYj_qJq+(jtmNK8pjNAdE%7V#IIl_QewTh_*j*)c!~ZJ(hX_40#P z)q!ai3oIl#U|uD9ZR$<K{RoKH<P?HSis}jd{q%8pQ1qiK?|4z?m&ZfuJAjI=DP=GC z8q)Qp%b&0XC7N%%5_FYcmOSS7<|Tg)YJAt?mg~F1>tp~03}Xqx0nE^goCt(Yw`R^H zDNu9~jvt%lQq5|(+~iN-=X+AbFBVhsHiP@?b^N*JIr;SSc9U=`)-;5}H-RJhGS8)( z%fkm0EIpI5USZ6}4Lvrp!rBlvV+nc0svEzYVnW2v;+keAXKHyZ7Igr(?#7MaIr;CR zu7Y&Y2L7qG{~}utM18hHOmQ5f57|54d~H|FDiD^F0{DVCY)@qiG`mrH-}~#}1vm%X zqQspnc2k#29?ZxD#Vz7zRdrp|%IR|{3LYa<ZM+JjS^mG6a=ME1)=@tMzDLw5fb`{y ArvLx| literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-secret-created.avif b/static/images/docs/oauth-server/dark/oauth2-server-secret-created.avif new file mode 100644 index 0000000000000000000000000000000000000000..2ba610911fe1079a8941eb33cc39b09fe45a6b9d GIT binary patch literal 16069 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.avif b/static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.avif new file mode 100644 index 0000000000000000000000000000000000000000..fe064cde6496da732355fd540a5b12ab6d7cf6b5 GIT binary patch literal 22789 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 kHg^cmzWwiyGlKtppT$gS44If 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 Kg7?r24}*}P_|N+Q literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-settings.avif b/static/images/docs/oauth-server/dark/oauth2-server-settings.avif new file mode 100644 index 0000000000000000000000000000000000000000..de48efaec8e83dfc05ea099b0612a6c98fe63abd GIT binary patch literal 31883 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 Jbt<WiOMvm5#m@i$ literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.avif b/static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.avif new file mode 100644 index 0000000000000000000000000000000000000000..dc60fa6ba669399f955f9561d13749d4776a6bbb GIT binary patch literal 38664 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�AYgeG+_am>03`OG=)HLr%o7O2_bFhMtWo_YEq< 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/guide/taskflow-consent.avif b/static/images/docs/oauth-server/guide/taskflow-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..7bdfe58faa1c427322c828808abe52e00eaf7e90 GIT binary patch literal 15748 zcmYj%W2`7Vu<f>O+qP|+XWO=I+qP}nHqN$f8}EGgy_>vgI&0QslFpAdY1#z<0Dxoa z>|t-<YGDfS&ulDA8UKrIEDZkRt2QRi2LI*%8KJqcwd4N{0RZeRjGX^B{$GT%w{W)k z9|HK#6Ioc>8U4pZ1ONd4jsNW9{~-WR<UdAiVPX3}i~dg*^&c?-`mgF=t$`~8<A0%= zg}tNwKjg5mH?sSOFb1xS!U3fJQ-)&UWN-3c5dZ+_zX`PP&mq`bxLf>}0fvBp_y=ef z_BQ|9|Gy@H1Au@50C*B@j18QT0HB~aEzQ0Q27$0(37Fp9#YJfV2>byQ0O0;L;9hDP z15MhKR)6I&bQ2oCa~Dh*IfBy40*Fw^<G_i*zK1v^iH`PYIuM>qF(!m4%^Je)jTZ$j zcuUkUIvU$MA`_~t?pL_E1x`nW5LX16*jiz)&+5@(&)-V`UatvTu$68a%}0aJWG>@8 zU^Q>!WCWzeGY;NtO^K)_c)OZB(K0d1%?M5RVW8RlT|Xi|yk+d0e=l2cO>Gc3-1`wE zpB?q-F1DcLsUr|^+fPbpxt%mL3)u(`TZdFXeKZ(0k${OPEvCCmNv49+n(Tdrb^ZHw zGz*mJuer+(t@aD3M9F5_<GAq-NF`%yj>`XMmn0z`#wxr+S!5{)`6F&me=^{2mbS3m zg%7?YO+O^=TY>-O@bYHG&uJoJ-U?hx6t-=mYwTYx29^XQ=n9K06t3^8iMZ!sKxTn# z!S3euUiCr#YvawH)^@zs!_#-WIa4ajR$+w85O$)Zp(DGoOiUy-lhL9&7}u6PfCK>E za<I;9RDrv+L|#)?0*Z3jcVL+{F-O!C<({h+mLA#@vnHaW=}$MQT@XArWWH&VmSwPp zm$Of2Tkx`iNS@5Au>$j<KA`r;%;n_Puz^_izJ<38d;8^Y;DghcRyTLFL1z!``*AS= zoW82s*W`N-jkhmioN&-pZp>o%oUd>|aq`%HPw!lh3=(j{2lBAw1NMqlwr}9BocSHq zS>C>fax76+B}4j1?+{=47;$nSyNuZvrNnI)*c71`fo#nuZ~x1Bwky6oxgy@Jqd#nV z>uSE71?hGS4G@YJ@lY~JEyWjZ!1!n&RR|^3J7m7|p)W#yw>@`!S535&6=SVn{vhf$ zr>+`<fmNEP4-37%^$eAF0Sqs81jban7Dvpy>^N_CHv=@6r5e{`t{JGEYA)CUiCKEq zwPs*1SV@<F=e>+FceI(#*p8~%N}E<&W~Pl;;n$-a1ItVEezOemssnJD=4nXUHuw0b z(L!%v4Xfk>Ru^5kjtPYbLDB7|()*9c44=OM$O^{PB-E|iAmFd6#+PQ4Y~4u#Amz7t z&T(gWYiN}l3|(NjHZt<>iQ!1tdJOo%a9UDiFT6)jRy~5W24R20a}8mkw%>g;nS)v9 z#5atn(sl{9G^dutj8wGh2Gl!rRMX`SIHVNXnwdLcXJnq0VQB}W$XAx#D&<+SwrrOm zk0r>e*6^A_PIh9<XyZJfHnewXY-V5i!C7}tBC0fMv?59O6kUe4=s7?+k{=Zc@HWfN zA9XYfy)6y+i5CZj8W|mIU}XERviCen{ZS-BS}uXh;`QH+!4A@Z<m=^a(r<S{BR@+C zd<1Ef3S6AIoi2gk2z^-U`U3`+sOKL9Xbww&7viIP=GW|+@(~dySw(^+BXT=>lBGD? zUX3~gI=tTFQchWj6lLqA3DV8#QX*i-<STl&pgGza{uU=$KpqrBb58lL#_gb7*t>D% zuU}8syq(HsRX(KSbnB!~WkoLdQF4`zb<s#%eA`x^ENx$jZJr;o2q9q+ZWgx@qeifW zJMRGzUwhoG_tGL2tK2QtDJ!%(p@{2KeB4;<gTy9}OH;WzqHH@)m>^uq&drRfmQn7e zQzafvm2=#l5~8EIW1mgz9a$l`iQ)g!G$jX>_`2yedFa<*Q!u1`WqyR$R=_#}Ik<@> zXt@%`D_=i#h9LlM=*A!wgq4w5oa@XEAUoRXa-ZLsUPM>)7khRjyK5<Dagg`EICW)h z&#};A6BG=Vo;i*X7%3$1HIVCJ&+ZyS<NA?6zc4L}B4&XwT>#kUZL@?Eqsx5_?L{xB z!@~uA2Kyk{k$ntb6F~T#uzPb8IVvG>d`s2Pmnfx2UYa$<ww}q2hbusUVpyytuemp1 z&K6Mao@~=?fwmT<x95jg4JcGPjJe_gCI(eq@lS9sk&mClVGlkqKfSMD0O@5{er!2G zz8krK$S<Hp5QG24e1RY~NNh0?mNNT&^nzryOEYXFMCingw&RU0p4U#h=4&ZDid?Ei zP@bFsl#@~CKqwf0x=lrBtp=W`VkSvC+8hcaAA5)URiChy0S#L%H1JxF{6aYJXdi2L z^ouMU`j%X^eQ$x}1Rw06eFPs0JHf^0)3X64&md6f9>mH3FgV`1uCEbZkux9sweKpO z|GQB%J>Wtar;PJ@H)pO6k8Nmx1XZKtvY&P9^t-8~*rJ%0f53dIO~H#_o@BnYhbmcN z8=MMqsx~Gu1|d20QyDpQB<iT5Ywx~8-&%!_<*ij5sq+e+kTWj241eE{CaPG#A8pN0 z&HDqGWDrbmQQNM_7w5$HTrl)R!hUE*nj|1{@E%nKYKFJDz^xE>!e>h$35CdoEE$C_ zHB$-5eDFyKxlhiQ)bzR&-m6!^+J0LK+4+$h7yYFt7TQ6I|5=A^V~~qyLJqDuELxW$ zXKOOvmho!a#rtLDJ_!%}0jWDZ(2ZzoG}H{<8SGE$_>gPmJ5q%w57i!-VL|k2@iw2- zMpo*?Q3(~DL~gE=bzhq!?F1{${kGi}V`69mNhq-n;9boF++z(tot$4f9HVb|>whK) zlt+k~%1V&2fN;f_T<s2W0sLFiL)tm78-x9-+h-4-9IQ>W(<wsgzVf14Ss+IE1<NFP zXhk)9B_;ttOiXEwY$a6Yz$a^y*XM)Gc9=Q>LFwwaD;9#XSaxqfwaU5J*Ig5M&tX<5 zH?3VKum|C{X6R&1nnyg!5El?!Rr^?}jm;!w=#;`9%jZ#$&fV*jR3Mk$&3XetUk{~$ zlfrxVk+}74nqt6K4EmIeR%e{Uqyt)(o@@Z`vNgL(1btgyewQr1obeXLu0_{sjWHo9 zL3c%Gkk6VR3-^99ozYi%1jL1k0?!ty|Iv!7eZQ7<2J}=(hXpYfLhMl8tihZe+ekpm z){Gr!lsCtLxvhD1hV1^!5fQo)O-z#{{E4cziRd{jqH?WR4B}UcR@>$!)36LBIqnuS z%@D4xtEGKPdlnt(8}|LmhtxAj{qqZo+)tAHLrdA86O^zW8b&I=WIAK$H=bUkbVt35 ziT)`GkowNCt?q2KrWtSt&68qu{R%0?I_9K@6zhT=r)y%(=<%gBt83Ah*z`AI*KeoJ zo7R)tK{7u!G8GP|DMh2#<K19^4nY=7sr^@(D^&MqxSE*i-ZQz|KRQxl`}lSa|5-h* zw_U1|D>P;T`#gD8UMIDl0?FmG)hr!dg<9s*lCqE#zG)vI++`<;I>VGV-j}`qJJJ&$ z&;pQ^^sehVDzRuh_iI}M0qSaVL(&cRF{ClAb&sPbRHLW~qm6v(XbZp}FN%L}dA_Nf zm0J6WIxhayBC%IPa<mc`qDP9fiu_}RmyZkVM@+7P@OkQuQ;26g-x7^p83ks`MhGWu zq@si~vm@gnXcdV3XW+8oSgtj<8I?UK=uw{S$o$vwgg6!!<!=Sq0U&mSwwYjGZ}P{6 zfRI^ohAs%&$sKTKPff^~v>@LUO>Z~yG`!3>7u}5Yp4C1lY!X7)qSA^p4RzIL_?;Hr zZi3#Cr*_ChT`I@)6wS1a6*hJ6nw2rnNZ3yeJLd(-!w1*#MpK0^!<ktm9a)H}qg}Pd z4Bq{WEM=g*wvl`F*K9X;6wi~q;6bo?E{{p&MeGU2_enCLQl5;f^g48O=yk=>WL$iI zEYoKGUo<w*C+qA@eDkleCYvB%E@Zd2lk+AWX(YxO%p8XT-%40`$ER&RN05BjbzYYT zfSrXsQESCJH~JeNxjQLA;C(tb+>=5QnD0^1Yn?fHC;rJySe=73%t($?7x~^(!-uHY z8Zl;T1|IzfF6XsZ=v|!Qt`eAaGgrc;`pNG{oGKPio+yc}dblP_hHcGb=vq=H7!sus zBu*HSj@745h7}Sp_~0xUq{DV`0VLjrqxnOUHiWA6kV$FbhB4nK61Gwbg}*{rMJnRq z1_x%PhIH|L-2xng>rJ4vX_D87@1)y@Q3Z~)pvetvNDda@2UN*b*fu#kkBLon(YV=g z>0|j0m?uOplu*0NV-9Zj$u-F!VS;fj+>78=y;Ke1M((kS=ay*;-)}-j+)$rNz5J6f zmZ}QIq9;J0DD7HHziKz3KaaD&?7h_~I&AHXzSEHo&}lg>CD?D~6;*-BI(ye*;V;sd zG2d5Mn%apoK`+wR8ZbteyT(g`pV|Q9wWs=<f|~VZDD*Jtk}N;2*CyB3u%zBJvEbuc znppd^8)tI@2e@Ua>b)xWi0BOqcD~*h89HX9LM!MsAh2#1BjEQpFgtSMjQ1DGqjvJB zAAnpZM$lB(CasQ`&6G#K4|C9Fk`Fa<h{Wai_76wu6$kwDBd^{D4nK`mcc^b{U#At3 z5;FEM;lLEk4C&N=b1-0jW5hycn?O)U=@9rpfOGA1C6A+a>z+YsW)b~JuY~x(&R3!4 zS{(KC$q6>RuS=+f@Qa(J=ww!n+&9T0CX#*u^n?7`dcMG2hbyeG1eFm;3ulBn0-WFW zNd$dQA2b=X|8SA4s%qbKM=s74)72%W{#@HVR}DJ&j@bw`2abi_Dzz4N1vH{M4s@~* zKifcv?g~u}#OG0rzc^9NwudQHh5ubBn!ie(r}TS0vTMn*g|Eb4Un{Y(8EIXj`W6qi z#(?R@2B0~)qkRiX@J2=Fp;H?K4C`xL*s3lBC~kXXOm#jdV!x~dfK8stNsp6*`J-S$ zR;VAeq^(eL;wD;`OK{9;PU_@aY$lo^xnh{FqZn%oC%LhOtct6a<6=Fo69mt)D`HhA z*a0g7qWumt))n+~;+<)thA89>&eAG_bj#U13bDGFc>AT}q<dsU&2n;;;>bHv&TN8p z1C(iNQ>{6GR3j+y3}ou;eI6z=&jNwE>v#KG|FQjLgQ6k<#^i4VadgcdjU^pp3gg84 zvC$ARu|P}a*RTI}1LQ!%4Q;^f<a18I3PC;z*4dE%c0h5}J$zOqM^CC?O;&X_MSHyX z_W}UbdG^+F92V91H?5_&G(oFn2AMHjaUonXw?mclf>NCq$<mQdZ!0Nquq-F^fswEU zUf*Wr%X$XQLpnnQ^IOt6(F`cl6q>K;YEi1QsojYxb`aCR{ZiHIHgdUDFH-*zjf+)z zL7t)gRV-0z*|_9>`6;M@$7dJl!xOv@3jTPZK~-vrk@^`qQA$d6-WAc}JY4dr{yyv| znnL;*>O0(ry>IOe!On#HM(iG_;%>;3SKgu;pyXQcy+UDT3hg6x{mnwQfGhfT1x)H5 z#SdII45IX;Sk9{t(BF9+xvMR;$uuc&2b8IXki7(<Rj_Ca%?K1pXwcDyLw8inM5wI> z8BMVD8N($dJc^#~IDqQ~MD{E*j!__**SEtk*LPJD#2z>!e?_|llpK+S)af-y>{`jH zT^0q*xkzQlhfwi}^djw7rG!Fj&$Q_q*N);fIlJQBuoM!-V9>LV#o%oW-FB4hYs9n# zg){~h`TEEB))UX?Fm-FHJBKYOou1T|bg9Z}+RDr7wZO<833KFirx#+8frKV8Yt0|5 z-zUD68h*6F)t%+f;o8yp2>0RCOlQ9SZK_Wy^fvDOU6X<)=cUSgLRQ~*Lh_;JT-J8? zq!rmXHI5iO=F`t&#C#1@mIMRaFTwD15!Ss_Fp|yn-})lNTjiVx+nMz`CSL}gS7VsF zE($^+$R=E^JzLD#mDLhr2Ja|vQVg|yIO7@Qa!W^QBt3$1V}lUV>BGUrAndmReQ@o_ zF?Be{;4!9fWBE%j58#SAJnv=OD6yoMimg)xmhIh8%7ml}zCR@pry>=V{;n-P+NM`c zbhA`tK3b0@Zm@3}H;Pc3pDX^*Vc!#wGlo=C$iw-*Z8cK&Fz|vn@eP2yc-sr3d}^S5 z(X<5<hTB3+&c4<zMfPROr-<@Q(&K;m!B=ZwYibsr#}mzewLTTf9#CL=CI6`JuDF*q zw|^W@19eV<-DIatiB{UdEV@XD4J??%g&5D$Y901Gh3nkQ=d26BoWl9+vugHOi^T}0 zAU;G98yn#gTLA}3XDOv{hwu{`#YuKKn6a@7W<?_K!|>#lk-u%NPiX6|z{qv5W1F-Z z$to50fhF|5zOSK#WaZZ${1nX<Y|wgN!)2_}QaM%TjFF=OMY^D?`T+qejrKwWKsYFt zgwZ~XRr0XKTF=C7+>&M!kJ)erGBpEsRUW_wbAY%DSsIKp34xOZc%X^mnwQR+J5zJ= z<8$j~+KFO4shIB7cN^UzG0M~`U<53mnsXCug|Tg3!0PY@3zv8njD9Pp9AG-`Fblfl z7xZNtcdQaoX0(=z<5jvVUf=WXql#{)txk`5dRt!=4Rs%XYEHbyh|P_Iu^;t6`IYOd z&5R*wC^M`D<#-T-0-vSwH;0K#!RM^t7LeOsMbbMs#%)=eJ*5>hh&YNdPj7C`!m_ly zbXzIFB*23D-w+GngWdKtYh?@j9~=~$PK@CHJ@;xtuMVT67dVmjw{ZM~d_gZkc3)b6 z4kmkoSNEjb2Dq<vS|q$G=qn1Wk4rPE)AM3^LV$P9A(VZt>EzL`XdK$S$KZg`^G;P} zqTrXQgXd1QiF=tz%*kZTF{X(V_gjU0U;ND%D4o0?5V{i>HCptsCqmQp3=J)<Di`>z zSRYU%{R1V@f^l9PfdTUsE0$ur%uOGm!|VwvZhm^{DV2#d6+R+&<(S012y*P-i!0a^ zV(MJ{DqtffEIZCRCLvbG7tZ%W%ueB)Ike&cIu%AERX`k)eyRDKtX3e?%3A@9|9z-i zQZyb?=>4u82?IF3!cuA*uvWu3KlTKb)-(Hbp)24NmR0Q;O$JCJN2Al{>LBGdAeX4Z zmZ{9IdR1Wi3MPi<fN>nG7R&S;fw`DMw?@Ntc$;5JMcBwGs(J)Oy%P2{OuFi)RetTd z2JC+dzVGYZmlg~A+WSZN8i9f~v151uOehJzGl5$*$tI8VrQEx3@i@E9#j*qg*Uesy zz$@bLgPozgWG(ZpM5^%sB<<Q;%0y>TxBlQbEQ{r46wR!BOXCr~o>VRT01g66D4(?5 zl$67l8mw?9R`=x{-zoJ{1B`x#JHRq5V)jTJk0*kHcPxpL^%J7)dN`t3g=jub+-#&^ znU3#dwcg;kRb&5iX1*!7Q1LMo4a^Ehsl=<R&HM($Lz88_<}rzqbh-(MNL&@{E2q{v zcTyuVC(Jkl5HWG}kqAUGRE^N|`j2<z1RL@B5#%)l`J#`}*CjRciimj#p#2n7C_2P` z<5U6J4F4RHKCIq@cekNR6i0Vsa_I>)-mrw1Z~_CN@m(}%He2u8u`k9xc4D(<aDD9< zFQ_dYE_GF@7(EB02QBvq>M?ta;96?TKm?gFzEKAfmnS&0g>WQGu#hbF@~r&?arCQF ztKGBr0_cMAG9mwLb`a3{Jvla5qX%8d2>^~-e*05~Gr;laNMa{G$DFI-iIS?96`oT4 zt%k#OoF#g6qpAK>qaU~Ro!-k~R7dkGz^+?x+44|=0;U?CKWu#<E4z{M=S1jjHRFcb z<xP=`EWaZKphzzF13vdA7?v?TaOzHhr2og|?)|NB`}s%TlwZ8!YkE`TRH;o!G2f?+ zL|bn;5&BoVOJC--XUr=|U{n!Vw9J;3^@jWbeCF*0!C%=;K)CWF7f|XAR-s0!-HE5L zRUJ3@!N<*lRH4a7Oomjk7NH@F>6aB{9%{ulBEozxie~4Ro+N`y-i1$xXX#gt;<AW8 zCC18OsUz%2&bAIcCU)TDVt9-xXJ6Bv{k+R3)aB^k%Z?4cHG0OUH|8!%_vS=yCm#)p z!v=LhsyRfT8Ca(+;PR}vUBKFGYoJY#vMbV*^t@Tr;qSJL6=mX>7R`xI-bQa2y?o0m zvQz^s_j*wnNwORG^#rI!KOV6h9tP$PtakWc(ekO-5p;sP!}JW~E=dI;l`3UE<SlbJ z8Xh5mmsbU|iDJFFTr1O26Bw0FE@vH(#y;Ld&1Li4K-kW8XGj9Tm1>toF+UO2FX5rU zs}(I}N}lXSbPhQ4MvW00PpaLJ5DGV!h2V;=hvKrd{m7sxxf!KpJS@MwRQY>*hYa|B z;><^dI@05Ak0glzP?1|wY8}q$66&Nu^ct(V5INKX_zdI@iIPiKma9d&5=JLzhwOU1 zHdZ|si7Ad*t_d`*M?h3sHZ0|%w6}|@T>a0#Bn_obtR~@$5Bgy2)>}QbG&wZ-yiq8K zp476z!<lN-cpix1f=@N9M!uH@MBw#1nBR!g(r!ec2b5Q+UNnr@W{{U)dElys2D{US zq?}Av#AW7H^k*X(bOd<eqGF{K6m4jzU0@1t7psT~Dl*i*lJkxqWJ_jgc(jPqfK4d@ z5VTWmEjl_g#ciO>;?Pa;O7-fGH|C%M=9GnxZOg(s;3%ol*3?+%dFUB31YB1&wJT2B zAeDUEVHa5bi%Cgd%NAYrO-iRsi2G7}ClBUjF5zUlktEC`A>0r#B5two+Y-yuP|`O0 z5n+d`PKtHg(x_v(pT$Iqhi{=)Mr4VYn}#ISVukRIMWYjkTYC-jMx=Y@eWTqFk)VW` zR1pP5&W~qaFxKBdq!1-(t6OW;kR85-VR4e`eCRd_UPE!0K-YnKf<@Jerb3oCXDdk_ z21nRqsQJwN?2K5@c$0K;+h^@LnViM-kXbtzhwyY)v221thaMG|knxnZ8y!HgOj<DR z9zTsyV_T&88_lB7>gZyccmOJ7{4q*!Vak5XW3;ZFCy?x?n?ihJknR!SqTFnk(=7=d zZTz-r`rS6{sm^@r_d<7C=z-xyU!XT;aS-{L=N_I;<%%R~#0dVLjahYgo-sD8l;8l3 zVr3BB(TVcppYxvB{TY?67-k+B2+v|&JSfsBg4tvsR8iP32p+4YKf*Da9NzDZcR;M& zS4{$*c>VP}n}=W&ngx5;u3Gc}m0TlH9N2JtZH?Fr=Yv_m$+_j7?dd8CG@Jy(X|Q+s z)by2Y9)N<X1K}VjhVJ;DS<m1<1Jc!=<AfUk{IeW)F>#jS3G*}UH=yK@V}D|WvbVI} zQ$}=vJe{E67kpYG+}|3IUe{03a;0LGh{tzae4>&<HTTX}O}~DO2t_)x-})wAmY0pG z8AG8P5E{wd<aZS*&)o@FQ2z!H*`cdGNUbl_5md`=F?%hg1tlw`+%J2C`nKgdke4~j zGK*cWWsj}PpAQpz6>y?pGL3RNDoZ?2*guFqeFJ;gK*Zk>%<EWWq<psRRc|BVH$&H? z-ltK906q=cL-13?;W$Kyvqm+o?TSoDzWaPc`hVdr07D2$Tw2iioYSukb8d%lyNh*s zMCkW%{MM~DY7$-H;8#|4q<%vS9e*J#Icb|hRu9ZqEVsh_Tw@6miG)<Cp)K6~A?al! z+?`EIuzn${H)6$d>+GqFY71JQ;|p3%^dJj4{gZ@0t4Z!KKX?3#S0vZdY1`l@Gyd=+ zpVVLxXAuHHQXe7m3B!=PbFaZxAb2!f;KP1*D|R@(4Vl+ayInIX@YYciI3=k45}*NC zx={|?p-Ml$=lAiDRQbvdd*3q5{_xF17`5D=6$HnQXXp2swZTUINX50Zxx=}R*@7bO zRhSQ*-P1|)Rj-(|jkxky5F*}cOwxoLMu!Eb!-^kBSiyZ#M@tkiE1YVxrqV|S@aDmD z`v=4IIq~5(D)`(2=6Quw^yQxO5<#l>*qUeddG`k*fmO;g_mH6zOqlirewM@YR1%E{ zbi+2HDD)Wki{B+fYRUGAFl!U246=@&P)2%UJ+)$r6(n5iHw=Sc(z+s&FwKJkDY7(P z3LuuC3~J*&!aqSDoGc;3G~#JtG0MD1g6|cHprQibml36=hfv;w%ri6V{UE-NS@|ps zPwIS{uhB49%K$-sP>wIA9vH{Hc4?UeU&lhP>Jf(jb0XDb*AjaKqJV2!__o~L)>qBa zdcn)1O=vR2Q-7aed@u<8S<r10*T$;-D4WIMI#7nM-(9_mtq>i@4sY=U@>a2d52FvJ z0w5#&h;tiFazv%aNf!_$6~c;N$oV{atIUjyX{zA<tgu1DD@h5DiLTypT04IwwIo{0 zv{b`)<+bM1I@rnJv815mQD0WI<7)aS+N#_qhF&I-Ys3jh@{8Rzgw@p!x{&$>qvH7W zr08H@ZZjl^##;Fp`0V~0A9@;&jO##oJ`31}jUZg()t9MivS;&Z<&RVNQY+i3VWE6! zKCJ-Y#}rI;PAxL<?)g`VXPJ6$F0Jyb6de;@KXR?DY%gxMOX=0c6p_(hQ!6luQ`fg- z5@bCXZFzw|Q1cyz-v;SqtigV^cbxi~;6WaN5I5!ZPT(dfPj2ibe%`)oB|cT$YL9{q zj1m6|`n<trk1=$~8-RlNpGQl6ZQ7jUHYO_8RQ+$ox??}Fu}ki6CGu|FnB$ALMh`=g z?_1eVy#<d;upT1H{!ydpaY0vEz=IX!FF&Za9xxh%uLt3{=0t|@MFCm>CCCmoLMbZ_ zK20$-3U}9aB5O7}wS21Asr{F{0w8l&hm00xu1k@-OxReI!P(9t-nx9&j4kja^D^qC z0g{u)N>76GnCN~ka;{~u241STW7)(!TE0AAUdi6DuQ4Mz?@O2+Z&TJdPiMJ0q=cn- z72H4gD2%=N+YUBE;-Rr<mhbbiRzC}nY>UFI9Et*uxb0<0e4M2#8YsQx`GV;F26NyG zdPcct+Mex-)&0$U-{p5zsRG;@J=EkmA%HRUGY8%Pib+Fe#MJduR!vEA>fd4?ms(-W zRqC!hpr#K4J1x}c3m!igayUvB@gc~61lL9E22WINtz4)Au>l!Ex^cX~Okgic9O?b* z&Ub=H4IaI;Hi#`rx^~}q?A(UlHpr%}^JqFEs?C?=G5JI+6pd!3Y+Sr8FR#sH1}Hc+ zkq4bFxMfEiLZT5TS3?s$#DQum+7?0h3E*_1VpbXXxW9(0a|~BQob$h6n=Gr8-lRpm z{P{11h4AX)a9P~&i-k%jW&Db!s(dj^+=iyXC?3E9VC|cchA7j;-vpvdB^KVU^VQJf z1sVf;)7*cJp8tH`_8Gvacu@}I@c#WZ^}Gi@VGKLieHFq*6w&P-7GtDi0C$qKeVM?m zzrdi1J5tdJGR<eQoH|e|V4UN5*$gliJ%u?k82_uED~d4hO)@Mw5#H5Eh{j>N?762L z|0vSFk|6>+z+$g)a?5!3_rB{$=ViJOgWArDR{J5=DcUj$W;`rObC<l22OheoG>p6} z1A{`1<jc02G_N$}4&#>?YFnS30{WlU;(sL*SxIpJKT9YA(C^25NNA+2wv?)rq_D9> zgPEw(%^wE~>n3Cr?^e~4v!mFqwR<3WjZkcTX5N8$JBgXp>(b8|o<(jc_tT=6z7oMU z+pvu6hkGER=Fh#OQBNf65Bd?G)7h9Aq%bw!mU=X7bfSS6d__$_NoKJ4q}{z&@4~&0 zUSijBnobT%7qf>m?;cGLQ+!9*_FQS6jBLXs19NGJRm*9UaiD&7e4m{lm{6L&jJtvn zvdaFQCy6S6O14CWERgTzh@Hi#wA)=@O^ack-uMDe_cduP-lE;k{u2okU}@t&wM8QJ zfC#@>mtaH86-QRdo@HzVc}px3JWP4nJWw8deh-y>;y0XXlPHw8O@u9j<kn-!#%soe z>@<|cn&=zYLXNM7-PEKftiD&O<iLniO*6JiXO#Z9ZrsTgYI8MgK6!YpqWGwL(|FWT zRc|j=7u#BA3~V)fJYU@=fWY<Brf`vW*W(a<;lGE1j4an{R6xknxegW?Ue&l=!4R8p z%%s7|T_dsgnH+>AGg1oXqVo4%*Jqa5keYMXhN*+*_tnz5)#a(&%L5;sSTbx0D#g$i zKsA@{a(w2w4?qDpZGgl8cK@*SgOrwW@~uW3pl)tv?6=LpJLUbc3#CTd)P;U*zMz|1 z3W8H8aYdo*?j?$|FGLCfUvB;HjXJKMa~%iSL=ie~>2PE)+IE{F%Ws`r+uzc`1*{wP z66C%84Z7C5ay)Y*9Ui{WK_T0h1}Z}prgc^DxO}}IpKYFL$cEnohRVul(rf++Ib|Z! z#O3Kd6EuoHyR_cQ=3-8d)l;X;K8AgX`DhswwxaIFEzWf?a?;O9*16#RMVr5pOj7}b zX;-t9ZAy704|)Nh*!kW9m#XW7lrnkynvR^&8xuWrzG5Nivu>X3Y{*<6`b<6gnR@Z- z<|KCL{uX0xv@OJdjZM>&gNnL=koOiGCr(k%Ng`Y-RFehuu3fduO8g&Aj*%-_w?KNP zHqk;oMo9K#Yn^G730xxKE=GGCi9V_lq@vUxEx+rky$2%b%r`MwNO_Spjw#EgEeL6; z(qg8z2C$-SC;ew9t~>6Qi{|?3zz}zWJ!~IU3CdNF_nx9p`=j3F7GYoEf8zqzVLUTi z`bX77@q#6qPlMvFy!?uzc}1E5AT}6GIMp#Y8?$hlHrEQA!bdvg$o!4)A&@5t7Qr=b z_IGXrQ4-wdGa~$EcrwYlUz)-YCQ)1oNH(7zOVi}POLUN<Q$EwRf9kuRdSnirrM#>A zmDtv}gb(F*0}1vfT={adO%Svv_F&nc9_+9j_P^k=%P4i7Pi8S0Xj%mxA*UPI`p&{j z<CrqAEWs1&EMvPoLY&3Z!xH<yLt-?zf|%~h2s{JRSsQ#oMj*d$wY=yOyI9!#mjH7+ z*%FF+9+Es3hvm^Uf_xX?vc5>yxvrQ5b8!s=FbMTXKmp(pYV8gB_A&WqUggbA>&kNo z_ET+YCCM!?1uA^H#N1|;{3V_qGl#frnS&K7QN44^q3MM-H3pH!cY!lg&A?^*!v*xY zanH<I)YA%Ah~lge+1VXb6-P|^*Octd`(vRn+9qXZWEgP;JC=9mT{>B3h@ODgonRdt zR@UT}m0tqy(%oZ_bFq-xl28^-C3(v4;u$Xa7}ErpHg=T~%XD(!C3G{(Jq%fL!RXOl z{tlm4Vf0tX$eY48lU>s1hU(QTmGE2!g3he`Ri;$<W9#yo&>w?=Cqsq{?s;^CdHm5D zVxq*Sr7SlJ#f5yy(0_#gRr+lEaui?ROnx&Fp9dBDZ)-D#e+Z&FziGGXtf|CNvI-2! z2_QDCS%8*z=?oB-%km!{H1my!BBO@4>NXQ-*g5OSXeC_XrujhW$XZszjuY(9eCO8f z+PAo*ZaL6p4<~ClBO`=i?2_gsJA9OW)M5qEJE!b^5$IAYS1_504<~0>7e>r~!j!ko zJ%4iCZi^p0**inoonDniqu*`NL)Ee(#0mD{nHX7$uno4*RQ4S+@S{winTAUq;&FDq zhxPibJmwfYQx#isj}B5cjA(_t+C$e0bi>WDy;01imWjiX%egx%7I`!-<R&EkeMSiB ze!BmWy!29*^IG4lQq$fH4j#}J`=uj`+f&5spheoBFX^2<(DSH{{p0jw($ONQ$w<iC zPOsw7C2J2Wr&CLC@&veOz;t#lcTalnjDHNb$~mPMNE0Pb!b)mh@;JsR<r^<0dnlFL z`1j6qKFOG#Bt^ZInaQrvcO`A7Dr%JY-9%|mmHl#$L-YK%`cfQZ1M!%6<E%`!JONB$ z3dV{QGyW+K2B+lU;4>epx#O*?+Lj)c>>jlZTMY>-!nrG227yk50z?f*gdtRIz$e5J zEKj&4e1VgYc`BM?CpgUB0%2w5F@CuVsCxEmrMrzzGZEiw2r$g3^dl+m`BaFyH~~d@ z4S+OdE<IS3x(eZCLF98w%|6ynE)oo~KZBVH&XjyZ`r?Vb`hW^1pJ+{MuUAATh*Xpy z9*~F@mCGa+m|7A&M3L*V4cNU2ZM|!1FM|c8-OU=`+%VfJc?|f?ICy`|G<_Ythjn40 z@RiaUyCVM$=J7|+Xf~27q0P>@T)4G@zoQD5UM>dYbM2-~%q3nJ2}{s(phfwJ8lZa8 zDU{$aa^s#y@hdidIxglLMTDabS^D19?8B_o#W?WJG+T3ReZ??7GzZHnL>~Omu1L7; z!-PKLDECOS>&aWjE~utwB$#*zTMd9jo}*RQaR81|WvuT5BdMtOfVl+CHIExTpXi+D zez6YP8x~jFxQqp9$Z>-B&g{4T&|M`t=E`#s{a{!GIv0}<!QGZ3pMXFTU0f@myVFpm zFDS(;jNh!w%OdeslcdJJ=Wl3}^P+Yfwh{*NB=CTQ^r&fM!Aaa7StWv-2=NS+l$vlp z1(2hXe9z;3;r;#MJ<N`9nuVW!|8J%~w}CS4zPo<h_4DeJ0$UPGXrIv~$mG#Gw%BgY zPP9KOiMpJrL>?-U8y2m%EnfL_*20(*K*AUXcyk>9b=+#00ti-kCLUbH#}fo#$?TgO zI!tD7;fWL{-Vx6Pv5y?Gv|PonocX?<vhB5cL^^I*f_w}1p4@{EH|X$DtaGN`H0&U> zksLlm2e}8dN}`?g>#ih-d;-o$6}HB6?#G3hEHVM0czNC~mJRCUB{xH?#r8<&^)-x$ z?dmeMG%1j+Liv-HARATn$ax}gw9a<LJCh)0yCx~P73zh?QA@SsTEFR~n+RJ*<U_rp z{OZG*=Ad<VYijTxZEaa%l-fmg)eahK_xXmWq%E}js>>df@a|wr?4jcZjq_2MpQ12K z-{H8S47z<mOY?j!P@5q-WmI1Le>QN5C;sGUy0eoNWgiXkwM!y0M@9ohka1)Za!Llx zmRqwea2;qD>AodL-$zB?RH3|Ws1_693K1a{y5ILX2oAEM&A$BkT@SK6L^Lv`=8N7_ zlV30<pU}rSOk%PvU;CZcoag9`t4wT_b*zAP3`=hDo)%(fAP6l6X9{72qpb6kLsi1P z-_cn;q!`b;Ku1yzotUsAqd5_N`5RjNZu~jBflHGiJ{_V8wi?|+FG+)_y=Gf_g+Fd# z=s$fPxg_HF$1cQb?1?gEj?B929%Pg)PE+N?R|3v6_!Da-TtGaPjpL;Gz6@ZHfZE(X zA;Y>}9UP$-c&pSkA(gr4>68}2eO4EcdQ5OjzEeq;PronCT%?%5(SdR%TunTWZfigE zE#$Ve@Y)`|sOjV}{wKP&5|nfK9$|5}(No_mDLqeXR2fkvHy3Y;{tN9YRQUKttLv|B z7)MKXJ>CPOnxy${%<C>yDM)Oqb)Ri>BJiBBsidl&N`OKtFJk{GIcx6XmLIn&)Dy!! zjso=1Z|Th3{z#6b=fA6nq(SUm#H~ikuHsbHnR1;)j+c=Yb>fj)`$wIw1gDhzvO8bL zFqy_af9}wZ;d@iSnNUe^Xqac~0-Y$s!GYFMgNpqWL#uY!5uN!e*?^1$S0*Lx%4PKP zYZdfX+Z7v=+1NEEE)FX6Wc*U91|j7(4!RG?{w$%Uwk=gQx*Sv@6ApJ(WR^K&lC}v? zPQ#cPA1<Wa)?&eUJT6>`P!14Je|zI9870vi3~U^48?h`yV7WHl?!g}&@i<1ND^=^1 z$2I=y)ZdZX<cKBN#zi)4S8@(sS9QwyGxOgJ_yQPV4E@%(KVTsmw}9<HW@j-bzJ2ia z0qwo|hNG;AuPx^6aI$e{gA$|Gxhk?pm7yfHggtD{Mi0vF8kB-ryVhpL-NlzA=<0~! zGn+Et2+a|@)5yZlOvGnQ6bYv-GS;u17Ao;itHP)_GC0Q%g*y04umiw($Ap07y7Ozu zi-1tri5i0Ap5?A5kG{D@0}nIQ_N*5<#kmT9xMhszeF>|vsE^|U>6)&MBX36zl;|iG zUY|=e0`~?@DNVoi43Xj_JtR(JxyUPvf5!+!kjS-91d7R05bb$M{u1S4>I9X!D+6y_ zf`awD<XrmJllc8|dBTSg=O7U;w9i2am;6S!QZt?BI4lCxK;7N^kbOD*99<ib4HyxM zsW&W5q1TCugyjZBN;Af%oP&=;l>>%!m+q=ryidKVHj+IT0RxAx2&(P{Ujn>|BoD~% zTxo=i-5u6oJ^RH+&*h93KEwz@FujoeDO~v~Jv>j;!=Uv=I;Ow8^!M(CA`y~o+uvaF zG&%f@3~n5*rTn`|=XT=EL8o6#>J%S+54{e&{b*pfyT+$in{K9jSF?_3kjYNp>#W}; z`60RbB8#BGSBT{L3G@5&pd;ntPQ65)o|0-$5$C+iyaSBCZWsq|lD`x(6aYtx>F;@< zZVy8@yjoe_<n-2&?z3(KnnJKn+aBd@d}8S!#XvSbz8_Czb)H4--itOSfEfq8MvKTC zO5RtOT|tW6Q)m4PB=lXp=L}FdiWW!J72xgh^NEG<qXhjmQj?!f4{pve3DM4`o|f89 za239xzk?V&SDuBhd1nDQyJRP2ATzi~TDaC$lqyg)p$%!j;U0RG&jrkb+JNz=1#&1@ zn5RZ9mEu8~V<g3$dFZOOWR;;Kr~#;^P_VH+0*lr%NG!Po&UYJzW&IM2e3=S|VS2Tc z4x4HJ-V~iUc#TPPxG%ciaGn`?s;ftqVX<cv>&kDT7X;erDofDh_L**IHS4hSwc@)T zPueejX%46`2}E%xcdiQ^CU%t_!zq1X3ErQ5i5uz5qs(r~;&l-v8AMWKD7OoKq!JeZ zPoil^C~q2AQo+C&j={Ri0nv#c#JMTih*w*rrf$Z1n;JF7u>w*7DqS3zQ*AeZ%o)q1 zocWFWFC=j@-_P7sJC@jY0NYo{KMl8nf)~4n_=$o+h+Ym^JRQu*9}22zST|4qJ*~7J z3m}JccifX}e}{u*2Cm@pWqaeue%|wg8MK9izewd(O2%5$PkDi6e!L6axzdgkG=1yg zVtu5b%bdz(gkd;*I>gH6`HPu|eGFoqeljY8a9wkwgZG}w&XBOIxPE4mr}c9Wxw#Xc z0b`Ij$21A}p-KXQ-B;JwnOWIdhQD3UDL39W?3n@4laWwKf}vLBv3#5Ommv0n+O})O za~9ee?Nwh`F>JuUigc{8h|)&tvN_P3XSkkBk37D&^jhLyn?d^NP->saeb10)^*)7? zAOU!WM;s-?ab$au!Z5%0F^Y`E&Nyg4P%h_(oAar_^j~@RD4J&jE!bbYZsG`KEm{s$ z7Vv}YQqxRjvcAE%xe++?G}fDnTGqZJkz|wRayd0rWFioQ{b3UMxGMx8y!yF*;DtV0 zJDm27z^tYS_g@-_^}D-O^OVBzhf17itp?qCtw&u3nB|7gAU^{BW$sc#l0k{n(<}I` zq27+LRL4`+fH_RnG;)#=jn7-8R5}0jasYjca~|H%8i#oFMq&&Xa&oHdSt9`>m3jo5 zm_3p#TrXU{Z^OMtbT_Kcwnot|4Vp3gGGLptXBgdbkjvGVfn6^3u18XT^GLgWzcPEO zMnlePr{thw;Qk4fJe}MxTF<l%0=_dz`V242`g^@B35bG`vD>h}j_22FZKvx7tVJ*I z>GGVYp3NB+q<B>$WV#}G*i6{(IU}q9*#L?2X~=eclyYfd_Ol7A-4N3DB@(X70u@&U z1=Ne>K)ogu8h#ojyG||mGKjEk?h|OxV1W+hR4bR|eI|P(PA+cE!kBlvPC759S_%;8 z!-Xo*sR%L?b&&Ha`VO{{$;Ml){km2H&2)#WELg_@F*Q=e3dMB)Ju;MWG7Mc`nVAWh zYjgQF<Wagz>-iCiMPm!wz3oIDHqNDUyy^2}XhR(Z!39jxFc`#7%iL)g%qhUR!S(kY z#0&Lt7%1nFF8~xB42T^!bhmwQMK}5e{Z&F&ab*ZqsU)z98w((Z^uV5bQMwv<KjGxa ztXG%Fh#5(F<Vp|uF(5o^3$0)ol4Di7P%hLGM3C7-%&(c@(-yldmA}X|5>f-W5x+#a zeToFFKjUH+&MHW(2<8GUGex_$qXB=A@BFFi7#+6~7at%;NebHkv+1E1h)n~x(A6#P zt~3&Wd~!ZQ^3V;#17IJ4xl7pX>C7turhMxaUT}TF`SZJd#ciGGFX@d?eE+hQ=HKeZ zW%2Hn4$wsQ;DRQDJlDwrQ8KR+<@L=A07fn&Qhiv1U8CTDY@+LzyrjG-t4t75g-QRh zy7tl9*Uy1=l#Jl-?}@sr{$BKOW;Ce19hL=^-98x@fE-?NTLiU0HoqU)6Wi@9)=r)q zrd`E_Ey(hW#_CU9M5%UoWy9sTEF|HXT&}5ia<hmqvNdK{+Bs`tDp@da2~Q1vd<3XX zC-fps&BnF}9cJ9b^T3VOu8ij5bAGvpxf^2~$ME#REjdw(_sMOMOfI=o^17P_oy9XB zp4oXB)HH>>PdVP2!a+GHfuH507h|vNKv7M6qM3VI5Gl$G1L+BuzgH}P;CK?RlqAw? zCg?Yff+(2cJkxu>Ev~pXA-6wxbYbyK#|}&x+A9N1JLSTTksv{dYK??v1YNQGxe(@w zAmjlmjlh_?E>0Hrb)~(vxE+U|W#{6dv^M8Y!Rq2EBo37<tmz7}!Pam#6SDDo`X-vo zM%vN^s7JD6rPSpA#_@)P?1y*0*AbJj%FLsjNN;}O^p23>k=C^1#m-yQ_ZLcKg%i+u z-V{%_kOqK5jWOPUT@org@ZOBQmB*+S2bn6oeHv&Oyag=M5Syup(FgIpYo?1MQ=tC@ znaui^s%Gp;lUuzEI?9VkBImmM)0kjP&QL|bEG&(U<$W(K$kFSL`;v}fIr}VVN|b0- z=q|U`sjx?RzsBMD^&~N%aqP~aQP+rE7nSlzk_RMlQD|$$4G@`HL67_1bII>w%tYcs z7KfSn@M|WuTnQ{hyi&8Mfq6&n0vmp3hjMKA$&Tvuma5o_PL)f;vNK@qd%eB<xKGP0 zU@5+I?yKQgQ*v!2GaxK+!aQUMpf{5-X7vyAfj=5X&XI%eUXp#cNBEEte<xnNrIM^Z zW$!j);f`e*nq_@C@7^+GzPg3~=CDcIcN|(9tf&c2p)PE4oW>jT@|1M2L&Iatb$4N( zk4Va99ms1r016PFW_o%I`~A_#oK<{r(Y#q^e-to7a)3mfsKs(Jy*a*3y%I#9IGvm3 z?-c*@^<EJo|0<sDw+b5sLx!;)p-1(v({S_VkBs~8LLynwwixP&9^8BNZetzP6b(3U zd+0WEh5p9dR_Bu)o?E_U@K4m{!bk0hJ&Y0Cj{3e|9ZfOZE6pES`|BwMix{_D>3Ge^ zWB!hf(Ad@apmQO}h^sR=t4>p~A>?eLS|tDYqB#~2)>O~6)OgNLSXjz`uPGx(;n{g7 zi$_Da*3)l~as0EmJ9J>O7T@Hjs^_jwysEXsVYeS52|Gfp*rc>L4A6_CP~0OX%MxQY z+S;pG&PulVXbxs`f)tPR8shHCkMZ<!V;-23P)hRDq+v&#yPY@2!)vCGn2(pxel?!E zd<@|14Z7#J<6E}5b2!Ki#SCx_p2im+msejM+M4ypVM?tGvB*UIIx(NUlniiPp4PvP z7`Gk3AVTxj6@3ng_=e8#-Q8n2S%bKCu)&raJErbg=i9?2ENHYDMv74V_Oq+TGM46E zo+Jf|4mj4CRE^mKfieUNPl^!)xe=c|F-;bvv5258>QJ}6rHM!Ie6~KQZIEq)?AQ{y zF(B}bqU-af&~8R7+t~sc1=4ny(oJT!Ksj1?Iey~-GB-Ca9LWMF$oLJVA68tM0?pug zMfBEdR8p{Ztmqu4JSZDyG$~qw=67>6d)o%MBur`VU}CatG=TK{qM#G|;(CxqMY;jY zTl>-g$Bt$Z0p$8=>7)aO`A!Fc<cNwr50RUNX)OE~A~!`Fh<Upef9}c<`W3p*<eV%C zXpSQllw6O9O8M^6IW%=N6!0K5?+U;%5j*!%oKhNo47QATi+=z~p1Q0UWX&S_Hr5t1 zzNL=Bl<s@Ykc0Ul`Y(uJBL7+w^4>-<{1t_O>>QC5x81|Bus~@KiBFdK%X;xA>fFye zWQkzLQQCP^fQPf(7{aAW!^jFsW^~Q);rQHNk;GmwDiR_#r4=}cT_j@a-yuHTU=1R& z3#rB;44l}#7Mq)Dqu{M_$tCo6AIEr%mBeEI^Ltb3fouWjm@-NYldFC`HG#Wj!tNc# zoei~9d>-Wfr7A&lrI$|F6)^w?o@&?Zj_G&ZYNQVKcTEQHsXbSDZ=~U2u<I8}zIAB) z+S>6c1)`g-cfxXMz0NAAm{M7%$sX25#SA596@D;he}$ucKITVqLIV;q)iLxsC9H!@ zc{GIq=g!CuDf7eap<X0Cw+(}{Pa(AocOr>dJMSnMp7UdZHQ`tz4{@}u4yy>k65s%J zeLJL{MrzW#G5{4U>b|&J_s_ud*QjJEN(`V~kD&=BELQmi8BEORumqZ{&gPQD5FO9n zDDe?N%}SshBQPg1NVq(U2deZH5TY47K_%dqKO(6zNyg2(b|XQ)D&h^=tCc&nY>s3V zQ<>F!7m%=SRU&E_v_#*F$5R|(Z|YDwtw;3kbNxPdt@e3z)?|$#1uA3tA2{QF`8QX) zzkT#7E<t1pcp2cUeXRJ{Dn&ErqP=^6L7IbN)!zkY9GZ=Tn9RRC8X^B(yoY4G-cn`N O1l^2`1^)l<vi}215Io@k literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/guide/taskflow-login.avif b/static/images/docs/oauth-server/guide/taskflow-login.avif new file mode 100644 index 0000000000000000000000000000000000000000..a65883c42d6f57cbc7984d3546965427bb973f69 GIT binary patch literal 9317 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/guide/vantage-dashboard.avif b/static/images/docs/oauth-server/guide/vantage-dashboard.avif new file mode 100644 index 0000000000000000000000000000000000000000..914c30a57ccfb56263da3c71c1fe5273a1a3b6ed GIT binary patch literal 16679 zcmb69V~{XB6D^94ZQHhO+qP}nw)u>0+qP}n_RM*|eb4@Ts&1!})vK$kl2nDA0002s zn7Md57`j=S0sJSnmS&9q(`_vc|HoHtO<fHCXa7$KElg~j{(mX}fP<y6%m3B?FTy!k zy4e070{CA^WNBk>{68il008)3`k#FMzX%{e`yV5=w6yy_mHr<q>VL!(=zm`S`5L-0 zF#b<fvvhEB_zyWO9gOY&Ll{FhM&Urx|Ko;Y>Fi+oKPLbH(El>f!hZ#VgQbV%|17`| z5D@<Xnx%v7|84(&jQ|b=0tNsOV6`<dbU^}ug5tC?|0x&*!h$7W$_@a;1*r!Z0ss^M zSipR4&os$lcXl$~3*Aypfj-c2+@!&pQiHo@&nFjZ!OqHRergRg{YcEOdXBXQf%j)s zg?pj{DYnmfT|6_97l}_JLzy9+aRdJ6*EzU+>0FuUj^X#1d_NPLSH>C|1-!c|vrw89 z$)vv9-^lYv4DF!q3PO0mN4j_yg7Gs7F=;TBL&3>oEe9kwElpRQSCL+>n4gRYsd16S z=1`GUN+V=~#{#JTl;1%tg_^h{u^D`hwOLj;-q{lAh-l~}uw4VIp7iB;rY9aaQhK6~ zt<}w)XHlOiwoXr7kI>l3GY9D?k(V{yqtVJAwr88ti<cij%0j8j%MKeYsA+tpO6|(c z{2}CGl7)AqHKLwlUwJv3<Bt`uHh&>d=)^e6EbjA*b4vkeb(lT~hh9a#xeR%_1woKN zwi`(vGcVaDO9CJ_s8Mn>W9gS|$bj<69Dc2@d5d^g9+MtoSq}mMO0o9YIOg3iGSQ;k zrsn2h3|@Ylpl|Cu+js62Lh|@6Az9i*TD;9h0}jWd@<h&Vnl)h9%SNaz9C&yb3I%v~ zZikI8HIhNU0+@^6#WL<hIdVc#Y|nSi!P6*=MlJ$J?$bL+ne3b~D<?h77NjTC5Dio` z>KWp$FuutdZc<S^oX}BtITNIq=MpmoYz=7Ngm9*`D&#yGy5LV^a-RHU*i2>bg&o&! ztWL5ybWK(oK5AtGYYn+M<&5q>@>>rd@c0W<?JP5GT>{a;#$z|ES^3)(P;mYmn|Hls zyLSI4f;csm#F5*P3|#6e9>|FSh^5$P|3s1+#DnocpUeAtSxphW_~ji~5{KHBS(6<q z<5lQpd^oPCHS^P?=7l79OS+uH=LfklD%vj!4S>p#JZEmU%fmrnC-15{tQSV`y^1Iv z(U>-UtG-a~{}Y(J{bl#g4Tq`JU$~_%Rphc%?M-qaW$`Lo9OqDTdHsRu6|T8bGMHHW z`&7ID8#kFKvA}|{>gsJD)pn|Sw_o6zTI<4sp!gkG{~2ayi}O%0ZBojfFD7*^%j62w z7&geYk8Z^jmdY#i=aM<fdhtg0LL5jgtA)5}Qy=gMlr1Vfp6ypv{ah7EqltUT3%nQ_ z_&cs>ZRSqcLxa?m3anxAUHz{hG+=mfn<=!1@ls6f>ZgH7&it`+w=)Ry-932u!rL-K zcJ*5jYG4csZH=9J`e{cy4eo-qP;;9ZlC;Bcl#!0ELR97pw+a0voKv8?w`fO}?3tDA z%&h<HbW7`xRLxY`qsx83-63AY`RIC9qhzkm(H8WjX2C=13NF#_(}&8^FMktqdL!G9 zu%`eA!@%4vpcMc564&esE!_Z+lP0yFw4vV`O=V)xEyqX7HLVSPV*4a0?2x&CMvf(c zt`Oc6^-1wM8zm7crrjR9*N#s{UZs$x!~W;%wV(<1lTj|mBuc6EKG6JxpUH|CvspF# zIJNUi?`!=$d+^7ZGI<q_4##K?Bc#4zQa7t+@`C`t|5yNwpdyNtO8*CW$VI_Ev^a>V z_}KB~-f!njDbky<8%OIpmX}cF+8;FwVNq48()hg2Mwsm{$f(7VYSp7Z>0YzeA4rMw zf*rbN3B^a&FK5;LUe`LZnrVFhM39D~0huz_OY8m?IdVQSuo(#WG-RMIU`nMkK_n2x zmz^s*8YGn?qWD4Jp=5Z?%h67cs)t^pd$PG(0P@RhAQeDE5dGxnm`BP{BR1UDd9STy z(jTwEX(>wVthTH59u%IV?ljLSEi+>~wFNm}{wenj-I?`66A*wSNJE@WLG@0${PC4- z!Sx{XOYm-|MYq1D(b=9ovCoT^&SA*OhRv)d3LLTf6>GT8%E9*e(%w)#XzqDCT=e$p zOZ+6(*eG?Ds{oyMe$v6yKb8S-rV_`Yg@8-7NWCa;ywRMU@(JO%HPO?$IN%p}=XUYy z2%}|wT!K;ZpOy)vHNH7H_F7-+VI8a=F!Bxq1i<Z|@QwA?vf)-Ag|vXWD{;^Z;`a9W zc#B_4Tl5M))a^3cl_rMsTD=~tX5ezZ3KJ0pn9OLGaDWH@UZr=-f*yvLnBmcdV_`T< zj>M?0-<nVbKjhok8dmZs2ZzD<$+Pqh`MhpB!tGEF7>1@c-??=^B3$HE6N;#ql8px3 zapTgnA91g_w9hu+4gi{nG&}WCC*OqVdFxW<dGBKD!(XcR@?XR<w@=+g$hHF~|LaKI zHE0wNKpDwkSmgc6H_Fu5LF6-mL>L~wV5<*Wy6=@vsVqG4g_{gmc=YAw<#i|KI*4A8 z7T%nK57Obd+_O!HxK)faHToo~&+tElRZBMaAW|>Q?dpnxcSA@!Hwz1TAms4#E`lC> zRhvgo73z1FW8+cHAga4*kL0kHu`OiY*m_E7k8;W-$PLNGq{ewTHc!RT!jLu8$QP^6 zjAuodAl?n^KE+b*SUSq$czdjfC-rErlGn&^8ZUU*f2DBC0;_!1ksCW@gIvrumekf# zQ|(g=<CZo20x~yE+Rmb-xmu<$JD1HWIsH={f>nBjG~7Y>+r(^Nt!usd*lBBlQ3&fE z`A6qnYMt9D)U#c)znqpOV#@ezJ<y7c-kMULct9-6QI+^gcNV-%Hi}twUo3BB%-QTm zYL2o~;Y|W7%g<d0n50LA)I*YeCc=-*I46|^@0si2SRVg%Rum?FY*&b%$!*E8+o?M1 z;07I7f-(J6PR{9$QF#O{9=to=!>(~fMqZIHS4J}*XpOobpC*r{nOVHfTyg_U>iKhv zMz^}*v$o3(C07#gh(j6N(S_6imhYyD4K#qZz&kCiA6y$cMI3ldh1AlJG9|&v$PQT+ z*0)PNM(8G7PtJCRH+UeIVW({)=KF!+Cm79Fu9c;Z2ezkKjME}njb$++QJ~(lvq2v( zF4V697_+aE^2|&~(-k87pHkrcAo^-<0BhEEMb3FPlGT>K8S20VJ}Q^KGtl|XYwf-` zun6v2io#b5@X`04M(V;eQSALz0moL;@X0F<OZSN@AmN-x&Klmc4s&|2JXC%&d;CSj zYDR#tP8cb-YZ5m%^&*$fqEh#xQ`Sxv$!Q|6Io-)h<+q1rqvZV(rI3Ax8H?f+?X2dv z8FCCxB5f!g)5%;&yi}JMEDS4|BgSeHM=PbXE~r>-q{6AB3TN??{Z14d)Hh|D?-okS zT<JyLm-bz3fiv=jNvXy<r<NztUd1X+pYdxjl507`7B(bP&t{u9)JwzAqm*bQ_B?pj z5fuX<lNqeurnXjsz`p;*KgR+)^8H^XNe+X!;)DKT&TFHI8MUn*NZ_+~5wPN%q+bBu zF;mFRt0^^h*NpB&q2V<rVTz1!;TR=}Xo@|;;9U&}<bh`S#9<^mV};~uhs;Xy$92f^ zv+_)t!mw*9%LmFt>{k9hXauk__+Go1_n;}#76L{2w3>BJ(qzn}n4ip^wHI%Ba1g88 zr>i(WaSLHb0{<xw4mHw94aZi3G34}G$iJ#+7cCUMntbF=b8U&bOb#HJ-%zOYQT@EI z50ZW#J7(514v1R($+x)Nes6$!Rvd^d&z4OsI{JWI?@R*srnX;gU2ae^8P=~o54_9R z=X<K{-tR)Dv8=uwTT!JySd4Wc?q^Gn-MMx)@+E_Yzg0>486Wsd^cGi`a~{0r0})q1 za>=S^*pzj4YEd_ugac2Y6GDwd-B2J3>#>rlm3}D|d5|!3sWyp<bohYV_UAoQ5!?m3 zmFg@S<kc0UFug0A3Un0hhSDBr5}hUg<=)VUZSU_T#+#XvSkF~ohr^Grz3GzdMaf;& z&`N{gIQj4w)Ru%IRTKs>=CJw1lipZ}Ov(fGVIqFnTl^aV-}R4}{SBE2rE2%19fl3^ zw7rfo(^GIi!I7VG{vZs-&LC|u?zLH0XX&)b=u76r=)tyl#c84U?Vd$RO|xQlO&d5L z^{_v<d#L)0E&K_yTSO}dM=BN(Mq_OXC`J<}8DM9@(blnHjQ&wIo)xL|oQB0)i$wjq zjUyHaP#6gH%v{RD?WIiKM`Tc#jGSO(`$oy^6dGi;K3l@+H%<_Os$W4_5r|h3BNNi7 z;zExEWh&CF8^R>aD9BBGkiv3gYg^$)P(si-u`&7-*K-w0ID_P+n<Jx!4IT*}L5stl zTv=lsg^^w}s1I&jR4+W9q)LjWNcymz>ux-SySRk~JOgNEt^CN@@#k7BIx>L_fF8J~ z*2aSpc`uc@PrR9nNy`(9daM!gr7>C1GWDlON-7{|$Lx)B#gkm8SeT^`?(M|CU?>zX zP`1zC`B|qSWfd+Lrg1I8A)&HXK|0HKXZq;Ycz_<}p(T_rP3nJxb0J+pH8L>F14_Pb zd4!S}EP(%XwRx>|xXusswhTqIwZKCd=Nj!I8!DFn8|lLQn(-hYIox(4mUluB&u~od zp118VPOXdQY;fkgYyl!@%Vg)HV)zM~5U#xK_UXe^7(>umX+-|u&Iw04^J!mP<B#hm zU*V?>>@zaDstK(7pkQck_Fix>V=k&~sXV(OlM{)yn~gB0SM91$S+)Hbo}t2znR<2* z&F44lBzHW`7X4;MO#<Y?Rw4k3C!w=wW2%V<R0(XDu!R;Bn|Q{$9Zto6&lLEx2$BMK zH{4ZL{#pITmBFgvoJD3KA>6L(SQB``y-81@Fo}h{1~u+xuvz*;fLtz)`@_TdI9daZ zvKkF|N;_%~B=q(C?z{kG0XCWzr#dJ}S+smpW_Kl}umLKS?|#l_Ede5mZ3%1eoO9tV zsc;cA_Js@`H$$}V5ahUl<?UK{OyjZ6XTT$u(^Mp3Xga`w8cdhxEr4p4mdV{|<7fr9 z`_nmlHExRZ7DMLHG)>}0#UTR}N5%$@ve@RCJIL6al%CE=2qF}qyJ+dlmB=Yz2;gQG zRCD>jcWG`whCp`nKGiF@oI+6a3JfvcxfjJg@)`smb79Wd4V@$wQwG&Q(QF}isTDTS z+|vWxvb|W3KQjdHm~%V~+mq&(`*O%iL`2Rk^O^$SCzLMtdJy03biR>0xjffmSe>q1 z?=k*-*1B$L10BNdhyDQT9ItAqHGq)3{`*wdEvT8bwhEYu_GUfzXDJ~fOH!<VK&A>K zax_;JR4Cv)VN4cbZ!DD}s(9ku?fIKU8t3P+4@CRFrs&jn<W>X)9%daX;BiV*TYzex z_Js-PH(UWV`;DHJrB&ySyPN?j-S_O`*grHP0I@A>8Uum-jvQ`4%3xb<ajTiF%MP?R zHkket9~|8?R}Cudi<k{a9Dj6$i2LCU{>f!f;5rY&CVWu!q7jJ7t|;Ix^fFK15&<vz zj|N0Y2kBp0VTxh>HM2lWkx+^wu&vs(1e(19z`1AJs~1brd}Z%RpgX&C+y7!v6PW8A zKE~3=bQ+N>=&$z)d`ZnAa8J9L@z3h+QD2Y&y}3b<NnB{BAHV+5hCB;Dlf=9jEqZBN zU+m`oJGy8#n45$(ca+GH!O@Gow0E*}+t;4d$mj^p;U*XEzo}chEHol8g9@w~hI1&; zRms$crc;%Q$J%?TB6Y=4eRxABUXB^+*uonPn-dWbIpV^>rI9n2xa3BDDfBFSC54`J zU1vuxoopr+P^SM=zE13!^v}Wf&TYwb)#EW+4S#+ZJvn0?jt~+DNL;mO&d5&zjsxcv z6``4O5aHXcgT6gQ)7I4w18~$E!QU!35wp@cdBF@=?kp1P1#aEg5TFb$6j&9lzzt(I zOV4}^7EmK1%3x2;M8zemjaNAenN|=rE**A%uecDc$u?;Pvqa^}*QXZd2A<7NN6}}` zHg>1YakbL<fsbBEe;_iK%hdmbWixQn=)e5B+41n;tXBURs$GtEHCi}upo10<#`X*N z_)yK|iFLMW=_LS0r6Du_K2&-OWHKHHEL=14`nvH%gZnh{9&HYBnlRM2%q9BeHGf%s zFVQH5z(0#HoHVp1#G`6-7q_X6imvuMEEYG;&_J-AG>`@(^amn%ARuN6i{5j=g%(XX z0>txC2WwVGaUm^FGh}bqs#Un}MPLLT4-!01lT%_HNB;(ZWytgw!!A!U^Jb#cEQc<9 z9fIHGvyx43C|!}vLBysc2~FM=_Pd=}?kg;ffkVP-!_A`$T4P96dUJQ&@Xr=yDDNN? zHZ#;IfqYjWdo<)7$-(aC`h{jZP(Czri&F-_MbhIs2sxmi`YFgS1HN`~)`XarSwz|{ zyZx6N1yU&wd9YqL)8sX<hn~hZ{8=O6z;^|CY{7FPeA9yDq$B8^V-KELBn&x!h{Oda z=2AZUZLc*pTN~avLZ)`WgR$DFKBm@k+X8TZx)ooggt6YJkv&c$2q{AJr{u7j^g>vr zgU5eu=2@naxk*IcjDBDCanm`5&?dG=ys}XNIkj=u9vTGkpt_OL4Lok>qkw$^3&p-U zNN@B|P>7);VAFR2#$EP3em7cn@1TipAI@IUHSv#aln2z*#FWGl?@*Wlx#oa>^U-YF zTt-lbdE4RfS&dda)ze2c@0gXC@`BNdu>A#2^f3n@Z7Q{4E`7cK3?O-|`X=T%-rjaX zNc%856UHw7-{U%JspvxAS|DE<a+U?#zL6Ea;4;v@4h<e&m1?SADPSj*D>x6rKk*EI zbE|l%dCP;CelT|158bhXRy<Lbiqo{UVbyPMMWA0+seVtMcDS+5oo8M9B#wUtKUSe2 zR#Md3v#&;(Hpurr%758aaYPgSJFNQi4OGV254jw4uzEeoL%V4E@{npo?Hi?mqByF< z;m^Uoqxh3|l+3EEKvGP;+?NIx_L%KmFWU0@fRG`p%_mc58`*)0zZ+ryM&3gJ(!g`9 zAwrXLst6n>N+2f@IKMzZi!@>nOZ**H=VBBaPf1po0f+xt9~@WKu|?=0!t+0@f3n1C zTak#P@~YaP<p$FF`Q^wkK6u~a@!_gOz~w69uHrvL3GN_9#qBqPlpGn#YBtXzZKiU^ zgA^u%P4IAE^>+^9X{|^<9n`zS`rCkVrCWN?3ecC2^btpLh#Dh&C0s<XBZ@dnvp=q@ zQ<|p#V>EBW=<8ZxOMkJI-uIA_k>aHPC8?X{Q%P#KB3JjDSxg1LtyWDpfV*yg-^^=v z{t3>=l(1hYiU$+IGwe_JO}Rq`_H~_^>2sGB_R4;Sh(PdPy*1b@y2wQiRy}yP%lHf} zDg|xQu&e!4T^4qa&C^CdV)~TXU*MxJ73gg+l9@`Kb8LGY&-zx8I(M<v^J;6}I&?5l z;LHEI{R6pa6$&-FedpH9%DZ#QdZyo6iHYGg(50xaA13x`#8EE$dhNpg(*pZ6sJVTu zRBh-jRxW@DB^d16gzxNF{eVsC<N6gqRroQ`JdBRzy({cEb_Pt+ePUS9WjkuTu2HyX z#9Pf|;<ugL*wR%{;_Rne*!v7_+kk`ru6njRMGK|A?(U~3|FkNp!b*Lz@8$GKb(^kI zsIkjgzq8pOfiF{B(D5_T;Vrb}zQ+3jbMn+;^QCVXhK-as1F*vD){bFS9HF-zfZeH_ zj%dgb^%Yl0;%_yBncFp#sIup8Bq3pzL*<jAn%}8o;&~%F`xhB#o55kc_qJKffOrFZ z#%UP55u@3BPhFfEnlaVHOd41By91WGU{&)?Y+`_?;=!-xxdqo}JX~4so*bVJo`;cB z^v}JI*S}}ZmDMF$!02(OyI+thp;jJ5ya6I2{*}seCjv*5xOgTQ9UU*#hDsfb@dZ*{ zYQz$O7waWZPDn63S~nYEe<Er8x_x3$taYB%En=+P?&|tj5kZQSe!oUz2g|LwZcfgt z9Uk{6R;=<}GvgptOaH%{SZ?S1uG9*Kp90Nso|CHfn<CXXFUT$tsZ%lMs)7-`$ch2Q z?@^@&=DxdUs-Jn@mM*Y#HJI+n!=lP8<^>pnsW7=d^^l?z_tHl7ko1YIo?jCf?vw!X z!|y-pGEwJRWofZf_B<Ubn<c6r%>zI0O7l-}LPN?iinp!$VC~x&heq7359$usEayl_ z65C5~1;oy4qvmLt#$+#EyE1w+l4Qd7bd}j5z!U?+qJdmk>hz|401Ga$D}?1VtH}b( z<*_euy<JJk>+zga@DE&wdV{qQ&4^_`pAb;^nzr}-IuubACVdvPTVw6Zv4T&zN%W?e zXiUHJhDae!8S;pJ)f=Yy8^GDHQY}hTE;XIUyOIWLl2Jv>0Zzgx(nXapGiOk2^45&D zSH0>CwOQ*(A|+#QcBG@bdTC`Xw|m2mHE=N^x3H_bCnRBCy^kwF&M!*h$e5g@1?K{3 zfU*~H^;H5V26Jehd<pI*3C^ie-hQmHR~igA5iIqAzxa99*0fQXK#DBo)go^Aqgs;T z?-K6`mMv5VHF^-xm02i=GVy>~YSK5(5St(+=a<-%!E|)8dk}zSOBG|>BfE!$w?s2V zdvxqC*|rPHx7iC-F|T>U#Xu~esB}>CyRsmw@gprn(gYaH$+(gPHf&%m=PV=9dkkB} z#bnYWpJiK(*;#0H)3jea-A+J`SHcG}Z(J82wW0JbakBu_OOP^d%98i7KIrIY>Xqrz zi4KA3%aD#5AOBeX($6~DTaYUhu-+)F5BjpbrpA;o`)ruZS|2x}Q+jP&ZsZF%VZJIs z8@kC!5VJ9&wFq+zu{`@*)*2OaAa!T51R^3lU9jBaqXE1hbX4NvLN>OOfP7UxWtRvX z>G#FRPUf~1d7>0{PmA{LU2|Da2G0DeLBv5D$`gvwuk~vBnZ!EvM&-%f_Bf0Ctc%15 zMG4LwjLUI-uR)z+r2nrs9kF;aKNB!TalKoFldteF+?56Va;=VLH`PUI>a)OT{SjxD zJmz<IgdU$lpcX7}_SyZnMC#%?jJ8;GzHhgvSnE8c4?{~Xy#)#CK-aRJu0czm?C9?# zMPX3Jw<wiDScXHPg*~Px$4qs$$}{l0>&JqCpB9H^q*nqlr7mw(A!ZM|h4Ao#yIItE z+B+I9#F5n2{Gpz$g{KxYyx9*2CtkSAJ*!>L`JVT`cLi3&Y}6q~G=PRv2S!!ZGu|6F z<I3Ty+53(o&V^g3-z<%yG6&XePs6eyjxI#Jh_AhvE9f>Ud>uLo@)*(cn~`B9IKjVK zp^5B8sA&uv&>~$NqXn}U;Bb=rkEh=aT9XD$hHadSVA&9d4b(tv{$E$<Gc-wycDcsI zS%{#alUKmpunJ(m1hdRWc`>Y18a4~Y>*7#%DXSQr#u3B!v%Z(vY2onga6P1deDqal zePB7@npE?i3rvP$61J=oD(zV5Z`54(`w~#dw;H*P=Jc`|5b=U$=-v4sP*L0i*{|c+ z=bG8L5@qZdwp_vY$>_&}pnu`o0fB=t_!NORJd8kKe|mH)jpspu@H_W9!q3K6)+Qg< z=bYAVUm2Gpn$zun0&~XI6f($^SzXlfsmN>>w>K@^$SOK$QSJ$<l+bz0a0e0V1oNmp z?141p`AP&17n^ll@?o~=VhpLIen<Ia;qzNHMsu{`oc<T~X6NgTdQ!Y$29?J=@gv*K zPIZa!z?L9u)n7uYy5^tltVu=X61@zIbAZ_`GlWEyRr<yzx`#kCMTUFx)n6288Zk4B zE`lIohZi`ih97at%%xA1!p4?K6&uw144t7wm%`nCOhlS$$fOu%NCR#}d#aQpAHGWK z<8Z}5xw#T`D-M^A<(F-ijA&;&)JG_Asvh<(2jDldsT%h4WF;|`WngPwQSz0-!r!F_ z`5CUgd2*c{CUdN#`~&9KQ#u%k1VLfD>5qr1aFhG-vfd19M+2|co@?XG9P?*v=lvAH za!dT^X<yKq%o9jzk0YLwlkYn*Xq<K5Th<tJUCG?BC8+20esudT;x}rXsB|&4n)WrM zGr(Bp(WQ4X1U|^_2G=rWliwl9`Pn!Y1qNAQ{XFfL+dFW}xYXn((WmI>U+=P@^uZ2p zY>j)ww{0z>I{RVJdc2tCdp02Y%*0q%SsEagNRt121+Y|ho28$*85UxNKTpZpl$#Fn ztqY;h=z9v{>qbk!4jm*Kodox~%aE2wv`tr{g5Q2OD^_{KKWKnkb(D49ShvPW15Dd< zd1UrVkc2v<pH$!NrI@U`d*M`}-fqXYY2|rDvOeBgvHtXoYIIVz(F5Htfp+i>(_5qL z6w8MpIn3<uY_t%EfgMHsx8hw-k!b@|*<nAfx-Lev@+slDdvVr#;GYQQCJC1Oj(>_O zcc%9!28TiUo(s!!k3`QHK}ML8>wx6w%v-|*1x^5TJso<Qn#36LYd8B^W8XAqoTVnQ zYnS53e;%mu1|wdq?~-C3l^)S<SF!aLtmp6aKX&J7rG8XQN!Dz6tvjZEA??3<xOf&y z?(q(U6Aj7pE`2Z}J==JXzFh$vWY4NrglC=dd``k|j^nL>npQ2%6$K3Ox_v_e8^s@L z-<gNVk92@(DB7F4#QN2QMTkwyimGH5NAE^{u4*Y)EeNwrxhGG4e%gD1C3DZZmOTA# z{+^%R=iI?dnzp|qQ^;3k_eimG0C4Nv@Rumq9V@_v&6@VEXoIu+eKm5nKe0d{=1*bV zv9TWogTb70jXfZ<o#`cDXFs+aO2mnFaZ|T~aR@;(0}d?te`QLIRxKL%mxUtW3LKL2 zwx%ouH|c>Qb$5r?{iZa>2m#h5KiG#l2@#=an?Jf6&xfz*RVyfWh*-qH|8-eowP(fn z6fmWV;65GaE0(kh5(&qpHB5Nx?^-&C_;}7Fpfon@6uI-9FlmrO|MBh|ZS|&%GR1No zSf*;QynR1;M$HX<@6YW&e)e?xw~x23|J5U#-2RGSqL>^ec&=&5KTJmwD1E<Zubl=) z+}e4*`<Sk3DyUKY!?CM*XG`M!$>ViL>4{mi_{PC$ENt)NyqlB@gnjFM0p*mj#QM?4 zo__iy)TvJvn)<HD-hb^)9o2(iv|YlNL%5KGu)cfPJ7lAr+>b;$AKn%54q?@Zwf?@k zL}iAp%Sb9bFp{laJhDqBw8kapUhj3#(2RS)#G<>7hUoSs(LIBkaoaBIdt!V7z0=J# zqsKn^3fLa6r~tus5Oe_j7ffidAdq1q2^JKqO30HGAWR=i^5FANKTG(qU}YqXt3Cdf z+8NB>xeY~7fkTgYX{<JIn$mWfz>jW|*sovN7N0K|q@WJDEioUCsLceFty?lzDm6nL ze3FJo&mk9>@D#A~)NgIK8ggcPFmYVteqeN~7m}+E2jkb=k>-|=dBLdbZ7t?Eugu&* z9`APV#1MhS2DmGmex0EL8(fEi8=f`~+aqiq*5~qZ98I~%k6k%?@+*<x+<NW%_WpD} ztrvi!(5OB<YlNWv>P3Ked&U|0W2cSsgMT;8N==(d)oF4mvwE?a1#zWOfnecUyka@$ zD54>C`Isnebccz3G=~l;7pKR3&#!;y_7Ft-a}=eSV5J9SIw>h-{0`MBHpFB^0kg(q zQANI7mt}jn-MUTDJ0KZk9Xb)Il;jeoy@#RkQ7JSX==K8{V>-zgco?WRia{~XbHdMr zMND5{h$f&-h&6;Yz!o=JQ0Y6+ULVCA@Jp)m&84D#N$0^vWh5bUv2$|#i=S3PmD@6I zpyE#QPC<N5B<_*&fP-<opQ+>^gzH0(9BvO*U5)1>cJ`<?uBl4xCE=-hRw3xADFNZE z#XP33wwM$AVUixv6YW_jtaf`WhAtixQIYykN^I<}!bo0~86?kNX~4{&xJx6e)U%Gy zj-uV0T)J?=86R6r>ehBe$GsoxT30G5v(3}0#aS>0Tx1!(^$omwP^^nYc97;@3HozJ zg~Pg3hrpdv`ib_ap>0<AOu161NS_(x8^{bdej}n7{PXrSffaU)G&hD5-jeN+BxwD1 zNl4}G+cLl8)|%VYs5-DnK3xQ4T%YE5i9$wJ-NY%M3jD&2B7ihEta-*YvmEK$Y7zr5 zVL123rPXp187Qhwjaew>mCtzT2(=(7YZV`7=igJjhdiK_bY%o~{a;Y{a}~*^R1U{p zwBz9Iu2=m|f!i%Jf92BqK$A(ad69`sjrz>D8M?cr>X`*f(Gul!H^|F(SGE`CQ~#9i z@m&<yDDik6aU<i5!M}m&{^Je&ao~=Xe@})B<M@4B-v#vmIX~dJTPL^%^~ZO3m+IHz zq_A&hA1kKo?_wrZdptl-45x54eP&bXZ=_{wrE|YQFauupzyW@im8sgVBfY>%6is!# zP>-T#3>j*4Y+Z3Vfr=poFPyB04HATTxPB~ESnTky!fH@!<FB5WI^^EOnfp@HZu9%I z{j=Im6rC_2D;gOn#FcW0(A4E<a~S$8_IZ=L?s|D84wURH%TmBCSlD9GH8v$~I^0L9 zAZ#!!UGH|tJ+A`B;0b*fZ4iVI4m7mueTN7hoI(3?4dD|z;>oOdT<0^|0XrMAIM&0R zCtYG1cVAf^3DBRf++_WJn<teyaPMRD0}Rp%h1{4a3HYdGFx&<}&Vx!2T8944xJ~@P zr#X({_~MW}n0CYOeStl3Q?_Mo|1f!Zh)?V4{Tm0tRKxBf%0*%IV7$q^EVpH}I%h%V z2w;=$Jpg}N2wwJml67O0@$R26@JKN}9KJiLf{BcTq90Wt@aT)5^RZ3#<t;p8Mm}ia zpgH`g-Gp3cyV{Wh)yk^2rJ;>09TKYZ-qOeXsrM1mJD^8sp2%e>>fxa`3!m*6{&+>R z--gqD0M_f2z!7)T^w^j$OV9rVyFHt4B;%u>ZoO~InS*v%3U?Ya09RZ6kBzN^j#X&C z9*n)wtekrPHNx<UXX)JU94_OKfO3fc#Bh{MnczIgrq&kCCI0IOMbE%lC8IWE0I}iP z-OuXUC2BQhXDqM+e1Ev(1wS}|;nC0$4IR#y2#`9d-IW*ic}3V3acBgmG`Tt&bc{Pe zVHb7G2Slo%tl!%uo`Rcz?wO}5IYBKEn(XGH<wBf_{z@9UG_j>65Yf$Cz;s}$gSoB% ze)F-EtCLHJdpoF$%MDIwCLAO9lrnE7p9lf-Q6&#;Y&F4xcg?=t!j2T?w4K<KRgcp> z-bgBs?q46tP~&t{7Ofba!TFZ0C$8?iUK(UaPw?v@VsajHo%e;A-ZWU6*kJ2wqF5ge z+=k1e^~2hxbX1pWG!*SWY8EC7TeNWT9(>z^B*oVrk69BrMs2F{J|w*K-b=tP_plR* zG1qhD)P@=Ocq}uoi+R3hVNck7QeVs%AgvFNC`J$(q;VfW_|n;jfo|56RLtV4LHe;d z@PnpRn8Rg4v}OJ^9za*eeY@8v9wnyGI07U{GYnMWLJf+Kks_n=-=1HL8lK4beAMIo z_gx%pkqFn_9N8GE`20wpGaZlGXbt{s63C5}F_G4-@k*m)go}Ruk=1m!F4H>wq_f>o z44GP^qDvU$eoVo8itQXNPELVVEAN-D-Y3Av$I5Es!)5+f3%B0;Q*zA0*V;KXcznG! zRN3bXxo@tUIv2$Molk#vD!=O>IbG)U#mkDcdxQE0gPkzk<13@TWxkm+5r|7X@7-<f zav9yY*74pkM0`rd;}vm=@`9zAFurXr+JYxT6Y+_hio<hNhY;j$S@Tx~YIF0vQ$Mk$ z?JyknsktY?8?%aXLYDAITLH$5zUE6ayQ?#`J6VZN4eyk7?@Oz~3T&tzI_Ek4N=@-J z;e&lL3U=iJPQd)uaFP{39W{15u~HF{M<XH|<>7SunJLC@+PBJWi+TmwdsbG6{<5{s zgsc6}*72%V-!?Zanyx1;z-6cwLin;<o98%f|J<TKoYy?F7}>h^sc&q@W^Lg*y_q8x z`;xCB!ze{Zu%{t(#EaH-P~}`qf%Fs8<)@}6nu4l;O8J+Ze+G2X!sNKwXN?s6Z=)WB zv}_kIMR#v_SKcJoC5F`ykWY1;feJ~u96chYyR5iTIg~}vn*qBLvay|IhYOr+k%O4b z7gstGW>Ct<YGcL_Ct&fFex`I9SQ`vlD^=E~@yx=5={@y+Yz&Dx6K4Le@R#$)#%>;= zl6aPE{)N<<jS#t}d6uSrpqb9mZnyH&^RErMG=#q;3;1X9yqm3YU)&MG&?oh0<8~`G z!ev@Bkr>Rhl-XSy-Q~?paiJtfYC^D#mKPqb8b=E3xYl42xNzPQ4YRKSHKk$njx6D= zwdTBTO-&CxA#6?DxU$E@62H+L{nCh>gcqf#6j^~@MN2o<zkSlE;3dIEA9zW|g|Q;s zWa)g%X0tNvbuj?v<(2UViAy4FT5x?Bs{HE+`n@M2EN5t)_z^F7D>n{wC>GmxThzAW zXGCPC#or30fA$MXTP`ndwr3?i3EJOp)JNfW8l;GR>VP{r_br4UPaNo*&*3r_+3_JO z{KOqvdzKm(Gdg~?io{21q8wA!*2zX<1^$0A9dwCy;!2ReLuP^=N8fy~DGW<7;z`q| zNp#3OYWsxG`D{Dtqk)s5Jnz+-Og+v`*W)lBpUN?wQdf+QqNj3evL1rf(Dlcl_>kIq z+7IMmfkkV!F{~%hSZdKHf<7f=y0h(VYvYZjri31$$80$fJrhise(T&<Fm57<A|l%! z=W6Wd9l9a#sK8;H?eI$qWB@eE<_>iI3>WZlUm|Aa(v%Wx5$eOa$3m!6s<v^!nIGcO zB<KrG<Kctf$W!!24Kk9ddLH?k0EJRdr=%}1UQFi<P>o0c8pT*aWYt2cF3jCj28Ree zb0&HD9^iuof*KAuyyCM}8w{$;A*;!xhem{~VRhd&PD=HowEotF{<5gm?4qvfOaUC3 zHan_|z9aZ{NoV)_gdwu_ywoK_VSC#5Naw-+^)E9H$X(0-HcpJv-1NH2c%hAZ#PrLE zKBckc24M3c4SM+@S}8-CBoLs`&pg&Xe<+i45xv@3J{#?k(p+kl3dx@AV^d#CH$M{r z1eBK>FcwODVPZuSW6fNUxa$&3X%Z`+J<-_Jmm<c^>TWca*<R8`d?5GBfmrCn-!BDK z&#r?R>Fw@lsVnK+)C;_w`+jD4gh{1rPs9(q`b<bwpmFG)(#8~<Q{KYtGLDQS03jAC znWOG66VMM0ls>d=-#*^Y?XzaW8J(T;X2I<V_MHqwi2tuJ)&KkTcp#7M`^nr%{!dLq zfuw|;5SJmUv)Laz=<k@C=@Tj{xs+EC%;-?NOdlfqVOWOY^X$mAD}HXPu*_J=p~qkF zpL0O(%u6k0I8j^y;F-IgyWCz=OAKTlF+oqXU;%K=!PCh;p*aGSI6bCC*DL+@)~+%! zHx4rL0Z<mjR3AfkfcmH3XlYMu?_L7;JE!&B+B@r34@>qNOpD>H)lfyS(IWk1{VB9y z`R$g#IGayBHnFm43?mxM00sofS5fTms*+ac`kBTh_06Q=q+NAGV&geZNx}7Hu+P|) zvJWv_19OE!GC})3p^HQIyp}R7Z6K3;zsfW$XPYO1YqQQ;SXh0%>96^)_0`Oz|IIXh zigRcfM>euC_R{8-3oK2csgbAtom{0VtsIJpFWMwwGZBW}x`%RBZ&*NHmkwk?a7RPk zsrrjQd>~v!$ID9~fX&ebxg<sBYk3WxLnT`cK={F_iq@H|RC@}9uQ6d?@8`IWCj+o^ zx8W+FZ#{}dLgc0CC@?FQ+J(oadrzZghkS+$X4*a7O)^0G=q{;({9%E-rs)vCL~L+5 z`mIgflP+s^OYfMgNF`}1N~NG_cw+Y6bx{#>(4)}wl~x+M?O>&qH=+EdCqol2Us3XI z2{Hysxt_jz2X;4U#qHCp!c%0tV##cf?a;`z`2%B;R!)Vb8P=tJDjI4!;U_1;Cj1IL zf>wdBU;}A1_23GfMpdes^uEdmXr0>@fQ173+MhWTF*!7()SUc3<tUP0?G3Yh4jjkZ z8S{ykafY|0fDqU_-+YkN1%OY|#sb*yDy71Nl*fSmqI1_`6OLl+FRypv5i|ulInw-r z{_x%@1#@2)VU$7Xt#j=M;hhB)tnwl**~VWA@GHBM(f+h8xlfLuCLauXrct)QdLO%_ zn>i9q;&csamW=^Y+wQ{cgKRdcFyn7=ArdXZJe6CNjPP4_TLGyZawK70Ns1hjb$28! zBH|8~DS->e0sn+>ooO5s!{4O#lSIm8N)?N8*a(K!M>B%l7Ax_FU(402Mt6CE^Eyy# zU%oY%Rs6=Ul-!a^|7MthTt2IBC3BDKYh!t&%rA3UeLX&C8@O-a<@$>_wT#5<PTPRT z9z5MMC+B%w^<T8@xd-sDP|+g=C2p5YfzfvUKI=FPLa@-h&!=(P3jk}{8D_+w{EznM zi-=fT^Qd5O0uj;P3nvz?0bz1Ukx06X5emSqA1_SoKcf%RL%w`sC)@HlNtEn46N~<m zhy*anCzPP>H-jRPCX9P-2|Xi5S_5pI6L8=NCC?+MhaZeY(IKzWOmCy^7PnSt7MB5^ zU1olT&3CiDkAEy{=f8nt;mHaMgiOrAdZ`a?-wJ-027})C?zJq{fsc9qoWK49$Nt$p zszC$#??J9tJgXZoTe%j^-Vk&_SBz5n$J02wRExx3R!ov8VN@77aIC_Ta*{{rZp!sJ zQG+U#-@f5(Ehk5N*Ye%xJ{?~^gqhI;8cBH@QaEfx5p^erAj{fz1Gx}%gx{stGreJ~ z^c<~7in?1_t#g5&%a=PWoeHl1qCH{lJD$35t)C7dzA(aIQKHZVFb{e8vw;lV*&t_m zzYimM*qby2e#wQhLoeS-v7cn#MRLESIT5BD7QG}(_OBi3j|<%WnX>ZT-lgpYfp7Ie zT>aA0cYKb)&3CjrM9!2hokpa*`Cb*ijE_vbt(_iGIZ(9lD4nKt))5Ij`6}-In^;PT z+zY`M=&MIH*@=_t6ILTr{>hVUj0{ea?`uIIXD`5^j`G+^bv#soh}Mkt6^zR}RwF02 zI%G?beHYI{Hk6(dv4+QA^dhH69RbhYXQDO>g*5Fyd>>xFfhElTS=q}1ePk5#GDNY! zwj?0m$ql4|Yfn}EH2sSX6<XIyj8z+fyIO#8$1b0-{=_K?xG%4133QxMb-YTK3VdaJ zvn#;fFt4+|Q49M={Zy#(d6#~fJ-yEWd>VRN<}Y_rmE5{uy#Uaq+@{j{4{?t>8Mj)i zu_U{a%AfL<Ley&;MxbRn@#B!}z!!aiZQ9#_MBXx|l->ve1_S}rkM+>{;`NOb0YFc1 zbNiIL&E<L3NT@D#hxZ(Bxuo93GtEt;reNZ;n=hV!?m)nt0m%U@m?2%oTq}G<Tf67r z;><Hg^o7pAm=7jtEjvzJ_X2Onjee;%X5qoqurlfV-KQ$E^wm~;QMt(DT%x}y(}Q72 zxh?MS^UuG18T)K=4qTdFZ#H4GH&yYMfv>NIZc=aWRy{3On?&rj@IR$n2GeT-R^wi# zgJAT?vWW_7jKkr}=qUha8+|mR)`tX9gknfc6h?mVnMaCze3e$bAqH8fP|_s36dpbG z4ThNveA;$_URjduf*H+Hm%Ay3)R!(%t}&W|E<YL!S5rwlMAY-?*^o(ROG@1sOV$#$ z!STE+bSaB;E#Nl+LnV{J%}vMi3M?28WvoLWIT;HicxNJ1L1iw_huLICj+}DWLpiY6 z>fOp;x<WBie;jfhvRAqia}=@J=NFjsQBDW=k`GeViv`s>>~3QOVvfmQ)M9bAf9;eM zQ+}x#pw<N9K^NpydJs*|438B=MZ9#D)u@&VJjZAXedw=JQv0I~)Yz)AajfWtO+mnN zMSGAE&Cp*PZq|?ev6ne#AoPAj8}e}<3`tA3^CeN1*G`)E+HeoK(tZH~_yGT(XM*N? z1}QKYjn`RW#3WN<4>WY@l_eeJmrB)RSK#_;HYLAJg@V5d$2kA$yt2BqaK&;V9;#7f z6niK?b-PDCOtRK?PKw7Ho&~_mu#>gZnn8)xc0&{S<c{bLtmugSv%Yt<Ot*d-!P(Dt zYP%4W!TXU)soZOzJQGZGbt=;Nt@5&_+w;r!G(~|umFE`3+#}=pnNCE{_yIgRGu>z% zbX+cmzu`V7Vc*@!IQo(aHR`bc!h>xZh47il(*dKm4gnV4g@f%|7(c9E1apW%={Xv; z{Cx)H$D&15*xn1bA9rBp-Mr!NWPvr6lNjXOSKA3j1)pfrA8S!~xMVckg>|1&9>jp< zkV2xFHkpcZYG3KMU$XC!a#RJUouxxfRHA4?1Sl;EMRjzoqH&Cd&~d&7hG@%)KOP%W zihC3<bztQCH9DwJ^MsQ+et&1tR=r~arAr%GXuUosK(2)+P;rCS+fBS`)|+F8Y0hgh zk{2-r+fss~TP+%h4b^|WTx2&>@*1HWC?#nUE6-{{kSsDQDVuT_D-f2Pf1h%G-~rar z!5BuLA+q-Z_Sk&W=UO1>a=t0Y0v@q+cF2Lz-s+%4@gDcw*Y<Ol%=f43w0cEwXOKx8 z)F~Sh!l)YB^4WW`nSj8(37n{?dYq%YhAv%HJh|h=J%`X7Yb<a9dk^9G{|1gXKIbLA zI|wYx<oD8d!fyoqwBsaGWsLWAIKl+8vtP`D^i*Me-HVlHNC>L++|xKNo&988w9WK4 z+VF$L+YC6ZQ`Zz9$^$r9<;(Do4&-M+wB<-S$pe^9883TM7!H{Wb*3UujA{p9J_O{I zf|nf@S6ginbLZyejVE#>%CyHR<=b{lA%nWB&@)R(K;DsL$y+x=K3AotGuQclV)00s zUoTqGl7k^5>l8FOb77OP9>*c~5DstOa{-jX{kF63x70pP)!Q<y<4>vC*~z6^u6@Pe z!!OU)b+MMUBSd;F(2Bf5NBSD~Ne9*fWeif7jC7K`%-eJp$d|rhL&V@;IWr8KI?Z7x zTH*MM7mPw}>*mR_)9W}d3{7)9SmwrE!tkLq%V<j}YQqU0mbEEFh1Ocpi7p2>*!kt; z#Zow4;)0l1AzcKT(766;r<)+N>eyU<{WNRg>KB|lwX_qZsEsE4>c-WaK*oH}K<YCm z(i5jG#n532e8<JsXS>F1dN@zXd-6XcOqZ6d)xGyjs{LJAWXQ6RQaG#7KB>?;%v~i! zb%?+8W+;<_sr9NTz@(=_Pd6U{T<JM;eV5~o_N=ohxp*QH!A978iO(dYe%dRW59J5n zW?OfpIaAhJh!wLVC=ysv<*s1`qq;+ddEUENVhT(8b9A0lM%KnEC<!R2GNySQQ}b$F zsh?7m*9e|-tNfKz8J56cycyl?wMH>e&MzyVuOqQw{6ea=<A9)nqs%WLVercRFE=~{ z=d_L&b4Ht{WxBcRqe?;5CF=|pMjcPy56k=0!!5%Np_zg&icOi(mF3V$E9F{F8~=2a zcuHyKlu>Ltd*<e)1menj{lVd<0|fpNh<Cw@5HW1!P@a<F@?_FeLqu=|L_NtA8|g-C z>J>S`g~1%+{(f0}B^9te*qYKo-ABW1x8rIl>BHsqNU!dt=N#1-O=52Zp;UX2$n2yJ z<OM1V8T-qYd&V5OwJ+7i)}m17WeWU*0!zHx)6f?#8v!q+6Ua?a!pR-eXqYJkiJo$8 zq2C)|1_``BHqAF=qO=2<bYr8f*7sTx%wfiY1PUC{Vzdxp<fTitnsCIMUFdY;`sgUy zHHTpDQ<^HK)0&q*0YLdnH(YFpzT^RX2{EXEr)Fn~f`vM}mAMSNAlH^;tW2`zOg8U& z=}+URrudcfvqqVR0$ZsZguk|lnjUBFK65;NRcss5N2((2l*ZKTtY_M-YvBT2oW#z; ztDG}mS*tt;A+F;vd=%>=!*aJh$E`Gou_G4@IaQBQ>VmbTtfI{FL%buZX(#&Ew=Fc+ z!rXr1cz1Ebe>@V}h*l%KjA&&Min``;dbnj4i*ii>A~s9Y{acH={X`CrK;J*`lQ`+j zZj8yI7x+_EAIgft4Y#2iQ%Wm-G`TDmuuCp0jO{*yMGgWI&YUcfxLw5aikr;P7ieiY zmbIS&vb(*Tbfv2**gt!hh?48Ek6FM<CQl<8KNj2xmKT@gaxDI~5n)GK@!5#PQi(E% zP)nm1)qt-SPSVXep817t_Ukk-?B?|K{cozHalyG=S!fQ>m$?A%ssL%DA>Qhy*(#Db z<LF#jo1{IK!rs1Nv98_;uICHS>otiSCT1`zom6@itG<zlXLv@ja@g>{uaMAor$1QR z|Af9O_$*%^o_T|-JI`XnMW9>?mV03QUdt!VTJmVt9^zlo`9SWboq<|TPek7Iw2`{Z z5B;b3>PqmURWnmmc>YL)lM}w8$fL1ZC6;{6NU<p*c7OQtbVgGl6f=E;?n@f>fIHx| z%$MYxgDEmIfNdyu$Gq&8maRfjh{Yv1AYWqpL9=CEV6lf)pw{CeWg1Y1!Z7Yh7>UuL zlAY>j`kQC}C08g>HmS9P!v>!0(<>Me4?C{$sxz8h{eyxM56Pm8Bw)4b7I87{Ch%v@ zvf`byFPIP*B(@=krSl2sxh{Br-*|coU5DaahgE^Med9sdnHu~KE8F&L6{_J4ihpb` zx6Lqa!|7{54D$}KfdP$K6j`1IM>ZV4#)lZMa(Jle50YppO=8ze0c{&z^3_wU;f}Bo zblaSe=Vce{rsfHgv6qfII2JpcECfnTDH^`g!-nGf%WZj@+691rQ<3^W00-dzWFrHz z(Z0o6Z&TLJ2~G0KF)<aNjJKQSqzLC}xIvMT%MFJ>aXEOlSFOB$*66&2OS+`c80P4t zGc6yUI>Gtmbc2jRSTgDTu+hL*!~%<?!^hiviT7-O%Vw0`k^u;SaPYzl10~(foPQ51 zuTg3Slcvi)ZHgSrYsW(mJ+(h*=J)AuQq>KAJ)5y3Uw&SG))&bKw^q_QntZ&4H}R!0 zqK*xuN17aLGU3-^{cY}-RhgNv(ZYsPE;_BO#^AoHjf`RT!fsOw<@wBA&Y<dP1oHZF z5$`tg;G*a`wjTd{wu6PnotU<SBYW%CFl$#v+fQ$!Nvt$lCT}<JHjA7{ZJeu;9>b|j zuw`$cbC<V<My;s*hV7TGTgHe!NYFv17IV1+3T;RwblOrI&>yvUM5h+LV_||t8jKnw z4o?D$I-Os4jRt-ADw0fDpVzL=p>m&H%Y&#hxm)KQEtnJqRs?wqznhj+voDBAuHiW1 zyI1JWJgy&QaN3bhBLiut<*O}M9m3-FBIrAl8}yONrnf!iz~tskM8Uh!C;M|ey&k!M zUFh6`v~|)FiVZYG%)D|Eca(dd2lc0oB4@jXNvGynwe)^B+x`6LTkBE}o3Hj$sn)#p zab2yyRnRi9{bKRJ<&0qAd>c9rjmH4t*o~wP*VAOH*NUhZ0D>zhuLC#fum*;9&(2cE z*o4fee77cd8007Jg0@j(Eo5HN^6Lvrp9NBW-AnQ4_?WBcNaAai-G@Wvot(XzyDGWW ztw<an;UmRcp|x09*YZ!aP@bq8^?^M%tD%D<p9`@l3t5OCMj^yr!w`rxEd*&fzrpr4 zH`tPgudl}ij9O`={Y@t=pIu@Q>CbX5eNe*>ox*b_x@(UW0u!(R`2T-tl5AHVwA~sM zfE*4*SA4;&sYDVZ8VcB2ytrRP_<wdnw@ESSIHRCZDBqs!okuMqDl9W?WKS1nrZgZm JsD(Z_002m)U5Wqz literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/guide/vantage-landing.avif b/static/images/docs/oauth-server/guide/vantage-landing.avif new file mode 100644 index 0000000000000000000000000000000000000000..ced2795a5c9b53d1496904323e56fbbc5754d425 GIT binary patch literal 27710 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-apps-empty.avif b/static/images/docs/oauth-server/oauth2-server-apps-empty.avif new file mode 100644 index 0000000000000000000000000000000000000000..9b21288189d3e206f8c491872dd1ec827a723a29 GIT binary patch literal 24515 zcmXu|V~{Ys(lv~ZZQHhO+qUg%Y}>YN+qP}n_I&q#&UrhPUZ_=-{+Uz&003~zoIM;2 zT`kQ3{wrHcGsgdMTT8?L=~Y`(XT$&b{}rKyiH+0$j{*QVSQ<P3KmPv^&cV{z_WuOn zf1SwE#@_gUN<;tv@W1uH`uzVRfZoJ^irCW9?*9(`KNs~sVG8uW)PGq+R|dxaQ8h~k zCx`!#!_vXn{y&5<bY&C{ApO4>ise5C)BlA406_oSKnwph1P4oZ%l|pR5D*am0h*<Q z?f;wqzafAFfPeu2^cHMQ44shxprAOd%zp|7fv{i+nA&;(#RX{q5Ci}e0NQarU|6fV zUQS=U5cuf;QsXe*ZmJBCokCuj+}au)>!(JVJYQpk%4{` ^V6Hoa*43zN!>j+L5< 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 OXT-L`n?o#yBZ!S}3}IOS literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-apps-list.avif b/static/images/docs/oauth-server/oauth2-server-apps-list.avif new file mode 100644 index 0000000000000000000000000000000000000000..9980ef09d76f91246e4452df602bb997a78db418 GIT binary patch literal 25399 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�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 SX&16p0Uu~MEg6}EKT1HI4*Dzr literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-create-app.avif b/static/images/docs/oauth-server/oauth2-server-create-app.avif new file mode 100644 index 0000000000000000000000000000000000000000..76a620c6698d7f75127ed421989532184037faa0 GIT binary patch literal 22852 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 UYK>Myv|Y0|;7bcWReV?jkiI4pod5s; literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-discovery.avif b/static/images/docs/oauth-server/oauth2-server-discovery.avif new file mode 100644 index 0000000000000000000000000000000000000000..123e7ff34f08d99157cd96b8d80bee6c4b6a7568 GIT binary patch literal 35800 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 aA}t4KMt_7we|6MAmw3<nzw@V6Kld>B28av* literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-secret-created.avif b/static/images/docs/oauth-server/oauth2-server-secret-created.avif new file mode 100644 index 0000000000000000000000000000000000000000..186bb07bc3e31eed197527f413cbf22249474cb8 GIT binary patch literal 15143 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 Cuq&ki literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-settings-disabled.avif b/static/images/docs/oauth-server/oauth2-server-settings-disabled.avif new file mode 100644 index 0000000000000000000000000000000000000000..63783ca245803707b376a4368962e7b38d3a843c GIT binary patch literal 21061 zcmXtfV~{9JjP2OAZ5wxN+qP}nwr$(?+_7!j_PqP;zD-x><fKy7`IV}qy8!?Ia7>*& z><wHkOacChjfE-Wf3}T<!GC<k#>Cm+KmR`=G&i<({9h9Qz}~{h`Ty+yLpXa2XPf^a zfd4d+g|(g0e@vJk0Px@XPd@%X0w_rRW5gB~w*PbJ|9DaV5fh;QqW;AixH2&QXR2D* zJKFz44hwrDyMG8{;L0czK>9ynC>BokCjSKi0D%76K=c0;g1v>i#eW`P2ndLOfM#KD z^MCpOO9D6m2p9lBLCMD0z!?bu3X0Rx?7LtP2n&{gsiP23On?S}p&vjVpb+OBhPA5e z`Q+IPfsYO#H4fwTy2=3AG315Gt*z0aesZMA^Cd>G%tjqZ3>G?R!;8khFsaP&NU^DS ze?h&nAEO#s>zIXa;Mf6AjH5oK18hi=5)@Z3<}(`JnSyG<l;wOnB*4s3JYtkHS4f(Z zMl0gdN9{TzHsbUgU`_3Z60Zy3o6df~&ySTdmzcasd)5l9rjTzog0BmC0CSki#>*_# zDQ*#<Zf%E9=E|h?&$HGw8r<ANqLxJLB9FnFg__o%eeAIz_YhuxDgs}w;*8fCe4gYv zfZwu?{k-lq>E3AQbpxg1`#YqyqsX2QL$RXg*W$unuq_fi9NRH+eTw?k8LCs^<<Pe^ zt!<(4uZuf!twQd?DZ}TN8BCHChlC`t^HVnY#7c8hQGQ1KkH84XWM8>qv<Fsr6X!Rc zBe@P|TUkJ8Du#0v&l~ylexbUeK#Zb#W+tBKTbZB)ec3(Su+iDDJti<%z{!xclNQLf zfy6Nk4kf3&DMG=bZTeHucaCVSYuS?zZ;P%3y#`hm-49dSXsV$MI!R@jYK8664>iK+ z0mW}d@(v-k&3zfarUPH(PBgbbJuZRhj|Kpv;*2ugT~v|g!Y<5HJ}v>xxbqcRpR|^` zJDb?IFaVXEKn>sPEIG6<#7N|3(YeIF!UrvbN`9@S(KX_IPXY-1j9}jJm%GejwSk^# z*OHqK29|Qa<?OYP$J0(rKjO|oLe&kOT?9A7C}kP@d=6{VD^wqz&sK_0ZzceB7YFd1 zzbdZnx{8jXTK6DsZvX|NUdgYpCyo>(bw1T-kwU@C&3EX3vRMaG@2-@w?!-X%l-~d5 zt$jamjG_X(&p2v6<@=W6sZ@+Np8wp%UIubm5Iak3f+)9PN{K(G%*2LJ`o#0}<n=|o zcgdgeV=Iu|E_*wE^PlP7PnC`Y2zPGT1^pH=24;+81W2b7L-*tNkMf#0Xs2HH`Ia<> zx0soxjSu<k27RF_@O2GUglQyerL%sn?QF%tE!3}JkKoG_!eyS4R|EdYp-Eam><QA( z#m4>O4wNJ)F)LR7bsOa*6xzefWJmi6Q)g03Uo^16U+4l=tCyzdY}%A7Hyms}hn`r! zGHB^THTRjJ(rVX2V<{WNrl3tG7uE8_ma%vi?!tzB0+)AqxUGOzBpa9B#gyJB%iz5E zwNnW2kWNOyZ(xPOkz5~>Fm2PSs<<tnSO|QW*O!c-UIq3FkYv5Xz(uAh*gs8*Afjy| zVos*k10jX6UPh9YU=m*+>J>Am3!!PcAEFB(qS;l3vT|RBrC@{bmds!dUHDPUUIM@f zstpgQ*Byj``B^NJ2+Ag9I+m=qBXbK3ospVNMKFOiQQCuhHm5&;xO@2v80IdiZOf|0 z-8enLuC56lb1J>|&}YkBMh1-hDL!zYAt(fT#`#zU#lFiXz#|ynfoKZ?Kyqr3eYwuB z)IEq;_#i~k<~`viPmKTY`e`6w*$ST2C*!Wbv*2_P5~AsjM}99m0}-+Y^6d*RN87oo z%DO{XOXUup8qkSus`6QR83qNwOlWtaAQu(?X5<6-u{m(c?@5ilchoK1+f!x7=29U* zNKU)K9kQcJM5`N{yMQU0*x7AK%AWp_dZR=lLwLYV2n2GGXeAk8Fkq*h(XhZPp!WxR zF`Erf&<O`!l^Blb!}Y+q)M1k7Gy|94Ej60Q7#YLU@d=jIA1|ec8x*1A+}8h;C>jLO ze;0GMYaXfT*{MlQiPn0IlXo5g#5n4%`hj%}9(KX0%35<t8iYhWBwq#ug~diLjIu)N zO#*{3p%NneVJl0$&x|5=n5!7(qb5HM>(V4!_3mka3S&JO52&Bv(aH5{pA&^~9qh1v z=G>0zH4b6?_{mU&*4#|^V5BFPI$v*js~}c0lkF~6vvJ<uL};Pe&j~Sh^V62S!H55> z99~U?e!eiM+P$KQ3nTZZXsxWC<}L5DoJ66C+BwTN8;Zd_*y=!mj?j<Wdj4`1ahHV& z?Tf%|5mh6o@pyVo&nh>Tqu>kh&84-Dm41Ur(~d(0d8bL*(<6kMSRx4dVqIu$Myug> z(LLEdQUjJg$f{KK-TD`k=jKS1u;GFkdbbwX=UXRnZK;^r%S1X91{~GbW!HeWr>9e& zU|%pDO@1Ml!-p?67X;ztHIBZFTfA#x;6S%T3LwSxEq4mL8Vc%u^+v$KjYvO~>XZ0% zl3VWTx0B`_n<&~t%2m(y*i>OmtzJ>dgD(>K@E|SO3N_V#a~-{utulcA^`gwr3pMn- zVx(IfM@>$SrN-P<*wY)E9xQ>x7%;YgT#WNHh;6#`4t?WUtfp&4sgU2SDYx`VRO7>c z4akj>!~@pH>&nY@Nn7`<N*mqWmF51yRulJPso%zIRP@_7Mc*uksoauU$cM_*tju{i z&c8!%a}km;T)d%Z_*M98AYz@8{>Uof9av9&Ffvb?e*&rVM5y&mz<Ct|$IFXkb-zy{ z!&s%Lsz-t>1<e))(QWRIxmb372D5gqnn>S>VrW`TXXz|?ZV}X-LS`x!_H&zPIFXWu z8ifh==!pgCwQAaZ^ivEPWC_VTtOWns@C88e7Lg4|jqUgRK-?1C{<EI?IATq5dYECU zH!+Fk$XojqfdgWn7?@S4**d6ZrQl=BNUQvoVgVtIlkuRW9=_*-Edt_?O6qhy8cy@y zgX<Ec_j+IIU{)Ln+f#-`fr8_;0L2{{W+7e5lp2^Ijqw{tZUkdfb2YVTyU<L9o1&#I z(D8I~<QC*I|FOgmW3)cTb^}mpf}9#|6{t2ci<1#JlMqgK5i3r^U!}1XWW|Hzh0`}T z9OrH(mp28S=mo!AWNq1+=m8kDXs95C!{5BVHA2IA+KgHU#P7;nJ*$y(=O-P?_X{~= zxM7x0E*q-hxzzKE@kS0qlGK>uTTR@z$6q5WtH_9x+<BZw>p4q1Q7!7GpZ@tq%M9Hz z?Vza8U5-c$b2Q1E9EchSl}o2H6(dBHim4=&?f`PTg}rm92T4ts<nIV)%dSHEZ+DSl z!JR-(uVi*5DhIH3_kxngB=dO{IAL54wq%<xC=t{Al}Lb<Kjil3DI7kB&Y`v1c<ksq zov_M``x2|Yv8N7gO56Hk4Widd9y`15Yv5rPG2lI9Rug{L@)4!sFR`UKFKsoY@QQu* z@T#pLc^dwm_n<FG*E;EjJ71{{=Dz7wUru#x)LejDUEF&lqd4y2>>3G#@?rWruYu0z zrQ1J%xNUNn=i&soy9!0+6@R^cdsJ1~tqJ#<ds^g`U=z9@V)60d;IDw-yPVbOb5rA9 z$yJ{ez|<xi+z_6!0MScmvhQXR4!ncamDwY@Brg|Y%<ZyWf?<wfPNyG!3Q3{NEH$ct z?-y&E4vH>F7_-!G$9MLXdq~3_z^}&U1G42{2By^SEYUJZFFpv0?1ZDJ`WsEW5(ELd zPy3tV1qCoSzz^<PV1Yh^4s@=yL?Zi^7@T!MvWR@>w=&7ceSt_1@sbPtT@MdjUi@33 zF5F8dsed(u2h0IOLc@^i5Hd)kEX^*6Gmjzn^w#emF|x!pzrBMyIDb}?2aNV0Yu0%# z3QhkG$nfyn{V8lXxiBEKzpG3IxFUbt>@o^3)W*D3Mx8adK_MnuL03flCEtzSBq!89 z6mgD6v@JKlaxPP2Ep0=^46PRs)uxJ`GZ8M3t#mJOkXWDxB|)Z!J-m3XPG1@`qHGGQ zv(*cUJk`=?yQuzotKB_sqc!73w~cE~o3AYA83<_njKW~fMMlv!)xmXRQvry4eFlT2 zV@JJZ7b7F@SH@SvOa$D4yQyH|LjDBrhq`E~g$U4L)|}suxzt{>-CNz5u@u~4i-oKM zee%hI1Oop`$`q@^_tGzddNgK#pxi1ywDln7_5^t6em?-oaJ2;k;4DOaCe_KLuwX+w zsd~+G<azN%Jz*MALmFf{5Yxw~Gwv}RAvtnuRN7|<^C4JkXpziX0|g_+{Ee38@i^mV zm6kIPq)2l|N8N`&!%QQa@xg;AwN)#Y7$P_lz3yyzT$#F=fXOW7Qe}Wg|HNs({T9vJ za3qfTJLi=^x%*cn;=+*?RFn?suQ%GHwCJolVqe{-rpL`6S`;a<Oc#?ifxgHJN(FlN zG#-ukj-t>SRI!D+SbKI`lwC)?U+%q&TcaZ3iBzNe`K^<Tb3kl?oy=2-O56~`@fy2E zn^qNH3Q}=1-4NeY<YttFy!Uk%{+%PXjUmOzksL2Uq@-2{h#fW^mvG^Az>Hve4B<gT zI*sS0@6>kiG~j0oL$EzY&8W%Fr{eJZ5a9&7u_SHU%2YO|-x?vKfa}|i<X;+MdHvZ| z`f78C!e(T&_NfA8etdUjrgaA&AanVW>f)+zYA(|lS>}L{7OnSDLl%zV>H(a)HlMuN zNV9DA`65aHra7@8N%tMFV*h>#O|UA2fUTzJN|4bM>)X5XZRP}N!!d5-DaT3)OjA#< zrpRu}IJcjNCysn52ZP{XUGylaKQrK<F;6F<<jZjFgNK}=v8vT<E`ljrsF5Qig;AWb z+wmTZMz01jN;t*R{_4MTp(>Hqc#2oi;8r7_z^+d74IXW-L8joh5>+zbIl3vc+3M*? zp!zapIjIFSdqe9D6x8Ofw5yY-gaE%=K_Nl@ndJKz$5l~z7W4LaFg{u9_E-WYR)wE| zTk}?Qa{%*|sgs~^v-V~dB9S8_z)jbbZp$S-I-q9u0OfDPwnWPFEj71#bYjkLE8gPd zbssC=*w^x{lof<^1r$*$zI8Qk*B**s1#)9qyO|!EtM<{*pEF8LRl3XP+Sp9bL*q)j z`OnM{nY=kHHj0C}e;gw6IdJh8Eg7VuHI1B4;7q2nru@ve0>8DCzO+@@7a}^q*&kZ# z!JWIi1v(=J&4u|}D+KJr8h#6mhi(~R#r^R;u(sC#R;{J`!pHf3W=($r;B{Zqw~g^S zQh8J<(P|QOM@~cs0E3!D?TEn$^Rjnzyjp5We%98ta9+G_aP+Ht1zmP(mj{e<z~ZMq z4t`+KXF#;Ai|zLZ<2>cS(v3$?Y0Hpa+W4sH6@4+8iI8uR-&t+}7EZjD7_c`=I!9>D z(8B8Q!e_5q^Y8~!QzWbdAQjKWxOJ{vaII!a#F2Q{wDpliH7TM)5zX1Mtte6|3VKQA zuN)_~;^4_;bP1JDyf@hG9F-|cgASxB)YYx>BMeC$P|O2P&Sn6Odt{96A%$m2>zNs5 z>H(qWu8}HY+%jHrGtvwL4l0!3KNGlqt(IgX$q^nAFcx(rF9u2-7Cz#Kh?4j_LfT)_ zr@7=r_J@qsLWKxgVMn}B{VV>6Bfr(n)#TAANVxER&2$HeP&Wyc+9K@8*Rg9|$eBc# z9(k(6U;ulXB#o(YD&fEwNAL0#nx}Nj1CEmyIAOK)F@ADWGOVgc@XBzv)8f@L3WY6? zgj!XhwUsne+yk&wn&s3;I`QtNq7Je*(WBpqoG@eA)bVShrlJIOv!QP-OG;{f9hYbw z&KLwsaqYWYL8Mg(>L+fj{Pozf4quvg_<rxGJ`Qy@zN`o&t2hP$(zGzSTQ7h?- zb%F#HY&9{jMeKvqL-9;mz)C#=(<Ky{)=T>StC*m(EGAxT*QqZiK0OQqP}d!H6)khk zbizajDjG4~%#KO9>Ujz?+GfA56J7l-9GFJYW<AW8Jr~48Z6VmG>>V?ymL^azTrGlC z{*ex<PR0>i-Q#D1S-$KL&BYh#5|&NTpCjb@@aWKLcNu1yM*Qk!rLzt*>m4?~8+2Ph z_k&^$;*{EemyPgv$loq5s4w3D+Gnvp9F0^}58;0%@Q0xj7K0v3AR$W??{!kivJ-ek zw@LTOdswKg8%?foHW<a)=U~6uPT*zqs4aQ+`)*xP21oVlBB=KWWS!O)UNY>o90BDb z@iqY9aXTh;_mau!Y20eYt>7%F3+9*TKF#vvG^Kh5co(7svjv&?fO4sOT&5u!7Udde z%T+DD-`>2V4eQun?e-m#NNZR|UoB$EVD<v)dBL!8tUU@#m9@)i2wnGv;7&B&W6PKX zkiI)HNhBw(8vzmrRLS+olBGMpi0ZfO@b6EGm{qc-=x($)(p<7`^k9qu!!ea?i?X5! zMVg^NAz8pV>TkGIEb;g{xR|vqij8#nVz`VYRCHl<Dj^!e-784WB&E0`FH@<MfY&_X zu2YN!3hOLoJ9eL&VFx6Vra>k!E-+6~Qy{h9$ziD}WgDRoT50E1*mu>pRCVRnUvBj3 z6M=>n4czenPJ~mrCe65PAJj5~Sm<%4>vq~+$dGNExw#!i+ADFV%mff{@|<m=3gkAp zhH-=@j<m?0j7O0uI8Xt1FWumIF|zOuqi>GWg_j1~XKjyZkm&0;1|dF<^1QnewiWPj z01<qx1Qol(OaA#kIOL!4O@5zG`#h5*q!@GL^I`8d(FB=dTFovYF_QAy(tx^nP71a- zN97mF16C3|#)Js*0%%}HlYAQV)-3gX%y4?ALdemaag*H+VG9${TvQ4s@<~2nUZ#;K z-R<Lbg5-Vdd1c{J-is7Cqj)V%HT1WsfQ-?p^WCNWr+?7Mswg8n{l-;G=x=&i^W^Rd zFtFNq2xL)xM_R!p-Rbzarxi!5{fUFc{CRv&8iv~Yw}wlOX!%e~6SRLQa-LfCGu?vQ z1QSWE#d3_urMc5pIKSb=mm?B(4WEIIoMU)5E;_=zvlNsY$Z?kVwZ7|bE{}mk)PQo! z)%8(1fIpJ?J{LZ5Rc=|TZp!AKc^$pWfRr<gWzeU&wu!(k;Bx-BPyx+2&*JfW_bM+h zB0AP~dv?&h?l_JyvM$1s;~zR)qy#AFLF4TW`L4JP**n^v>hSqLO_+#?7~h4*EfHE^ z+rEzO8q7S2<A1q5bbt9Fd3QRrNSE&nhq!)fA3W0)%?5CwF~D@XagR!gGn0i45G70U zueT2n_aB_%!9ryJwvY6qW&qz%I#E7Jk-YJcs8<(?8Oip<mJiIkx6B!$(=d_OQ?Iif zPKW7QM(eU)A!?_ieC=PE>;vnbcf1H)x@~-~M^b+KU3fej6AQl(sZOq-+jB&{?q$5z zd*n8r4yIYpey$tDHzbJ5_#^(h4Ky8hO)4VU4$=yJ8MY=37s|<kN?7C5-$!O5%|bax zkAkPCjqdxw%WOcCu{1M0ucWQPa>VTKN?k#(L>qJHN8IpCX!R132s0@3>VIk}QD*ve z95plOr#lqQ16lW@Mk3mA{FympD!=d49rPLPvvznIRZ0Be@w*3{6cUxYK$Qoqe!0i1 zju|FqCs<$N!kG-kHbljZ4S+p?3=6pdgK@P(gs0vFkXSq}el5SOn5yDVM;nDpo`YJY zeT_;-;x3`cLaOa2{!Ve9cJVE9oh>1;ygvL29$Z2JMch^UYp>#RRd5ZGx2K{5_5i0A z#vK3qFner9w8?RNvws#3XsWUEamq<pshIafv?&M!U^>J|DzT0^o$hS_A0Oj*TvN31 zJ~Uy`(Xp}HRCKPIK%c8h{zop(W88|2Y3c0}4Q&_t^J3^3eIvHVO)LqdlY|I`25B%# z8uS$vp7+;E6hfW5mA|(M5!GVa32&!DV$`9lIJPRkBw^0=x1W$kc|nmwp19H1po!4n ze420RtsdB~Bac|rgJ|*(PMs`~aP3}oTrhm7ByaGFFRQ}RBShplveC(a@&4N-f*eHM zoUxKfv*hdtp$9f@g$VDZ)l{yXf56N4T#?Pp%7#Eq_*<?PJ7CZ_Uh-5Sw3UOJ$$Xfn zG+dL~VN1>&i*#F@Z0-=jU|EHuXyIM@=B<mqE@e%MS3zpmJuukjso8<HEuaOyw0;Sw z;$>ZEQ>L1WWaS}Wt)$sw{2sg|w*Ny29W#AS@2jAY5i8dTc6T++!A5pi)9+!R@U;;4 z372!JNx*lvd2+$2Fd0qDa{|I7IgmAKvk6K+T1)qvn{9vJ{tT|NNUBQ5Q7+JvpP{o5 z+nkstMOVuRHuCj=qKD$>E0bE5CA9yE?#Bzr<8t;yC@$}e8^L*dX-zZ$8KI6iEq_V| z;`4MF0B|3pzVB4XUDzUK<TkG$i@$?7X_wKi3r+iCP5;D`x!9`Gh<Pjw((A$MZj?BO zLfL7FOOjK?G<&=Ib^*h2h>yDoNk;mhX`I{X!dx#7$O|sj!Q;=&<6teks499+V}jV) z$Lh8c;>uL=dWzb398o=A&4_RC{X%N95Y@wDZ*k~Juu?N};i_uX0ECf&--dR)hc4Xk zSVl_381;IoZgD&oK2O`Wg!BO?)TM$1)?fvTGEpttHJO9=BhM1(EH1to3wPW)@1<H$ zCp_sd`gO0D2j$>fG~R<OOGDJcT%~Mw957TF&0;U3smk!jy)Zzq7%5uPJVnauKyf8! zceSGk{LeZs*Pu?rR0Ih#lM<$MsEw?~tOmrHzIIc8E_fi5T7tYUD?4&CQEA)uc9bUh z=D8NcoziIA<z&+3Lb|8N>n##>)u_(Ae^6AXqn4!|@2*?z<?8*?<T|E?Fj}d<{a)F* z!^!W7Mk{%PVhH4tBKJ~DF%>yAr$i3v1qh|0d|{_(OdCM5Y%P%``qp~9PfT9=Tr&G_ zsS@p(D$}j-wuqw}*HZE4OGpLzxAt+ZP0mOz#%qVC*n=i7`y#UbD?2&ge5!u&DZY&9 z`d1&eKL8x3)V6U`jV@ZbskI4*UIaW_T=F}lk{7r8UacVh&*c4z9l5Qad<YtX2k6n^ z@9Yu-`{ZTSb@5fH?Nh+>B0lbdc`fU*+~Sv6wA9|X4+;!{`}vWrH=!AG$G(=hE)!Fs z`HJzGeSN}Z7_X!LTh4Qp!<3*XixQR1fPX?-ygbLg*_$@&gYT-Bf5TAf-u05**l!a? zBVnmw5>j5AUb}uCvmek5b7Fo=3>j5o4x%jDZGcVDQpi|21@L3}*U->tr@9UM4QX%V zQ*e^^S7wh)8n7)c&A7mz9Apjo(xyBrQ=3Q#vJbXKW{E}K3DRmitduw=lo#4#l~!W} z0}Jd>0AAU4Asy-o{_o@s;8-`sXF%Qh+(`#LV76WfrcK?gU}*5lNexC7qOyI6pVV8x z&z}=rbR8j4wHrm!ZfnxHk?egaqgjcHsT~cz&tpu?LR^F<<8-9Qm$4brWgNB&vJOE} zNQBEcx&0g$<$`EwVW@&Bb8)##($g6;-v@{lwpveRWT?qx_4EyYV&WALt&Lt77otIK zrkh*%To{7HIlqtf`NZA_{c67IHU4J7zPa7^l@g$uQ_YLw<t)S~rgEid-&Wzpjxs5I zy;^>SA-PUL3Do3o!w#8cmr%H%RkA0!>A}!VKiR-+nePkmfM+WtB0}l(fNO%#YWI~N z`4><YVZZ_!`jq%vNAY&Wjg+qlnG@zr%0;u8XeMUe^Zo8dH4nCH!Zn*nW%)p&DDg^i zm?67(bTU*%1uXg^B0t}(04uK7SMH0TQBeL8vjV8<Egz#|@`rqta|Kh&@*4|!ANz_D z>Pb$_qrVRK<{`6844<S@^?ILIle&8@@gV`Q&Na39tuUyB7jWO99d>%UKH5awzy1#B zp;-k&rIrTPEt>knZlpWXfYaNN?TmPk4<*$%YbSI>A-q&iQfkcT5~sk<T%)}LUH!Tc z6n~Bf7E$%jiJ3kqr_CGtbMp{ef4kFoW`Q9fJtIM<to66`{Iw<zgpZH#ZoDGWxpTHq z-*cF8Ox^yF%#i<$;<tUvi+d|fw94DUL~QZgQCywhPn?U-dlSsm{C4~hxzuN&&NfVp zgHotIDJcEWJ}$gJFVMN}0!EcIP+V%xRHA+ntsd8!BddpS;4*OggcokmnLaB}R_j=S zJyj!rOWU-Us#`16uT$Nkp6w@hLP^fVGWkXyMZG3+$i{WpbckRroG^coQ`XZ#;GrHS zK~va>`F+QA*f&%fxm$aRPfS<i`gQ@6QGLF-*si5LxsLVUpqdcVvtCR>llG-5er%Az zhATr?=;+9lt7ilbS1?1)%wZF!4)>c4?JeA45_&~fcc5O(Y0rGa91XU8-=u(0I({eC z=P33+2H%N$V-b1uS!W6{Swan}Biw<F-XccvY=xV(!V2Ldp^wno;g>9;+tyf*3TeCG z%sFCe1~ONP(FXmh)I#Nzuvklr?n+yt8aeNgOc4k1jBXyNM+`4V9#DQIG5wh_hx^N< zo)z^8%t5K-DMr~|^@d^V{T!n5`)9;M<m*sZr%R$CFQm+FD480E+ulGqR!;IL?yFZH zP@0O1#N5o;Fo!9a*^gak1e$1kWRc;M`=nP$Np>-P01?F<hC-SbVyx9DsgoQ6?8x(q z4~gI9j~M>Pq&qYX69aVCqV0P`S2B)Ax9&zWbJE5&c^*xT_jIZrVnzExZ^yKtew}6( zfxN%iC!wOPd-s^j-HXbTNt8+e7igiSUjuV_Ohmyxly%z8@J7UKOZ@z=Q+ecpPq^5x zIkIptaVr&QJ1x8Vl$FAGqv=HLa7O70lw85EVBj$?Y)&?mXeGD6CZqV}xk`eUh8G8m zT&v1QUI6G6X68$vGM`3G`VfDQHys)b>M(m%prWYbO?ndz8x-G9#ji$HZI*SuUuuRt ztJKZqmV<X+2Qvy~1Wmiy^y>3`e?(EnDqi*wC7r@?eFHSp8>0wYMUv(#X{ygenbvGT zpSl&IJ*5QR(mJomvfB=;uEQ~{fg{5AHYCVclPYmi{1EeC0zrAk4yN8X?+0#6LQB13 zt|#fs5Y!Mn@FuS9_7!b>7qPCx6&lcdfqPo<w~k>4PA`%*w{DCP^zr=4=yMxN%@UqU zO=B%*FcN4mC85HSl~dxRUAqSG`zG({?kK5#`dm1t-CaU85U1~m$~k4-{rvfP^4JDD zlpFaCy{Y#b!(_jzzLG>GmW`3AaQXd#aa2#fbH$IhPk36?^`F4P+{8!c!7Xi0bS3$p z1xXd4gB|f8Gd3)6F%F!1Fk6F~*urN2<zFzZjH)GcUO&tp<bo7Der4y{eUMZKg}7Qs z9dEFG<jxz->w}elgO5qQAou}Xqpc2)YWRLCHU<$1ZljHqMPF9yo(QxfIdbKQNZi55 zm^GuvpBzw6-T1|q*z**S0QJDFZq$c)?L9A#ND0NZ&!+CKlgA<n(6_p{T5FIPVp>F- z*%K$WijKmGY2U#6nqoSF_&{WT`7)%<)vr$zlqrxv$*Uw-53PT-w{dB_H+VSE{N&p> z^iY#t@Rwq46`aU=xGr}{<C-9dviqB4cwhl&utqZMo}>+wJSiM)%=xdLg$59{Rno1U zF{eBS*zou$&nx_5(6W0EDzE)OaU_`dc3D9I<@DwcTjYU!tZAeA@Yq5-@Tj1&C2F2B zTCIQSL%Kg58_!-V@wtqzF^pT5__hO}I)^7SiMQ0>55MTd7<x0`AN+EGD#0!Xy<=cL z=`1L~Y;K$^P;A}ObP4iomDY}ik#$bO74{kqauH*Gv)-2y;L<NA_>b@T2vj{oqXtP` zXwsf=p3R&*AlMeDHFOBHwvbwKYGXkd5nNFn>`@B_ZYU0mDWV{OzhF#SsiWOaTtcsB zUnOF=O}nUQG?NwPDg@w(BbVMepu^9p^S+;A$49fp{Xz;no^%$DWkm%au{@AT0#O^5 znr0Hh2($evzM4u+Tv+l+)Wfc7ZBA`=g6N#NR^eyh=JenG^>SYb_-8-38H}f7;Hklf zCfObC>)R7@tp@HL$`Ov$iO#^;jpX(96=3pu4V)Hy<Yv0F7%N$@nUx;3nq3QKys<0> zni`Ffj*=Lvwd@KUpg!Yz=_euOVdj$D`arweex4D0@hCDWR=bvMi|`j6<x(5k!5fwa zl==7|TUE@x)cLbt=l<I0H5?-YO}>Cl{kqgXobUH<PH`lT*6<Ww$@Ze*jw+hXM{b1c zMSQN@0^2WVD?~MA;VWoQQ^Y}Q^R;#*TWu}i##up6E{Gy&Z)K`2f)OHE{ZLlQ!d2Cx z$!h7#dqBxK>G(4e7tB9NdG9zj;Kg9-37{jr&x;+;$}xlz(mQ69HJ(7p-A0bC9Xo@< zb41dptW-FXhS6Yw5?0jqd1@BXxz#XDuZH@}K~dI14A;t)aYya+d7FV156VR7Mh-k! z8N0@}$HpibDx^PGKY6nO9g!P+bklX}Daza=MvghK&er5TYn}w7`9xopee#Bx>%5E^ zy2hp(s7qeTv%ARg20*XS$IA~}ok^jis1w+W9d1O>wCviIt(;nnDKYBz&Vb<_mGEFt z#`Fvq^`C}=E%L%L7B3q=!|Y)p5Ov=k?`$dtL2Op+sYKGaCpViouvubFilb$14hALT zne5F~MuEt63rYN@!k;aSPBE2FjrXtN(}@k7I&wQJD(jtlQs$WVh__05yv(W--*wN? zm7}kMCjurV+zMJi&kPb!=?wuf&*^VPx!E%G(5S$!@oNr()zc$$+*AeyZpK*0D*lhF ztB!YR=mF=w-nbPzkYLn<cG-;9MJ`;C6p$){OX4%s(<C_jnaq$~j5Jc~s@xFiOm-}b zcjo|-!ak=McIymv(TY9y&ijhGk@9M-1tcx^j7oR_y31f%pVj_lc%(N(B$)lav#t>i zWqK^^Ae6w%nEgD<Z7~QFMh*2bS5t3pLe0zL-UBPZDHF{Tdrpj09Z<H@$AIR*jN1nL zivv5Mtc`oABNr1SW$Gr<SIr`uNdUODywWnDwPpb5mHi(V6eYd_WX2oT?Jo9uC(AlS z=2tV5zav*k?BA}kca_|(7w&Whb=Z7=47FdfIAr$`P4yAHhW&=qic)d1z%|d3mg8y^ zd}b><xr#Uk-?|)8PZJI6ZEEP2bulz9m|zik4-etf)$ES#mV4X37&JO-Jd5HFeK8RC z|Mbs$e84)Axg`i@FPq@If1Mm8orm<U$S0slG&E!UfFgJ(rdoi~$fnBiRw}T7{@8^z zy3+vb=w``^Dna~v(BjSqt6)BfEsZ{hgho`MMeJ&_Dd37XVyV~|Au-tpcsu;Zcgk^@ zq4wk}GUoad%sP_{0)sSovj0y7oOQILvJ^f(Y%r5msA6Vw&-GWyG|AVkcR2mE8RYwR zfj|^2fxVQ`Enq$Aonj}IAtZH+&wkJLxC<Bd&PLHerVwd;1ioh5$j7SRm3%amq2F}6 z`;=kNQw~yD$i#pV6cb~elfis#^#u%OiaV+(I67uLi`g6-D1|F`s^Gk_smC+VOox&L z)^F*Ity9y<x4c=Upc^*<#LWR~*8{WegMqzsWUP9B>uqOeEbF^`*CcE}3^ycb`L|_M z(2BaBHqF9L-j#o7=OKm&^T_lLp<h$&uTULYk<3~ks|)-cYSX~E!3Yc%lFYBp^wzD` z1pLQDz=w2)y-Gl9@--Ffk)i<C)?3DiTiIUbLI}=b)5b$;ldf%|ycPFAT{;<?8J#=} zhzH5(K7&Q>l7;4i;V%n}%nY&#zA#5e#&ct=u#^WLkYZLTA3e}>4%1=xDvrM&xrQyf z>H&|O!*OppSTN=h$J)=S#&}$`H6)uEHfMEi;I~m82!}pMSAsn#V=hxRj7^o5#3xxL z+?uwL46_rokYlUA5}19c2Sj%CBDhB?nanTSsG@QcsP;1@5+o#3`T_e>rqR3Iy`^Lm z6fvlWlbPvCobe0YRL7@aRpAP`n7KhyTf08u)5OUcbAJWI>+b#8Q^u|A^Hw`(sLe4> z>@6~1$P-v@UfnwyW`CwYhQqc*g|uN11cSlAqw~fQ`LL9=%-l7-CHZF55F_0X=Z5h? z>Il=)+$VGf5*>s`NTGExM~9OJfPD5N(6TL<-Y3Jsak1QJmG21DuV3dcwseCQL#_=^ zQmNP9XDlciAg246U=&hq`y@s@`E)aG>qP|H8qP9QR$FBfMgMt6_)O+EXiwt>9Ce<A z(NC}&OGX^Y_8X1PFx8>_>xKc#@REsPPddisbN>Q9Yhn}uU74$LI$|wip{2DlmS1ED zIMKDYp0<Km8r<nadP4EvXzrR4a0n*CNJ~d0FIwZP3t}M)JiECD#%gmi{Pe#L=wtB# zEIvREYG3V-e&De=#)PHc%DGu?fu93cb?^d@28&xc`KzNw6+1hhaaAzl#b$7dy$+a| zpS1W)@A)TVKOPa38gm=f?ODtuI^G6dsbghB6yxVLQo@HN7_HH-`o4!vL$l<hPkzwQ zyH*Hcs9`Taf*eq}`5QEo8{^W9b{rx9Mp_HlG4Tuy)Uq({k+KMTzPpAESyL+VJgF2~ z&f~26{4plrYBuwG^R`wkONP#IE!?Nz#veCLVDRg+7Wwkh<1{oG9W!J-F<Ht+y>j5o zj6%8HDg?j7smU@5Xqg6vP|Qva2_6%$3%>xn3fXIviZv0eW3DI_s(nVLqD@?F;(@q7 z(Vzp~0`CQ8$Mia5D2f#YUzMQb@pDl5J~CdCFM+tnu;Zf{p1xxZu1sbllQU@|4`s^y z8dO0AP`6Yk5X9QqTnX0v@YG$P(>CycXo&FMH$w_%p&I;SXw>G75+RzIXhs`52yZuV z&fwa144vDm-575lkg;||y4v2(#j0A+fR7+Tz+1fcw77{YpOcyjCRpK#`8I?;Wyu_b zaFfjzpb!F(*~yLW4oPC1@SAB{fmR``bC>8OnW4W4>X~&WhjmwCpeLrT^Mx51<FSL; zoMK(LQ<Mw|1f?9_(@mZ4Wl@>8X#6UEfnKZBy94M~73SCl<8TIb5(eqpDnA`4Z7e0! z&X-|JPxj8$R6v2kAnBB#l`mTwj#^W@Zg|bvP89E%#+b(`Fm@RnQg3DsL78?<*(IG^ zv#29h0#CjVh4k%I$cLRdIVyq7aeWRO2T0EB2M`$+{FHo6_NfV(q~N^uf~Y&ddT*r* zoMZNDc8;E>Xq&>cfh(PO*~sp$xGV?h^O+Ydr=i>O2eb?)Z6LAsFn=$IRo)C?PKJ@) zgrLeS9>v0kn(Q-BM0pJ4(c5YBf&Ib>=D(;kE`_cjRzF#mh-}C1T>>Jmr1K@7Tp;Z9 z0eh>rbD<?&j<DOymg?V_V3gzJI-pe2kt9eU&^D}p;~65JNE6qXxZbhzcXrnLV%L01 z0zDzKR;&3VwE{Dbf3M0Rc?X+<k*HFUreAwstV;&z+B}pzIRL2PGRX${OSQ_**rFgO z?Y&=gN(f}RcZu=cbegH9EBu-6INguFq7C%3l$CvnLRKiS&QV;_$x8Vd0V37e=)x1i zfGh6N^)Wp?!K)2~8ft|EFfQOpjMS^^3`8f_fXgF#n45wRy!jyj^&HhPH(=?6ve3A@ zDKkpX-}W9Na-$SL@WuAd0z{#2M^7!=h0RChX`&yw7dhn(>9!FYDhKYQbkL!;H32n` z%&DESb0?E)U)n=^7;O5(fhDqmD@Z;TOJus}*A3tGiNQttlDvGXK(E*LMrFyjX|(5z z#ca)cl3B^UIaz1YsxG~V$7zee=~y0<wa`jIbjmFkG(7-@)sxY&N>&L1S)+9b=B`Z7 zMSj$1jRL~_LNMcnQTtTB`K(~quSd&GVI?kCs(6M*XlfHA3GhU7*e~R$ZGds>1xn&x z+WxL@YkJs5QZ|u=9gn`5S3YIe2g0rO(TFH5Wp2lp^BW1NCh;62-DV_6Lf)OJLe|pf zQylXz4|t?GG&b&;ieYC#?R*zr?=U)qYitKAskW1#2jUYp->~z(zRm2&OQ&EaxyjT0 zX+^zqu>xh*sxVp)U-CY+Mtf8J@%ck_GmzQE`GwYUz!vS?J&@uXgbK|vY)^mDqLX(( z#%OTGtxb2+q}l^g{=#-&wjT_(8IKkgstfIzx)!FUyLLM^A|Ne{>N!0ZM!FlB1cHDi z-vfw$nqH8OXchKBrr*tK{KO{)YHEz(@3Yq6r%#-a*KrjyapZP>=1dh73F+RAz^u)0 zs4*Bc{L0TsA-#IF=l9!oUu<NQjrFqK)+_@tL>#IFAAoCnoSB>qvCv{eRw=B@jB{+? z33hhALBc}DmsJh_uEFGD#0OJaR<!kCl4ppvLKHZD<2!wuSZ?14j>dr*RtCbfLQ#?| zB;AU#Silww``x>78A6>)ze#oYJEHidFUBGFSX=IHiA8=ktNK_&`zt{>lt}&bbT)%i zdIc|KC<FwGoxxhfPZjME4#}O*Qt$w#mOE!6j$?jpnf|^VVfS>CB3Q+t0SPeHIXQ&1 zvhS7unpT&K`X25LKAh;T^_h}W5cYHVyoWh==EZ#p-A}vVe_C|{N}m@xra;?cNVLiz z@;r-#R~WLs7mcgtv(Mm+ysjmQ>5xi{r3R@)t4+|+c=o>VLQZ5|5hY*GPNKUWIt8?C z*q21GR)+K4sE9~}wvw>FU7>2v=~k>JgJF>mrB^^?7D#~=bpoea>NC`JJb6fOT`@U{ z&*;5eS*ZZ?J>5vVU1s}vllUqADT0US#5p10d~$4^brzGVn#z|!nHrfK+}(GnLQH-e z7%50nXLU;h<AzxOS1m&a6JuBQS1MkO6H500ftA3I__w~RgZEjzc8d_5CPSS`Oxzf# z#f~lP?yH#U2I-+;GZqGfNJFg<!BB{z!>a)}z0a?d3HZT7a&kpLtmZ0?$@&D)W6)cO z*pTbXP|1%`pyItTBEVV{tF_R)LG_l4a=XSy84ny>=P6$un|oJ>&K~baFs%q3471Vo z4SCN1eSqSZOKbva4sMQ(<mq-30OU^^S^4uVo4lbe7#etbaYDF8<fCTeaMHzcO`cD) z{a!_J`7Y3$24@aK51J+Lizmw2r&xoua@zh0;Q_L^YSCJ&xAJ`T;bs1we}zOdpQ+P* z1tetmXDCGfP_*H7j?wq_?kB87`0>Qo+hU{v=j@Fep`ve4vtd9JY1lem>g|9sI2zp| zoJN08%TrbOeG9MHZ9RP2)f@W>=YHf#B#a!^3cQ*7SeZI%_wn0YqNl;*=aU2#w%u2! zvC)}Hk=k{w+`XByp}!BjB-18FHzYAzIa%@5VqkI1?_IQfo6w$j)XPtvN`^$f=l9on zlI4JqQ3bLM5kAee9~TCelvoX~ZSl`;*h`h2;`>;KHXg%I82@F6B<4;)#-UbJGW6Lf z9YlVW{^e?CafDl!udYCYs23&yi#xYMr!gdB9we+1>YL7-2h>x0uF{^_AtNg<vDD+D zz}#`<mRL|JqRi&^)TL!=lLlQBa50Bq)oTXv=3|}t#@ldCterOa7SlGCoMT6m`7$wU zmvo=)o&_T95`OP)5iQW}0Hv>F;(UBFz`Ey~Uq2ZekUBzuN&Gu`r6nZVr!I9Mft1GQ zorwCEdqjyYeG*=*;AH20X*kNj9%_V+0f5g!NrMZY#8Z)pkUS=@F-m+4hErAB9e4bx z3^K(~FnCOSA?YKef7zAc6L`ZG;k|pvn#YMH6x`V-)R&!B<G<#wPX1otF|-0+G@9*g zaiYMYQP$HZ!cNN1P_W(3kNvXM?~mw6P>nmlm$uY$8H=b%KZGY*vod_HkNGMSh9Rq% znsgIWe-n~*!P_FQNj@zpn(vcpLb2BaTeixAcK~x(vErDp3$0JDiw=NC?M&!trDl=k zlpL52;7UAC?$9vIOU_X^8O69$hd|fqMJWHpT$LkK{!D?0QOHvK?4s(gBWV<W8u=6# zAmS*;p<ruHwi=`lKi{vD(-`mh{D)ylq>Fh(o<O8Sms*zY6ekUZ6VM03D0)0Foc0O= zgZ((__iy)Wst-xXZ=NOw2RS?Dl*h$Z+#a5~Z^a*yKA0d_v#9Kj*Dn-2fwD@K(U<hk z=R<H~i0S>m<4pDSy|92C=(LJ@JbDX`MYPRyyU9^jI2O)!t`f4N1t>+8oof_mfz-zo z(a^RhK-L^n3L+EZH+(<>YaoieeE_OO9Kvz?2=n++NU4K6*j2BV+JuO8OVG;7Cly-B z(N{awGD)CooQ;3`Z1bu;`I2d_*X+aBQXB5Z|18eP!|8?dN33;82Qb-T1Us2FJX9U_ znOpzZ^Fyt9D$NYTn!CTFFfc2XH`81fs_rec=<81`kpxwz9|u-I>j{x=5rI4A#GeUM zi2i~#@&!!@l4I+0_LVm5-Yu-$2)CoRCj}^@p4UDzzwv0o7oy|w*7T~}WuK8ZO-^4o zfvb$kClAkC+kjB}4r{Tp`Gne;4OAN_`}lpUGj}pG41wY|s@5GKQ#R%8en@hzF`)qW zLpp^pe1m7ZXx$+WkrI#=1N~;&y6Z&r=_>X{LI`I)dAqm%fT3oww=I)`Af1WjW@xh) z?V)yd41e)<IsVWj#@J-rXn!PY>cbr%vAa5p^eo)o9|bS7^%*xmpI4c3qq3A5oPX_; zpg7rua6z2#woD^0gG8-hSe#?C7i207c{{PfnKzBxDhxKo<-t2Z3yksyQCs>4AQDUi zcU*e~E_CHeN$fI!IJZ!49yC4Ud~ZPCtFIo%y59cQc9y(by58RjXfKj-qOI89TDZ$0 zUrF}}Mj{#-S4Jn7<IfF}sE95%a|gZy5{Nc?BYXoMOVh6mv<^Q(aUtbZO{cKu7}q<i zFX`a)W<}G&90Dw%e51$eTlJ4$I2U?UlL(<JXZSn^O?T@$WZ})?BJqJ)aLV2c^_QdO zRNQ>+>29(8*0|GH6r-JRy)krZ=(Q2OZw``}=$FDV97`k0vTDryg)H|%q4Bru0ZNC- zG_0Rf6s<}a&(1{OVd-2B7w5-Xp6v<3g^9w*g;o#^Hd7l}V9yCr2QGTrTUK~?&-N>i zYN^`W!B%plq3zeo+{y3Q0ta4W13hg{K1x_xB0^m^UGc?Uc5oJ81V1v5sJmsDRjHbo z;@5>@yE6c1p<DLeAEF<^o;gFe;FLk>e+S4pd0X#%6Fo@eC5~&3DNml&kljhqT`j48 z3wZrp+8v*eQ`y6<sJpn=V^ajHmJp-)qr-NJ3)0JHrLjFj<k%_4X~O}D9Ge@7$F_Sm zX-*R_x<I+Tl&~Nt4ddMVHR#QB{A*QiuesDW{O;2jIfg9r@)Mc{j)a-APpdh~nXx`u zCdaV%;xGwJIU?0<LYO~E{|;WhC`b`X7;tCkaK(5j(54px>d_f;A<Kdl)bl*e=d;Cn zi-uR-U)}`zH-9pK8wL5$Mi=^*0b#g=_+psqss_T+I{Au(;l?DAV@Qa7$(iT5(<l=Y z{Y9Tu^c@ZN0sOXwa<BnNpIz;}<xo{!*(k7n>PZy~wSf3ST>DxY=sw&leP_waM#RzH zN2D!BVrzqWuN6u**tIeymDcrf9fMbc$B+Ah!SHZ6P$vPR*>&YwD9*ojko+uUSfUfY z^QP2auL<z4t>hylQEuyr9eb;RIv*1<d5Mr{p>Gq_du$ae)eZz`8vyt7tS|W4*9Gp; ziJ1&Yout|wq(bCSe{NZsuW&)*s)nAjjKSxk+fa*<jiLH`x!*Nm@18QXlF@6q^!=-A z)zK&<KaFgPi7;W(8w1X<-fB$k>?x)vlnDRtCt03pfar%YJAV3+?SAY<0v#`On$c!d zu9SXq{~=g+zvaOZ1zR|ca(lJjaN4*UeXIC8cc7n@BwP>xfFgSKo)ov))aGm@$S#+9 z`L8d-8=it)dqp0?NC@M8p>DMB48mJwY4I75Kn9Y=um8Ky?BqK`&q7@w%iYLf4EXob zz@x!?g_2;b%{@JXe1-OdyEXOCtaZ@H%hC$Q_2iV``tFOfT-e^y)E!^oOAd2#uMWW5 z6^f;oub=BapNwXHMGlGOQR<&?9t^50Zz*^#y|pMH0mtiS-f}G9FxnS--gwKdqJtdE z*`@#;f=RKX20QTMH&Ff9Am@5im98=-C>iKG!Uw_QWy3+np+EmR_Waprz!rK`G8I7! zbsci#RS6h`tWCI^N8HulNEJl#iwX$zMUl5HA!w$`Wl9X~RpJbh-CGNT+FKXo$>0-a zl&RLblJw@0NpL+!Ec9M8qreZWJDN*6%+rr}QWtvkOw)5K75`Fwij&!`06yfugHWYN zyQ&KI@qNRrU=f-F<aaUexh25(`Fjr;{8n`w?4jJx!i3qtWJMCwGq0jTW^&EiXfYpv z|Ei<|D$`JE04nLi`e>f5DQEDPr~yi`@AJ{WE4;HOVYnAwmW{k6r^UcWog#P$^#O4> zQh`8Ij_O}_Jov-SUwZmmj)>!_rjVFNTO2YZnfPIcRwk}btoh;h`h@cWp@ft@mHN7N z`+zZ|fDvxR2rFsPC3X;f5?%*yg#4#eD`|0Y_-agcS0;MyV?`NPQ>3XMS2B6!lRRT~ z+FfT29s6VQ&tL5q_kF)O2_`=PuqE^?_j+{-nwv<O{21xDwe5&&Kh$+1q!1Ka*uUny zvXgXH4hZkAgr(6hoK!6maEMH{x2cDlQJT)XBf7qtS<buxzCYI&vKMAIgcWK|bmUe- z%lG>#TUK^Mij_);S)$?;agpASlWLs9#to?6l|SZ}z5afJdp{zFZ^kFVmpVW!sjkCP z{E|uRz0c7yGgyWD?bEQ+&6n2xw18^_R2LW{Q6`##Bt@$cg1`x;3ORAaNzH<9SJ;H1 zz~b0t;9CMI!0}WK_ODOtO$)lU<)3-xAWsbJOCL4<7SV<s8x@|0Q_&*DuN-4w&w4v^ z89ezv=$r^aw>$kfg?$L*Oo(mHrOVX#noh))ohs64Vi;bpe^bB9(h0lzgX)351+(b9 z{!rH`z<>Y2OwiQPyovu&=g$K9-~Z3VjHRpO9B{I%qLl5lFajg0SJKECLng-aFH_V$ zU5BiqU5HW#Z`0ZlW8VJfHWSm3sjTAuwf!zRcGa&JsqWAYfcj-t#6?5wKuo8DxcM9k zpq2(dl9;~%_($A6h17$O!~H3j%8h7gZrH=;E7&cSVTXsqD;xDZW?T1vlCA{nlq#aR zw{&f|qfhcH4L5D0o^ivWeMD7@E&KIX4M>yrmMl<bAiZMuL91bO_R5&-p!V@&dk>Dd z&l>UxL!~xRHoy~n&uFxrYh08>h}|myiW@6)ju`hQjTmB@^RpRmD-HpP#gE!>{t^bD zOJqs222H69h}-eY_Pe1@tpWwb_tu-3pFP8jGhRd};QsLprQoXC>P*J=Eo`ZV(eD4~ zp44`;|C588KTJI-lHVLbsq3cxu+l`@jpZuLQmJ6GyRJicEwq-aEqOA;-IIVkiuDSq zjb}9nX;W=gQz8E_VVxQ{{uy-IO7~;D0F+x*8|xu9JSqWxIAh+jpd}!H$sWhAG%jx| z%-a%y!c3hAfhe)OzTHibK9Si&F*yH)#~{_upG$sAt2PDIz4x1fs(1aio_U0o_x&Q6 zBkOd<)qrRA9IB@N`FR4-HfFyPmf!@F?g5~a@wizc+~d-*9uxd;M$s(-K8@Zz(a!kj z@4LWtwH$kmGmS7s;!&uVhy$}baV=paPnu*Yp9<YDV8)kJkrr~vYIPllW96&s3_w7n zwS^B#xW9(W+%fLCldIjecThw~gDSzO8CtY)A})XUmSw*=QXI1$vdFOgNY}s~pwMuK zM!;;lNA>>#$`Lj0<)(?M{%+74{z$~79eLJ`pOBZpY!c|W1R53)BGQ%ACA2+v=c7Ye zbw7Rv`>c;nKoP4C?&OK<^Y_c~$(W4|j716oF42twb)tR-qLvQmOMk?wv5%mAqP0eB zhDM6B+1by7U1mX|fG?(cV<I15@dCKypFamEAR%fh(+`_Bey=n@yc&Ss-gJX@q=q5Q zwp?i(qBCC9{w_Yc#~bU?927hP&9AFolm_-oP9YLD60#POv%{~lLV^Ha`dhm>>E?Rv zS%UbX^QN1j+av3b>~|YSPBoITlL1XuSBrjtly$TLo9$)aBX1@Uk4ZIsNK6y1Px6!j zTjZYaxhK;WgV1&1yZp#7oyVf@q~nAlmYsg6gBZect^I+FRN8)9Mo<Vd-XzM@6}I^7 zu-Oe3pBNj>c7rTnKS%s785J?KE&|B)<9@6O7iZe2B!C}ghf)kNtd&MwBgfbyx6Dw; zmD@q*)Y|oyk*uknjG!M}FHx*dAk3BVgKhw&UfJme%en(wp!iC0{V0<eb(J399Iud1 z&Y?-g=5VPyOn(9spxNb|-lU(!oa@HHIo6o+Nr_kIg`Lm2aruS8UxDW?lufnO_!P{G zdY)q>(!!OB@5Cv*w}FkjXt*20#a|@f`P9pDbmYZQttGkM3UDV@aIU=bN|_9d91Wl) z#5+nxnI0YL*Z>m{Ssr?ta2SB~XwyNXV%|4mLpT(K08Fq?kbqTU+{mF%B$6bH(-!7d z_F|>X@p@B$3lI4WHLJVzq6a)N7CuBL)lTmo*7_kVyN;o--54MC)#w4WWQ4%*rvn+9 zwbCQ}OoyiX+A?KsudL^h7}i+~&|eCQUP4RUGA$(8hhWdb<xHnlZ6Q`Lw`E3?OSJ-S zSJ%mHL?dLescplvHRfVtr5zXMurq<&f82RpwQR&6h>rtZheO{jXg@u{Me&HST;gpH zLW5aARsdM4YUBbl+L6$Sie#t);L9_AjGH&~K*MRc@Tg(remuUJY*}^JGleodqw=RA z`8YFsn6fq&z2cY>awAO7krm+o(sjDi|M#HLoIh<OJ$UeKB8x<+J!#<Lv_-}vXf9`u zy*bHE%giuX4jFmie0JR4{?>=RbHECCs}oKr;hiu2tcgf&d-o(mqvkyLbT+3pye!Ty zlehHh`2ayJ3<QPuIEA`LBecG)hh~M>U;+X`?>nbAj-lbPQL?}9h(sZ4)`l9@W5Jlu zp?cYxo6n8_F7_BKIoPNYbTp(TN2kyY3ULNW#4nZf&*scQkt2DG34^vp_x`onurZ>| zsI-(+99uNODmydz7sIh!UCpERRfhh>HCJq#M|=V2GzlnfeT$>1q~WM~pn@EmvGaF{ z!aN|gsq`rHL#g0GTcY#0<|`Fdm}(hmsX>usqy1s0=p$_()=n&_Ry;I<6@L-0PKS%5 zIT4pjq<i0F%f6_x^_<-%d^Taek;X~U9(01GUiJLLqNT+1wQ0@#wc*)gHp!y`$*rX( zCwF(p1-ibWHHDt0Ub(6aNQP?VWOk3=11JnoZ*1_N%CYTYopzBC&O!;p^3<a23BBs9 z<zYp(5p?TzmsPj|M%QAS-0;c&=~>79pR{ep`ye_n@C&CZAy2n=U1{mbW+(e-6|1`{ zQJ}rc`FWs;+~|IT+(r>`Hgl>JRhPd3WFnX2i2%4wh7`jr-(*sx+x%u?ryHN?C|C8J z#{kcYV5=Gn$`YO*Lx@+uix49EznSXfw_GCKR6JWm#!Hep)UH0Pd^1FCD;ETutut|X zZ9c+d72mn=n>cV}M?i?mrbud;1oZJ1BgkfenlQipZBXOv|JQ%O+Yo}&g9Sp}N1D)C z_RzroQ!dMyYU+NXxm42I`c0Be(J6Mn4HKl{c;*Cm{q%8(UN_?yU~Z<`z;}{2A86g7 zla75B|IFLT2x|UGpI9|65`Iekhsr<|eS9Lom2KPindUy?AS+U2$Gtz)Ppg@6?#*BO zWZKnOobY6yRVQ8obtSVsBF)Bs!$IQ}Mlx86yw#>#8~{P3aLB2YNKop{??jpbA<Nbj z-qY9NfrR~2dS?!{k$UpR-`>%P`Jubx3Jm96e6N=}KP8c&9Vp3-C6YDAY}8=3^>o}- zrV~Ql0af92!<CC$5RM+bktfx(=_+q53J{E;K<r4DKD=Qb(3l2`P``&DD15vGBgZb^ z+83i!6h>c_kD;c#i0Rj7(~SBG`&ys~xm$K#J%&@*geWDpnqJkHS#!s1D|ePP!tS;T zP}g10St3pu?F#1W_(N&7k>S;6%`m206bqNS!x$lT&09PKtg5F7Qm(>UO>)2Fz)HFp zmB+>^2rTq}I@`-=X$p>gsDQdp_NkO=DxH;wDF!NGw#G&r<L|kjY@ZSDa4QC3;0@ci zsK3I$pkC^putLgF18;(E|K~L4x4&QjIgPb3-dT;)qzLROlj0hCm<d1dS_+psuR5ob zP)u_Yl6OIM%bQ+p^VmPS?2gsD0%_iEMjbI7vj<B*6%sD}gBG=<$En2vvAW#!YzS?% z(T1)NTDR5B6p;v327oQUl4GI@-!X~FTRw}qC5ccL)lHsJ>I>sz(tqRfFCNyxCiID( zMtW)A5l>@5WH_Q{ipiL3eII)Mz{1(+$Izw8!g<=Z_XdY7fm{r(rxZr)!6fG>txy3m z3f}wOdnA2w^tCXTVzWK0-Ro=x`yYJ%s0r<hS-RXfI6l?a!&${!D&|D!IhE;C5ZV(O zM=8ut9f>6kgeZl_aHH2{fuFskn@a`n|0?+sA5zNC#jhlBT&A8|`kF}NFkAgB)=VQs z5+^NIvUo;MN5vP-n8t8Ll6J0@MeYp84*#(TBwJBX)H)1X34AxFo8`$yXKRH-dx0vx zD@9gHCya+AO6P}9W(#JA>mCk#I5&W%hI@8CV{1Qi@;=WzrfqS}zq7az%jGJ3Tsuj7 zl1-fV<h2YGx*Cfb1wHZU%y$aYbZ%l8{~x$o_^Q2`+&%fv_`H;59>P^4e&*Uxi^9t5 zLHMhz;bYF!sEP}PRupZ4qu|$6@(mp=FR-eKQd~xC1_w|i2_?4WqS8DFU=3BUa}Kwy zaquViM{AcqBImEUYJFWRbYHqM6x@&lv~DGDM(v>+HrqEALJagPHFX^A+5V!f?xUy} zOK0yO9xN`L`!s6wM5@9u3!~7J%jpT~?8dg3GFxYQ`XH!U$;whR$hfz~i=gW4Wr(Q@ zW@N)9Omnjv;mfO9CHJ7%GKw?0hZML`jH5zKTgA(}lsdpBJ^nep1Pqksr)NO*v0aUt zWW8Q4M;+U0B+jRmTUJz~HBW<qxpYn&{0b<-bgSB+H@o6pqw6<!Q(9&qJegnp$qwiL z)x5O5xlTWqPQ0Xp6h7)X@!~5QkpR5kiT-JT>3ZH@t0}&9jwVi&`(_kzLSZVNw=ZD( z%Syf65<6}IS4A{lfaC}Rt$ZdPj78_GwR6|%LXL9l2R1|3SF`O&c*7#&Y~Q_Uik!k= zidqX_{qtlx^?8A!7`3a{6C_yV7d_56mF`7RKCFM7h&Buk5Vl?ISx@3w;uqUxGxNk? z6(GTZy*?DQ`3-vfGORD5G34De2x-)?dL|?<VFTsqje+KdsTWC<J$(KXb>#u;O`{`> zBmu+>uHR$R2dGj=cNNV7)udG%hI1RJT$kOQXUbiyi);`@gwoH<DC!%7gxjd~%*{t% z5aQHU_DE%3ic%YBfBKo)wH`0_duBA14;#wC@EC7grjqF7gJ9Uf74DBP4oL?qc?>HP zyi$d011vj?$OONHDFt^Wy+rYl;@DDhtzfR3FydfGXaaXM?3ugKBH+sGv4DX4$lQOZ zf~{Q^x4vn8wWo(6!BTu{9Z7K_UKB7mYpxBz9$bssrNxt9@xp0*GK6b8e_xpzBDnNN zo<HKGz~FXuRhiq(nP7zNbD^Q{%4p}kC2;J6XY+1ANiqx<^{<vRD6CSuOp`B|N+`h@ z3I^44-TAord$Lp2?n&g*30iKlYr%AeFJY4dEO%tp0tL}z7QcC#t{?ppf0(wTjIjxA z#mQ}QfW54}%Jtm{`RF+3x;QKRZKXXP@blkQ%%@CyHks`j)3N*7lQrhA$E$Dj18c6@ zU_Lh4OZ*>#s1B_P&F%g};6zAMG)_`eM@Npn-Ck)(zincACc~s7gFUCoF^9~>!xAqL z4m2uf#Fz8O{Os^aLK+#tfEE;QxaC6?MYZ)f^o7#z{g%2XJwL`XP|}wf`#OMijDy8? z69$=+KL8$h2C!)yzXryg<5q#wlb6K<We6d7<iX*Sao8I~tEx%~_q@>uRx;js{Sad< zzI8cM0;xWc(-GEv7oLN~E<46yzC1Ri+cYAbkYD_X@n=QVH7S!qFJMUTrF#@Q4v_P9 zVXc_|<a_aZC0G9KetllwLoMT|)+@r0H-Nk~#za_EbG|NjbjnUQuOGVmJso=?kxCAu zrP~1~4OMz9*V$FWz+m~28V9qul0T>%O=+=28Y0%oCzN<gPFkBm`tSe$LK$yWz0EGS zxKRx1_30&IBB(*Ko43H`m+_~sB%F6#jbbT&kGPToTQVXtQX5Mgo?=#eaW>eyrX=ob zufH+}X`yk)@}6ql-|;$_-ZZY1;WjyHs>YK*tmG_ucae%0>It^EyY`v$J2X*UK8<Q2 z03Z9&*1OM3eK)SayEFEcYjr;}9ys%B3cQ$FU+5d(zP@E9vVhmuo8tU;H#~+9e=2z( znZPrAISRq^SLK6irP=KH9YwaOJv~=qkdDe9u}fa-WQ#}`d*5#1B3m7_bU`Qds~3rg zjT@P_tE))?dtqh~L|$L~eWu<nPP*ko)R!k|>#+*e4EGw%s#AzZ&<C;6AEj0Hn%15v z{y;3q5FyS|y~rJz6>)(bhNsx#s9Ka_1Bn~|Vhg_%&LCY|YC$%W;L9K$uX|knXYrqR z%U&>2Nl43s00lc!Q>`1eq-vgz5W>#?lZElPU%hR#2JI9F)tZCNCqGaPg~wGg<b6h! zxJW6{0s6CWXo?f1;+S@Qm-IbfRXkn__Jb)hmWLLhXZ-kH<285iWdY_ODhNA<g;ZG5 zmb93SDqi#0*{cufWMUZN_j<Iv=~*^T`<5Dpxd|QR*?zrf`Q|`bcC(f#V$sS&l**|| z<c5%UEa_aKG&~7(1{d%MxyvrsgM^^^{Wyz<t0jEsz9Vx*bMqr(!-<5Rs<*ye(ar>& zqZ=(jb4%4kpJBn$jBgv<dvnk^724e7^_E)k8w-6wnpS-kYe&E?Kv=$NUszja<S0`& zs-tg$+LKJ#Uzsy+K*d6VOPcun`VBTO3ag?5%79Rzd{KHq`SyoUK>Sj<a9VV5h)MK1 zY|++ko9nww!ViaZ*NJg?6z8Y-aBjqayTRU<6b^%I_<SUrmx@Nn41SEa*5JoZOSAMP zJ_VPiX&}n=1gO0n<dUZEyFPsV)ituyoE@%oR_d9&O1Dc7P}LSWMPsdMdhf^_2u5|L zmBU}aAJ8inv+bP$S0yVnLpQ+20Wi|$c=;p8V3Uxv^4ikd5`+X}8^GbA(;xsi+>u4F z)6BKaj3dedUZCl=E<*B{|6oT4iY?t8Z|iB07&k5YN5fA7rf~&!wvLztrwl)QkbZ@u zJe&V`_=JJo@lPYV1VgbuJ^GP`QQyGqDON2<j)o{Fwh=`-wBM(&kHhy1QY-s8z^152 zpkS^OQ0Rnk9b#;DOJGa9`L!;SzbG0HiRfNwqN+A(dE5?@xZ`Xv1PYE<o88w}D2&^> z4_;9uEq{Qr23Ak$VOJwhNn5XwxMmrrZ*>0fBcl?b@a+@7eN~$adG)M{Qjf2C4gUKO zm8t4SRD99V6IBN_LkJ=O3|QTd9nth~HmbX3bW#r1+eSbH>Mkj<MLU@)7Iw?V0mSek z01Q~&j~&tUa5k#DW^_^x*4suv1nMp+u|+$XDi(Ij#sS3e3|QTd9n&321^Q;Kkt%;# tx<Vizu<d;HDz;J6_etA`xHAoNbVX?&xR4M)uKZQf?L&)ZI;wP|0ASk!u<QT; literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-settings.avif b/static/images/docs/oauth-server/oauth2-server-settings.avif new file mode 100644 index 0000000000000000000000000000000000000000..04a12b329eace5e90d5fdfc4958edd5241dc766b GIT binary patch literal 29507 zcmXuKV~{XB6D+#6Z9i+<wr$(CZQHhO+qP}nd*APzdnT3X?y0HD{7NbU006)-b@s3~ zaJ4W6_|I%COd0;iZ7dA_r&n!EoDKdL|IY}`jjbL3F9iUww=i=4fBgR;oV|s!&HoXA z|9K({YdfR=DPev9!2jC+?DPLe07r@c6tRVc?f)6{|3p#$6DC0a%la?Zz?Giie^k}N z-qHR)WVf(4vilEV3|tw60{;D<G!zRbdz1eq0RVvh*MS!Pa|rep?iT-x07F1P{0C?j z_BQ{o{{M;q4gdlM0B}^WF*a~U0)T?zur&KA7zDzCC17kj1{4#Z1|aZ9kO$bo`G8@m z>UueS@j~FE1xSs<c)O`GKz0myWprz6bf}*iX=+eDcB68FEco+l=H>7e11{-t=3E&_ zV+SX_^=>q7+LzIo$b<`R_T__%n6*8S@!Koy_X)xOE7U<vj&5t(jO6Zsdio$1N%$wv z@U!m{J|wS|3}rMwqEoF-k(^n7=GLjby`@t3tFMMlNFyr)pnrtH)<^PFb8uB^H_u5` z1p_PP3Lcjyfz@^PE+c28sdmk!jHQ*oI$zOfgHxhFeMl|8${Fu(LpafiBY~ZWIqy`3 zB$E*JjJ~uR+R0WVusaZnMA}l(rZBv|AeM(#%G?=b=9A_oiWA@q{a%<S497`yWoZV^ zRoZYn;hZb--GHVg$B_SQEcazKQ0p}6>SJ=>6cqL>+&R(2vu19vCXy}(8?O2=4Tp<G zP%^Ir?x1XTfo@4N{MyteLmYl;1g^W%C{vD|l`bTicWNV<9QEZJawiI!tlF-ka|ddW ztCGf_)w{idD6aMstl^a|Xsa=WAD1o)ek2hLQd4JbO{Fw6^%?*j^~fx8C9gTX0lFdY zXWzT2p?h%+fu_O!q`NOax#<-I1n~;=BBB=F1R`^tXA+$<7Ua3hUDK`7w(90S!6UE$ z&*A!h0QZz`qnXFV2vtb=!EJ^?v`2XE#5@9)Uu8TqE!Y{85H9^{gWy^ESsRka(O*uJ zq(G75c^U0^MQlIQO1PozJRZ6*BB7wMDu0DZ&7!l@^nF1iglfE%rIOr%FP@~0>{Bss z&7yn0w{Oc@e8Xxt;ee<>L+9@8Vo5NFO|09a?m_s-_g%7*-hWiTu@UdC6Qy*Cee=wB zYeN!4<lx8^gdLNl(-^W(S)QP;s`G@FPY|Qn)Q0(WTauuB0uyG=S-rfcBuD_AyBuwR zt#{l~O$$1x-l&1vwH{#K>6r{FpDuR=_K4u+>NvLVj~;Ip!`i(tC7{B8Af;hEkH_vb zVBm|^%h6+c|JVy-Q@BgX-X#L2R|cq*nz!}V6QD!)O4oS!6(WXP-Uz-kyAXizL_I9d zCsf)EBX?v-d~1Qi@n>B1_CCC><*$_tFMwWcaPnB1v6E#1<1Z*hD1rWu8@Sbb-(ipy z(ZJ~?aV|Q{=hBLZD)Fpw<CB&dnv%CgKoH-Jx71Y>&Ews02~iU|ZE=PtYONIYmWbZU zH1^}LSU}ZaQ^aoCiX}RRI|0j1{(yp4ohT-@MsVX^U=wzJRSb5w@Su=Pu+Cz7U_VOB zRzO(sLf-31YpA#);w0cvEh^!M;}ISjwyC-I&N#1BG{<y)&S6SeyWe@Kh?mjK+lFiW z{M+zYYGW)sUVf~95xk21UfL5aE&oxA(}N_GaN&=~;)QL(qWv|J7-chGs((d~d9nyT z+Hy!bqEnd1IhxemkuA}^YXW)WiT0>$Kj<W;8KR086yPP>K-*#tipOpnai`puArG5C zh0!+I0&RZGphx)3J!=Dj(w))2*>yOb(zS6)Z5#kLX7pP|xG|}!yO~KsJ}S;ieHiAF zKxt>WoF{}hV-t&|$!})!s(TIu&ZAl;&xmf`Zy+l2m*Z{%F{J-^+K!^r5YaSRXBb~= z8-#13O~1D&NRb|QUz2r!iUy})r45eVQSJrsvr{*XR@~g1P@i3#^+3+M<vIQRKAg90 zLVi!{q2OEL8YQu<TY=X$6`5G&<6D|r<)qdHP6MzBmI|2@rLm$Xj<g5}OgGtrg*ON+ zHP095xsX{Op6i&VZ^4*%@pa0guL$eipmq3M3U$6|mU|bdeJqh@=RPypr<=d{k&fU? zm>(e(p<)cj{`qeyeyfq}t_1=4Lxf;Z<t#Eo?a+9p`3|N=x>6t}(~iBMxV;7&!JYEy zc|wCysd+rW)5_$}t!n;y^DRTP7-kYHW(1VzE{Y`)u2i=!^YhZU?-)Gv?XW_w-(}R3 zmc_4vt9_Erh~SuKwUme8+n3~1@iy4~W^ROGXzNO5kCr@ng{HX6ptdu?o)|iE)emj0 zzNE5fZsHV9O`Uxbad;n0{cFeGVMpitI+a5bgZCxy-_{SbsfUJg(~Nc99}wWJty2!z z6KM!OZBMK9DofsUOcu>uA*+i105VIJtW&m@?uI`0L~Y~8QO6w}WUBiNb0LjA$4`Bw zzHDr0U3B!!t@6M9IL^G3TrhqIIfGG`xSAv;BhJMH#5$2K9XPdvOAS0T+Vh0sg03Y| zDp|m($Mog-NDyzDG;E!Xr35*f!x={^{X(*RS<AB94hHz793xL8VF?;;BTN0HH9fOT zw`mu7DzMJ(ytS=SSI=~eT{I8KAfMWatFkNN6buPf_*f$W8x%_P{HQ(`=M9J9zE%I$ zkq2xsGwO+WH}?)8&OM5lIEX7cZgRQiV|Cm~&`d9seY}n@3gZun3~X6k-xII)Z#H&U zAM}0fUy~6B513{6n~?Hq(G~3%L_oCjOf$%kID84qpd{0XyKc>WIpwM0t#^X{sK^ld z$HnOOf0hTi$pm$ja_WsKj95Y5eKvorCx5tdm`dIC?!nld=9lvh;kDW2NR>1usVM1e zehIvo5Qqo(ZqRw^dJd71PrAEdiFq(LB$=p*i3X^8$n8SffWkD|Z~!tJfP*JUz~0f@ zg>M`B;3E1#U>Ow7bXyI^3;qNVgJ{BQHe8l_?|<?zlUMY`T8(n{Z5w58>9pZVL=NQS zf^mlAO?IFi6?KIcXqr*#8MeMWI9@dyIM9?0DJWOOgmc|qtLNc9R4U-R{;t~yW7w#f z+-;CFavU$!9ZA9>-dfy-PaN(TAR0bqJ=}8LnI(KkM0;?Z1^lI=c9pu1=Vq^q?ossN zhStv#%m<$CzYsxTVPW~hQ(jlL{B;!+-GFqsim5s=Hcngz99ZwV*f!inG2eVz_L>_u z>U&tqTi61=2}jj1#;4wYupnkXmZYT5zk*Su;*znA6dKav)e<`Y#u{$oZH3B*=>}d3 zBrIybE+{pD4u*1EN8;UC-NGwJCdkr32sKqPbEx|o%!QUlVpBb2R+(EZOu)L2rtd*X zAIxQ}b?51w;-Uv+I6dnf^Jyt=F$JdXN`(;$*q*Hn74A2{C=Tqu_zS=JUI?f`tWZv^ zc5O=@H}^z4=bmvVqL#?L_C_5DCekkQUoZN><FG-kRV7S-5j~J7kS?xRys2|9V@3Hy zcpyF?&YDi`7bHmXF474Vyl7l#zH`gkes*nl!$;Hpd7`POSG5Vf*yaS`%<4<pkRo7Y zwNJ$FlG!;0cJVVSmYhbsB_HgU5&Z!y2{}xHW&?GbiURr|V7EI6>FPvN=f94RA#jDx zWhXQ%Ow$5Bs^HtC4Z_~bhKY2Wt=YL?l?D-|L9fJs8O9kbtn*y7;0=@9X3?A<?uE^* znCCr^d?AR<Z6EeV<a(lZzaQ;Nqrw`EJaJl;64OX-GYznZp9xXQ*o6|;ENU-T-(iB2 z-M2)z=D5XpD_bhiaM^fqX;?7@eL_hmzJv}M)$<JvPF(5GyQ8F_0>Zb`9cadyMoHpb z^T4TTU9u}q)`l6?ZA%`e<7q@Qgoh^}ez9atd?-lc8&oi%7X;7E2$K*sw2ikd_5cID ziGN>$NvCyT4XYFY%duZgrdSm+tdqFfso*G1x9JxpkWelb>|@(U6HO=U&Q16cjeVa4 z8R|n;Nm=r3Z%9Pw9QGm}^(iGVKwd%ISB%Y-)RuY^sFWAS-)BI$Q7K=UIJ*o*8c<RW zubjb78ALYm{@fBYHqz^wUC4mtxEd93f^@+c25a+!kt#u--^_yS_*uJ-2aE08c;+8o zOJ#~*piZ@Iy2(MLL`C8kRLzeG)KV)(Y1FM@G(%DkPKvy+6K!Rb1Ka0S6t9N3WwA|! z?&#sU7o`@X|1h89J}tkuWuZjO!lmS&k{I;@x6tuv;HE}WqA9zo@B&^u@7xTI=!1n^ zZS5I5L#DmAf4zrX$u$+vB8eEsZR5Z7p1g8svxvLfl4zI8e27Qya?Pl#Sl^pUr;kgu zp!xq|_I}GWRO+&(69=4((Ow~o=HyI>=h4*oD>f-r01}$#qjx4BM2(R|nb>c6X{;;y zs7LL88WQI7>5X_{L@U>O{4-_Ut7t8wzrNwd+B-uh|A5Q%hUA7(evTBhUZ)h7lnf(8 z)$|D1%Q0utN_flk^&2ax(`SBcX4y23P1N0hxSRzod%y(<%-ENCd$(cs-Ed8HL!5Lc z!kfY51vyjnUDl&@zJe<~@otHlGB=Z@eRAuCY`3H#h#0XUqxsrax-1Mqv*T3eelT}; zIWw-JJG@CDWxmlmzx0VS_v`=k>rJ3PyycZ<(WZ()G@qyB+gt`1q`x61_X!d9j#TAu z3ve`xKD(S6<^*KvP5?m9t+FkVpx)O^vK5EA1ZSiifiMeQJdlgI*ZWxxW<X;KoJnzI zBR(9MJowGl<3o-4SY?gWRa&To%API`+8~-zfyqI_>Ks6@h*12OWnr?LqAR4*Tg(&W zW;;a&$t;j@SWWh_9lg`NtEj;uJ8jh7z9ee(3Z?4?0S(u9b%M}k9yFQ7zI^|kwuI`t z2vG97har0V&jJXWdtE9B-(}QxSJJ89wo1?fJv&71aq-l!kAY}67%#@3L2CF}Bg_3) z$CB+)im7YkRzJzRE^_7#evF~!Eq0vZrfT;EH{;Ld%a}+v=R~jWuy3?=g=RyimQKrE z5yU~fiXE6m+xS=Xg|_EUz*fN^Q_{BQUsYe_2j<R;#DU)CEpYqRO^!?zI~BEO2l2I< zEmkdYR{bO_LTfnoGgoUyA)W6LFP*tMU5d1z`B-4n0rjm0GhGtBV%Eg{QVHp;1Q2id z((^9o)$p!1zk+Tjcv8f<;d0y38z^ZM2V+pmAm|ssl#MmQ&%i7KTK|RSj;`pMStr8C za)rgT*u?LL{nc2uHn7nrR9cUT7a7EK6Qf&1Ra;9@wy_pttgWNa(_%qHnzeguuO4G` zd$FFWW-;;Fqp5g>H~_`et;mxUr}aNUE}ZztK15cH0V}#?97u4KrEQs+M+k(@)y$0c zA4<q>CjU7H!-yob@!(1C2VPMOg2jc>jOQOF=<HdN)FXxPY3U&AIpWm-$-b3!OU|WP zoD1G@=LfAy_*DqqQ}8gaT7doQ{a#0I=S`X(t%-W);E|H2W{DLuwgVsKxHhK`cl=_V zE`e<yZlF}VL@#hR^o`(#p26}CT3^AHSSDgvnWaQnE&aC4c^$xFRes-47mymE6je;o z5Udx%)UY;Q#bLo`CNz`ytIo6zWlODzxk(*)@0kO3_y``YOj5*xftQPspo$uoZ(pOj zw?r#Jj-kh5g-%Rjdf-(`%|`q>Ylh!18YxN-O*kX-t3G)LEnqA}FAE8P-V^A~58aBR z=dzI`a$aKXuVILLuEE&RDiZ#_{Z0bVK*18zAjt44C(p{e8L7vf^(C{yW%94&%p#Rg zZXn=*E3TS6rA081_-yiv1dM!Ox9e6os1s`nhU_#etwW$LMiE^>)g9W^@NF~+;R}Bs z_};2S#`0^(tVY_Npvc$6cP#zh#PgsK;oZw}C-|DEMm5zOT||-e#;vg%(|Zgd7c8!i zyTgs&7WfVeo>pkNS5$*H@1)z@3zO{9kSmB;^hlUuxH{uhW-3uq@>hP_!557NJ_ob% z2k)N}YQ{kjkj6FS`0BLWPd%y#8L29XKfJO+@A6@R`q$<j!afH6j3CZXA;=~BCHw+0 zau^2c;<c%Jk>RDC0cI(<z{~_TP+^5jVbk4o>RKfiOPmbahN;!OZkN|lg(ckQzZYzn zVF?}l@#vkQM96ew)!#~DFS1+-a1siyCmM&_XVdHc!meJ|oj$ZQ3@F4U2n#XzACl45 zKg1pts8u->x0`kgtLdm3@X&<ZESJ}wY8bLQas>D=L#?RYa9uip2R$2~O1eone~`M4 z8y5e%$Z<KzG+sHlgsx)~)6ijEGK|ko=yjrr=FW_yFMl<Q6it%>^9`c4dXGT4cpV<r zfdDd@{HX{<-<MS4jJ0nx%9rv5C$e`DO7VS(BgfQ+vh+WARPE6UQe~SW?p;GIB=<9b z0Vm+92x<cevOk1$)_(&*TwzEp=4;260Fx+y39Ti{!N{w;fEb(5FdgCDN-!w@CcE8N z0)11-`m4UAq88>$8Dy2BeJHtl0*HJzazrY|=dQj4MJ^M@OdT-qv;ggD8x~3<{8EHN zAHzq9zHD<Wj5_MQ{Ip6r^7>k<m@h$-_(x*8#ABX<Bi``wUG)n+!n<4VB<9gyX9n^@ z2X<^5U35+=lhp{-z@E&6R+CwEjV}D2!u<|WN~T{0M+**Q{u-1M?6E#rRc>*=h$QiH z!I}b*s2Js?bH4XtGRPU%y|_^kX}^|k6`G<UO)e0E!ZePEZ%pB8!**7vu-Z#nq`JgG zorn#1QewT@7&cXQ9DKG-M1ss*Sq7B{<QR2IGEZj0d4C+)f!~7;9ASOhL>SiHP0#G+ zv98{Jjskf*qkUl|J{-v(3E8FzoUolQsTF1Y0jwxf^k?~=5W#8kZNIUO$HMMio>EAg zX)JM7*XT&ri=ZO`_;i8=a)B+f>0s@=5HUlKn`QFX1ZF89O*RDCOQXsEMof_esC>2o zxJBlb7_$O|xo1?dBb~b6!G_QBWpi2fXRubDz&V;OSmUx_#NA6*uith&K(o;~UJ_9~ zldV#_l{`KFCi{``A2x~5T@*W+BJmACOxi~uQ<$dS3q4Us1h|pFm-$m3HJFq#z3&>` zln;Q|bAQ%PksmOIS-)xs+6&+8<ym@D(m^@=fKaL!Kyp<+Gb<@Y#Er!gM@Bv}n?oz! zoJxODU@lmu<r#P+%=2W6B3X0TYf(<eXJmm3*5-eLIS?YztJ+ZP-6c7XR9|HL!EofI zvRSGfd=$i&wzW2rD(qX!`=YU>w=yrdQqc)-PLccU@j^S5$3}qXZK26D|ELg51rf=? z+Y%e&Oy$AJ@Q=rt#H42|LUS+<m?7~8lNpD}0+H^oLOg?kKXrWh&5L_;cSNQPB_l*D zd^;+t)p2ixg2(^C?a=PnU?hJ9$B>L^!D~j_8Z*p`Z`M#KG`Wx-145wBGX!{eRRoG- zp6HGmK<Iv}xU_~}(;->L#^yZ3@uC$k!nK~4DnpbNrMg^6IJ56{Tpt4yAg`%K({Yg8 zV-8lH$1R-ArpmvdSygDZaYmp2#9J4Flq#gBtK38WNCfE%C@4K7S3m7lEO?D~oK$`- zKnP;qI*dkQ;S)qkt1-!ayKiIm)qY0MBt!3Km^sOB<mLGj8m?I9))}G?3&Vu2SWKWP zE`}?fWisehK-#7lf855&5iZ_Y$9oD>?Nb=LA2VV!6*;~>LYORnP;7-?nihEeH;c7R zmGfAC&>t}6$@KXw&+)V{1%*60Bk;x+PWl<)1#?p0>EI!I__mw-nT4X}zMeM5pDiYy zTc4g_bf3?Yv3kr|-NpzkA22v?czDoaQ8SQzzi~%fbF+NDy6m(KT)|qq`VTOs3cJpu zHAZ^e`ZD@r(gqQ5&RgXZ#%A{@^2k!FG7OpwuCV57%qJH1Kd~>=USG%EuXu($WCQg$ z!>LlhxUo(>J-nA)f=Z3@O&t+Wc;g3{XPxr{iEtT8IMS9B9)p@&x$c>o;%rBdz(j9h zY!yBeBsCG{Qe#{*&?w5{MjBkjF2J~&q%^+fZWam#7FUA#*%y{;Ga^KuZY0Lc<n%Jd z&&hv?))qGFb4oz>n|x~lNU1CK&i{4|d*H`=y^F`*>3778^CxO$U=J^)SF1O=aJs$i zQ=u#E%p%;gdU#{GmqVN96sc>{rbEj+!XPa*51I$3D%H?kgPozQya8!^X_h0uIC&hs zE6L5RGxUyIRDD4dytn<cp-F`*(Fi?^F_dAft^bH*L2`3~If<%C+6kEZ;Mmv=IK>!( zCSv3a-9}jLMNv*%qK(|qn*yJq#m<GZXs}}3)+LSm8{9Bu6`tlz%R9C>z^S&hNn|?0 zCo6L#&Hfxcy(?wgoaGI8gX~%7rwm2%%(@{jeH5Fz`uSx7DH7;yc23WUN_7pJxMD&4 zWR=Y1Y);li8|5B=4(6gU>#rsF`3o-Ib)pg_>A3otSiW!*?W4)UcpdE&+9nWnn9F){ zsa1%0FncQIP;nXYbV6gxwPT#S)8jIU?!-nV^QPHNg{O(JOqetP&~`s+y3HSVjBs7Z zf@~tDMKv<8`S?8RleFaoC_?0_?7rMY-WH@RXksLf5f2KtIBe@+$V)2dTI+L2mwq1V zLJR)*E0K(^kE5^cGU_((1=wz1o1~3sK6nYi*<}H?1i;(@ey}=C%1#`!*SN?psFV8E z4i@n_U-md3n3SXxh~kG2&1XOP!fh&h-20S?*!^-bWN;Wq6m@^&3mY3o6O?|q>(iu3 z78(n(ZMqcePe9)UKjRb%O5jCUVbbpslwCU*6S;|Ig7*trXoX-xsVdCTtgX#%h>W=B zQ^-Iq2t0>4VZ3)g&nHsEG_GVftJ7@|uK^DZ%kZ$etBjYJuRoT0xQY%av2tkPdi-u5 z(_Kj+;8%OTafhkI2E@oLT!NDU+Wdm)e&a3P2QjDjb?9kcAZ6Yo%l(uKs0bggN=RI| zEAgzEu=xIJDwIZIBnJO1s6wrGD|)5u(90@}pxi03D$2;!Nqf^K!?~XgQ3AOV%Q%-= zSY}xo_kLg<rk#89rUmtWXPrGiy4SJP&iD#&6Nq&EeIbLC9?`{c;!8kK!`t_~S4c6p z7$Ku++oCs1b53@KMu7t<`RgCK=iDipm}ISCR23%ys^!5qlRQ*TD5M_|{&P!xQ`sEg zyxnB?JQa4)Br_Th>Xf@d{J<_-I~2pW&qN<o{tO}q{&I~8JA=0MFCg3K+*6*Gx=R)V z*%J6kV?h|g`7}Y_cWJ|VM5S&{flINxGQfjZ%i0>DSvD^LJM0-X@J3kB6Uw>~P)CY- zht?$mTumrsmomilMzckMBcZJC1D95nJUJ+=K1Us2$X@GZ>BR`NfjL7*!Rh`CcF`~* z0+=e?t-@P7tuW2E_r^#>6Z>Zu-3v0F#Nz?5<QT`l3+&HQt*(7X;qG9e!$B<$pT&Dq z6CxSAE$F}~fSEHQ8zT7)t4~nIedG&=4W7O=r#Z;}tU?fIv1I6vX0&*<zELb%P4#AX zoKGxCkxfAt6pHe(;iE>?$`cgEX`k%wrk?V`a#~RqS#OWzbB1y#XQqRKwg0B*W5@IF z395N1VX#y|F8xQ_Wpwgu8zG%53S4d;bC|7ecM~)4I<t)7Co+YmY&OvB#NdG19$n>O znIuD&2w^PS>ee)nR2S5xmo^Z5h)eQUEKG`>=u({O=LBHArwjE;UUYushYkxwUwd!N zR)MylMZk!biXFVKERv@jq*vGIH)}|l>VyyZ?QWoIluev>2An?rW^zeUTwEs~C*w1& zgBBOq4LHXO{bY<@2e$~_ga3;J{DrrOYV!#W6|-;d=`>G18D)5xc4GzH;0MF~)pn~# zTht!uGe9({z0L!dAUzW3+vD=#6AY*y=?jPs1r~@ifq*9<6e$qM3gUu|6{j6GIdPxV zBb|s9#{PtrXD;>CM0g`d7E0GSNmlq$78ekt<)7+XF@!|RL~L~t{D3skG|QL9rxD2G zPaP}lE00WSs9{}2(RsK%+(I5*bEjGPFd~#}xx=eRa|SrcxXX1t-WUZXVd>a~<oT=b zN4puV&uRH6S6?|~WK3PYIW7e#r>Y-q-Rx)1OWxbRwuO$zP*C$zy|Pbru$7~YZpizT zS-fBqe=@X>93~u7H%^jSvau+B+xNV<_rgT0ylqUx7SCP9wS|Mk`S`qd!A#8`$4`+f zeP*g`!^Ai!h3eCS(ogM^!iS3jotrLTR7nHH<>rk9`tpgyL;kYxLExY2*s{oG*)^yQ zRbO=1od|iWPX<tP6`LieT-9^eX^oLa%)Wyk{znu?(0q5C7RXI9EDAX}e&h&IWoXm} zOM;3;^ZIlhmYT!#Jzf?_h6vbCEYn}G2G3s3x9}i=_CS#$ncQR>f{Puvb@GU3E^Au4 zuI)wS4a#8cVHJMT9EuPEsUZ*vh8bEDEe7ML7|r>ASC<d<J|of;c3J#Z6offD@ncVo zJ?d`nNp#7dc3`-`4o%u_cmf}qQ9~62=4&)NG*nr1L&Z@zU1g?~w8Z?QXNngOJi&kY z?R5839An@1yA4dna!fuqe(q@}C*K8fYHx67eFf^(v+!_;D$%3T7A5(25KjX<0CrvS zqh?vQ`l`Z({6om^E0ldca*z~PvALb(Rh`~4$I3Usb3J0+VETIfS?H(kHbVw0>%-rK zN~WnL5rqWq?B7$boG|@*k01UZfBGp^=?-B;v>amcdr&E$V>y|Q8L;$BzS__+F3(`1 zf4h2pdFw;_F|2@~UwzDUnic{jrEKDypM@q3P^J`J98mKzZIg+9Dk8Q8zz>oK%elr* zim}pe;x<UT=?C9cBzw1$vlkxHGibFAP)SZBr$TjM<;;<>uIIkD`$&)HTJ((Guia{r zog8YxpC-tAR)j^rX9_4=qKb+2F%rFZP7}W|l&1C{L%|C(6G-uwdnG6PNIZIG4Z#;k z2PI|oBO<oLjf%`9WG>OxWD*J?q7(nr^yyhMA8#5Z8a1&iX}xaNaE@lHMNAnm0mSvr zH=XfbWeVYK?wm$>oa)$hbzZ|613zNLk6KgIk8qJcxB`Eu26Ah`s!PFHP|_Xf)%$;k z%uUcepH2=IMWBlzBa_;whzzi13mvXvaMh#YbHuur-XJAA5;`<so#>2hI45T5np<8r zYgHv_x*?E#CDX=g%^hBD({<RkfUv4~<`KcR42{AS<l(D2^*VOX-iI`1KikTxFYHQc zbq4t#!fn{N_=bg-ijJ%>TNW;<kF%j(iDu83{DRpFzVb_vYcPQTnm%Ef{faeZm$dWA z<xY08g-~y^wP+5hnvclT=b_@wxwPCR++)0jThT}4E`yD;$r9+zqpGVcf#}jC`ZFSd z2yxtRF?sTu;m9Z<rKKlWbJZn6FI%gVWbb&Z4?HbE3&6y*fiI{g0U-$ymn!4=vFK%L zXDSSi{$5n0YOD5+jQ}y6R&je|X}x8@NzG=&?k@~1r*9UZ;(9SSivlSOFR;SCz{Ot1 zG8V@T-iT$SRDPGuvWudSh>J34X1u)7PENkwPCufLkgC7tv6gL(FP{C{L$qcF_8IQD zo4XZ^;GZB-uGdw*9LJvC!}Rc_0FCxc_P27DwnYrP9VWc4&p#|8Gsygtd|onLcQN)e zFPh)%zTq)5X>vQ3UlrY<a1J08J4k=Ej(e9vbTeRmPe<J7KkJdzb5Yl=c#08B*z$_g z(<_8gR}Woj9kK)ZsF<0E1Wt^1MYTE7qhZC;!RF<cKu(j+A9=xsEPQ_~TOF_8Ej|b< zv`h?fRL=H{1<dl|v(_K5XgZ-Ec(9hHl<OwSuiUn^((8X#x=sIP4M)|Iss7=WfGYoY z0l-f8C&5k9@gQlO4#6S6w3ksrfoRyR<wyZ3oug1I`n5(e^a1&pwdkD~*Rovnv=2f{ z)0b$)AU3UZB*mk|^=c~y7swUgap7dbBR!ahauALs<a}(kKHR^-hqS7+zaUYEV+sF0 zGssUj`mZWKI1+c<WxR8xx0oh$#DpL{VM-~;`f;Vwhkin~Ey8NA7aA0*^6m?<(JCID z!GS#NK8dV?U#(d>cH8*M=IEF|5nT_?2Nf_jjVpO-4YDIW{#kbEk-tDWD~vv|VtTC( z3ZUd}Mnv9xdq%!bGb%ke?RvUPJcucqK=yaT{3L%9;mX7Sf$*WRhhA$$iu(+t>Nhty zA4=g2^r3{D)P#L~LMV|C349@(`46PJdHUNR@2sH*)Y5J0!ra??T%L=Y2?sz9FX*W^ zM1I1(^+jyP-bT}4d*qHJZ2Ok1NlQyF=~FMYoIA_I!k8a@C4D1dmd`ttmTWdT2Vf4; z1}F<Q)OzffwZ|nN@Zwd{J`Tr0Iuw7OH>hVRMQn8WzGsy0y6P!rUJQ94T{oM<Fr{Xr zG_eRqjtwN=zUgh-(SjdOgdN6M<&_}IS;iJOB+|p7HN)&utS9@f;cWzODK5EjzN8Hp zt^=P6T~3F|^|VzoRNwkH{!Ge2P^r*YY$2zM-uhcO*mg43^q_HaxD4$9`sReST$(O6 z_LN~HXWc={3aE%}PB%{gmhnji7;;ZiBwySN%N<I|u&ufUgK{}l$Gtu5700E@r)=H9 zb`ezNbz5TL4u+#q*Yt-IILsa$PoI|n5nVy*nbAHBZRK$SrwxR(Efk(W7C&>UT$wNc zAqwib3X$t1#DR6Qd&k;muPf$;<X~y7@}R67cHK5nkjrrC-*TR-I&_XZ#Cq}KA2QY^ zxSOc#b14z#q!qY^2PiH!DXO3ToVd``(lB9x{NWGcZL-)}81U=MM=H79@`OZSc_V41 zHdC-6^3Bao*)Ch|8U+drJzbvT5+ibH1?JOdtp*B^N?X<-0d@NQ#6MXM;IS?%PQ>sW zx9pa&$Bjm=F)747O5w3p!zC$H9RB&^46e08QVSr{9j-UyEleL&F}-hP$^rs!M*IJc zZLF);oo=?8!mz+oRUm%ZlyGy$dVI=4s8jdbrP8lp26m3KI(b%y1j3O<(Ll<8mL}hB zNkJ3TagXpFY|k5uboyP(yoy-R|BYgW7lFr!UbVh*&0Ts=ULy{0JJe|d<ZCwrP=j%j zK5kvM<`q7_M2W+j58MEw>*yUq^<6pSEQ7QOaxU<7)mUO9(y+K%(;WWnnF$P8_K)ni zIiBeGt4b`Mydw1$<Z8$2#KA6epXbm8YX!Dr&zBc=deMa|6<d$7kz)m<jwA@xLXFER ziD>q8B4O(W1p)h5KmFDraK)=6XdbEa>p+Z(yW&+Qc(G9N!jOzSR=S%WkYM!V08UNY zM9nT|ds=!+tW7xIs!#C|o-=}+s~<O)-yR^$C44#PcIi=tv31jZ(#EpAlx2>}mtvC- zjajKdCjAs)Hi3XW_8_Qx-uPoSH_y!8Uq>2x#Oljw8DV$<#kxW5AK2?D=gb)+8`cOm zd~gNWr`htsLaZZX5~Vd~y+_YajrH-WO8yaxqojZWZ0alWLTcuJx51jtySp|p;Zi1+ z$*E<tqcEb&Jsf!s$4cyVsUDV;s59i`#v-0DSb>%=9JQSu+4>7zkCbg6+T23=RX5#y zBh(>}Of|NuBRjd0xR&y5a9Iy~Bp$keXq5Sd5IfKG&$TtslQ6sfwy8v|$0lGFvuPnn zDlCG@pVa3=^M-G{htuf-4Z+ZCBAHgK<qSTN=Z0!2O5SpYf_%I(hTM#@#mf(lHm4($ z#Wxszk^DW}_<O>0y_JWQOU(hNUGO;mHWR;s2}*K;2_+pvX>Nx)&7ZDGx*^PvPpRW9 z@8?i=^wU8U%BKN)Z5b&y_82;~^#ATiwsKyCmr_>DDMv+eX9FTr;{XqhOdJgsO_&V% z2_;N!;g=q15mf&?YB;&_rvg$QXB(;@YjPaMNXkR-Y)4u=<5pb%izbumwhoUYH4Mi} zFm-@j5LF=KeTcnVbYct}UHq2=MIB#d>Ugz})*{kHqe`U@@y4n<Kz0${Gp1rIu#jHj zV=J%l&qZ5g;81Lx%_&>{6R{fA$!)JP7;=B8RsatWP8>NM+zbl+;x-;8N?-%_IpGNq zk04w>s>YS=F6E;PSpmO;n1UG>!~r$+YvPi>ckS~a#q8G&qw=KQbR`wpcdK6%N?Di4 z_OF<SR1(=7lKai5`9LC@Bc0MJ{JSE<??8j&O-ZncMx!v*VY-pdTg!PqJ3Wy8%)syf zPt8*7W#9Uz2U5WPTxH%R^bHXH0&lhq*Iqm&oly&c!(<DSH|MHL4BvF4+JP5}T3}ZK zXsp2Rh7#;kf$A7VV}RzX5qh9vsqrmL(dl4{(u5PPi;6@+niQAapTBlUnU@dmm|&=o zR+aXNg{>QQfN%rVYN3YbG>#9kXU`rAfYgw40QbzfxHCs|&C^Y@fO9Cf-miVo50Cm{ z&-Dw#Aq#dh=g2Ycs_}KIvmgbIQiewSAn#uxQ7n*YM(?qS{Gv7#!H8N_^;=1!wz438 z8=F^|)_zxCn&t90>{r4QTU(Lj&UcX}BFErkka%XcSLuL+S(zlk5KCrd=b8R_*PyX$ zaF1}>TF;Nz`$v8Xv)a;Xy|qX8o}Ka7?TB2NJMr60bMe90Qng4HWQUnRds6f3O%@CZ zxQZRh&CE^d>5vOt1!!&Ip8Mmy2{=ELFZQ|}plSn}&Y19DumKXXWs_m!!xaK8M-_sb zv&blPae5fdl}=nNn*XQ?=QhdK5G*c=?Jq8Y2EcJFpSwp38?t=4T-?c4XQy)HvXkXq z-T8N)55mnJlHX3HJPxZdU<H>rds3b`u1d8#hrW;?i1QBad0As60s>J{B-Y1Stl*-J zD7WpES_OV0kLQp)YX`&}PJ3!hOV5HuYZ(kS#Gx~L8bY!&AMYA5jfkt?wd&5f-F<ar z&I&b{p<arV<<$_fZeLFRPhE=|d9$78<hDkf1a5$TAIR@g5T&&PgGH=Ox~Zu2_RL<m zQ%wTHyB0qxut?;e3T+<`b=&MCic%_!->&P(VhI>*4s$iTVGp43Bu@W)^$Ob`1+?=` zBRcvjCMfwp^}zx{MJ5m_&r{5*+LzS>P7g&$Fg8DG?Dzi7EdU?)CN7!rQSO1Tvh8ix z1_E;?SI=^ipM#&?dnRU&*(-@IzzP%LRd|P+H6izaBxdcF!j9|)3}=$*m4p}0mp2c< zTUji~K$}3-x<EczgqiyCS|7^AK3}G!3jg)^;#LtF7cna80;Fb(PGT=~waYZ-xuI*k z`tiVXTX6Ut?AdS3V-F(mq`21c79y~ar4a}sJ#)cNhZMzMH*svyDUmI0=A$eWyow=- zNa<H@vI9ZUsDDnDPjniN+;5>G6`Bqzrlj>$1ND%6x(D;XRs-`Q(=2LA0H9gFH~Ryh zh0(yQ_4t^$?oc=t-53KbpqELPMAR>qGKUc2$|IwiT~~)P#v)m;y;^GkI8ZUMR|1M$ zT<45c?YI`TeTYg%Dn7nd15}8Bqc0K0KgVFVZ~%kmS2!~+KBBR!BLs%CMgmef>To?i z7v@mYt2%xbR6>hHI5}(e1&$?T4LQ`p&Jk%n^tjIMb#=q-$iqeY%VSCuBBTwk?+8*L zC3shbdLFpI>8V(NQnuK@-1)Pqw?Vy0%Tte9u}C{vA^du+kBO%B&yDA+43ah#5m2G7 zqUWx8z)cnHDO)fDMBY=nBN%WDO<vj2e577|_cv_@WGekWwb^9tQC+=F%UHnXh)Al? zsRg98h^F_<L?_^1wjokJc)~R$^%PR=de%Z~8!#A5$NN$>RoiFvL6?bagD_ifm$iZD zJDiL2_b>61d0PcO$E9Cii#xYMq_s7Pz^0D0b69wF3yah>^l0NcfKR@An9_$BT&4Y3 zw|M_KCxslYZjMqxfF)&q1uvP*q;1{dT9R2&PHMUC>Dh%YUl@RKCr^FSAYe?B6&|^z zsRlb6>K0%+$-*}Hkxqi4wW8|&EmV{Ic9Yz$fpOQd-X+p`wlwQb0tBYsDv9YG74+b1 zIxv6jbwZb3_xppHoz~$A_be9gEqGB=0^G%19YLI7)TqZ=)-kl$+o&3WfPcH$Ai^wg z$=ADmE_G;PP;Haa91LG{Kxd|}8>y)m{ivl*9D9oUPu|R>epgp@?y5izzcW9_Kgr<9 z_>Jen&KBWr$JJsB63`|^DOj-otquLF1X0Lavo&YV7hsWwwIYbkFdyXR?2&R!cy0?r zzC@6a6%)P(D`qkB8@&ZfRg2o6pTT_WT@kV=Wg!wQ%g-<Uhkmz%gZKnUcbWX;?i^$H zF|jbnY!wSdsxd(P1zsZyo%!lh(R@UV&eZy8ZqEHwGrDbOex9P28Q&a^&tL!@*PIoL z;kiH$Bg$Yjt4acny$2on8Y~^^dzZsG-dwo+!DW{d$@1(}lWn)<8nSTaWMp<IXTLU* zG$KMW<T61_>f7V?1jf`o4h=$&mM09wY2x=jf5GZpDR-0XgDlAU+A%VHxN|P6_OH?y zeq6v!aj^(#K^vnr5!z6-0ojwWtNb&ERSH*!tjuRl_C*%p^M$3nu!j_+DzHIjP!dUr z^oW47M2W9lbvP<OG<|s*UhI&}Kn5ht|5yvEhltF)mQ8*2<PEK{T+#tj@e}~<w#*nq zd6FpKx}{jaW=>cG1zNb57plYe`^k8aLKH7;Bza8hkb22ds*{5NZJb6;3VSLN194Ms zi4=TG^C~mHmF_Y#+gZb&{@WeN6hoAa_=1%a!Iq$=q`DG;wH`iWIq8X+cAMY5>&d%V zYUN5aMKv1T2<IF}mDbwT0KU_@`e|EhKYN<b=a368lMq#MA^LJ68Rr3dL^PyX`?G$B zLI`4S7pmo>>OIgV?GR(LyF*YyzRSQ>S9{2<zJA}okKt{%IAa^BttoVFCYv?$!_D<a z;p4f~#dMUBCHVe+Ycn8@0`s_txa8rWzYePLa{82AQYl4;#$aEvXRs%3S>k00Km%k; zJ)nXrA@Me#^%gVF;tTpNl(x$&xNP<yvVWy7Yx}9w%t`|VL`DPAn_GG6vB^syc>=c` z^rCv;=JuT!VlCh3#YEN7jsgMXe~MWbVR|vz<~LF}jrye=*9~GxkYHmhST{huq6zq* z?jYGIhrC!mSa!CQa?|K)a2oL#9T~_szAVq13J*Y$`|xr-@)vQ2@<R1#ykUc7BBwE+ zyNXFIko_cuAp5yCf1GMb6}Y8m9^qd=*A3F+HmZz*(%HQ&_xoQ}{ktK^f^=L`_Y~rc zoYztGUY|QL%Y*FZ%FOKzn|^c;6;NN&rX)1RQQD{orS2;(Kt_h>9-AF9O(q=Wyfp3@ zTgCR#=hz(?A<{!H_@sBBE>d$u?5!7)Q$>Fio~gq(r#)w|&AP9_`6MtQP_j2XY~qaz zhJtbYPP}D1(aL-Ps}I>%X?&$E(o1_kO3j3pA;WLY$lR5ifW`zdjM<FhoYwCaB_^W# z9{pyO0_t<7`-ilng9CJ^;8I_X<#VomQ3(A~V|7nm4A>)AuzpM%Rb+-7Zh9T#8Zl_m zzV1TY_K2^;LPE!h!*#K?UQx<d5O1st8iddmYZmD=ykvFtkIO^Dte+Cq@!zm`Q|L+= zxg)H#fHAI^u9<e=>)mVN-@Bpv$z3Cym6(lArA2AQgQG473V29Wiy%}pzR0>HqydYa zsi!;JyA|(LA7Ax9BKk_G=k{EseX}D5)@$<*JaOPq%+$J%Mnw%6KKg@c&U&w3p_44; zK8-6!aBixmLdRNe!2G<xrZ)=O$*4RiPX^wh00n!7Xkhr#(E(%Fb&Mr$PT^ipet4<b zxmf+7fYfmi*VY(5?IAs89r2sWdvm`iyE%aYmf+VoK<F=tw?X9b40X84O@I0OHnMvJ z+K8_Uc-@9j9@3cLObV;}!=EQ<as&YB?c`Zs&F<oLR!}xTMmKe8cry?WvHhmNCOxo{ zW9DXq**I?$FoNk-iP%Ln|126vR!aJDeYzoXxu<H8TD<uzba(<iZskyR;OR&}7=<Pn zRvFn2zNlqUqpaut!MDcZ+e9h|Ny~b3?qnSSs$g&%wCIJ5RM7M!6Zp}LCmKKt@}{@K z<{09=gcgAA<|pkXBj3m`r|C2^a*C@S(xnN5pRc93kgZqxhLzTwmG?gQ%4GgZ)$JC7 z+{Md8KI{@GjNg3Tm46GtAmmPtI2&q~73ziI+HJ4BVVvdxL$N1b#C)7PCX5G??HMbR zi$lj>SjlWda8<<pCAOZM>cgxL)s4%o>TpDo8>lR%(&iM=T|gL?*Nw*>V(>Ki_Z9JM zlDkD%Yx&k#rABU-_poPI1HmZJx5A?X=b7glYN6flAZ3XgB>0fQeLs0B<If|@4o}?E zW;UYrw(19+vXcylYTV?k692u&j8hEv3+tl1II=V#?ed<(54LKY+OFj?*8#Df!p#O^ zRqQoEhpVk4CHL(m;;OE2zJsIcn-Z4?_|844UQvx?V01kz^U{4ew!O3+F3D&jSNWvF zBvLk`E&z9l11yZmqrT_n<I@og5Im~*_TEp64iL6iULVr|D?i7WLyj`&@?(x}m*`An z@Q&adz&dZA-)sJ^h)up*LZ4ywf1>RzyB5d1JOI|!5!3T~e~E&W$c;qDBkoI1s5eB< zkHkIu3w$xT+*IQr3ZFHdG5T@8T4k!+AUyT~$hH?;i%r7bn++6(7U^ixE7aR#k0f8a z{={QC;%))HorSXjz<SM$;P%PFHKm*7BKX3dtL<Ig|C34VP9!5xnXURw^X?C#C!%Ri z#biEFLDZVGDJ#sihZ9&HznCd1DNHP{?DK=y^-53#>9(f)Ru?pb4IY!*Zz<HCh{>$k zFNm0gjGL)iVvfReM<1G|(R1zqzmu+riiELDgXaC@1r7kX%O83wy1uQyy)x+AlMYH| z-zyOKtZZT3Ksq_a6_)6@867}~8ta>9hQS63pkVoc$5}9G-lFQm0hYj_hGuicI`m4Y z?I;S#A3Lxk$2OIctD7D;ePVghxIg&Ukk$5$-Y0~r$8i{-@<L;sxo_5+g1yik0~iP+ zyD-$-7%cUKMI|@?(JP{(2a^xs#aWW_60MkB_-Akj5~0bk=R(9Tm5myN2#gbf&$-X} zBTGea`u@r#>IUU{q1^ri7p2IyQ}JG^2LnHGU|LL3#d5<|6Qrmduaf&n*t#D}dmL{6 zlaLWgWoSQ=!dl+-^*2VmXf$vrnRE?;ka?*zLFuH77__YWutRPq2-6vJPeyThs!`J) z^}|`O6wJp|@Wy<XP3^hot{GN8e-XH|7mCNAqTGISf|G{hx}%JZjQ47M^{I@*EIO%W zo2{^ueF}pY8~)msc&ty>1Z~-O&9I_ok@KT4odHBGMp_Xa{3OCLV34ES(21fky5%v; z!E{p>(UC(B_4Dti^VE8Vxo!oj1ZTyTUg^Oj$7zb=lSFeW<W%IrrPUtKZj6SlMsNYB zTOj{fLTAt;Q|#k{2gpy&(^Jl$YRO|CI3uQMH}e29Au{GP=bX1umW_ks2Oh9IzVEF| z+94AMAy1YZ8epxFvBCM%OrZjqW5SFGFwFoms}}ndEfRQuWNVJHy&k}k1cSc(xV25a z86<`nx1o7@8G&_WUWb~cuf=3|yE|5d&c&mH6v#vqRG8<kH@gw%($}-|WTJHtnms%O za*_U}Xg9B&-fUZ$1LH1YXudir<s(C;8R47FWc=LH0_JT-6nPb~JU#bdS_LLar`kl} zU_Tvp1u;g;V4+{018gq>uhTo5LksA8#%-?G=_zfmt>xkrhme*SfY^1eupLPM`=YMf z_as~4YMZU-q9&awthxOc!KqpnMv4VAdoa3fB9lCLrPe^0y3f4j<)L|7*xzL{`}D$* zIZX{=WaFY%-ALV`-41qS+g0bej4tmw2_*0}0IQ?8Q1seWPCsIzo*f$EK6YK(t;wXB z&3fiCP#q{mz`GalZ`M~9o2`eievPBw`FL@>{7=pT7BaPQgrAVDZTX57%g3Rg*4CcV zp*jX?ht)+MGjq01R&23F_h@1-5=81#R$7F_*yuwu0HN+$M<NckeV>$1JkU>ws2Xj& zl0xsY^3~Fc*LdeiP$7eS$o1egBdQ{BsY__BvIM+nfSswpnqGP5kLEn{bx~e>W82H2 z3sv()ACl{@(EAsT;M$QZG}jD)b@uUFtyGSuZ#$PLVpW%04?8i?5&;4S0x3=-wNLp6 zki=S(N7GOS>?5hua=s7&N9`pS1H@6C5}3Qcl1_I3&K9}oTq;v;*UswoTzR+S(ZzHf zb8jZ~sODMlxTC1BBi@@Wv@`*cdG=PssrAHnbL%FP$=)<CZz$Oe#UoSGiu?7XKf&>P z_7zqGEK*9DY1C5M=2eZ|>_9o3wRu?$P!7DuMoQ%m5|EZ@9+c)(uRZ{H7n~CY>?v&< z`#n`VjV0^Ntg51Qg^Ab(`ijs12oAMQujBZqT^`eo{-yaLKKoOqA1m$NWv9RhS+sG= z`Ki@R8$`Ty<Azm<?DG3G^;Uy{*F07VqTdlA61Yy9i$uE4<3bKXLZ7rKwHgfAm>c9M zOI4|k49HqU7|aK##?ZJW%Kd69+u`b#SH>A0V89O`AbJq*3Fes8|D>_1_yK|Mjl@I& zdknjrm$18&ucp8zjb2W5K}Q@6Irv)**B#kf{56j(aM;PRGDof(s7-h~6s?Hb3V|F9 z!~ix@10Zc5Pgx$P#r*_-z8tbXz@Jj6vpegwTE+W(PW%<K>j310{_lu7zj}tP#DfT} z**Vn4<Vhf({-8sj#>eCSlH0EcW!Sc6^3ZabnBPxn<X9~SSA-=ybeh+(cnLCiS_G5E z-zl{V>-(b8%dKmzzg>|h7L0zAllBX=je+%cug-%N%b={O%>tH*h+a`9d{oG|wen{F zNrc#BnLwk!r2ExE_XI8w@55+(@ZV3ejn)j#FL0jIW@6@RyQ<^snzZD&;K#pp$VRWT z+II|cf6TV<Ej{fygMn+?JS1zR)?{ba{9zSfH(0zD;Lz?t%8jQNd|@3*Q&DCvi}m?v z2d|c<((|QsqBq!)aRyCD?^X15-H*8g1A!{_CkE$vgU1<jsETlD-Sg|Y2}dzmKf7nE zJ+7c%Su#~zT{H;^JL$f$&cv;+K2e(<5w%HC<3X8CO^56wV#1^z_-7_jhEzJvk?#IO zo(QXoWBZdO#K-~(Tm66WKB&>VMXd&mW^=Q8{lYsP#239<2Gj)IO#^20h9Q$6(dt_D z-kq#Nh=NEPDRZ2+5b-E93k)r&nYYAsQqpABoO2+2^O2Mzwx(YUr{JX^xS;>{+cq&n z=^7b3oGgndMLP|Qz=-O#G;+p}iSfegG?h=+5sPS723Dbq8i*!DP#pVAnR-v}TIv9y zv{zqEWuII_b+;TP8m0-jH}X`u&<W6Kw-*fz^Vk8KeK(d9uAX_q2I0aw2bnBXdxslP zfKq*<cAYh_s@-V0QniQFNs%FlIlEUT^FWFAx&nN|p97pvQjymoBv=ft=><kEU;^*f z)ROfv@?a8P+mktWF#flaU<RCZFjHG^rk!WqwYt_l!k;rmbLx7iSSkOdU#=-erh-g( zF;L=UrCa=15KZ(T>tdk&SZ`VMe-nS=wi8Y$hz_X@{VF_z8Yp28Am`uK7IT<*U1+wH z(^+<Jw8{=<yT)wKP_#|~e>`wU(q@XJNXYdtk(<Q<?Q){d90c9W)_`@-{=JM@smtLV zUk;CfMZ7y3o1ckuSPQ(NhXYj>%;T%D9C|Ewv+X2dtn<AB)E&Txz}|AuBIs>$^`&3; zpvm8&-VLE(8j}}E(8C$C<^@fDestDYKE-kQ+%e{p!fRQdop7Taxyg+7BL0x%A8N1l z?*A9eGBeHh-1Htz{Jaz5^(q=BPyReofJQ3f5#4GZBA?3NqoFEFIw8`UaeLuI`^jzm zA%>zo_navm+)q?8{OMQm^Xc`*;dhG{WydrL56<IwK2u80j|egzi)%oHvJHp!r9LTh z)0++L(`?XK67{bOwbjgtX-MW4cMM%}hH)mmaL#4(dm(_QC%ZwH!vJ0RA(RC^6DV!^ z3GVi9x;gpHY2*TzaZS$?Y5h{ud$#hmO66%wU&Lz*f-4G%YK?ztWe;k&$C4hr`f*@8 zT(d}NrEbmKMAww~0u?Yy(y>CQ$*Gz9`)L#+e#Cs1rJA%IQ_85!L%dLNp|2+(#~Gw7 zK5p%m$fLy#=qQqBHreIVhBxF^-1LVm<#hkdqsaeRCs2};u<3X5KY2rMJsW5@8+*MV zo%k|$)&M{bXvJk}^)Bm56y;sNVV6H%j{DYze|`?GK+RH<L=I|&n#zd82-5}{FyOA* z#aRA>*RuW30%o9I#TyVgrtjQzUr#eH+@vT6(?9eMiH@f;dyOA_bM<b-O`W1=l0>dK zc_;QA?O>0}{Pj^IikA#4_c^NM9A$VFu;~YbV>8R6P9-kc4-7gdsoW`#)~8Nv*B{aI z4}y3vZ65ZX){=uy5M|LnY2ir8vYm`8JRW781WZ$rj5PK|pP4T3h?<0|Dsb+`2NM4r zN>0^|y*DTCpnF-d4+|+P9s_@H-uiEl*cgvD<3+8j1Kec`pcKXrX&my(sN7ur%p{Uu z9UbAn$NP@^p@Riywk2`X>d)^m4>ffTF!6Ah%kf@IL8ahuL{=q>av`^z@7!vBx{srq zf4hJ1IZ0VX{p@h>K;4(GcSEpzb1;4*!*CvGH!p@q%(HH2_?g!Y?U7w)m<nh*nl@t& zxU%*p_w>0lSJ_}|ZQte+k82qp#5g#~9OX7#HKq1^>Tzm~2m2MXC>fcEWo;Y-=1i)J zaC6)nb>8Yk<iLeSM{e3wx|l#+s^Xryd3DH>p(JrCd%OiTD+9;Po0CVmrjeJ~N+|1< zKR*@pfG=IaG~rt7+|@MJvc<c1p2G`dKeywDH+~m_&n3XSs8J?hWf;Hcv0Vx_UGf+N zrq$(1wD$RNwDI>T?_o54RYp879*FtEuw@di!+@r81A`Bs5BNY31XxDnd#Q+$aM+$^ zCgb#cn>>KvHxKy?HLJVzq6a)N7CuBL)lTmo*7_kVyN;o--54MC)#w4WWQ4%*rvn+9 zwbCQ}OzX91&&NF3a37h8%s}TTJM~8~1myRlp2OpvPvBs2cU#%Vs@Px{UNp=3V6e6$ zgF3lIFEl*X*qr5a((BX*c@1-6_4mljYk5fL_iSau*i%+`xK_eczxDSjMC$ul<k3Pq zMXh-O|BThkleDEd<~&K6X-9mB5?*SjO-DrWPI>h8M`HvYo{7g1*NA78|J>lUoD1aw z9D(<)%{Q7ek1~az-Nx7h)XCdM%K=X4<*dOz@<51B@eM-b^NU+KD!&>-!l7gh<fT`B z0*+8gD&tcln(Gvm$Q_n1pKC+mKW`qG^fgJM2ZMWSe8qXGs!SDbcU!6L1qan9RKG)? z9`7)$Jb2(3gA>4E$<m6FzMn1bSLgX9Iq#%u28NF;Bh^ypl`|>r#7L$Rd>P}4duW(@ z$v|zNlSl#0Hu~FcjfOeMA0UU;Y$50+B!>DD`W)Yc#^Do6IiU#`-Q(I2kA~xIEQtFt zgSxaf=RB5g4Em4;e4CpK-Q=%ZjD|tzm|3w-PhrF)i(%u%dvEZIYW+9T>yX2xKexTG z<LSizZKzh^m9&0s(J^D3dEI3?@u>Ax1CYUmCQzykP%PoDbJ{PfovWs-ls<yB!7ym9 ztDwiZ#NVU%HhNl&B2dv%@OF~0`GzAd^|LlD%J$far%u+Yq7{RN#O_i-RHkO8(Iwt) zWXK%vP_)VCUNQ!QL)`DVjLGcWdFD{AU{I8rg(a`LR~OLX{B=*y6DMuG3+6~_QFa90 z^;UAQqT2|%b-PQgQI6Ol&zy^Xdux22YjHq3c=VKr)bNhwr{9Gjx@3P)+O=o^li^I; zZhqPRb73U5ZaBVP(SY`BGn!zUXhT2V&>C8-KOLh)j~=5NRupU->g-#KK|AGE%NOEr zE?j)k4ZrIS6|RsgISy8KAMA76`V>q(uU>BZb#t|s-N>tXP*3)z`<4~y3a~b<fff=7 z+1vyeI>5u};zZA)JcB@v=S_S7ibqR~J~^CV30*h|2W@83fx=m=<HJIiVj!+32Q#S^ zLKIV{76(>11XMYx>JCc+wh(2HovR*9LB<8)L06yeyt8Jsi(mjE;MgHy3<NZvml}1Y zhbV;Ragt4>U(N@ikUBA={N>A1g_N!noSVmxk+~;cAo()L?H&U;ZO!X7XF?rFK(jR` zS3q<vjRC7Cnxm*~O|GE6(4RQVjR#d%!2V+^z)HY6LqanvzX#=6X{e|}Yi8e*0r8^~ z<XQ_lg7QPT%y_LiF5ogX9JKV+lswyU2J*Q)Gu=8$^U>(9`>g(mfdR2MyQh3Jza>)~ zX1<Z;SgvaIP~FS;eg8a<YH4s_8X})t(G?yERc3`MQ1^piG8`jF1Xq~N5EMT#Q-%3R zSg2_5EF(chsP`VD83ASm0TcD>A~6DO(_ey5a&7lyaF9L5%gQsJmB^ihmZpt78bo?b zpj8gsK)k}`)xtE6^4FWXvKR(vx?5LT^}bMwHW7#=oMG6&RR!M1Q^~UJ-9xjo+xbm1 zumtn~;AOb?97fpiDrzw{h#TcdgHMo5dxMSyirp3_I^>vR`Ydg0iLm-9>BomEyI9{1 zIi%c-J5riX&3)dYvHJ@5gaLm#i|M|9u9GZ@vlVrcJ!U-YrF-o%Igf$~;PxW)yI$F@ zKGa^PDAr-|Ra>ZD1Y(aee)gyYO7cz2QI|bvX}%8MjmftWi&zwUzrU7;sDf1I$<sY- z*w|~!3T9)onX`ESjO*K$6~Z*G#_A0i78-daZ#JFiMpwNG0M`gV@J?g=sm?MA(Z=Ev z;E?z!+uj1s+|h$QCp7Tm%D*tb%P+igt4OcNAZm12Q{jG6V${T>j@|#@)*T^)2&8Mc z&mo(EB$^27=jkRC)hWmoN=X7nv{2VsAKgb)U{mV(?~HZPUkT3A4(Po{X9o>@qmI0; zhui;%zkmt8iI~|(R|}yW$D2J>$L6RK_ZHZLh6ouJzu^4H%6~tGO-n;Qa(;OWO3w&M z$O_=vW5ZrLkjxfbq}DQ||CwW4X`B`Wfsf?`0eqv;kVdo`dhod~VTX{7V|J4LNhfSA z=G?2JDs4z49RpC|Z(`BNmCWluajaLr`Jj-=mjs9)c`pDCTl?2c>t+;x3%tB$&%V&z zS<mSuq(0ctOJ@b|t0`(yiLD-1Nh3AQg`8qva4Y0`B?#&1h9oFawnz=l;&l|}J&W~H zRxo3@?N{MsWbSc8^Xzl4ZAN$B#Ijwr>Vwmb5RC&64mi)xFnDP;D`~>6DZG~P-OZne z9iyv6rGARcur+UF*gZI1WkU-8!yhK{jI17v+k%AFHn;@f7_j?wTC^7(skRs6Nok*; z+dL%lL0#E*7ky#CyiJoP3Vr1-$Qx;mGNnE}S=?o&oIg^(wep~zU`wc&^m-&v{ir#t zvsH-TtNTdQgc-nOG%-@|v<;t_c%H=FKW;^8GCtmTk1n?OInGQOQw^?w9ADa#CnE-` z!w~m@u{y_#a=CppzI-mq44ni}WxPP`f=h<`1VR1jnP%cNMlh$%+M^1tdD#6%UtA!T z6rOms;S7!Dg2DvM?12U3&w)6zCw+aXOkZFU9A%p>Bm+}kQ^i9nj>?W_DR7EC3`{TW zdTK8YUi?c+8x133A^KJ>ZU@e0vWe`<U&yB&giqC(c_+EM>(H3vt;+{bW(H>)VOn=! zhk$7ydevKwPq|3audoIj)!{koLB5}3)3pqcY4%KiHs|&$+R;_1b-?$sAwF|7_a5E& zSzQ<mBI>3Z5Y%>`FtX);wY{|cN)QxQ_r=umqkuLX|AfJ3i3CGp9Wr3*2^WvuQ-2p( zN%!IPC~-_hog!+kYjQS`73Gf`&aT04Aa7!zN>a)dI^iRhcI6Ub2V1k;`YmrGb)#%J zfb12pYWrhx;Sv$FtEKFq9|!4X4)y_PETPe?JL|sJ?OKZ8MWa+p7&jYtEw~^2Li1X| zIwtMfdz6%4sN(^0*OGkqJi#mh5HS8n-PPEmR$1n?E-IoO*5$4DxdKrRygec?uUB7o zM)Su<*B{ta5*^tZU)noV!W02~<_S~6WtB{FbHH@NLI_ny9mk|+9Fug)?S}Jfk|}v8 zXcYRP>T&|{)8v-$VsSZ-5R2WK3Qwx>%f(|{&rh9cQt8RXIOd5#;&i7_I8sKBBWXN! z{wcQo7~7fFkwwJ--ID!l!8i&^XW6C2!OvqDqPns0HHM>jPAcj%0LIBuH~}*JGeavZ zdE4pfAS><;@Td+X-^BVythMdf!KytOWBTrGZ$599`ji=$csOK1uqb8C6*70OJd=`S zr_WRi_Val%ED8LSAaMp~3S&?_BE6KdsvXlFk(}pvVCSBE*c}}EoyE&3z4f@j$ng?I zsAajGMt!f|JOLpA{BXa&McJ{N;bf=Wva&wq4wf@oN!1|m0Y0L|GocEh!W(F9A<gAa z5%?y#5~#rBa7ZP_^c$1a5YE6nW39La+j!aX^B7((o{hR+3l|ASEtvXk!Ajso&X05= zthA>?kImhZ20;vZh+sZ-K<~W~P_s(O4kH(Bu@5Ol1wbRJI6SCIVBV=?5g3`Jh=O=O zt-@7ukc{s~jpw}1?a{(X0;OMmn<in%ly9n6s$B)B3=_)y)1!w<<%a<r<zGFNe@JHt z8CB**+;BO3Mcq|j$5^n|qI<3c%9|z)<$v<Jb->G7Q?huIIc^MMz(Q_#>{dn8L8{z> zWk%AM9<G1nyK@F8^r%{&pD(+@Mqr7q(LY@`OWrAtCRmB!4vtO0T7+8h9rZSow+l6} zl^GDtE3({zs-{AVS}N&-sWlcGx5Lw}P8(s3#0qA;`X1e+_>nS6V&?x}AbV>1vvT!8 z6>)xgoqdRo`vdbqjl?GdmIrv^BBI66ZHLr6C22k?c_6p3azSlU2h`kZx~>W9SKkr` z?no<FK*jZzo2!xm!z(3$I?1jD;IZS~9Yc@Ga;NJ(lp2gp&W)C*FN-WE#i^jAhLBKX zs337G-4w#x4J>DOB&^<aB<<cWk0m1D99^65eeRCcpwnWS*a&K?a9vR{uM3L7s(j50 zA0Y2%rC_Zc>#*e#^{vfBnlU@zuv4tl(7|Bmi4>dBFkNOaln&TVYw=?Ddu5<B+Ys^; zHaS)xV~Pf$NT%0|=*D=GD%h#&*Z<2P4XJ?Y)gE??jV!K0OA0PNl?DYMIv(CULUS6o zyuZ;1e`LzSpULfou_9c*bNQj0TAGRfSnhl>n=6x;eY1O9t0rPB|7KOSuJZ*mUcOrT zdrbSW9gr41-%Cg1W2@Wj`(&!Lw(Ihm0Is|~0F7t=gDYDjo8D}(vc5RhXmp%Z2S+C% zq;E^D<3Grle)_T58%YA|F)bFPSM`bW*G=Fw?Y|(QH|V;~7Iu4Lpx?QyGBgHy!(p)B z%ZD{tE2~NhMR?O^v6_zyQh$=6Ql5c7EPBbRi9KHVueEj)PXOlIElKP?#oQ~b_~<wV zg5KaEhy{GkqOC*zHlmTcYW=NXzZ`FmzXb>TFO|FqbnngZ_I>ixl9hewFs8j$+4Sxt zy8lyMHxF9pE3Hs6YJ*UB+pm}!Hry`p6I0@VV43+L=JUZrs(3(9EKBWh<s7FQF-#DU zN)@LZZwOFHbjdH|`Qn?$ceJO%GQo-ay2O!fedyIi)J|{eccZ7!V&U0|lwfCC+Z_GZ zprM8VMB&uOtV54qGfDg2yO}1P2pH5VKiM(kSZoRY*{g5;@&Ho!%j%|f0!3~kquLd4 zxMfP)+j(RVIU|&<)9It(9M#%9A65e?-DmHZT)HX%Ltaq~4pNo&vu>PbYA@d<GiB`% z6vD*k&jRAJ-3?3Cv~Fy8d^`P*L)S!oBp~THvDqG7t1lA0zUehuI09icreRND4#f)U zm{oQQY$6#DQd&Hx$#7b~pypmrVwQG?EOEDsLX;0xP~i~ct<0N=BKVi&i6yDjk`r|Y z;-g_*%nS#(6atI%^S7+ZyrCny1a4cyh9zAOEh8_!@}q<l5ap)mr>zbSQ$SggCGLEW zr;OvMXD(p;)2|8r!<XV>nyGU{y{~332m{KkuSZ*jIGv`Ok%BU6hhkve;WVV1bO4;r zv-wt6t{})6^thf=;J&c>`F~Qb2#;fg`HMw)fU4%KQT-VqVj(6@(M|Rt{`##{hemTb z|L%tdg#Fpkl|JQ*o2N^|5lE*UC^I#n`<Pel!-{f&TA+{l#d4sBr&K}(fGG=6@+x)} z+R;%Z(zHj3908FIRyuGYGZ6$lxWArIg`B4a!S=1Ee|QWiwCZN3nK0T*dYdu3kqUB! z0l0v9t-x6kNb8MU1%&Kc;elvs$nnbR)|WTN$*lMk#sL*ppc+NYoOMi2IxAgthh5_v zPG~Jf#}q0Q9p$1gClmxOsd;v|ES6s>8CGzmI>#1oXnJ?>v4JxIkQEx30L;4Tc(+rw z_BCtCw^YOYz2KAcg-Z2xgsy+D<M?(a>{;Bg4>GjG@=85|&<j~MtO}p-Jm$z2;cPCO zC8YSXrKCu+Pac&z6bH?tXwd$fnzrn+DD?WtN(r3|Z_1-pjgmR=)SD$Ss#ysbpb}6v zGeih5r!L8QSRyPrJk(-r0F-TBf$cc&;R??OchK~$vFM`O<vdlx+^>Pv1=U`6V!Xr9 zAy5z3V$?HU%+|0N_QA#1(@NGSV1q>0RI^hZ+>E9RlX@8*lpAbKdT`KVgSsWXHlD*1 zJmF3>eIP&S8J<LZ1~N#T%e6{s!(4zkedXLJGsYF#WV}qIHWqHCSUM-eau`BHFg&(- z%G#UFxr9D}L5ItD@*S9MTz6`SU^5%2`kO5@y8kzzrLf=H(}C&VtP76-_q>%RB_Vno zE^4xxP8JyV8;*K7_IfrT<>C2lGwN#Li>qhsE#+}614u<-m0s|A_O*NyXnDoCS&ok= zcQqiLldS5-rG1|i0nPY@3HgmK6T>moSzc61=_{C5aXA~5s5jH4@9dFWI$M8+ybtOc zNXYS3-i(&<u@lMgcO_vOWJVX@m`Q~B4B2u2`%Nfp^oH{jF0W!1pxyZtkJAEF(69gi z6uNVz5(=TKE*d>(_l?da;JS&dcZ5n@mhe;<&WCEL$y9v{LLdQQY1mxnr1%Ch`Q!^O zn^gPoXQhX#We+_tj>kV+0er1Jw83IiV;S^ASL=Q6BD16ygja80^1C>BL1|$mL_vJp zeL=ZbPZ=2Qi&mAMng*X$?lv44zR>92NVs%YB&!b;wVY|e+fB(6n}%m{8u5OSlaenc zn;=zQxM@nXju+ZRJ3}pP2BKoFNk$+zlg+QPIUEr7EyQrfkK-nEM}6Bj@J!*=nSNQu zQZ2D--$y#9kQCsdNbrj5%GsC=@^)yq%E2hX7M~Rg4)1;;EqsuNz^1F_@Q(F*!E@E# ztOdHZ-F5Ta4N1+Y;GigUM$VF$z)~D*jSR2SY&ki*mfD5R53sgB`@+VXbJrQYvnWE* z{0nusM7zPN*XG~6d3$|bw!tfxLBwr-{28V_oe*i$asacyg#hTpS7+9q?-<&}Kamo$ zENB0~_9Bn7+FI)OUPUf2!X82>wp@Lt%E7D@iUQlEvhn<GdTC_ffUaej)9=q;2FCw3 z59^h;(}rJIQlBbXJ{!CK8`k3dNOiT?55xMgvcq**Ntjm&5@&pZbJZ5pxEU~}#m`$N z?9jX&dKh*G&)GkM>G)?S8@(&V>{9r4^K`+{$J?#E`hT#*>K}&{y)<>D7fF@fxE2Nj zCb4CY3>cN8`R+)J`bjo61kA({MR@cy<2f~&fq<vQ0s4veWjyri4E7H!LQ8>oeLX3f z5}4o}r>P#)Tp#}XqU!k9hQ4S9*;8!RrMxV?2`jXwglvpoZd{NtYe>9S$o;2Ufn(-B zYU>GH|FOm{KpF{d7d}jeq+#tyHd<1a!Dr3Z!=Vx~PG-EU!|TwT6KZZ^<5zQO$yj22 zRnWD;042wg2;7m5>5}p{`~e`i!qCD#a@K3KzY-+`17qU++RiDYzPMnOty2}tzY)xq zV`QlPKSPa~m|yPRTq*-A@V}cvOi4X;;B2kMD((%cS@h+o$e@Ua>?U-`=hS-q$xB zDDS9xupO-p#9}|J9v7m?QUbg!fqw!iMXx1*I#iyeJPvbFJVcaGS4lt$^8yk>!2(xN zX7B`c-E6hP1Y)J3TIW1W;8xvLoEZN&f^zZ!jw*(i_Kz6v=qYNV*g(jK&Z2E))A-V| z5DJT}Ud*UMay4Ja$%uqPW?SCirNwNPFvQApgf{JmK{(;hx{U>hlYy55^VgN`>6tze z)mxB(y1FTbMW(_AE?|Vohh;Ehmsqn)F%y9Yl-67@UEnoI9iRCxsg{W&3|mYm&V%u@ zaf;W|X?~@J-O?-o?z+v0)cyjFjGw;Xf!Lq+nN+H-g%ltAAfJSW=9`R7|7Zo=MmkX_ z^sSWMq;>e*D1c$Pf-`wY&&vnGzMfucO{O{{s|Za{S8WIVCdDKq<^_D{81~C=JKnl0 zAhCqVgg+f!I<!;W<<$3?FiM08saXT_MyEcv)+Yykph;TkB==I@`w|u;=~qcuRMs8W zF7zNSoYFVekr9oVKL#o+;JEF@1aRD*koAXLR|+v~6hqdLv1|*P#XcLbyz+a0D(A9% z`oNwVm)*bTYrIDb^)P&-8G`guv6T`6j_-cL!x0QkB!bZY3+ZlS3yf=?f`6&{BR3Ex zc5p~)WF=#bejw#cQ{+)Wl6PkG5sytYsa_~`hxDK!@mn17w|b7tK$T{P&9+9i=6<{A zB9TaN$}qaKud@F-eB_l;vzIHyE+kpo?{!dXm0Wnxj72)Dsm38&Ff04(D`@t2;9dPn zCEdiRgvwi$Fz}1v7VJHi(9{!CCv)5g6Rv%cwjFEq2{r)N0<}(CU?W{H%$I5`@n@v1 z!~$l12vg1xj4U-cFRw=1GhTEkGsbT0FR}Y>xTzZ+xF<u#>ts!#OL4ho#KKt>F~P;% zfD^a6+w$2Qw1ZGi=5}ynOC}xiNx1b^z_WVSYQa<pJ49@0mfHjOA$*r@o1#@F@GI>_ z%DIJNF-y}bZy&pvAq>EJ*n8$OZ&J*tdVf9^N(}NtB58|a9y2CNZB)bi+iWRPT)G)y zrN`k!tPYw0>y#vI;AhCS}Wm;1-%!@yGkfhA@qF7aIEs-utj0pn|xSrdjp+r8~& z5uVTeC517;;p>O;_oHAiM;bMgc8~^M?-R<5bz_F1zNlkD&WfS8hY(`&0g4l<Q;1Z_ zWko4a<>7wfCeh*z5Vk-OxCsBQ07o5OuF>C6=SnS;>x(OS;jthm^6AyI!kw7;Sm@dG z`+=HzU_v|E+{$r(25?SSOW2ZA+XP#TIsnt1F}XeMz6Ei6s?TuWyQi<|kbOz$>f;@c zq4Upkd8SDWz`hc%V!#V{TW3C>m;i!TlE^@mkE-G!K&-!aB`VW3W?%%q84o|x!aOC6 zt|`n8I7#k3then5YTZP=%Z}@^LPK>2N`}Q7dqK?wNDZLZYNejFw52mynk$z#isMR; zDg~>C9CdQ#BNXR!lf{j1++Plc)WDmk%{jk-+zYpe&&EnD4O#~ILyD#Ih=`Wt!X2K> z&D%Y>jLi7i#J?;f33&Nca>i$7el?s%zV?ZQ(%K0LpNq$-{_puRmnv|__YnIY^ZUv) zp&icc;c>2mvgV;Ihb9EBJ@N(4M~tIW&|+1}NuPLz#xM1M&;*pxdE9((5JKx?4$3EV z{*Yh~J~(OV@hP)F-}&yG-yr;i8^S<E1A|U605&mCI{}hZHBk)EXA?evN5O(p9Zzxp z>u5N?lf#FoyMcxx>5%m0DohuTB?vZHoe8M$bzlW-MZ9#DA=Ej$PH9*L79ClV3Ud<o zY`9~ABG?2KG{ZYIZ{jy1ITTQ`+OhoNJU5^Xg}exuC_YxhcPZL(ZfZql7Xeob-mnws ztPZb%y4!h%)H%H~s4|5VgtM_<^;Ej07x+=%FP5Nm55bXcu=D4{i!X~y>$yQHCr%x> zQYD+Tr+EZ*_qxw_5VsP~BCKMp5e%LgL&2c^V1=567#`!OL#{T$2x8Cbu}0Z(2F!`& zFqRKRO_D^DpNl+c%^x!l#jtVX<i%Y>HdOoyzT$}KRk(yFEgbFV9RjWlU|1gSLBvOf zVWyeL0&zA;R_P9tTLSlP7U@Xg+!W|VA!{$Q{1<on8-w-|ZgQoCf%>(X{u)@{{$}{m z5=coocmzp5P&f6I(}#nm$8?)1Cb<&l1ucJyyt3|%yXI@H{~7XzaNTGWgug(~qU+u| zrG5N)`rkEC6$ENg#>^)X<X0-6RZqXOWBjTSI!;~nxIYSu4EoU{&Cvj^nKk~V>UZ)A zsSN}xrsm|^(1dZZ{~b8YpIdq@9CU>DF;3){#<oWXIh}`OXk>h-eg^(~E3p?r4#vPp zFz45Vd0;(xchSgsj_lWw5N=Im=wfqcFoC6LKuss8zoW7KUGr@jp;QR%xk~GwLlF0R ztW>p?8EX!~<WrwK*9pbN%_%Wf11H^MV@fan9`x~@%Eu<6n>5;OGQL174pDK3cDP~1 z+;(p6zzJTE19Emn8{$Z0lhGidk+=M<D*+*S2>Ws{iA`3Zrbv~?uPq*OE?#%pbwIs? z^KmS_?%nWwS9gm9ti4BfJ#1aspx9P3!Oh!*iY||#Lg|5zeGJ6OVM>ruABdmN)R>~4 z|4c^}gb<yl0^Rk6Mto^`XOAj1-TIZ1aFa`!MLdivB-CQH%i&3y9t-4mt!a(TNm0Bx zc0(VK-~8HuQ!Kk2#+x_DUK4R<?_TrHx83Myw0cgOc1}EQNE2@DO+I%XNEwE+JW%K1 zPlTZ$Q&>(!=~tS~-{x^XHWsIJypqX=JX{)f2At1Jq16ZT+|eNeV!P5EY|^U0&^hQl zId*L0RR&z|?os;7?X}1V?zcp!>)_L!5s|Pn8vr__vpy{OT0(jR%sZj)Z^TBSfOY2A z)-U)G=3L(UB26g%lZtCyV|!D*X#no)v5~MAS?E80AHHy7xIaxVGRzf>cbZF<7E%O! z{}}W4+&5ITT0B$A7{Gw+Z72LY5KYbrpe#rAtT3WAkg0Tv$N)Q6EmR2_McTc}G7}1I zAaHM*en!O;JkY9CamJi@e9mX;TUFkO+^>C6Ifozi?p9_NwTI4}U3nvFU+<0h#P;<> z_nHoS{ZNDa-xrs3WX1u=us-5jNV^%0h=t*QhKWToY_bk393!S>ZjJiAfP(&utM&u` zcUMXp_LAatBafK2vi3K@4byJm7ok8enNpJ=I)y48mCx(2?Szb`d*X^u9iamJkI)le z|EvXcAH>jVl~^+iaFy?sAWM3*B5?^(uQGfXE8296O;=Dv^Ti_A6|SgN1i)oMJYybS z?)Wp=7qc5w@G0`z4=$+exBSWXg(&E8K|+W=!9BJxdI>~TdZ8+_Uo1`(L7YpoeH{kO zqmc`5KLLf{arr$1HDPiN^mJ{&aU00fQTwE`g#XbR;+A~>>psj5RfGS{H08Jh0n%?4 zU}m~E%J|aTdfwHK+>Y8~vtP=W`;nUkCVji{hykn0ri=Mf1I6I@Xjp)u{mi=1zakM{ zW(wYyv?Ibt<DXDQWuUHlXgz+g4>Lrm@;wAJ?dU8<V7&07*2S29>w>nI)_N|_B2q0S zq@pd`ZU3tCGcMqSsZGU?HJ%G;Zy&+O(9==IO4}$(OyA7%d?MR!c3&^5Je}O=;vQ?W zq$H9OPeL%TLj%liwmz{WBmO>yI%TyH^HVU{&NqlK6D%1ouO!!YYDVtRDS<qxPxU%h z{MJLjXUvqGqD^6(T+EA?iV>~`Xj<wm0hA_A-Y*m+9^dV8M1j6{KpIc2MJLonkHH(l zBY*D&B>DnEfgbQ=mmpf@e5QX#5nb}m2$PAKws(cjuGmP-9rdx{H&g^W2(*T=s_x)0 zgS)JL^PScjA{I{z&9JV$Z|R_V@w4{V2aD$4jHDY{A)%tVUhhjqR`ri&4$T!YVs5SH zUD#{lm-y?rAGO#d&<CX_oYiy_`ft4RdB{P<TJEFzF#&K_Ijw5ONam9Xab-F<SgJ>r z)!cw1SCz@pSo;C>hLG{a)nWuBNTl3S{n^DzaE`|(YllYXS?Y9hiP8-nHsWZoEx0#2 z<O*H91g;V@M>fj65n8NgU#sU74(}_s#U(L}xu}M1)xSSlVKY~UxBn%rFRS>=gBV^% zx?efmJ^luqPGcr}<&`u`L7)%>Bs<W|_h9*6cG|P937dYr?UptAp1z-)V!H>WGZlk3 zmGU&!9{$U(3cJVuN8!cEP=Wxk7v&msFYg`U%KN1BiT-{R<ap!sWrl=RfU)8Y)45P7 zz2TV<^3n#zGlW7Ku?S`Yd|j;q0QFqZl@EsW>FiBu)TzH!X6p^<UEt6aT4j=n$w^Ja z%X&A4E%>IJ*!>zY05!S@w9gWEqU(S7f|JxjE3zdrX`erd$nUMQQVrO-7_kf?7FlwU zOyIy6H`Rl<>l2<^&nmCwVEXT7^8Etx^5;vsE^ribKs65e2d3ly!-a3QY`W(6*&Y6r zwyt+(>sSe8(CR5Z3*5n9AT#g7N0vh6c^*B&T$OJG)_^d7xPJKGk`&!z21WvPqi1uU zXm2_KH+>b{ln$>gOwopgl!plfDRq%al;kF_rs@%ikE8P{jDOWTMOoOnQZ37mg2|eq zy2#VsuPlW;$!QiI#v(?l#iQ!4^RkeW-D`&bh26C^6@+DYu`RN$vlx%+&W25&&HrrH zAT7sW`iN|jyR2&d1hg^vG-NnhHG9(RR(Nz~>ozO}WeNVOH_K^X(kr+(l8?n6AqMX& z3<qGivBAU099vy@Dsn28PmT9(oxG0J+fBa%5>+m2hVP4KQWWvETvadh-_b%bO&W*B z-U{%J1TG(%WyLdRGFZvrt|{EpLbefh%jr}X>?=?`ZX4u#*iF)4j96%_H^cN~e=a%f zcNDWq?f(>B)M6YQSS9x&La|2v7|2y8`jDOo6vKsaDTx;;VLjQ^-ow7`?4C9cii|c! z2$QLxnO`SwaoOVCu>F=so3N+;lr`j7Y!j-_?T!~9X9OG0;Bcp(cJ9%swj0D4gRuX` zYP13F<ZAzf;0TfysFHG>^i3AUp4-TQtza;$**RSe<_ID`%4dWnM12e<+6F_59HJyM zl?m6&V_5FeMWDEG!F^c&j=BWJrKF5~yzi%<8c=gz1pz|)Y|hx5>4nMB^{=L<>1Cpm zdU$Q(r~fg9)f7%<bT5O@G9`beG05}X#Uk4^q$A?c35RKZ#lJ~hHd9DtC9)^_OS7jy z$f6NOIf1mOo>lkm$Fpb#<QU`~bvXdKEPC0hZ8=%5klsc3qmj)fRgJ$dgTL~ycP)My zv#RbOB@I%<uP2Z)F2=vCZMR|#b<@Cb|EB;+w99f*1p3G=lJ#GfE6e<ajph6BDyr2I zx3wK}BIIi+y7Tuk(za2I-+AAVyXWdujP6-X<pcl=24sDbHbo<a6Cr9K!J2DBPj732 z7f=rID#Fwf29d@>yR$9&K{PG{0s3VV`EA9W^j-{c13Sihsy2eXEQtWP3nIkh1ZWUJ zM(!`e81V2O!$0Z=ZPk&jM0_d|4~K*3m->*y;m4h55A(dI&vXOcz2R0-(TUn0R8~FE zssh;X6dpHkkDL8jG6S&5dB|E3vq0^vO-D2vXgJ_iZT|Z&en@RVOP@)m+Ms1Ji~%w0 zPJ^k;D1fVibN3GJu*{bb_}jcDzATt4+S6md=7o?l%)>7;?sK!|PYh-E-yJAYWHrEr zZ*>NFJ#Va^nlIZHxW@e)4`MraWDHS9wL#TKcHHYv0%&vcb~}Z6#ccI-+UK4&jJMVo zN-K4l8NTxh9lrWt`ajZXhgu4(4tW|?b;y;6QYI6<8w;Gq;|}{>K(&s^NQ6Hs;5L?M zEr-@_3G8?~XB(#j*V?YGZfPM~eaCw%^$ur8d48LokfNxLzX0TE<tp?94U-Ww@n_vg zeUd$H5p(3qeCge-6(sqhi0>Aoyat>VRymGjn?SvICjPgUW*TIdYQ`~YU89+#6MAuH z$3tp-)egQTASllakl}{jF@bc{oj7>huZqrn0-BQFkRYIR8_c^0^%7UoX3#SiP#p^7 zo`XoI8n;$f%&tOpc!aAnG;-33IQxw3ws6Ss9)GGLV^lzIqB?EvXj;5)atzgSZ6oYI zonRwB2mS8vNO#v1aheVDR-h!&jP2^2l~Suf8*|8qs=NMwKpanY5_+U5>w}ZP$}(#Y z0QyDZ-DnbFWer4Vk_3-Gb;FB}@OWZPr=F|404B>s-#H-=qVM&y#UMV+;@U}>Nx9Vt zF+b1qeC=!B#+-TOx6SW%TTBY?9!D+3^7(sOgnCn=Y*o=kb#A(EI|^<1{I6nce#LL< zl~G+6Fo8eeTB&^31h|&SguL&0B$}JmEqU=bDv8RKAkciyEOLI*7#bQHZc3t!B%_W& zw|C_U0hk#|UMd=J6UV%p_XgLW&>(v_O=NXhQE5YX*5sQO7VetAo_@x`x)$4q#04%o zW<a6R9GdH}<8wPxF?8q)f&`MQ0b~td-2mr8OS|#maBJ{l@$C{9zr_ajZ%}D+BR+@& z)>>bj6?Tlp`<zK1hQ=H9@Pg`T%W`xIUo*0_^hfvOLJ$fJv%-k%$&XKjNv@gP=PrR1 zgH?O#W+y*6JI5<Y;sP3E!ai-#v+0TB020ecVDN#jm|@u?#PD+oMF_r7?+Zi44!dVq zLHei>T9CmFk8rQg;sey_wMHpP3cNIjqI?s>=A~79c2v-(ez<5I%bF?2HdLEBVTDRg zQS~@aDn$kKxSmtsXX<WVxI7#jzx}==h-q}*B)n@}gB>AWk|(AFTJRiQT78?+VA@|a zh9NUpo!-+B2M(s9!2&RXn%y@L&pR@%MP*}1I#y0I3mir5IDTPYdm8-d`Fp@hjWEjF zDbM&Pqg8x!QB}NchK0+1H^~)Cn4i2*&Q7B>T~;^Jb5oyW_=k;zbC&#>T|VUVexc0f zS1xxk-4ItH%agClVH`rN0(~GbL2BlxKh}DNxOkAJPncZKpOFSO<kad<9yH+FTpkWS zN9e%pgkiL4TdDu4e0(oX%`=z((4K&W-WGWp6zuQ=$4>e>wP_*D2@8n(eHqJK9SiDb zF@KihPLA<YmO`wj&gzuVBLunHt)gu*&j*h;VRu+Bhn(J0+Ng}8!H6&$`AuQEWb|=- z^Xv%%<Qz)$vz<S2PT71@S&TBPKTVkw^fux#M{fK(h+VE1PTx)d0KYv)mM)93n}lAx zE}adQrM+N$)ayO-)#*OvPAyTWC~AM#D73NhE=Xa8tn)qlt<l>``|{{Rc=Sn2>n^>| z9kWK6EwUotf@Zuh<t1CAx3O~LNOrTC`vkFeX9a-OX=sl&NHxe*mXQ?OC+Z=fuEYC1 zx(X^h>VR;b^2&wS$L0D;Y#&^vR`9CVjAV0;w-`gThZU}Idxg#}UEs?^`E18#trtt{ z=3yNVqC#xEx$UQO$4+vV+2*vLVL8hmBmYcJKv}<b2|{rAt}4uC>K0oeG#w5%;l+l` zyYE7?XO2vB<#<-aV$4P9J@1AUE)TP;jdaD~Sz5pn5xFNxG9UVR!X#4m7mQe4t8ArA z4%}t=8*f{qlg*Sg-85mdfd#B{Su+|asOIkUtw1O!rltyhb`+^Koh*1^BRFnDZ@fqo zqdxHkDB4(FcUz8IM4@!S5kJ`K#Wt*k@AiquljcJeJ;XlSbm#HMS>=;s$Z2dD3R!BV zpzaSAfT<4(7D>w8XXAPUic-L*dS7RS(@XX19apEcs@@o?$*wSqd>G4TqLB@u=Hxi( zElS*@Z%xkYH||-9$2tj1IYdUpusv#!N?GrE`JKf*lE*E^8R{QRd(WIDZ;N}Z!+8_; z_wX>SGYTfK&L1cyG3t7fDAzcci)>QU9r-9l8r(6e+*ybr5Zp|#ejTvOe0i7`&-nnz z@CR(4q7a;Ua$iRe44dH`tPuZIM2d$1s7$cN5qc!ELDovI?`EYyom#!I$FvHPC^^tw z8K_5a?QQSOh#;0rup5WzpIeXBvEN?0lsoF2JU&=TE0@;`mjmV&kO=W*weS~IB(H`i zl44S3ZoIY#;VfEFyi4&S9IR$BQyAK`9|{CesHaS@UH*rGaZg!gu|+bR56K{53jBE8 zniZ3HfUXW6mOw&jDNQp@3WTaTmqFFJ^>k#^u#Y+n?b@e{sGM6l9f4zA)?{}p?-K*L z3h*l7{hKqesC>ZpooT~pVw6BStZN|U7?)YcTn!SS&{9-Eigou#ZSN@=JW>g=AUmQ( zD2f3s!vfky&mhKa#DabM$9DN>I0pia8Prpp6_c8#j+v~8_4yzS_E2q-{APKFObIvo zN!8i}R~3~dVBUH#TF-@dh&Ld%kOq}*HgvG~2o(Y|AuLURuD7#Qmh{C31|HMP%v{$l z*Y`E;Fg5X9a!bgkzJXrYkD~Z9oQ%N0hya;^ZhHP9ry<Oh4QMHBucoufAoF|m%V$*g zWSXc=xU>~<q9M?ramsh=WHWma;?rlGTcBly(F4y)zWK%agqC(y+~yO|?pi0~e>p(= zJxtRusNUS?<)(A(E{4ow^F7o_*SN9?&Bfm2)JlpyvFY=z(%#hY|N1!77Y&ALFq0|` zvdchq-r8Q3w6A*TF_78$=ZGz53^l&>4jtK&J8G)XFgcSvmYda8$bX<+ehLRT5oOSp zhWZ|~4A-SnFE%9>scmWqMEEZ(XFG~~cR7DWJr(Crato36e?t$!JoRap7nS~BG2!cz zXYJ>L@=crU)x)V!?$0h+{6vSd3|zK7`n_8<6aNDY&PNu6k~m_)w6&YlL^qD^EryZ9 zEmG6BzwLzBSw8R$Ts?U+qBI-LXuU?SJ}t1^gsj}|I+M@@n!srrMrJ{-KbB1Wg1PG7 OI}+%je9bxFFO%fI@)8*U literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/oauth2-server-token-lifetimes.avif b/static/images/docs/oauth-server/oauth2-server-token-lifetimes.avif new file mode 100644 index 0000000000000000000000000000000000000000..8266beb4b4dd02000ad0188e04488cf5a589e1c5 GIT binary patch literal 35339 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 literal 0 HcmV?d00001 From d23f74dc242a9b6236c1384667d8e80a2a0335ba Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Mon, 13 Jul 2026 20:27:17 +0530 Subject: [PATCH 13/38] Add custom scopes guide and expand the scopes reference - New 7-step tutorial: define scopes, per-scope consent, JWKS-validated resource server, and a consumer exercised against it end to end - Scopes page: authorize examples for requesting scopes, and a rich authorization requests (RFC 9396) section with configuration, request, consent, and enforcement - Trim the quick start discovery snippet and overview framing; split client types into bullets --- .optimize-cache.json | 7 + .../docs/partners/oauth-server/+layout.svelte | 4 + .../docs/partners/oauth-server/+page.markdoc | 7 +- .../oauth-server/clients/+page.markdoc | 3 +- .../oauth-server/custom-scopes/+layout.svelte | 10 + .../oauth-server/custom-scopes/+layout.ts | 11 + .../oauth-server/custom-scopes/+page.ts | 5 + .../custom-scopes/step-1/+page.markdoc | 45 ++ .../custom-scopes/step-2/+page.markdoc | 32 ++ .../custom-scopes/step-3/+page.markdoc | 119 +++++ .../custom-scopes/step-4/+page.markdoc | 74 +++ .../custom-scopes/step-5/+page.markdoc | 142 ++++++ .../custom-scopes/step-6/+page.markdoc | 136 +++++ .../custom-scopes/step-7/+page.markdoc | 62 +++ .../oauth-server/quick-start/+page.markdoc | 5 - .../oauth-server/scopes/+page.markdoc | 465 +++++++++++++++++- .../oauth-server/dark/scopes-defined.avif | Bin 0 -> 32796 bytes .../docs/oauth-server/scopes-defined.avif | Bin 0 -> 30500 bytes .../scopes-guide/taskflow-consent-choice.avif | Bin 0 -> 17601 bytes .../scopes-guide/taskflow-consent-scopes.avif | Bin 0 -> 18144 bytes .../scopes-guide/vantage-tasks-dashboard.avif | Bin 0 -> 27813 bytes .../scopes-guide/vantage-write-denied.avif | Bin 0 -> 33158 bytes .../scopes-guide/vantage-write-granted.avif | Bin 0 -> 30992 bytes 23 files changed, 1117 insertions(+), 10 deletions(-) create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/+page.ts create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc create mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc create mode 100644 static/images/docs/oauth-server/dark/scopes-defined.avif create mode 100644 static/images/docs/oauth-server/scopes-defined.avif create mode 100644 static/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif create mode 100644 static/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.avif create mode 100644 static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif create mode 100644 static/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif create mode 100644 static/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index ed5cd56343..f0a14ff0cd 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1595,6 +1595,7 @@ "static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.png": "ad51d531eaa3736839859097c024bca41a28d1339ceef773e376c06936e040ee", "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", + "static/images/docs/oauth-server/dark/scopes-defined.png": "71fe55ebcc533a83709394926d8cd8b3735d8f7bab3983590073357f467f7271", "static/images/docs/oauth-server/guide/taskflow-consent.png": "5c4f4cbc6b225c60d5d6e2f1616abe45f0e6b66a5014438961fca98db349bd18", "static/images/docs/oauth-server/guide/taskflow-login.png": "5d0013b31b211efe4d3a2f6a9f224a5b547d3ef1370e507b9a183bb276fc90e1", "static/images/docs/oauth-server/guide/vantage-dashboard.png": "b2e95c34ec9c19be090e5f3384e0c3278dd840059b3f015ccdb13a16c135dde1", @@ -1607,6 +1608,12 @@ "static/images/docs/oauth-server/oauth2-server-settings-disabled.png": "648091d9d81308ab93dd456f172fa1c1977c2fbce9b8aa03893398bdefe10595", "static/images/docs/oauth-server/oauth2-server-settings.png": "914aa6511caedb568f199eacef837366c523f78125c551afa992e39098707431", "static/images/docs/oauth-server/oauth2-server-token-lifetimes.png": "895bf62c7f5171c8f244fda37b516760266c47447f2c66c93c3c812139823b96", + "static/images/docs/oauth-server/scopes-defined.png": "63d9d4bd8bfa353fe8760a4840f396cee6efd8d79351966eadff9659972701cf", + "static/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.png": "27a8ebf167728a50059bf315bc9676e3c5ec9f32f47eb70ea7c4e4715fadbf99", + "static/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.png": "ad7975be44e1840e85d994c3a12e19bcbe63e4eec5ba4bec9028c6683db3ae60", + "static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.png": "d8f81bd5e0dce05d66d286aa08c57710e383e37c026695c5d97621a4ccdaff07", + "static/images/docs/oauth-server/scopes-guide/vantage-write-denied.png": "d2f1fc73a56e88608109b35905d23a0a8ebfd35f13b21c207f11bab526aa30d6", + "static/images/docs/oauth-server/scopes-guide/vantage-write-granted.png": "6d82810a35789608f50cf27299f506551c5138ae8854b2dc8bfdb71d8f2ceb96", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/routes/docs/partners/oauth-server/+layout.svelte b/src/routes/docs/partners/oauth-server/+layout.svelte index 409e8402dc..19949838e0 100644 --- a/src/routes/docs/partners/oauth-server/+layout.svelte +++ b/src/routes/docs/partners/oauth-server/+layout.svelte @@ -52,6 +52,10 @@ { label: 'Sign in with your product', href: '/docs/partners/oauth-server/sign-in-with-your-product/step-1' + }, + { + label: 'Custom scopes', + href: '/docs/partners/oauth-server/custom-scopes/step-1' } ] } diff --git a/src/routes/docs/partners/oauth-server/+page.markdoc b/src/routes/docs/partners/oauth-server/+page.markdoc index b3ec80274e..554ea1163e 100644 --- a/src/routes/docs/partners/oauth-server/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/+page.markdoc @@ -14,8 +14,6 @@ Appwrite can act as an **OAuth 2.1 and OpenID Connect provider**. When you enabl ![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) {% /only_light %} -This is the inverse of the [OAuth providers](/docs/partners/project/oauth) feature. OAuth providers let your users sign in to your project *with* an external service. The OAuth server lets external services sign their users in *with your project*. - # How it works {% #how-it-works %} The OAuth server has three moving parts. @@ -59,10 +57,13 @@ Authorize TVs, CLIs, and other input-constrained devices. {% /cards_item %} {% /cards %} -# Guide {% #guide %} +# Guides {% #guides %} {% cards %} {% cards_item href="/docs/partners/oauth-server/sign-in-with-your-product/step-1" title="Sign in with your product" %} Build a full sign-in with your product experience end to end, from the consent screen to the token exchange. {% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/custom-scopes/step-1" title="Protect your API with custom scopes" %} +Define custom scopes, request them from a client, and enforce them on your own API. +{% /cards_item %} {% /cards %} diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/partners/oauth-server/clients/+page.markdoc index d5e364907f..9b11a8e2f5 100644 --- a/src/routes/docs/partners/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/clients/+page.markdoc @@ -18,7 +18,8 @@ A **client** is a third-party app that authenticates users through your project' Every client is one of two types, and the difference comes down to a single question: can the app keep a secret? -A **confidential** client runs code on a server the developer controls, so it can store a `client_secret` that users never see. It authenticates to the token endpoint with that secret, which lets your server prove which client is calling. A **public** client runs entirely on the user's device (a single-page app, a native mobile app, a CLI), where any embedded secret would ship to the user and could be read. Public clients receive no secret and rely on PKCE instead. +- A **confidential** client runs code on a server the developer controls, so it can store a `client_secret` that users never see. It authenticates to the token endpoint with that secret, which lets your server prove which client is calling. +- A **public** client runs entirely on the user's device (a single-page app, a native mobile app, a CLI), where any embedded secret would ship to the user and could be read. Public clients receive no secret and rely on PKCE instead. {% only_dark %} ![Token lifetimes for confidential and public clients](/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.avif) diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte b/src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte new file mode 100644 index 0000000000..c1c9c5a8cb --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte @@ -0,0 +1,10 @@ +<script lang="ts"> + import { globToTutorial } from '$lib/utils/tutorials.js'; + import { setContext, untrack } from 'svelte'; + + let { data, children } = $props(); + const tutorials = untrack(() => globToTutorial(data)); + setContext('tutorials', tutorials); +</script> + +{@render children()} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts b/src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts new file mode 100644 index 0000000000..c8884f46b8 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts @@ -0,0 +1,11 @@ +import type { LayoutLoad } from './$types'; + +export const load: LayoutLoad = ({ url }) => { + const tutorials = import.meta.glob('./**/*.markdoc', { + eager: true + }); + return { + tutorials, + pathname: url.pathname + }; +}; diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts b/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts new file mode 100644 index 0000000000..33146aab15 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(303, '/docs/partners/oauth-server/custom-scopes/step-1'); +} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc new file mode 100644 index 0000000000..45505c5453 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc @@ -0,0 +1,45 @@ +--- +layout: tutorial +title: Protect your API with custom scopes +description: Define custom scopes on your Appwrite OAuth server, request them from a client, and enforce them on your own API. +step: 1 +difficulty: intermediate +readtime: 20 +framework: TanStack Start +category: OAuth server +back: /docs/partners/oauth-server +--- + +The [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1) guide gave Vantage the user's identity. Identity alone only answers who the user is. To let an integration read the user's data from your product, you need [custom scopes](/docs/partners/oauth-server/scopes): permissions you define, users approve, and your API enforces. + +This tutorial continues with the same two apps. TaskFlow gains a task API that checks scopes, and Vantage asks for permission to read the user's tasks and shows them on its dashboard. + +# What you will build {% #what-you-will-build %} + +- Two custom scopes on TaskFlow's OAuth server: `read:tasks` and `write:tasks`. +- A consent screen where the user grants or withholds **each permission individually**. +- A **resource server**: an API route on TaskFlow that validates access tokens and enforces the scopes they carry, operation by operation. +- A task composer on Vantage's dashboard that succeeds or gets refused depending on what the user granted. + +The resource server is the new idea. The OAuth server issues tokens and stamps the granted scopes onto them, but it does not know what `read:tasks` means in your product. Your API gives the scope its meaning by checking it on every request. + +# The flow {% #the-flow %} + +1. Vantage adds `read:tasks` and `write:tasks` to its authorization request. +2. TaskFlow's consent screen shows each permission, and the user decides which to grant. +3. The access token Vantage receives carries exactly the approved scopes in its `scope` claim. +4. Vantage calls TaskFlow's task API with the access token. +5. TaskFlow verifies the token's signature, checks the scope the operation needs, and allows or refuses. + +Everything up to step 3 is the authorization code flow from the first guide, with more scopes in the request. Steps 4 and 5 are what you build here. + +# Prerequisites {% #prerequisites %} + +- The two apps from [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1), running against a project with the OAuth server enabled and Vantage registered as a confidential client. +- [Node.js](https://nodejs.org/) 20 or newer and `pnpm`. + +{% info title="Get the finished code" %} +The complete apps from this tutorial are on GitHub at [appwrite-community/oauth-guide-custom-scopes](https://github.com/appwrite-community/oauth-guide-custom-scopes). Clone it to follow along or to compare against your own. +{% /info %} + +Continue to define the scopes on your project. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc new file mode 100644 index 0000000000..6651e4977c --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc @@ -0,0 +1,32 @@ +--- +layout: tutorial +title: Define the scopes +description: Add read:tasks and write:tasks to your OAuth server's scopes. +step: 2 +--- + +Scopes have to be defined on the OAuth server before a client can request them. Requesting a scope you have not defined fails the authorization request with `invalid_scope`. + +# Add the scopes {% #add %} + +{% only_dark %} +![The read:tasks and write:tasks scopes on the OAuth2 server settings](/images/docs/oauth-server/dark/scopes-defined.avif) +{% /only_dark %} +{% only_light %} +![The read:tasks and write:tasks scopes on the OAuth2 server settings](/images/docs/oauth-server/scopes-defined.avif) +{% /only_light %} + +In the Console, open **Auth**, select the **OAuth2 server** tab, and find the **Scopes** field on the **Integration** card. Add two scopes and click **Update**: + +- `read:tasks` grants read access to the user's tasks. +- `write:tasks` grants permission to create and update tasks. + +The `openid`, `profile`, `email`, and `phone` scopes stay locked in place. They are always available, so you only define the ones specific to your product. + +# Naming scopes {% #naming %} + +The `verb:resource` shape is a convention, not a requirement. Any string up to 128 characters works. Splitting read and write per resource keeps grants small: an integration that only shows data never has to ask for permission to change it, which is an easier ask on the consent screen. + +Both scopes are now published in your project's [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `scopes_supported`, so integrators can see them without asking you. + +Continue to request the new scopes from Vantage. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc new file mode 100644 index 0000000000..dc1db6c8a6 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc @@ -0,0 +1,119 @@ +--- +layout: tutorial +title: Request the scopes +description: Ask for the task scopes during authorization and let the user grant each one individually. +step: 3 +--- + +A client receives a scope by asking for it during [authorization](/docs/partners/oauth-server/authorization). Vantage requests both task scopes, and TaskFlow's consent screen lets the user decide which of them to grant. + +# Add the scopes to the request {% #request %} + +In the consumer, extend the scope list in `consumer/src/lib/oauth.ts`: + +```ts +// consumer/src/lib/oauth.ts +// read:tasks and write:tasks are custom scopes defined on TaskFlow's +// OAuth server. They authorize Vantage against TaskFlow's task API. +export const SCOPES = 'openid profile email read:tasks write:tasks' +``` + +`authorizeUrl` already passes `SCOPES` as the `scope` parameter, so nothing else changes on the consumer. The OAuth server carries the requested scopes into the grant and shows them to the user. + +# Label the scopes on the consent screen {% #label %} + +TaskFlow's consent card maps scopes to human-readable lines through `SCOPE_LABELS`. Add labels for the new scopes in `provider/src/lib/consent-types.ts`: + +```ts +// provider/src/lib/consent-types.ts +// Human-readable labels for the scopes shown on the consent card. +// Custom scopes get labels too, so users understand what they grant. +export const SCOPE_LABELS: Record<string, string> = { + openid: 'Confirm your identity', + profile: 'See your name and profile details', + email: 'See your email address', + phone: 'See your phone number', + 'read:tasks': 'See your tasks', + 'write:tasks': 'Create and update your tasks', +} +``` + +A raw scope string like `read:tasks` means something to you, not to your users. The label is what stands between them and approving a permission they do not understand. + +# Let the user choose {% #choose %} + +Consent is not all-or-nothing. When approving a grant, the consent screen can pass the subset of scopes the user agreed to, and the OAuth server narrows the grant to exactly that. It rejects any scope that was not requested, and `openid` is always retained because it is the sign-in itself. + +Update the `approve` helper in `provider/src/lib/oauth-server.ts` to pass the chosen scopes: + +```ts +// provider/src/lib/oauth-server.ts +/** Approve a grant. The OAuth server responds with the URL to send the + * user back to, carrying the authorization code. Passing scopes narrows + * the grant to that subset; the server rejects anything that was not + * requested and always retains openid. */ +export async function approve( + grantId: string, + sessionToken: string, + scopes?: string[], +): Promise<string> { + const res = await fetch(`${issuer}/approve`, { + method: 'POST', + headers: { + ...projectHeaders, + 'X-Appwrite-Session': sessionToken, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + grant_id: grantId, + ...(scopes ? { scope: scopes.join(' ') } : {}), + }), + redirect: 'manual', + }) + const location = res.headers.get('location') + if (!location) throw new Error(`Approve failed: ${res.status}`) + return location +} +``` + +On the consent card in `provider/src/routes/oauth.consent.tsx`, track the user's selection and send it on approve. Each permission renders as a toggle, on by default, with `openid` locked: + +```tsx +// provider/src/routes/oauth.consent.tsx (selection state) +// The user decides scope by scope. openid is the sign-in itself, so it +// stays on; everything else starts granted and can be switched off. +const [selected, setSelected] = useState<Set<string>>( + () => new Set(grant.scopes), +) + +const toggle = (scope: string) => { + if (scope === 'openid') return + setSelected((prev) => { + const next = new Set(prev) + if (next.has(scope)) next.delete(scope) + else next.add(scope) + return next + }) +} +``` + +```tsx +// provider/src/routes/oauth.consent.tsx (approve with the selection) +const approveGrant = createServerFn({ method: 'POST' }) + .validator((d: { grantId: string; scopes: string[] }) => d) + .handler(async ({ data }) => { + const session = await taskflowSession() + const location = await approve(data.grantId, session.data.token!, data.scopes) + throw redirect({ href: location }) + }) +``` + +The card's list renders one row per scope in `grant.scopes`, calling `toggle` on click, and the **Authorize** button submits `Array.from(selected)`. The full component is in the [tutorial repository](https://github.com/appwrite-community/oauth-guide-custom-scopes). + +# What the user sees {% #consent %} + +![TaskFlow consent screen listing each requested permission as a toggle](/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.avif) + +When a user signs in to Vantage now, the consent card lists **See your tasks** and **Create and update your tasks** alongside the identity permissions, each one granted or withheld with a click. Users who approved Vantage before this change are asked again, because their earlier grant does not cover the new scopes. + +Continue to validate access tokens on TaskFlow's server. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc new file mode 100644 index 0000000000..6afee0dcf3 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc @@ -0,0 +1,74 @@ +--- +layout: tutorial +title: Validate access tokens +description: Verify incoming access tokens against your project's JWKS and read their scopes. +step: 4 +--- + +TaskFlow's API is about to accept access tokens from the outside world, so it first needs a way to tell a token it issued from one somebody made up. Access tokens from your OAuth server are RS256-signed JWTs, and the matching public keys are published at your project's JWKS endpoint. That means TaskFlow can verify tokens locally, with no call back to the OAuth server on each request. + +# Install jose {% #install %} + +[jose](https://github.com/panva/jose) handles the JWT verification and the JWKS fetching. Install it in the provider: + +```sh +cd provider +pnpm add jose +``` + +# The token guard {% #guard %} + +Create `provider/src/lib/resource-server.ts`: + +```ts +// provider/src/lib/resource-server.ts +// TaskFlow's resource server: validates access tokens issued by the +// project's OAuth server and enforces the scopes they carry. +import '@tanstack/react-start/server-only' +import { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose' + +const issuer = process.env.OAUTH_ISSUER! + +// The OAuth server publishes its signing keys as a JWK Set. jose caches +// the keys and refetches them when it sees an unknown key ID. +const jwks = createRemoteJWKSet(new URL(`${issuer}/.well-known/jwks.json`)) + +export type AccessToken = JWTPayload & { + scope?: string + client_id: string +} + +/** Verify a Bearer token's signature against the JWKS and return its + * claims. Throws if the token is missing, expired, not ours, or not an + * access token. Requiring the at+jwt type (RFC 9068) is what stops an + * ID token, which is signed with the same key, from being accepted here. */ +export async function verifyAccessToken( + authorization: string | null, +): Promise<AccessToken> { + const token = authorization?.match(/^Bearer (.+)$/)?.[1] + if (!token) throw new Error('missing_token') + const { payload } = await jwtVerify(token, jwks, { typ: 'at+jwt' }) + return payload as AccessToken +} + +/** Check that the token was granted a scope. Scopes are a + * space-separated string in the token's scope claim. */ +export function hasScope(token: AccessToken, scope: string): boolean { + return (token.scope ?? '').split(' ').includes(scope) +} +``` + +`jwtVerify` checks the signature against the published keys and rejects expired tokens, so a forged or stale token never reaches your handlers. It also pins the algorithm to the RS256 keys in the JWKS, so `alg: none` and HMAC confusion attacks fail here too. + +The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth server signs [ID tokens](/docs/partners/oauth-server/tokens) with the same key as access tokens, and an ID token has no `scope` claim. Without the type check, a client could present its ID token to your API; requiring `at+jwt` (the [access token type](/docs/partners/oauth-server/tokens)) rejects it before it reaches a handler. An ID token is meant for the client that received it, never as a credential for your API. + +Two claims in the verified payload matter for the API: + +- `scope` holds the granted scopes as a single space-separated string, such as `openid profile email read:tasks`. `hasScope` splits it and looks for an exact entry. +- `sub` is the ID of the user who approved the grant. The API uses it to load that user's tasks, so a token can never read anyone else's data. + +{% info title="Build the JWKS URL from your own configuration" %} +The guard builds the JWKS URL from the `OAUTH_ISSUER` value the provider already has, the same base it uses for every other OAuth server call. Since [tokens](/docs/partners/oauth-server/tokens) are standard JWTs, any JWT library with JWKS support in any language can do this job. The API route just happens to live next to the consent screen here. +{% /info %} + +Continue to put the guard in front of an API route. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc new file mode 100644 index 0000000000..2ba5f9a05b --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc @@ -0,0 +1,142 @@ +--- +layout: tutorial +title: Protect the API route +description: Serve tasks only to tokens that carry read:tasks. +step: 5 +--- + +With the guard in place, TaskFlow can expose its task API. This is where the scope stops being a label and becomes a rule. + +# The task data {% #data %} + +Create `provider/src/lib/tasks.ts` with an in-memory store, keyed by user ID. It stands in for your product's database so the tutorial stays focused on the OAuth side: + +```ts +// provider/src/lib/tasks.ts +// TaskFlow's task data, keyed by the owner's user ID. A stand-in for +// your product's database so the guide stays focused on OAuth. +import '@tanstack/react-start/server-only' + +export type Task = { + id: string + title: string + project: string + due: string + done: boolean +} + +const seed: Task[] = [ + { id: 'tsk_01', title: 'Finalize Q3 launch checklist', project: 'Launch', due: '2026-07-17', done: false }, + { id: 'tsk_02', title: 'Review onboarding copy', project: 'Growth', due: '2026-07-15', done: true }, + { id: 'tsk_03', title: 'Ship dark mode to beta', project: 'Product', due: '2026-07-21', done: false }, + { id: 'tsk_04', title: 'Prepare investor update', project: 'Ops', due: '2026-07-24', done: false }, +] + +const store = new Map<string, Task[]>() + +/** Every TaskFlow user gets the same starter tasks the first time + * their list is read. */ +export function tasksFor(userId: string): Task[] { + let tasks = store.get(userId) + if (!tasks) { + tasks = seed.map((t) => ({ ...t })) + store.set(userId, tasks) + } + return tasks +} + +export function addTaskFor(userId: string, title: string): Task { + const tasks = tasksFor(userId) + const task: Task = { + id: `tsk_${String(tasks.length + 1).padStart(2, '0')}`, + title, + project: 'Inbox', + due: '2026-07-31', + done: false, + } + tasks.push(task) + return task +} +``` + +# The guarded route {% #route %} + +Create `provider/src/routes/api.tasks.ts`. TanStack Start serves the `GET` and `POST` handlers at `/api/tasks`: + +```ts +// provider/src/routes/api.tasks.ts +import { createFileRoute } from '@tanstack/react-router' +import { + hasScope, + verifyAccessToken, + type AccessToken, +} from '../lib/resource-server' +import { addTaskFor, tasksFor } from '../lib/tasks' + +// Standard OAuth resource server errors (RFC 6750): 401 when the token +// itself is bad, 403 when it's valid but missing the required scope. +function unauthorized() { + return Response.json( + { error: 'invalid_token' }, + { status: 401, headers: { 'WWW-Authenticate': 'Bearer error="invalid_token"' } }, + ) +} + +function forbidden(scope: string) { + return Response.json( + { error: 'insufficient_scope', required_scope: scope }, + { + status: 403, + headers: { + 'WWW-Authenticate': `Bearer error="insufficient_scope", scope="${scope}"`, + }, + }, + ) +} + +async function authenticate(request: Request): Promise<AccessToken | null> { + try { + return await verifyAccessToken(request.headers.get('authorization')) + } catch { + return null + } +} + +export const Route = createFileRoute('/api/tasks')({ + server: { + handlers: { + GET: async ({ request }) => { + const token = await authenticate(request) + if (!token) return unauthorized() + if (!hasScope(token, 'read:tasks')) return forbidden('read:tasks') + + // The token's subject is the TaskFlow user who approved access. + return Response.json({ tasks: tasksFor(token.sub!) }) + }, + + POST: async ({ request }) => { + const token = await authenticate(request) + if (!token) return unauthorized() + if (!hasScope(token, 'write:tasks')) return forbidden('write:tasks') + + const { title } = await request.json() + return Response.json( + { task: addTaskFor(token.sub!, title) }, + { status: 201 }, + ) + }, + }, + }, +}) +``` + +Each handler applies the same two checks, in order: + +1. **Authentication**: is the token real? A missing, forged, or expired token gets `401 invalid_token`. +2. **Authorization**: was this token granted the scope this operation needs? A valid token without it gets `403 insufficient_scope`. + +The two error shapes follow RFC 6750, including the `WWW-Authenticate` header, so standard OAuth client libraries understand the refusal. The distinction matters to callers: a 401 means get a new token, a 403 means ask the user for more scopes. + +Note what the `POST` handler implies: a client can hold a perfectly valid token and still be refused a write with it, whenever the user granted `read:tasks` but withheld `write:tasks` on the consent screen. + +Continue to call the API from Vantage. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc new file mode 100644 index 0000000000..d3e1d724f6 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc @@ -0,0 +1,136 @@ +--- +layout: tutorial +title: Call the API from Vantage +description: Read tasks with the granted access token and add a task composer that lives or dies by its scope. +step: 6 +--- + +Vantage already holds the access token in its session after the [token exchange](/docs/partners/oauth-server/sign-in-with-your-product/step-6). Reading tasks is one authenticated fetch away, and a small composer will exercise the write path. + +# Point Vantage at the API {% #env %} + +Add TaskFlow's API base to `consumer/.env`: + +```sh +# consumer/.env +# TaskFlow's API, called with the granted access token. +TASKFLOW_API_URL=http://localhost:4000 +``` + +# The API client {% #client %} + +Create `consumer/src/lib/taskflow.ts`. Every request carries the access token as a Bearer header, and TaskFlow's guard does the rest: + +```ts +// consumer/src/lib/taskflow.ts +// Vantage's client for TaskFlow's API. Every request carries the access +// token the user granted, and TaskFlow enforces its scopes. +import '@tanstack/react-start/server-only' + +const taskflowApi = process.env.TASKFLOW_API_URL! + +export type TaskFlowTask = { + id: string + title: string + project: string + due: string + done: boolean +} + +/** Read the user's tasks. Requires the read:tasks scope. */ +export async function fetchTasks(accessToken: string): Promise<TaskFlowTask[]> { + const res = await fetch(`${taskflowApi}/api/tasks`, { + headers: { Authorization: `Bearer ${accessToken}` }, + }) + if (!res.ok) throw new Error(`tasks failed: ${res.status}`) + const { tasks } = await res.json() + return tasks +} + +export type WriteResult = + | { created: true; task: TaskFlowTask } + | { created: false; status: number; error: string } + +/** Create a task on TaskFlow. Succeeds only when the access token + * carries the write:tasks scope; otherwise TaskFlow answers with + * 403 insufficient_scope. */ +export async function createTask( + accessToken: string, + title: string, +): Promise<WriteResult> { + const res = await fetch(`${taskflowApi}/api/tasks`, { + method: 'POST', + headers: { + Authorization: `Bearer ${accessToken}`, + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ title }), + }) + if (res.ok) { + const { task } = await res.json() + return { created: true, task } + } + const body = await res.json().catch(() => ({ error: 'unknown' })) + return { created: false, status: res.status, error: body.error } +} +``` + +`createTask` does not check any scope itself. Vantage cannot know what the user granted until it tries; the refusal comes from TaskFlow, which is the only side that can be trusted to enforce it. + +# Keep the granted scope {% #granted-scope %} + +The token response reports which scopes were granted, which matters now that the user picks them individually on the consent screen. Store it in the session in `consumer/src/routes/oauth.callback.tsx`, next to the access token: + +```ts +// consumer/src/routes/oauth.callback.tsx +await session.update({ + accessToken: tokens.access_token, + grantedScope: tokens.scope, + user, + state: undefined, +}) +``` + +Add the matching `grantedScope?: string` field to `SessionData` in `consumer/src/lib/oauth.ts`. + +# Load tasks and add the composer {% #dashboard %} + +Replace the dashboard loader in `consumer/src/routes/dashboard.tsx` and add a server function for the write: + +```tsx +// consumer/src/routes/dashboard.tsx (loader and write) +const loadDashboard = createServerFn().handler( + async (): Promise<DashboardData> => { + const session = await vantageSession() + const { user, accessToken, grantedScope } = session.data + if (!user || !accessToken) throw redirect({ to: '/' }) + + // Reads the user's tasks from TaskFlow's API with the granted + // access token. Works because the user granted read:tasks. + const tasks = await fetchTasks(accessToken) + + return { user, grantedScope: grantedScope ?? '', tasks } + }, +) + +const addTask = createServerFn({ method: 'POST' }) + .validator((d: { title: string }) => d) + .handler(async ({ data }): Promise<WriteResult> => { + const session = await vantageSession() + const { accessToken } = session.data + if (!accessToken) throw redirect({ to: '/' }) + + // TaskFlow only accepts this if the token carries write:tasks. + return createTask(accessToken, data.title) + }) +``` + +The component renders the granted scopes as chips, the task list, and an **Add task** composer under it. On submit it calls `addTask`; when the result is `created` it refreshes the list with `router.invalidate()`, and when it is not, it shows TaskFlow's refusal next to the composer. The full component is in the [tutorial repository](https://github.com/appwrite-community/oauth-guide-custom-scopes). + +# The payoff {% #payoff %} + +![Vantage dashboard showing live TaskFlow tasks and the task composer](/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif) + +The dashboard shows the user's tasks, fetched live from TaskFlow's API with the granted token, with the composer ready below them. What happens when you use it depends entirely on what the user granted on the consent screen, which is exactly what the final step walks through. + +Continue to run the whole flow. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc new file mode 100644 index 0000000000..e9bb0f9003 --- /dev/null +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc @@ -0,0 +1,62 @@ +--- +layout: tutorial +title: Run the flow +description: Grant the read scope, watch a write get refused, then grant the write scope and watch it succeed. +step: 7 +--- + +Everything is wired up. Run the flow twice: once granting only read access, and once granting the write too. The same button on the dashboard behaves differently each time, and the only thing that changed is what the user agreed to. + +# Start both apps {% #start %} + +In two terminals: + +```sh +# in consumer/ +pnpm dev +``` + +```sh +# in provider/ +pnpm dev +``` + +# Grant read, withhold write {% #withhold %} + +![TaskFlow consent screen with the write permission switched off](/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif) + +Open `http://localhost:4100` and click **Sign in with TaskFlow**. On the consent screen, switch **Create and update your tasks** off and authorize. The OAuth server narrows the grant to what was actually approved, so the access token comes back carrying `read:tasks` but not `write:tasks`. + +![Vantage dashboard with the write attempt refused as insufficient_scope](/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif) + +On the dashboard, your tasks render live, so the read scope is doing its job. Now type a task and click **Add task**: TaskFlow refuses it with `403 insufficient_scope`. Vantage holds a perfectly valid token and still cannot write with it, because the user never agreed to that. + +# Grant the write {% #grant %} + +Sign out of Vantage and sign in again. This time leave every permission on and authorize. The previous grant did not cover `write:tasks`, so the consent screen asks again. + +![Vantage dashboard with write:tasks granted and the new task in the list](/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif) + +Add the same task again. It lands in the list, and the `write:tasks` chip sits in the granted scopes. Nothing about TaskFlow's API changed between the two runs; the same guard that refused the write now lets it through, because the token finally carries the scope it checks for. + +# What each piece did {% #recap %} + +- **The OAuth server** published the scopes, put them in front of the user as individual choices, and stamped the approved subset onto a signed access token. +- **TaskFlow's API** verified each token against the project's JWKS and turned the `scope` claim into an allow-or-deny decision per operation. +- **Vantage** requested the scopes it can use, and its access ends exactly where the user's grant does. + +The full source for both apps is on GitHub at [appwrite-community/oauth-guide-custom-scopes](https://github.com/appwrite-community/oauth-guide-custom-scopes). + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +Refresh access tokens, and revoke them on sign-out. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +The scope model in full, including limits and the built-in scopes. +{% /cards_item %} +{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +Support TVs, CLIs, and other input-constrained devices. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc index e91f61c9eb..30842fb69d 100644 --- a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc @@ -396,11 +396,6 @@ Once enabled, the server publishes an OpenID Connect discovery document. Integra Open it in a browser to confirm the server is live. It returns JSON describing the authorization, token, userinfo, and JWKS endpoints. -```http -GET /v1/oauth2/<PROJECT_ID>/.well-known/openid-configuration HTTP/1.1 -Host: <REGION>.cloud.appwrite.io -``` - # Register a client {% #register %} Open the **Apps** sub-tab and create a client. Give it a name, add at least one redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc index fc9474765d..0d22ad96b6 100644 --- a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc @@ -37,4 +37,467 @@ Custom scopes are labels the OAuth server carries through the flow and stamps on # Requesting scopes {% #requesting %} -A client lists the scopes it wants in the `scope` parameter, space-separated, when it starts [authorization](/docs/partners/oauth-server/authorization#authorize). The user is shown exactly these scopes on your consent screen. Whatever they approve is what the issued access token carries in its `scope` claim, so a client should request only what it needs. +A client asks for scopes when it starts [authorization](/docs/partners/oauth-server/authorization#authorize). The request is a redirect to your project's authorize URL, and the scopes ride along as the `scope` query parameter, space-separated: + +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=https://example.com/oauth/callback + &response_type=code + &scope=openid%20profile%20email%20read:tasks + &state=<STATE> +``` + +Integrators building on the Appwrite SDKs make the same request with the `authorize` method: + +{% multicode %} +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.authorize({ + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com/oauth/callback', + responseType: 'code', + scope: 'openid profile email read:tasks', + state: '<STATE>', +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Oauth2 oauth2 = Oauth2(client); + +Oauth2Authorize result = await oauth2.authorize( + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com/oauth/callback', + responseType: 'code', + scope: 'openid profile email read:tasks', + state: '<STATE>', +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let oauth2 = Oauth2(client) + +let result = try await oauth2.authorize( + client_id: "<CLIENT_ID>", + redirect_uri: "https://example.com/oauth/callback", + response_type: "code", + scope: "openid profile email read:tasks", + state: "<STATE>" +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.Oauth2 + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val oauth2 = Oauth2(client) + +val result = oauth2.authorize( + client_id = "<CLIENT_ID>", + redirect_uri = "https://example.com/oauth/callback", + response_type = "code", + scope = "openid profile email read:tasks", + state = "<STATE>", +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.authorize( + "<CLIENT_ID>", // client_id + "https://example.com/oauth/callback", // redirect_uri + "code", // response_type + "openid profile email read:tasks", // scope (optional) + "<STATE>", // state (optional) + null, // nonce (optional) + null, // code_challenge (optional) + null, // code_challenge_method (optional) + null, // prompt (optional) + null, // max_age (optional) + null, // authorization_details (optional) + null, // resource (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Oauth2 } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const result = await oauth2.authorize({ + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com/oauth/callback', + responseType: 'code', + scope: 'openid profile email read:tasks', + state: '<STATE>', +}); +``` +{% /multicode %} + +The user is shown exactly these scopes on your consent screen, where they [approve or withhold each one](/docs/partners/oauth-server/authorization#consent). Whatever they grant is what the issued access token carries in its `scope` claim, and the token response reports the granted set in its `scope` field, so a client can tell when it received less than it asked for. Request only what the integration needs; smaller requests are easier to approve. + +# Rich authorization requests {% #rich-authorization-requests %} + +A scope is a flat string, which works well for broad capabilities like `read:tasks` but cannot express structured constraints like "read tasks, in these two projects only". For that, the OAuth server supports rich authorization requests (RAR, [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)): the client sends an `authorization_details` parameter, a JSON array of objects that each describe one grant of access in your product's own vocabulary. + +Scopes and authorization details are not exclusive. Use scopes for broad capabilities, and add authorization details when an integration needs caveats a flat string cannot carry. + +## Define accepted types {% #define-authorization-details-types %} + +Think of an `authorization_details` entry as a small form the client fills in to ask for access. The `type` is the name printed at the top of the form. When your API sees `"type": "tasks"`, it knows it is reading the "access to tasks" form, so it knows what the other fields on it mean: which actions, which projects. + +For the task example, the two mechanisms cover the same resource at different granularities: + +- The `read:tasks` **scope** grants blanket read access to every task. +- A `tasks` **entry** describes task access with constraints attached, such as which actions and which projects. + +An integration that needs everything requests the scope. One that should only touch part of the data requests a `tasks` entry instead. + +The OAuth server only accepts types you have allowed on the project. Define them with the `authorizationDetailsTypes` parameter: + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +const project = new Project(client); + +const result = await project.updateOAuth2Server({ + enabled: true, + authorizationUrl: 'https://your-product.com/oauth/consent', + scopes: ['read:tasks', 'write:tasks'], + authorizationDetailsTypes: ['tasks'], +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your secret API key + +$project = new Project($client); + +$result = $project->updateOAuth2Server( + enabled: true, + authorizationUrl: 'https://your-product.com/oauth/consent', + scopes: ['read:tasks', 'write:tasks'], + authorizationDetailsTypes: ['tasks'] +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your secret API key + +project = Project(client) + +result = project.update_o_auth2_server( + enabled = True, + authorization_url = 'https://your-product.com/oauth/consent', + scopes = ['read:tasks', 'write:tasks'], + authorization_details_types = ['tasks'] +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your secret API key + +project = Project.new(client) + +result = project.update_o_auth2_server( + enabled: true, + authorization_url: 'https://your-product.com/oauth/consent', + scopes: ['read:tasks', 'write:tasks'], + authorization_details_types: ['tasks'] +) +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your secret API key + +Project project = Project(client); + +Project result = await project.updateOAuth2Server( + enabled: true, + authorizationUrl: 'https://your-product.com/oauth/consent', + scopes: ['read:tasks', 'write:tasks'], + authorizationDetailsTypes: ['tasks'], +); +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your secret API key + +Project project = new Project(client); + +Project result = await project.UpdateOAuth2Server( + enabled: true, + authorizationUrl: "https://your-product.com/oauth/consent", + scopes: new List<string> { "read:tasks", "write:tasks" }, + authorizationDetailsTypes: new List<string> { "tasks" } +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +val project = Project(client) + +val response = project.updateOAuth2Server( + enabled = true, + authorizationUrl = "https://your-product.com/oauth/consent", + scopes = listOf("read:tasks", "write:tasks"), + authorizationDetailsTypes = listOf("tasks") +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your secret API key + +Project project = new Project(client); + +project.updateOAuth2Server( + true, // enabled + "https://your-product.com/oauth/consent", // authorizationUrl + List.of("read:tasks", "write:tasks"), // scopes (optional) + List.of("tasks"), // authorizationDetailsTypes (optional) + null, // accessTokenDuration (optional) + null, // refreshTokenDuration (optional) + null, // publicAccessTokenDuration (optional) + null, // publicRefreshTokenDuration (optional) + null, // confidentialPkce (optional) + null, // verificationUrl (optional) + null, // userCodeLength (optional) + null, // userCodeFormat (optional) + null, // deviceCodeDuration (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your secret API key + +let project = Project(client) + +let result = try await project.updateOAuth2Server( + enabled: true, + authorizationUrl: "https://your-product.com/oauth/consent", + scopes: ["read:tasks", "write:tasks"], + authorizationDetailsTypes: ["tasks"] +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + c := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + client.WithProject("<YOUR_PROJECT_ID>"), + client.WithKey("<YOUR_API_KEY>"), + ) + + service := project.New(c) + + response, err := service.UpdateOAuth2Server( + true, + "https://your-product.com/oauth/consent", + project.WithUpdateOAuth2ServerScopes([]string{"read:tasks", "write:tasks"}), + project.WithUpdateOAuth2ServerAuthorizationDetailsTypes([]string{"tasks"}), + ) + if err != nil { + panic(err) + } + + fmt.Println(response) +} +``` +```server-rust +use appwrite::client::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .set_project("<YOUR_PROJECT_ID>") // Your project ID + .set_key("<YOUR_API_KEY>"); // Your secret API key + + let project = Project::new(&client); + + let result = project + .update_o_auth2_server( + true, + "https://your-product.com/oauth/consent", + Some(vec!["read:tasks".into(), "write:tasks".into()]), + Some(vec!["tasks".into()]), // authorization details types + None, + None, + None, + None, + None, + None, + None, + None, + None, + ) + .await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +{% info title="The call replaces the whole configuration" %} +`updateOAuth2Server` sets the full OAuth2 server configuration in one call. Include your existing scopes and settings when adding types, or they reset to their defaults. +{% /info %} + +Like scopes, a project can define up to 100 types, each up to 128 characters. The accepted types are published in the [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `authorization_details_types_supported`, so integrators can see them without asking you. + +## Request authorization details {% #request-authorization-details %} + +A client sends its entries, JSON-encoded, as the `authorization_details` parameter on the same [authorize request](/docs/partners/oauth-server/authorization#authorize) that carries `scope`: + +```client-web +import { Client, Oauth2 } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const oauth2 = new Oauth2(client); + +const details = [ + { + type: 'tasks', + actions: ['read'], + projects: ['launch'], + }, +]; + +const result = await oauth2.authorize({ + clientId: '<CLIENT_ID>', + redirectUri: 'https://example.com/oauth/callback', + responseType: 'code', + scope: 'openid', + authorizationDetails: JSON.stringify(details), +}); +``` + +The server validates every entry before creating the grant: + +- `type` is required and must be one of the types you defined. An unknown type fails the request with `invalid_authorization_details`. +- `actions`, when present, must be an array of non-empty strings. +- Every other field, like `projects` above, is yours to design. The server carries them through untouched. + +## Consent and enforcement {% #authorization-details-consent %} + +Authorization details ride through the flow the same way scopes do: + +1. The requested details are stored on the grant, where your consent screen reads them to show the user exactly what is being asked. +2. When approving, the consent screen can pass a narrowed `authorization_details` back, the same way [consent](/docs/partners/oauth-server/authorization#consent) can grant a subset of the requested scopes. The user might approve `"actions": ["read"]` after the client asked for read and write. +3. The granted details are returned in the token response and stamped onto the access token as the `authorization_details` claim. + +Enforcement works exactly like scopes. Your API reads the `authorization_details` claim from the verified access token and applies the constraints it describes. The OAuth server only carries the details; your product gives them meaning. + +That includes deciding how the two mechanisms combine when a token carries both: + +- If the token holds a `tasks` entry, apply its constraints: only the listed actions, only the listed projects. +- If it holds only the blanket scope, allow the whole resource. diff --git a/static/images/docs/oauth-server/dark/scopes-defined.avif b/static/images/docs/oauth-server/dark/scopes-defined.avif new file mode 100644 index 0000000000000000000000000000000000000000..125cff62c454ef3357739e3e58840cb8b095c52a GIT binary patch literal 32796 zcmXuKV~{31(>8pLZSQEuwr6&BY}>YN+qP}nwr$(C-@WeddpeaIeRR4i{Ug<tP9*>U z0LR$T%~sFZ%oy-btjvrV{?o0@^#0?^Rz{9`|JnZufvKUT{r{%|0JdfZj{m3sAHv(3 zIa>XX0R0;Y%`9yU{$ql?0HA;EKY9QE5#U4kj}e)fS^sa*|5?%g5hLLLy#D#>Iny)z zrz)G-+S~p^b~9T8n|}za=gc7BNAf>6R5J%#qyL-$0I+`@c<$eTXlv$b_MZg=5)$$s zpqtrR{a^h5f&lRY1_1zkD6I_j9FYOg&>ZF_UwQq&zu<l|#(o2d2vGwNc|m0XCAe>} zEY)&Fy|#>FL;2bpD94VVH9ly(S*bwrlXw1q^{-H=1{{7Q4-^VC3e$96Zy>Qsg`obL zog82b6uaMi5C!ArzVD<D1AHI&H6j+KhWGP56$gu_Y4iEOaQzR5%JDjjeW{}()PMtC zY>F5oIE5S#=((A+oQIYttqfftG?+5D@9vRs4bt2A8?5jElfN;DJS~E2vV?r8v-N0q zR;V}6d=MTJnBIYWt5GyVg<7h~Vov(O{>_4;EYUY2V@dev^I#YV3C8|SB%cw_$1%Hk z-2UAj$Nc#8p3MnH6*l7|=fqUt@nT4ONNt>JQdBsTwo3PyzC{(Hz{pp~1%uGRHQ0Go z0$Km%0%Z?eL5(?TQZd9q6qsbDIi+seD<e=QWXYh9Z;YOqG{8E~DBDG_*gk_u2eRzX zSoKjzO$9yjlb+`sG5sv?iRW-1#ks+eFRMg^8{V1o;|mKPPRJD+8P++nd_AkclRtFr zT;NhyFieLw_t+$v5B&b*?AmxBD9h!GK>Tp{l=~^yw%EaUXM+*ila(sxCLjUUw>qbZ z@byD)%?A^~=ghdQSsVHxAi>=QD;`P{9ZdgNPl}1vB%xBc8u{Amp@qVB7f1j47zC#? z!QwsizSZv9<0N=vm`@o(JCDg4qmm<;L6+yK3Azb6fgX_f?2djgW4j%l$t3QRFX}>O zUmJM9X<@c|mW9?_{H8TC%gx4&mbU&yt?Y^5mdNbQA6AtZ2P$-`Eumg;?mGT}b^H1F zc3)QH&bd131!*u#E8xX1E@i1v*|u)fd^Fmv%={V&rthGQ<yY8IT%epl+3^Ve9d3M9 z&C8!h6T5Vw=2Ned#q1mPRcT8)?mp30x*MXA$UiFq;_8%rkJ)_t$$T{47%KBe$IOS# zgb&D`LQ@O0P-cU~a`&Eq%i}=(cz9tk+gRL~H@HQBP607IQ8Fjw-s!Jw2tm{B-AP9H zhA<TYm4@fktWE!fb(>#m0LeCS{jEg^Xm(+XW_qZR*2vCg3<<%=gdm|othSd~`zSMa zl<Nz8qwMFq67COqfj3<JNN%~3#d=uV+&5bRRfp^?GPgzbw?Ap>e(-WG>hxAkNJ^Yc z4(pn#^hfcagjDdX_?cl%W<{$RwmUhb3LV9A%Y`?VC!|$y5O5KNpL6w=U4BC#&d<5o zBP#IFXV`+;>iL@2Gx827B7yR=#QLX3Kyo2A{RiR6Z1fm-&G!X+B|3_!rJy}9)J=7A z5iJfwR({B&NcLT_N<msC0zFO8^}q<rp%oK<D2$1q(^tZ8J|C?UP$CT_J*SIMQZcKM zauFXQ^~m;K>k|mX)Gvyu{-;wq|H7hAjtMAXcWk5*JSR1+XkSF_S<fhkc+^8zck+EB zh}MgeIBMZ|w4Ju+bAmFl{q%w5gsu6Nr(&OLbQz-!pH6l&cI-GAmrmqiy|w7>$x_W9 zS$_!k6l%JZ-_js8kO?1djQekPm#UGb@=qX>YSLm<+0_oYy(E~%ebASQ?eK`%T2Mv2 z%<ZqE%3n|G%N$03lML}=Q#(q<={p`@wD}De@{E3$>H?1>yJ9>1U6pmGz%t$7j?CR+ zlEW!nUyf&>>5(q_EbnL3QftKw)ptv>NYg&P_0)}Jl&XG_V`A#ZsaEy;gH8QX0){S! z+?%*gJu8R(wE<Uf5sLGZSi<FJPhx<AYb)C$5DK_KW0zT*5p<E0fkwNyo8VVB&orHN zz148qsb_-mTpt|p!E7-M+MQ02YkUYoBQCYe7{-Cy3RKHfVs+tTa0L0Ar#Q0vWyWRf zqXM+ZfO1U#0|UB@+UovZigm>r;-6!Z2$ST(x~ULeQTQ+6G+G3`a^t~H(*ty?E}&>9 zvI#DqkK%&pwV~OOo*6VfGWeeELhj2<Z;dT~zwbd~{~W*O&;_%%evJG9OLsk0NRP3< zN?F3%-XLBRgwN{)7)@6fG#jVNN6(C@Cagh6Hf$vvxLI9|6+4q9)u+fI6Vnhrz6CN4 z^^M4ez*+g>jh!5vgkN5p-m#M{Otx7g*U{>z{0)7PN+ZyLnpD&Ml1WMA#S}*h31E1I zxh|)osnM`$i+{O;yv7#ob0zCJf3YgW#w~w3D81_QnN-NK&MPXMa(4*>dyTZ&Hipk~ za#5%o&7}-x<`Vr1Fh3ey=#N_SZy@pMI6M{L-$@%#!(1ym!2}oRAZz!ytFkQor6!Tb zLnTAnzqASL<v4Z|ogJ9BGr)NFX#2j))3uYlH=8izZks-<iE^4kuW14<`G<JdG1Q|x zW2=jZJ*x(+s7qfcd9t#T?APAV-pr*2<c<qyisYW)0_-rld3})?`lSR3OPB8Ok=8e% zr0iXNCmJ^cc|8qsY_bL8QzkwnpvMO-`IJ~-m4{2I6C%M2l`SoMGdsYDr_%o0<z7DL z)}Lcu*(>DtmNM*Z34V;511nLR*+nGsgq4Xa$D?0a2gEdGFm4IcOW`(yH;jT}gPqjn zmxMMzdL0g$9W%Pe{77Z7nr3>(micy>iKq#s%zvf)6H#6BE1F<{Cj0P>Z#0<;`V{a2 z_2X>S5m@a<KSqdD$>!ngEjyaD5Ny)(aRyVDjQA8ET7#_%T$6<Kf<ba26&A=E8r>kr z@|wghCO<6edytxAl|}m+EWg)A80soP&r#($nLNE-Uqs8)-UQEsGM1e}39dnkL`@Zc z_oY45Ji*icF(6DfdcGK42vprQo>st2m``0hCMrG(mCH2i&Aiu%)gwG5yP*!OI^R!E z!4~qO$sIok9KV<%&>C8U3=PrG6Sd3abRdG%{X@sjYmNagHf353yDZm3-eEZieZcLh z8U|o45--|x@q--A98KRo78Sf${wpd<a9KcOp%-jDB#%QooAXPD8|xvgD?#>sGbjPe zt@}auI(7JL{58<GEseyaDA)pFQ^OUJr3B-9pwAQEFIiQx0G?}XfO+Ln<mI{2kx+E@ zP8N+sHj*C?h55%k%1PMjT@4VGyeKM8e!>gwC9~Td!~kJdWEY<QpeClcq&XC0MmLi~ z*t3|FLSg-bg@1jEoDL#UT6e@NPi;olxPHF79(VrZ!wF5lwB!^P>kI};nKu9}rAm0{ zu?F<1+wmky^&VY;^5|ho6@d5$s|--#V1QFWjnK{-DjE7cfWUz!Vjn~R0aj>YOxj-1 zYt3&Ln&LwDDwx!CCTf0QV+GU2G|M^As%BSQ4mrs9=gR;7`aQ0gFL=XX1gAlR1C7sb zC=jnGoa>n)enKT^LJTzL57a_ef{j->hK?EbVQtEFqB-9Avsx|VvPKlX6>0Z~6<d*^ zp-!q%hc#RMC7@U1jkzDHnA+Dt`PXkH5%gi=E<J=KQnXZMY3>AZ$y{B;Y)?EEnQ4I) z(A(ZW##^C@wb2-4dLi0oNylJZyVOa#^tNG6q$yhwc?TN0uLv)beatm}b)sx8%W|-& z-kiu9IY3Kpar>v_gH|$3-rEAzmAOLWSOJC0R1_zHDjp{qE>X3?n)~l4vh*lBLsiaQ zI%6P`P|y@2W}K`X(N`LnVa%!%3DL97)KFRr72CSMkOK6+dh*FERDkZ=&Uuw+3QVK< z(v8wS@?dm3^Az|@Rjfv65Yhc*Tvf~G?s#!Tv_9SyUU2nqo_}V)o~~@x<P_bR^FD(= z>GW|7?SA<P$vs>IH90E?3&`-3SoYFcNb1%FW33}dHqARArs6k+0Y}Un+?hzu&}f2Y zThyjHDI8g(di>iiF}<ySjzxGnNgRNV<VLLcQFs)GXY5veN3n;N8RMS3TiVoL3TY6? zL~K%X#Wk^PYVsM2mG8hoYl}ZWD@zP9m;^%5tsJ4!3lO$cE400_oM)YGNiGaS_a=l1 z0^whxf#HaAKYvOp&wxRJRCQY_=4&ug9gqhuJS~YukGAn8+XO@ci%rReso}S;Y}oO9 zF@6QWHSF$HP@ThsHBaeO-!b+*A1VdTjq?xof2YcFZlYp&IS@*_VC|r3kBS(aKXFuT zcIj((47+-UaR-3{TaQnF*d<V&k#EtQQKPrZ7IOie_+pRmQ8^ZRZU9S2LHEreI9Vft z8IX{)zHRNruy2)!@NREtre_{8J}>?GiCM@nN3?2?rrx7bx2*?#AF1YQGjgC<p~J5@ zCMyI-G)vMp0?SO0G~&iR<sN$Mlq?eQx^t_@<1@FZKt|}HqDP=q!E`(;&-vJnR#OI{ z4@R8jSk|&g<sgAT23}gRZS`*Z4qp+Cd;x|ws8NoKF2B9sgEoPmqx%Hq=Vq^^fybce zuZQ?y-kaGNSh$PHte5>;WwY;vjV5Wt5HTgfzH-4lp~;V2S()z|_NRp3I0Qp=qFr2a z!3mi}hfg>xcwUU9zv1>p(U@*2n{V#ed+=^*<Z67Sf`}>gSq1={*e98HRh%SVDaA07 z2te?T{|u*kPxa!tX196hj1esz5AB>Mt*DtQ(plEwccuE3`q}r=`<y3I=6+`nH-xyC zj>`KMg=_jOBC}Di84&y>Flcp>Hc^t;uX__o7R&RkBs#3u4dcdRCc}X4`6cR)-qCXT z-e%CfkI2C}Ez#uP*Xf<;8(MSyx#`p~kDhl1rh09{i~Seoi(r;!V33PXPTDhEKHn|$ z06&8r1pt{IL|=6$UuQe3f@M~YYc|Nn95E+Be<KFt6aD89Q)UV5bF)1-{n-1DGNOV{ z`5yVcxA3p#z_fGP_08~G6Od_(%pnwZE48dL_2Kvu7JSmLa|?cwd}Nd@-NrAF{PPwP zH8GPDwrOHd@aDD)46hT{KNt+%?Ef<E20`!s`YaOoIxbkuxp}FXx?GOZ(d#nHXD`_! zXGYTo3%K;LzP)$x%EZ`eRXP2-o$VW|>$LzPkw{MzF04(iRTLw#9hbrD=0xB2h7TVW z0BW7hYilPvr*jYBdrYsils46stW0&?ZCOzXyiF<xwBVz{i28dkDm}wikpgykOpeh3 zpH0m-IWVra7i3d6`&g%CL|hF$_M=Yeshr8&6MEZI`j^A9T_O0`rj>f9v*jk<)r+ga zplt$>oR~hL;+4R0{{B#{CkL^7v4)Slm-kxRQ8(SH7WaKmN(eVJ=tP&*j7-A?1&O2F zK;DiKaArGvRcH{_#*9zGN3avQy}gnH)cCVSC5WaP@xU}<kZ(`4%<#gVe?FEO;)|dW zL^c(!cQaMZ8Ux127_2t%Clvs3cY;LUUXl_5J|l0)d?4#Dt|28OB;T-V;N{t4sLOcN zyjLx?em2ei`8p_C5di4iiAoHin#ZYxdUWehPxf^KZioQXkVXDGW_t1AHFHMfPG!T| z4#mPuDyswR&-WKb1yst`&?egr$+zmno>9f2IXmn3qkewT#S};APf)#=M~v<_@osN| z@Kw{qXr|rQ(OBNWL!@eH8{x0;`Fevk%c#|1(_0>bpMl%3EOd%BQ&URw0ZV2bye;{k zb0<|Wb04CatFR?VmcEOZW$l2ce9*R_p`cVP<@S+?tKqOeJ+X|lzYuXOa3>OYSK3u4 z35Z?eo3}G>>e&X)_(W3!^*wrIVtk}g?Cv|1Xk)=bn^i*+?!I=Bw)awK>~7>8iYxGw zU5k9n-$hqP#ty4GWKMiXjz_OchtEcARmM~ILl2>9i!7LWzebCxDn$zJNC~l;Lz|n$ z(cM@aPJZ`-OqQ+T$*6}6m~|r5&LeG>W%crbf=K;9{GxfX6mVE1F{G89%SFYuu*GJ= zBJ``qm~)Z2Ef^&Jrsf=Ty{B(xG@;nDAhJ5XRUDC|kYI6Df|M!ziz~i5VE)&&>-OL} zIa4_`Ys5ap^NwQtS|0MrUza4}HX^&p;X#5WT9yH?cGpWbSEV^zi3j{iWV+IG%gp6x z>yU1{H0u+I<WC#)Zf8LBcT1qR{4u)nOJfG(B8N3)2HE&0QAcE^&$$rc5;FrD%uo>= z52C5CeXtBJH4fJAR;$`mW?M0mOw=uW;gW=-k*BSw>a|?3&~U4uNJc0HVF)3yA^gPi zoOp|E`dwo@AH=UdR-Jj|%h?Zbd}I>{EEBXPy_mCiTIdYoAHgJ4+`kp=?OfR@OacAM zChz$ZD*$g%$Z2ZT$bL?Sn8U;!j?2MsX3t7WDN<#|IH{^JNxNvqg@x|)lZ0oZlhd+S z7USTrwn28{tDueq!<r<K{bq?iNUVKP>IVaL!bqTI5d(;6EJji9EJZq>P9%s7t)gF> zr!-F^bM{l0ZA%FHK%YQ(Pk-YZv5fmbzmw4|KVXBtGKOfFj()tPsKyV!%U52Z;5Xq) zfg?s{=E!Ip7a}+=V*HPgB<)sI^LJ!KzkVzEC)>!(I8qA-K2G!D|AN+OmR9|f<GgL$ z1-Gyh{?>?m7qZ@>6v-w0L&fxSbn<IjI_&CLPuy-jOy8}%>$%GRARYtR8&?@|7HQQs z+7)?GE`--mUTYdB#4;3YgHh?4omU-qcOLsH5l4ICR!VjfF*6(-+xakXcEZhFTB#*A zpfo^;&|y<LAHL@B0^d1bdsb>F<m*%Jp;})gk1YEBcH$|3v6+Yx_%VB<*%i1aII;Jg zxv!tAmD-Jt6I`$C%$vDSXkM5*qEq)N{;pVEx~`ut%#>+VIC#Jz!-aGYWAI%wR{D2% zmG|~W5&a-2BPwnc$t{&hC@p6+VFOL0!1~6v8<n3>#&j&LYxy)5GCsG<#7kr)`PtPU zLpFP0JNU#~=F)2502r{?s2!$B>%SyO2OOZ?>|XjIXcd>2KG4ql;^7l7wF>#OR%RC7 zS8{!g5qD+3gmr!Hs}R^B8~e=v+|?$;hJcl#_eJ(F%GYgC>^4>~dCv?P(G`sIGC`5< zj{o7nGEHogp%jElj{w-*i7QnKOkzc~Zcp$%nKU~2e3Nz^O@Q7Tf<S2^u%f&$Ly(Kr zLgdrPZ%@G^gN!D4e2uCQyC|*|jp+cX%WoyqxX!2@-50|cPa9#5h8EA3Cl2A-1fu2! znkhBx9Kpm39VMkJrVXjYPG4vAe`}UKCDt`)^<#(NF`7x<Nc{x@wgt2&N7=w5-;m{q z`AXWK$tOB*uYgKgUJLedYr|kn_%cVzJMX-@EZ#<cxar_0nR|*;#_~ZcsGfA}{^Zge zsj-c~h7(4vG;F_z!S1yVK{m%Llt+wbQLegmx<W4{<sqf$4NL9zcOfX)DR14KlN`_i z<L6RwsK)pYNd2L{N<2s@`|G<yk_IT~yn<IB1K~Hid|-0qbKbT>_}JcB;N?=JqBUx> zuDR=Wu?wE1;SF%{I|c7NprKa+AW%W{C2`Otc4oRFf?jjvf_wWUOK{yw>l(FRW)JGW zXRcrAZti$JK)Z!p0K@YdWk0kK=mvG1%8m9ORh&)7^NHJNHvGJ42E78Wf$-0hJjE6e z7dPS8h#X&B8@jw5lF+KJFHX}}&IN%8wqoi8p@}Us|9VjDrj?u;mdL7=H=xOYdFZGf z@{hrM>%-QEKFeUiJi;|-NtOM0p@gIi=?so6m-C8$aE154;_ZU&&KGy&-8>7*bd4`y z&M}XDGa<FEwcN?Q5T9d2OLcW0Z>W<E_Rq>jW#f3WwXE-jljO(z@PZrbC*S={Ux6p< z$pM;Y@NL7IA?VW!%5NLyodpKE5RAwYODbwd@bAg1lA*!P9D*qNTL3EceTsht8ZvkU zi)jEX&j3>e_k(st>JNWfI_ootDqMHEN^fMya0=4oY~OHp(U|Qc@0(D7WMHLJe|~(? zf0m4lY#|i+a&a0mP^&Lz#VQhva}BLTWC5fvPjxvMV`xOWN+^EQ?1L8TZI9{Xp%jL> zMTwP`djrJappZpr53Is++;l~0M9}N~Db`1F#5&ZB8ot5LlhOcW+6vkia>;BK)uNv6 zQ=Io=Y;3B{qSRuI;+8q7S={Q0hgBCI6bpq5mv1btNXKLiI5}ZI_oMY79BaeNzsC8^ zY}N%O^^EsZMA;q~V2};bKyWFhUBB^t23{6K6BtFvp0AJE58O3So?_d>sEW>eNuAVS z7Ylq@ho*HGz;oaHVOIp*!$tAz`PA}(?n##yvXmP(gfvAjh$piSyXOkIA4G6OpR_|Q znSJn1D@Kl$=c?6@02V1VY|p$K`!j@)tkuD+WWZRG^0$fVcI|Xy&0SGi22TYra4j`( z=&XQpQoM7dg(LI`=LlT!*-LqCB=qiI^~FL@xz;Vgdg#zisYiEuj@GJnq{QQA^y5IZ zhJ?_~Kaaq9h{(AcO~XhH`DEX;;|Mdd52^!#6@P(S|0PdhY|e#6M0t34u*xYZJg<GQ z6h%LMPU>7lMu7HAByip|tSS#&l6!JI|2)gH{)bRrTxt#WuXx04solTxrL8}z!#mMc zhw#oyOj@6&3nEc*-Jt?P^|A#&CT}GMj>;F6$;uP{x$~s%8?-?i5?U9ik-3{SP(}h# zYWG<z7TP0P1PDhXfB2T4MIUKCz{gn{8psTY=rXSgdIhn;g$C|E-0l<tTpjUuPHmaJ zxuM)kKAiQ`F7lbP6s9rXbvX|-j$lK&vkeB88jRj*uTDb$cri)F7>8?Z^4d9Aaaf&) zX$>caA(A?5oqk!Gy>tJNZZo$H(aXfI1niK>QR=<Qy)?$R&kUjqCOaSr(#<$aoU`AK z+t{`_fLSklyEr6IP@GN(xF)ikNonGQ1L@p7Jh}k0N4%jdpwt!n)tl9mtQqSK@d6a) zbHzLH_s<@OoZmf=v4<Qg7GS2GI2gQeFCCh=;o6q7Utpo}@qE<b_x|$XnTUJ~;uaP4 zh{oT{2X<BK3yXpWE5mfzMEWU~g&-dcrFj(PPJTBp=d0j<!uE{vcHUHc>rBbi=60@V z^1y$^x)TQqG*)j4VxMfY1BuVegth)Cfs(1?!>kKWME5)34|~h#QH{4oq)Bqjt7v(B z@83P##MpFoKt=L3UEK~jU|;>1>{@{(<G&;~pfkv6&JFi1A%?_{`?Nx48`@9}W!yM^ zs<El$jd!2hBeOLxez9!Qn&nnn+8Nr2X?;8|FTJF;X+#8aoUSFb2wsL;t9fLI%KI%5 zP-_cswW(go`?(q&#aD`+uRn)Uh)7WAFrG|)9$#o%X!RXreUl9(=sJ@YR{sI(tH1u% zKPIEPAFEQ}YfTFt2+BPe6Cz7w8XTC?lAdo^;&skQgz0ThfVCQJ1}Z+s#6Po)OU&FQ z`o>t+62i@KQ_qD~!)#T&;*BzNRH{E*(dZR}uU+~<@<8)o@(0UXu5I>TteCK<E(iW{ zER|M_g1H4o<Hy^RzPxS%XE;}h92e-@5J4n((_X*JCq}=)O|$9CpP2QF4!?~}AzV#u zDdR_X@GOPfPY|zK^16^6w-V8+q+WyCa170m0TZ(e5dO$hY8IbwSoJ1-*O*`2MLDoE zHjZc|&Yq8e3V+vjPAjUgE3cx@t)Xb1eQYKJTbEzwaHRM{Dnnz5OT>ff`RoRvW4+a? zvaKWU+91v2dqgF=-<zSwvhv>J;z!k<Wj46(x@n`(7z)S2!L@{MS0}HPO?p{>45hNx zmaZ7V?{X-S<ne4r_ew_I3HA6)J0&*+($n#T%Wo?i2e!l|xJuaqG2w^MPcIFho_Y=R zY*kQQ7^HIylyJ<jUAWlgck!Fj3@#b~kFJX>Wx609Ax(-Z$@kSMQtm4jREfxfQRcVM zQxdZ-)<c!REoSpPU^%sin-2nc&LbkMydltPco!%5%LwZ^;cqC}SRl8qM5RW3PVQDu z6j^ybf_GcsUADo84hy?(-UF|{T|ksQHIJ9OFa<Ve>M#CV1B1%C1&WOOg=T#G59=dP zG%K>B_&Q%4ycP&kYXV8E))h!cG>mQpAJ@swP1q||q9hR2)KMAAV{$p$<2tEneXP%y zwj%-lBL9&OJ|4MREy7|LxR5%J3k;i|etuXB35%6j3~Y$u>K)tCN=ZFh<PBMpMlwd| zmF+SJwOU>5mMj+VHl%N1t1HpDWfr{h<EEZ#ZFX21V3-HRY+Du8chtKondm61+D%c^ zL#<t*O$b&mrV}Am^f06Ssx)S1j8_mbJq{s(J4^EhERZokGDn;9FR&gXcTf|{{8(+{ z-W<>Q75uj>#*!*k%VAPY^L@#prdZw)(hL$bZeO-C^^pneK&W>I0m2g&Q^v6;M(CeP zCr_0IYOK6d8iI5ci;QrW-@AcmxRgh=oSET`H2_=a9`{trUNh?#o{fO|g8|y5j3W@l z*+L6LGQmDv#J>WXId^TIvRH3FRQ}3Fv^W&WyTAC?m(O>YhJLgr@TrGOoP*FjF;lYa zWBY|S5y#Xab25$34Ee^5B8?xH1&SY8>T>~*sVP4XNY~|TF~d?EE%zaJHn`9Y;8}95 zU9JA~j;hhtIj>lCU4PnKI5wxV1hDA>hc;xF!XtFY&|wzs>1skikI5+`#Slb#ep+Wm zidb6v-Kzq^rVHe$%)K<(77irALL%vYxeoh1$>3A3wwa=s5&QH5t~+t%xsxo<Yu13p zqM^+5U=t#<vG*?(`gJ9%je}h0t_LvS&MI}9DtzaQ>nJsl4WPTu29&K}<jsY3gn@5u zkFOIPTh%xoSTD?*eJ<{Kr#KF{-W?6uI}8Ie1oG?a)C~fP-0^XSEvC+1F~{l`$pe_r z)Wh(pPi~%_7R<F0I8mP{a}KC%JZ~be8x-unh+FmXn0&RVKi&EC&*W?Ou)NeFEB>8~ zF$#c7$0DM7ffx_K5CBNR%!|c{nhAaajuzon7!!XmiuLJ;DKz4N{{9JjBus~mF_g8_ zmEA`XuN<1{|57uILCj8O40(0t<gXubLs@avUSg%q<hRd&{<&(!1nzqDFbF664p#%x zW{q%p?*U$dO0{)ZH=$TVFd!6kP`c{q4`rsPf6G0!jU9A{o8;%b-%T}3AL;?9&wZKC zLclIPd$PSFIj(|jEk63osn=qaVQ|R}LBz&EHG$pnFwyl~A-dVTot#8tgXHoDmvHol z#J;Ro@(!#hO%>}{9ijaVoH@abj?BN07=$6@woQ1+W$7uZSKIAs`&Ahhj@v7lzk-Yo z-Mf?vxycaJ)Vt|O`xPt>VeUfj|F*1l^)&U-p{Alb>@~i=&m~wOCsb5?OQHmO4BAHL zFvou2&o7Z~PQ7Wc=fJZv)2j5|#Oj$&6G6UC@Pp~(>k6#Pcw-4d8gk-g`uRQp|5q5F z6*XAps4t~HA3~8;Ym1EjF|T)JdYt1o<O&P^!@@)!j-CYpgPPvjnY@(Zmo;at<+RDP z?`^wo#aakRZUJukk-VJ42w4dahjdJ}cz{)Vg3jw;xoBPz9yy@|NVA3m5)r5;zVI_F z$9@QyEWP+0p}L%&OF*Plcs@e>*L*zOF*N@qR^+yYPt+7Qd@?1Pjz#QBxhOz-D2t0h zu^|yo?`OV$uC(q4s396$S&x4U)qHOK>&l2et{j=PPy<;t+cugU=#5x&R&I*f+lH_- z-GW_&1;J#o0-gYJK1PB(K~H0noKzNuK5yfRT}^*IWe4DK^tSoOEY_M2R7Wwn6vY&O z1p<S1;bR7DJo9?Q62SxhgR%nYmM?oQ=Tw`Iq#}<^7sqN``!`~`DQOnL(|a5y4u$q~ z>1CDB8i`b*qcc5Ig8Ll{m%<*ooKP)WB}vyBzTV=~(1A0XGkjCzr(X?I|24AsH|N-& zoD^W!h@52)%*0VviKsaxCA@Br*;XJ16*HoWIxLrae?O}5(t=Ym`B{qCGPZ2(t#5j^ z`lJb7nl5D4Pj$@$YP(;Ds`O*i6TDLp{jZpL1%C2H{FhjRrjtH|yL52FkJH*c=^;*C zX65YO#00EJC+L-938wykL~3y|%5XSQ4XY2S+m7<TG|Z>;B#t|BT1E1+Rt*i0#al>Y z!@XC!eI7-!p(3tchuDuR&l%uWTFY7@m%x3&_*qb?(W^oEub}zPNi<8~&p&SoYJz2# zM(^J~gE*qXa~JR6kLObL^>YO+Lv@@3d4?`W+{{Jyyqc@QM7r@*%Jx|I6fF?4-4^ft zO<^+YorHPsCtb9(Xt|k|<{S98QuF$_YzvUt7;OzkXM2fq3_wI>x~O|kmTe$DhM?F< zkNbd^G&ljG4-K2C-n`YlB=om2N8tG{i<=uwEXk)&OoduUO!)Rwg<CH*>=NjhL7XqX z%K>h+BUlQZFUz@4EZ?Vnib22^X$89j)8VO8+vn~8QT!$6{a6eJoS5k?gUMYX=Nz5l z6EQ?TmIj80?SC~6d_&S4x*Rp0NN<u5Wq@_9j4P=>W4NK^qZ>K~@J-L1AF%-Wk!=97 z8iP!k+%9E}N6WF2wA_H5QF$jbhIkN!ztpt_h(|M)t<KgA4Cj`sna5G~GAD8v>IgR< z8kT<0jMd;WE-cp#1+f14e*E>C6+4{6ni+>|o%;h&!az(&(RKFXJiRZ}E-$QF8o?I* z5(gru^opb)-5T2^$dyTXtd7wXwoEmeOL}yCs1U81RLLCin>O3>md~~-J`3a-wKU$q zwt8(%6E0J3n0;v$l1Y`CM?uk&tCo6|7J<H_01?=`r%H|HiP9UiQ6K^*54xROej#tS zFB?%%|FXJseVdJ2*rb~j1#X&4V$YS(1*5?1eJC9E>To@dQ`+Tcb`X6%+Awb1KzIYz zm0I4b?AQg}CeFI`B#&AIW%XdHmGpEXS*w|=Zw?Kqh{B?kWCske0;Ba(v%UR@G%S@N zB2e#{IAjzGVe3_d9X~W77B_`|4b$^`M_C?yf2JG#&Wh_@dH3%#zlKeIq%&K?bhjHc ztWZg}vCGXN0=6$^;V6Z&kXnI+5Brv98Mm;;IMvGY1RDV)cvw~Whn~#Wcfdl;t}ZJv zk4d^+SUxPN#b^^u(wms?c+*)wPu_TK@s#i9RSJocAZm6;yQMl^Bad0#+Og-BsPkNx zK~gjp9dLkE!lVJYo>^&W;ZBx1L{W`pTM5RyANde0x_ulE-;u5ra-?DWs#haA0>01> z#vl_tyrzdMv-cgdXh`3xr}$@ym4HyDT-!SEreQm6Umc^U3v{~RYULUt`Z-Kq5kcOf zscYxV3J#@&s!NX1&bAq^w8u9F7=3X$&1}qI5EVnx^G<l!D_0Ku?WtjW!^Rz8E6>Af zXq#&zXf3punE;#m=m7`)tHesPBAzYg;szg-)wQyVFG@Nh)B$-O9E%)dQwcG)IHZQk z=Hpl7Pq$ikq2M%qgrs0!1KPLfNnJ@JoPgjUMK>wjL<1WBjMEKTXR>gCh9m)Fup?Be z99`!gHB%Uqc!LR#uSEmYA-2NZDqJqm0_NcD5okF7pc=j<Kr%IIr89wF&tR(kH>$#} zCV(i+Q}Pg9Tw0|@VRzq<t1(6iE<s$372%ck0O`6Vj_Pf^spOCa^25h`=@Mmt%yahP zEUvLe<i!jjEu_(SmOk`Ciq_MzJ#DuGQa^5@a#Uqbq(L0Q+FN3bw!M~(a~E9_pEZ*N z0#9JPt0jg-?EBtaVeDN-Rvye|>@aEMx=KP}e;iuvOvAA^vvO(GN;*;H?Yq&NcQ#B? zV=7t%1scBTF{<yr4{-%RG+C{_<Ct2)lN{ehxKtiA9Xy_SX$K-zhZm=TMEwJCh{${L z8Lmad0rSMjsqc@vtm}5AqQ1MDrOPM)>Qp<lJ`d4mvK`&{Ylgi`jPIM*6=iP|c{Jv1 z=$%@^pYbP$aAqo6^k8wu(dCs+A2g_P+LEk!WbM+}Z;lo6Jtb6iA&E*8tG9b5GihG7 zKO7D=yp?z@Oa{N3s|uoza=-WArR{JEStT1Vw;OrcKtU(lN-laNfS@Cb^WD`>HNnKD zQQPCRZDQAlkz+b|=DCMd3MDor0++=r&%ueLY{LHjPQ%(*sNSky^*}fiK_UB!p^Gr4 z3Vdt+D{(@b0kj6+IXX5*xm2x_%2kgwt}HXUs>97xQC2W{c-q!@HO;GmaT><^hXl~e zWZ_+q9OA6Af(v(%9P${85H3AbtlGdC;>Foc5(E$vdKs^^_IE`1tSS+v(pH}%y~HSQ zuwwCo8=gp9P1P$fh=Wy+0U8m%R|y{tx=Z8fEwt9NafAIWwV(p2iSG3W{ro5;{`N1( zJ`!!^{b=^|k@AHElf$zWGV8GAP_iAyhT*N8{dq9>R^fAxNK`xMqjhdLqty5DIFK1f zQmtepdsn&u1+7{-gxfcJZDn;zJW3w;RtW!yvd{MNO5E(Niu^BE?Mg&<<h<`sSMLk> z%#)ksh~^aPW@-aeNnX^hO=cnB#HQ?ZCkljJl4r^Q8lz&EVdbx~(7ux^aS5CFYY?hN zX}b}>s7H3M#L}K{a4TCsZi@SNah@;CDQd{o@W69n@Bj`6;(%20s?O)}gG<&Z5Yf4C zJ=Rw>q~|U<u%=2stf@n92B$E<q)e^v{o)_?--ffKi;*GIFh6cLy_V*d8s&p8D2^WR z^K=#qZv{zg&1FgYVCz}k8oYaLUdl!pc${_d0PCL9Zqi!Fqx<Z3{rtMf4xK5X5o%LM zr-ZMlY^WFzFA(R8y7y&Y|ABnr43o!`fE8^5DI#`2)4oi(H9Che{#rbaER*=z0IuW8 zN0C*Q)a;wQD(=yUS6|B|CZ*^qVALrA+mNb*<~`6*OR|#K`#FVXU0u+AI#wEZpo`@G zP^*k@KW3a1sffqQ8vQ~Guyg{NB+&M@iA{JW$$@2E{HA-B^GHy5x$g$^LRNjwSw!tY zS4P5z#xp0@Mq%oMi#bC=Jly>{)WK(E?yS*h)akysr4430(vudor<lHypt8JVRYIrI zIo?iMpE}1TK2qe&<TlSfb54}&v!Y`69o%j36u5hM>1LhN0ioiDrhNQ@KI+zAF=js# zZQM(M3`jmCec3&7+7qcQKJAj6bqOxOmg5&FwR0BOz0qHa;*+`<r@RPxhYH@;MkTS7 zaN}j#vlP_5nMNR?t67kNjToqo&NNuRBlqZ{mKinQtKks@fY*v9*7dED03Q)$zHc5I zzxBAM2fPLI&FOULU00ek6*1eU{CH(0IAUJ$Z*v;Z-3o3_XMD9OA!R+LTFcuN5%(Kj z(sE9>g&JD?)(<|beKu%9qqlo>rDW~_&1_0A9B*FIExP3L(jgM(c__X+fzALUo~#x| zU?=Z=FVJr!<(Kq<WGUm{lunAnh3Hyz!?VQj2Bfcww<|F(Z!{uWsM2y2?}p1);dBc5 zA0TOI3g~f+Vh8a^6$`Gb2s$v~CUJHyda3V%b9E!RTtVjk7Ex2iwL~4&rQ4b(rVX$$ zu+x;@#U=u?V@PHDJny+Y4Y32_>b(ni)+UeQ52ry=L`mpHs(WfK{$ZO(R<LOwqh>(E z?@d=o2n1d_%vR&@{Kb=nMc}2q%3u`jPDMk^3pAB?#!qMG99`W&!_?!?);>$%#%_V3 zLr;FKXw(8O8{8VWlYm!c3k6yn0CdZSDVe+v0o6VuJ2rPrflIcC@@wGLdH6Af@N<>= zlb|nZ9J)3c<zR<W+B9y+u9FHz=3*#wsTVD&c#cKmfhB3=Tw#tGyR{Qp%3ANytct3J z`ESF`UxOYUMp|6=3R&Lf-_S!C?9+n2X6oS|^c*uhqM97a4fwT&T2P@Nw%kJ59=cC8 zDpgT`*suGs<PCkEs&?V;lA+M`AVS9)g#zwO5-6-B(rmB0NF;aX!|q499t&pn&XV&= zG94b4&VF(BpB?S+eqF}v$p&QT1+N~NK;@}%!a0DZ6I-68Y-|hjm=QHEs8KCaUrDAh zVDH83&z117Q-1OLgYN4ZvDb|`;gr^T=lPeX>t><5dX{?shSuZq8LJ`5(ims1zeBgM zc}NF-h4Jf}OqzV(n>pL>3Vr?cp0{j_H(S)2#UP?L^QF)d#O)K!05Tv0>ku8E9Wr+J zNxa1jl2}{i6cLSEPvX;PXn!oe{R@tpF@usnl`78XHyFI3=42%t!RAb{v*xu*kl<=; zwX%wIWEe9s?OYTVg}-jtECNy1c(D^ea%`Y84OIYz9Arj%JfWa}HC+%oE4!+V9UAyg zOT`0MQ;RW7dZ#FR6;1s@4g=MmH9tl-+Brgh25=xnK+KE|@Bq){!D*1qwi3s|waZN; zU}30_i;MlD0i(phn)9l8s0=D5WC?Ca>P}xWP#BKLY0g1ym7TF7XGi8#pPf-@Ds=~> zlNEIr8JWh;u?SX%gUw?&UTMEGd*ILj(*A*0Yvq)XL}z><_0OMATlQHDZ#Xc>P^WhR zja|ZMsIm88YB;y7g!29R&2a3{A7)*o;8QA`M!xpAY<?0g&~^%fIERg<!5GShA>U{C zg|YWc99fl!QTO6w+*wFCMzaA9Hs;|;bpyd1<<{jS4T8P|OY!cKGFIRc!^3%<U^}KN z6u}udq;0mrT6&Xmjy}{UTFAXbbSWBULkHY@f8ZJrOGUv;nVSqb5udQ-^t<2YFwiOm z9UC~ALz%$}UsW9oC+cM|g`E48kJ!l<ln&?bu6&WNDF!>!Jzbsdya<yl9-rkAgTa5k zTcs2pqr0JtUA$)9&H1?z1>23-AhAFyu1M?n%qMWOU|##g6b$Khfi!4AW7I6OXn!(Z zjS7#$OJs6gqd4(@bIjCVER~GN#(3K~lk}`?sUPEpMB*}vPkH+yJC+gxQz@J+p%K4; zn6NzuZ49funOd7Tl*NmFpeSmGraG}$l_}s-W}>Km*+;lMISC}rEt(W?&W*LhEDQBv zdykO@h5bwerYGj9*pFcf3B7V1v4%m266xIn-HpEVHsOc)9#Rv6ddY-7ncd)Zx;;!} zoRV@*ebS;6M2!42m*b*(MKTux4oS~U=-$MSn{*P~NN}t~5?d6LnGU7oVLEg>g=@9E zpT8t~-49{nxH1W*=xQ2e`hcYf2>4abGE;-Y3>O^zHTGLK-%icd1P-Oga$i};gs`R! z8yOw4_Dh|;w~}jAUMJ+8_sn+gXoJrvj@A#Z5@18x%80~U9SgZjEGXnzm_lu|oD1Up zcYrmo?lZn;C+RezQz!G!yhpD+!QKIJe7{LUOMpq;?x1_50Ed=VB_IY;ccN4G{A-9% zE#L4J;p9WRIAlRDCq|1Yc%B7?t&9?$w6rINSY6o6TCMxzE*p1CMBCk8RrQU5hl1~d zC?(4xV+w?se=>$8RuxBn=OdYndo}*eGQ)Ore!(tH9xOX2+`=xsd`P4cYMQjIY3~|` z+<1P-0n$|jVesaP&|zI41~1d>Jc`Fggj@JCkqpW%{jOYy;iEDi20J`8el!KtqWet5 zgwa15Sd)z{o`Lu#;sMu3^w6|?cY~9P7X55@Zt&NUY0DP~rOs(djm^}3)c!jQdvghj z{}BLj>;gR-kbOR$h$O6rgUg&Wj_u`bzI)vV8b8fO%|39Xz0pXsAnOAN0CfxIUx%{k z!cH&t?d3PgiJ9Ujx}i?2fuN?>%O=ix8J>1Ye}jHvg3>vU6d@Mc9g}(_qG<&Rko5xi zt^@(ofcH7^ENmeOLc;{>>nlG65B>BMJj1epm%%mx7#~Zkqn~uw7K(Isv76)ZzLISS z31iMB7eNHqc_PI|0kMsm>h`|LU}t*Qb!jbKs_<Ym7rx|@*?U(`X5K3As6fB@1z-VV zr=IWRYlyn@qOcgMF#;F$B(W@8oH+pJ*YQLw$ND+lQ-=(CnV}_U4qJv$(spvB&X8~7 zY1{ojE1}wRzuEJR8PqUL!McU0>HE;=@#>wbGbp*a_lvz3=#11<5y?d;eT_;2b2LD) zHY4zTNQyA=tGY%jghjF9?0do&)Q0)%kPooNTTFiM(&(@N6kCIpK~@iA9)J+e9ENwd z7$&56Y@KW4X?E#B>x;C;DT-~8{QH=;y=k#`Rw~rbc!emb!^NNT;Q*9iZTJGG*3H00 z2Xl^X%R$SlC`S&AbPI(dp_ZiaZhG=`PkU5Cc~8OomP4Y_Q8!Fjh#Z9Es)|Xxd@{<M zEk3lhq;)NDq+eeYHZTWVfVi`XELwN?gfobcV|vWd_1zJboZyVUDik|7gN>bHaZN&+ z!@#0@o`(g{yI+w25`QQy-+w=;AP;K%q-(yr*eD_Ua<b23(M39LcHl2*`iL!1++h3C z5D4*pT_aVnO9VjtZhS`c9h+@9!ki0Mc&(XPmojC8`MUmVzeKQzgKaIhU|R6KXQzT% zxGE=E>Q-|s{T=M66NVOEWG%IIg(NXOU@KUICK=apBd|=|jct{3rr0>@F~-(>rT6&# zX9IlEV8bcUXKB(|&Vl7Q8zR#dsJ)ade19_AB(Bszr6qPqsFv1?Y5y)t`)2r}{je*A zyQ0Y?_@%M7bSG|fy@?51Y@B53_7(Gbk_4s#X~TbiIx^VtFR1D(*4-J?rRGx44Tq;d zzkXz=zgi`X8AC5}gBF!P$EC!AbumGdau*5C3th`s#5_}8Z>TQ*ze^a5gkdZKzez*~ zeb!9iPDWZ$7&0Cd+O_yE?UCPmWW$#SWchIA3%<y6NL4t_w}N!sB5%7<D7R`kkox!_ z9;(XylXd#-GM<#p4rDjGt3h5I;-2-5g%&%!!<i8tB<Y-|xh?2;uxaej8O(XXG32HA z1gKEF7>REr<f?)>3j$MnL;P9y5HI~|-!@yMz0@kYM-S8j;B(?`Fmq-PMWpt@R1=M8 z($|c|z9-Wo5MD+E2;wo3S{yDSIlMp0SL&p;6=E<5`l*uh_HlEq)ee01WR5^1$+@$k zek-_2(?B_Q<%-r|PZ)&}H|Q%P(lZc<C-4LqvG}II>jxi+?yi9)v6|>pP_EGRv*pQ~ zp$8WZZp{R=5w4yVi5oZK6hgG3BAu}!3+KVx)(kFDJ}JeTIYp(KCm;Pb`nDH(E$eA$ z^%uF0jywGOg%2+dm8(@`*T#~Ox^h%71DJ1f&omURx(|!j3R8Uvyyf<wd}DK&5y$*b z>*q6zWK&J6L2}YV*H(9y&}3b|FMnAO4gRgHgz{Jdus)YbUlh)g|9$dJabLw)1W|;` zFleNw7(i#OVT%TxQ46|RWQAJYGBBHJ^^HNK99UYn{rXg8`%<>`aoowWGq~gp$J_O~ zQK&2u*$2A{4UDPn{1#+BQj~gyw3x3BUd;!|8*elQV&GD3cFKFBho_1C_i!BI?0#mZ z4n9#Z9T{9cR>4*fCuKmb+W&p8$o%mB-_vKvNuCh4JvJN$cxW&*oCD^rpe^d~baloL zU6z)m!e6bd%D?kDJjhC+%9mLsCF_36X<!2}bApO%cpWfUt}RM1txkXrgDVbHYt-#2 zp0m2R3Jf4!9j|7;hIJ<?)Sk=(lCm;>!S#F><|tpE;}o-w^TI{k;70GR<!%^32d^&v zy#dy7$a!+i!g4lfy2Phs=~b@?c5{ue{<}_)2zpP#u-%L{TXftyvj9`&o$=)*K+rj> zfe5*{#*zm@_-S6LBN$CYY#@D`EYJZG8wrzrMe9jWKtA-%B-MZ*H%5a;@Imh|NWBz_ zr7q+L&->O6IBb1FZ=?&HMXxMtO&mYQ1~M_I!ol=g4I?D^H4u<&4LmQ?SeQ6fgmr3n zPth&KhKNAXbIL=!A;q8KB#Ciik~#@`Kn9`S<oq^3`Dzf)|DEY13~(6hzF=jB?k2x^ z@}gw-r@H#o8SoVTP>nny2_Q+|Z+*`BEI@GS-nws~U#HV43f)d4rlZ4?LiUUoS83NS z87A2F$;%P9A!(MQnW!Tcn0I}Vq3oOn)`QR;NDN+fa@gJvA;rP_>f^t=YsM`R@%KZw z@kunxxgA0Y^HwuJlShZlx`R10@aE`Q00}_+&5e6aOn_<<2Uxp}0zLf$-N}tPR0j5T z|G5Us@h#g!$a&fpAXA)5Nr6iwfn)M=Hxm3&gT*1f&}=STEG)mD#5%NIcOP}~HPx82 z<d+iG__z9}y5Q@T$n$<cz9Rub-h!Hvcxk<5he8?T@wI@w_$R2rjTAjovFV(q#=Z<W zMAWGB>j+h2E6Lf<#}|6yy{I<LS;GAi*yQcZ?IL1F6j*M48YPx!Y%O-s_kd$K&k-x! zQ%%xeMa0tSL8^=~?-PD)-P?tuU83E}Z>EIgT~Vo>Y;QuO(tuV5{if*-l7msfn475c zQ6%aialaqL_NumvRw*F@wc@UES2=U;81>zApwx;Z6s@)r+k|BPEWKpy`GEm)!45w} z3XFny<<N^q$pKI2I7=WyA$^X9k7k$5Gh=!RVV`8mnN@}z^afp*;<YI3*($)<LX6Xj zxfLpAA<XFkeMD-T0YIg$%pfPSQY4-h2=%Qu_3nTuc;QuW<gr23rc9x^kj(2K^Go)5 zZU7urRx;6&XKZhL?EHEOXT<q1p1|xWP$yo`s~%G1jtAxI6VSr{YE?0Bsp_2T4}%BQ zVnAz3|HeyDV;-&wY#x*&K&xBUc7(u&-}-efM0BR}?RexTV|~YE_G{)=zpmFPt|<^- z^JqRF$Fo>JH=NI;{-GT@H&u<d9P4%(-BDi$Zr<uiZqBDBAR;5Qc2rg@HNUSiPM^Yz zc#@_Rr%s0GBcdt%+Z~ktqO|ja`r%u*!%_^!5gV8-+!ZYQYGtn2n5ELiwCCG^@gr5Q z_K-Vau~&+J7cV2RSBLC|F;+3o;xdYtG@jDG(jgTQaFun^t(fU<?(xyHI~tsK88csU zGKhgvla!;V)#uQi$kjC7pBK;R(JxLO+jTBSVz#oqqIK!jtc~{h5b37*bm5#BT=;(3 zS16KpAyLB|ym-G7-`C@K^<>7p<n{4gmz?g=&{Ij!){E|9HU|%x*aZy>MhQe`Bq<p? zR8Dz6U*n{S+GnH4#%xYG;1LL;9Ub1RNJcW)t-__1t_#MKVq(S^tZJABwrFKS0Hm6% zWkZRL=+0E|=Ct|U>MS>XTvHl5=KAp5>!EQThh<+Dfw6@qmDuPP(&4>!g*3eAH;4&| z_|V!(crT3oci^j|F}~{)`+KQINtmjL<lxe@yfNtv{Sdx}RcyO-tqa6JJp-t-%3qm- zeNk&kw<Z5mnRUNHRtH>KhvXD4gmt)qDs^Zd@mbC9+kp4rp$!%FPlP2?&cZVrv>ddC zW?k8=mH<M)wdQ#6W6fdDCOBBP1{e%#&$_4LEV@A*+0jr-b-+v0e&w*>c5K<gJ7thN zY$sz){Mjv>wB}^EYW0fNSdFty`q-d1c1DN5w9}$RN~vt?OCoKD2;VWO6)+6^lICiD zG_=b_!uu1&XOuIaUlKJTJ&4sH4Fr0(9J1hz9$GsTgx^IK@+vzmMz_s-SmQGf(a%)( zmhg|^eP*L0w7dpBPFp8_I_*MWMui%M;;&stLOj@i<rA@Nv|@N+#;yx;x>1|IH#qiI zPB_%HH;~4<3^ir?g*P-zw`PwAPQcUhhY_=?$ag=Vyu4Dh-=}HyZDIjJr>)k-nC94m z)U(a#TC>!h$+IWVS;ULx!MHShMS*7{=mv-t{^h`SSuFD*s1H`itg8j)Jgj*CwEcCw z_+}kpdRc>)F<*Ojum(4zkURn5VS*wjSF1;#FMxF|)qNuRyv8<m$3^hYtt9#~wN6x_ zJefw-rmd8rZxCSyJ0vpa{{@~uVZdI%cuiZry$9Q~rd+Smy%CtM?6<?UCYf|+0cnvh z+0eITB|_=ZVj~!}EGx)K3#C><>MPs-la0wte|E+T)31!!|F#|V9nynUr!y*x>Q#R* z*m;-JEgp*Dp~9po)5Gb><j77INjj(q?O47Cs)sbP+G$xnqNZc47uiW^e7Mo}BQC<P z=|oABOsFoaP}=rAn|$e=ELA!jCcYnO*)zk?&iBr%GHc{DDhmA<zhHJfr$fYLdoHi= zsTF>_eZQk!kzC9~6njM35T%$$Di~*S==h_^;jyY{t;>ZOz0etT4msLOyI^DD=#a0M z6e0A#;jq6bhdNR`-0#GCH=LbuPwORsj4$P~b=1fj>(i-m2FX4&X<hPR-U_|wfS2{k zV&KJSZGfKcgkLJCE)U7jcK{~1gD`r!fis#v_3Jf+G`f$W&>Lj1xu92oy$yNlT(?$M zTw2wOl+WX7)~kq>CCR5w2N;{Aie`(iqI#oK7b@>(_NN}FDF+e~H$iv{^3{9Mq?8Pb zfb;Ku5tuuSO$qv0=Ma#4CL;&Q|9j8=zzkxRr01vSnYw<!odPs51>!SRG=+u-&ExV( zhO^THn}8D;REw^0zuX53DM2}Kw67tFvAlkNbhIuDt3|@JU;SuZNQexnGvCNn{ShwT z+N8r<fmwlAsi(dQn&KBNWyWsUn)_t;*p^(J`MpG($sjACF{>T}3fb#@dKGB!1!N_X zrbz%t7LqjO$`nSvmP~ScQwxj<Tv?;s1&Sp&zO2;x%VO#~f<o00=-c4vr46xb+V9bi z#1$4p;ZhE&b#S<qf%{DuQ@A)J)=uqYfck}^7fMC8;0^aeieYkspUPp(vnGgLsF4B* z1`!kL7sPrtgcI=DP`_RB4s*=CR~-Y?);ZA81K0`0DB$h8Dr5NrHua^;zeQ7Rb_`mb zEAa-oWn8MhT8~#ryx|3Rzg@iAviAa-v^g=TJJ5#FjKbVA5qN`F6JY7}fTNP)8OE&7 zf67|YdoWf3?_VMG8!V6joG-yKaU?!^%@X@vmjE_rEpjf(=C1_0aL_*ztGQ01_VH9V z8x#QqP*C>H)9{pQqS0$nKKQf}WsU56i$GH(T79-G3Tj$QX5f7W&~7^&S_;U>R6!$^ zPKyO_?=Wy!<n_h$&tEJ7X^%7wOLSb6r0|QHbtN>+0xOCP4fZ-S%c(8`>XRQ1H5N`8 zr74z+Y3p!t@9%`u!`Jn0T*13`vaR5KP4)wr@e8eT(kN@&`Y>wzwT8M<8s>^O#r`QE zgr^J;=pHejYM0CQ$|#C%TIVPq6_LZL!RSc&QE2VEtkc|kUAu3D%Db!Mlx4QYEA&sR z4Nfw|Ob}CkBh~A}+_2C=0CQ(b1C|*_#QN<Iq6hL>s#uFnDUM^h))B$W>sX<&AK1PM z@kl0-Tc9!c8kc;w02m8>roM>rSq3|eqXQ_n5Z~rZvvz}e_PBX~3S}5-Xa$7zMW0ZH zJ<!!E0q>$<O~9#YEfT009^<5UzFxS2)*<$zzZ)$&+r=usP!%ldJ3JXh*&Rj;qh>1H zvVkTbJG5+NvQGYWdf7G)-oP0Sku|w8Z{9L1&~F$P_Obw(rW{sjE}lQ<XMe_<i~-Qt zi@4juf!9BW-)bb9eXoB*X{BM8mB3HocI3|t_zk_h4taU_{_2E6=u5W0RYL$exanIN zjGsli2iL9ORrlNAmiVe0{&j*F6ld-Iyi!3*HWP#TuI~)*kSKmL^bp%SqJtYdZaMFx zVh?;ByBGZy@Bvam9_$?P4_MQzVgOso-R)!Uw#{DTvOJ!-n6X!#6GD2<)l!N$(wLQU zA(B`aDyA1{34zj{+hgYW4{tKSgf~1K-t87&8ZvMDTySgDL|q^d7!Z4eD$k%rmWHKO zlk}JUgJh$5dc(*kSm!4G)7MpQHTG(KwTY|u6jVR^I)h(-5$R7@wKiQA>KmXYHkHc6 zl<=ZnP53F|?&;igV_KQi(iWT73S!))H~Sx(B#>iBkF*`&zB><q#UeG*)cE;&$XP~B z>SSqzp_j9v9rM)ar)S}=^ZRM7jcfpl26=K3Pc3@DYLa|yrT%QV@<D*PDDP{oRfCaC zMeej+PmA&|^y%r3z?xC+RQtr3Z4f@%#?Z$UjDVP{u{>`9U$jqYk*zAz$^jz&^Ml!F zwq^Aee6Y|Wq>Sev9R-E$@uHT`THN*Y@0gW>n_NE~5m6ObIcvPI4!h!RIa?6=6LB`d zCmA?A8`x;2&B<NA6jI{ZA>M%1yecyghleskXBFbvDJRhA6}2Zgy8{$5IM}elD0q}q zB6`O9?De-?8o1gl#_K(qbPkZh>ixxK2yUfr=^5wwh#EX(X4)dM`z+A1TBQhPbpWG; zR=>El+C+c-y=L-GsLq>FWN&ICK9Cse)H$+ko3e(QizeILLe=eukIjMOH@8W+r9Ao) z)tQ{d!^33sXc+e!LV1n)Zs+v9h&Y@2x;$>4r&SN{seuriaD8mUtQ1`3EYGpOG@q9R zL6N#z55--9WZ!XfHT+;Hcau?Zu2#&Rx~{~C5TDzvU8<VFAZ=>MmOKw@<3=hj)n%!X z-N8OAjkklLhA#gf<mOH?JK%i_!4?raz^qoD+e=sxjGYJl`8JU0oljNoqP$}kmn25j zf(5TE$f^W{aK9#WASBYD85h{Y*F}*aauY5kfsuM#^?DozO+;Cx?{}dX8MBITLG#(c z@A?wo@X#v~e}@6n@Pdz2T_O~wWPb1)aN*IHd}F_UC+W1rWvLt&rY0=T;Xq_B`vq|9 z1Rjs$Vw+pp(4>wVIT&$DsnWZZVrW3DSa0v$4yb5srI(V`0DkR9<zIXoOyjm&;+nxN zQ%6+qreuos<~?;MSO$!D9|LlxpFl$hO8=6FwuGEdz+h^XIJ-(9j_<|pXiEQRK_Tqz z@y+;cHYNmbP{bO5487<V;==^?&W=_UxlcsJ{0Uzq%r%8xifq|UO|G!Of+FB#%qw-T z9bXh2$zJL!ng@-rM*rD`giJX;d>3>6!;<!vpIPZN>z){GmJqP}g=dXqcRt9T@aDJS zTM>|RFAq~~a?VFnQBR~_G(u3ows}xF<xwH`h`X8oiX?%vOE8DRcD*Ip2#S9j0sg(7 z8-YZcj>B|O$weB@ZD}C_*;eb*jLCVWaXg<99g`Xt9RkNdG5q_;58{$ed2J*B6&I4? zp`RqgOsF}Vt+IuaS*ojzbWf}ej!(WZaIu^IR#JI%UN2kjtezuK#V|;41%0iG2o$5p zQjVF)4-XjNK1}E$8;K*kRPKYyjkD~AEVJTPY#NDzF_-*|pX(cwG2x7r4at#uA*lv5 zXu3li>=BE8$xRs|8B=U7oZl^!$l)+0A-p`>U=>G!S2q<~6$N+@hxZ9GiT)cnHWz3S zykifuN)=q+TtUM)z*1>VEiV2q2Nr!w%O=ZLjg~gGu6+#3on>7TjCQP*$ylq%TjWfZ z;*RvcJy?G;F?-~I$kPROf<1j)h3aSD)xSmS2ChLQr7@rHD!<Mr2C=*p4!s-Sd<mE_ zVaeLuaf?t@W15dLNSY*>86icx%{G>HU%{f6tcyWxLCsuJ#SlD~y8{3bCldvj%P{<< zt-g56$2fdwp!Lh3-ByN$paVd{2~sw1yPx>aOt1?bW5XVyPfFzYOjPDJw+LSBJGr3> z1G^(ym2pa4KJfMP#m=#yaRpIam8~Bnnbpr*QV=_sdgrB>r$*8#0KRz77ee<SGE_bs zB^iI-#YRDicGmOrcAZs=&a(M(&t3Wb>5AL!7rq`_V0EHeY`4S3L%YLgH>P;Dll!_0 zf)yM^XRg**GCiN;Cfs)h$g0_-f3#0x)~aEd9N_KNq7G$gg-TG7+NZ^zj{ATPLH1gJ z%~+-;R=RMDXP36Lnf0I#;*rjTM^^c~@)ma{p&%Sxq74}qwqJXWf9-D)XX=!ceY=3k zAwV4O&yr?$#ppN9nM=Q0Zl>B5i~2+XyKsD(<46T^?>8~Id1ku_<Rj+@*J7^P@5j$n z6i;;9hY0vK9su(64cxsgL#sF_n|C|}i1`UU1F`mGEESC$07)2C4xYdd{~K4lXM(7@ z!NO0kZf|(<DV;mGj)oM27DfW1P|-Ti2_PXM{!qf9fZO1V7jjAp>&JPiQhY!ld@tDm zO;CG7mpE|BTqnPGWveII&^`k6JZB^dPgnnMl0HvwYP~Nr@36XJr^?!p!8b}}C=D&o z@tVBHV-4;_O={y5B%mvxuRPOL<tYW@MAF$;uBq=PO5YVBBbaISvQ+SL3hKnCAc+v# zDWDxWcv+$AE$Tm`B1dbJZzO+>m_W;4h$rP?f06ST@IwF8361IC&#H1NBXl!b;u(R~ zv}A6GU5L1Q#1Zx2a$4Qqj-@Vc6v9jpcmiKyTzZgewej6z!!y<<iDG_pJ~!S)zOrdm zy=ri}7U^6`*11@GX@1GyqLzED-^uKE=!_&YHkk@jFogR;>b)G*yBHH1gig&KWNSX4 zDBo^nu~OA)lX96Ne+?f5TObaIx`hKtBn9`H)&{_YH)8ju0g3dm3Tj&)rBD#*HBp;{ zCVnmm+DIyA4;;va*oJ5c%_t32F=6|dI>3e-+b|KZ-uHvxOzjQ2b%7p*P+K`4n^+el zk!2EMmMJ*2Pv$y&M-Xzd(&1A%wIr09sDm^>{lnLD*Fj%JAkRL+*(R(>Gzy0rUru*a zDBnnNL^uX`h@rBaAnr(xE6}RzV-!;Ks2XN{<3gmABcP)TB~<(&r#{kqKd7hz0`?`y z^h!V|Mg{o{HLg*mz-URikXjbDmPQB8F0p#XOC?h2Xb|Ln!&b@IU?ZLGUMv>@lY|EJ z(a!F<J3aFSbm&WT$X1o1b2L?qbeYsH5_J9%OxddU&LOO9(@2G)J@*-fVH1r8FqDqB zrG@N)7A(i*WlPIN^vL6*y(gV$&DoSVbhjM9u_om}10S6z0wAy__%v<oHB1l2{&X1j z4t8RtUn=)@xMNz16Qwx|qa{~O$7F%+@1BSYBU!hyQm!rH;TE8^g1r>KV;-qCz7SJ_ zN+2`qKMw>?y-}Sn7Cp2EK_PdMK+q06W(PQ{RLKz32#BlAVlQL;p0~B)$7JN*YpD7o z@Mf&o60?qDdUYj@-GfC$WP;|JZU?P5(7PtY@aH>Ni8>)+BMA|AG1vUR8f0G0!i0-5 z6~7ChPpnce%8y-7(<_Zr+4=F8Mab*Bnr>hTydWM}f8nQX|A6f4@>Ivdm^D#kSI#Nr z&^Lj+-Tn15ED-^inyo$F;=TO*{J9i;a^*b)ao8nVQHiEHM%ud+GbOQrM$MTGC6v;l zf>*KYy%xsSA1pu1bTDL>sgQH_a(Z0a;J^gZ_-Yp1B<6gBgh<sWi=ab6Rnj)r@Pgi} zq*^e<okh%m1JE1WFsO=)cAL?~#0%sP0Pm@0W=$A@I>^hnm$5Evn$a?qy%%Rxe}W1P zpzf=k(g6S8l2PVFTs=tTP?<qxVmCUYfOE?lRGc;D?I{Yn-M+1DAoiJ)(_>l6dW$&I z$LR@26$MIxEU#GMTPqYi5+TX(S{)LfLU>c=fmciiSbZ>|I40w*SF{dHoHT8!s~=PE z<gM*EAAvJ&^dbl=H3N{ld^j;<{&aT2ZZ5H|PzG>2ItscfQK}k3!qaB@p{12*{<MnN z(L|~r+%L4JM)5)b9so9@4gJU@R3c~ig)C0xj1H(w%jz`7WJT{L0LF~09Z?{4k$;)# zd}jB+B%BTdv{6#NjSe587~87O8~9PoVZtS@ni5O~P}t<~Pq3+P)Ka=2fPU<FnXRCU zCZwOB1KR8;EJkqYO}c8*gLC2UC~8SH!^iZM&X;_Yt<4ke_&EjOEy-kfjNK8K|868y zM+(D1BXf5oS4tacRgbHGA)khL+pP^>ufwhrNXxrQIIf;A<9AveQcR&gB;-e(Qi=1} zG`qJBE~4E!)AQTHyThCA^Pgy{54<4Mx=jx1H>U(&MLZ9;G*Gy;PZ0l|*U#7=yB1Ss zYbyLl%4ybC$@qomRB|~#6No$;SnBL!GB+m+0nSj+Zz<hbv`uC0+Z9g!T>OOiI^85H z!kDhF(k6V-UO{|9AD8+4P$zXT5k!TeZ|&D|nesNXRs5lsWL*iEncf(^X`wD=<=v*& z+$YNFhe;a!21~&OKr-z+myy>V0fO`M>{wZ&h-@dfe-Nl*6D12irY*iBk11dB^a8nc zZnQmFVZQjifxA?iYsRoV6Az3i6<YDXy8fRYlLfsa9tU(9B-9sj96D{=Dr*hO1+u&G z3P^{i)@|EV83m&i>$ZA3IN~)T8b<Rm_N<M%R2tzNl8Vr%?co6-`%%Sn#)p>xg0X-d zT8Ct`?Mka$108Z6t!@^2YBFHP8~;<lliUFuHtTGV!gS!Vv~E3$`k7)36(U}d3Qfi@ z=q(|t<qnKHF?l5n$uJ9cvHEtgry+}y+l}TxdV#!9bmyTI1`s5)eTfR()Yy@Z_JrB{ z=g<+;cIgw3()#`q=$JM=t-G$lUCQUzT1xbK=G+JAotYlK^TVI_O-*~vtU#b>$#!{P zMk52I64Ma*3^lG%rNDJl*XFYNh(s%d;D04TrysOcWuXQyFJdT=y5j=GP8)E%oQ9_E zYM@MWq<pH~IBR0smureNyD4xf-SE8^Y@_a>QbESf1wd1z1aMdDjC0{f+A98{{`9$M zKl~=H4{g88=5u_6XsgeP|NkRzIg1d2_Et867aLR~CxnPA-Rye?wGyY0fTl@Abz>YR z9!MgR|C%x|YqE39KfLO}SCzZEA&*>=j*0y9_6GmSjop2gt%z}l*V#N(EA_SA*>Q65 z%=3J5p%?CV$^lf|J5IXB!`V?;L|WX*oE(3tr4e8Z<{6k6;l8zd6rB=#&0m0u7M=&S z?$E+Api;4^>65#8>wC@gS#vc}Nj?6m-0WxVenu~iKK6<K5`^Qk@=SQw|D5O)sZ{`N z2<c^&i`(5AE(=T>#FrbLzz4RQ0rU`ENZ9u7@F7zC=|r=yk5|M7<Bgpa7+ckm*oF$Q z95DccH+~f9#jUp}^mF~^YA1R!0IXgLL=s#Ynp{aIeD4n!{mzVQ4_(0jpD_{6UyoD5 zm}j?$;p%O2D0_vOfc9dNLBK@3Z|d2!E?r48K%s^;qmD5HMkjeQ7|8*?9E@QYB=tav z+k9PCh2_0I2W#^|*gn7-rW3bG(EQwBJdrus*hdaoBl@n^eXIr2ra!Bed`8T4l#MBA z+x|&2d@XQRB>K6{(^DFRKFYaTN!VD9FMv~3M*u5JSFnB~Ioz712S#|&F{JD&{aj#p z9nCvxIN21T3GSA5_ch9#6DHaX?FP*ooDzylu7nK;%pr+9vsXn?(m8W7z+tBuwt`W$ zzO3lGDcmi%Al^v`s|qd#s9$G2cw^XMbfFohX!{d&f&$5fl|@*HFS`rsZlQvB$(>sU z{!N1j5YrtYmfzz>{=t0ud=TNXt)tV6M!px{Ht^cY09B*cA&nvY<Ibx~KFl88w%dsB zL!ySyF+wV-#!@0}R=8V6uz}%(>V*obt9e_&`okt@ZOVzwG@6+4j<+F?mC~_Fj<*Oo z<_pEQIy60fNNew~zp|V9rPw^+ExZ2udlPZwpSiA?M`y(N98;LA5c1l6K{xy~8(D<b z%RVX2^Qtz;4G!&XvEqVQ_=g&yk$gq-Ji5iG+t&)WPz8eQoj#VP$)PJ=hZU|CZPfry zKI7BKQMGg^SvxHIm4&lO2KD_qq!YAE@)CV3y4b{8q>v^Knj^Hoz-AEF&2cOqLiyB# z0#EsFkfw|EAFr=Q@z4o0(oggr_xx<Q!m56&XE5T(blgB^t_BgIJnkphyv)M4u*;fS z-zSuD?)t7T`Y0n?ViO3<+TAi63k$>-dr|@6eq31jHHLe{U!}HW>CD_%;z8@@B=&um zbZICBt&it*mCGUMY}`qCov5o3@#rcD-Za7u*6ZcGkF}RXD{SX<8LgJzX{wRs>)+o) zu^0X!)Zz1aK&#GRG+X7RHg@>~PPFT9R{xqh*yv9rCL}*uy~nPDT(2QQHs0HKBbd(T zdNkpiibqrOuWuV6^*G~n4!-%-C!WuE4#|Y{;5kpoAoljZ9iG2br^mUn|5T7^m?#B< zEAy^W#{_W7Rey})8zDyF9?<QnoIP*COz-!5R70e5+&7Z<_fE_WfkR$vUxZ<n4}m)} zr%E>$YzkCX3K@03;JmeF+}g@T_|AhHJ72H66;jmJvv()ZfWruz84oY-Ys@J+d4)zp zk7G1Agt8VE$&tE9%q{n0k%@|21x5Q6oI9LsgpEJWbRUSPuaR5-e&o@KDdA?bA5#Bq z+G5l-D>W-nbA-aPa+4aNw;a9i;5Lg;Lp#66ldeeDV}y$`(IKSP<EUCrK#2GJs^LE) z4(<LMd_GG@$?op6Y3OTM$`Ik6A&Rtr5B)=5wmf-i8J)j;W4<}?gnSRJx0;}fFvvY! zxGT{+F*}TYL(AcC9S4Y(V<j@=xYmxA|LZzQn!1Z_@@oi_=GkOk?_q?WdrBpPo)yf` zY#-6QubZqta%z4Fb662I$B6C7i5Qr>?%qTn`-h4^dzJy;aEac)Swas6Qm)m4u-)Em zcN}u=$cC@E>HDIo)3plEndwm=-f&j}p2uOq;5=z}^6L9$m~06ZOGPDj(K{D7%v_%Z zuS(8D?x1$SY{7*f@b{Hz`<cu-IR#5B3~-Tkp){x>ypREqdG`lPa2Y#D141KW>SXOi zSh%KsVYR7$bevNketPs2r{&o}Oqh5&^-gZM&iC>USVl5SPBZK$(k$9snEwxNZgLk5 z4vQV^RLjO9=Qx`H7d9cxh_?v5>_PgJ#;Y07ZFb~W8|9>giU7_NZq@0(l`ChjTVq^f z_#kqXgEeh7^MI4Stepdpb@wad(n~{Hop@J&`y@wv>fe*RO`c7;z$0<DERp^wwAbd0 zOvV?`^S~24oRb6w+2DRvkl?FQVs#x*oOQTtcOu%nRMaVLf`TDMs;6lhd)l=Fs4->U z*G(}Al4jMta5!$geEEuMX?V?l8o9;a!AS^z9;*E)Zr_JSpPP^f8nHlXAXk|rrO+y< z{8d&u3MOvGm8<LeIhSTJt|eWODsJ$fG!mT_j(vsriM#h7J~{JsdN8Kw4lVIG)YY{? zVoiEKV<{}Z@<N=rk{01zb$=Sav5TeFr{9RX#aIq}?oYI`t7vCQpC*s?RiH*2-q!iq zah4N0nqM{~Ko53J#N1tmF-9hP;7YJ?<0SQz;%HsBL8reeR6;VVbK21`6G#DVBLlFZ z>NnfP6V9DC)9SMn%|=V2e&{TJE(^}g<&hFh(&XfZEvNzquHje|rfq#u6lBoK^l#;{ z+(J}vTX>MP^I`h_cX3wd=XFXUm}65Vk%!`Q8h!(EGKqOUwiOa$cjK5*b?|(_D>Qjq z6kx&|75o5@0NS_%k(6WObG=#ac!zCVh{IVPV-Ut{rRe}@|GrDbv_SPpp&D#}75SL+ zebB>xx+j6L4B|VITjatWm9OP5KM^i4P1Ir4t*K%VQu=$1L#`-dPCNqy&mZ5`Sd&U1 zOtJ@+v^ivlM`_Nll@<VR_9ImDft%G<j#_{fnLq!{AuzV6D>AXzA;q0QB<O-K$GgK- zoJyv{RJJCt`#EbMHvO!*_QbN?*2r3fmYGk}j%A^SOj4ql0Ht>)-3y7*tHD+OMNh*) zuk<u)xu}L^i8QyJ(>^7dgv?y0FLKmc8c=M)UMfSk5E*l$S9+-!JmLe+4v6I^(pmG< zV`YY#((x9)iXSfjAHiv)#o-?@(@MaM@6Q6xcJu^tKvQxKUE3X9(_1TJ0}@D=V_eG3 zrX{_T4<|n8vd&`!RK?*dJ)=aHAzSjW^6l{69#yGKS&L>`i|pOda^=Fsf&Qg;fM1na zH>;Jf*hK&g`^i>498Tc`4!vE39>Qtg66C_GnHQ>NFMdaHmJlBdb=|16!Nx-QE-JkP zzyHb=6<m`Q0m^k-f5^de2p9{<Y>=8V91dga`OEJ<(Sz4{$S#FMh58g@L~#H_Dq2Y; zPKCf2_Q@(<(F@ioWjzw_f;HMn%i81P!J@3hCR-oK@ERdURP`y7Hp(7k5D)TCNa3z} zllkY5bWdBl$-9}Goon#)pgl6nwQ?b3nW-?VBmf;4FR}4&bNyMalA+EzQha(H;g~D( zb9`5#CWii8MX4+p3jn)Zq(C0%C!w&AikqmdKsPZiODO1}iMXd>FP^uBDRVG3XxFrG zg;bXO-?i5y8P@5A1(+c^C|Q5hMQOiq-_}E?9SV3CRMjinPr!_W*?A2lwPg@<c{S=r z&F<oozE0jipI-Os{eTJRFK~f`%-_^_C#1*xG)6hhL0eh^&$F2F+yjL#K;kakE;LAW zB@4bj4$%oFx^|fvK^_y3#c8lt!;X)gy^MK9ztkx+=GHH%M7ZdyJ!}K1nk-$2rg@s> zG0W0Q)1|R*)7U092=yrX#d7_W+sUX`w>&Tmkt9MS%d2q;m3^Y{i^W)`=-E?=o=l9G z&Jb#d5fCK3@#S423ux_5N~LVo{16DF68J&xMbQ3fgSpb|J#gqsI_b5oC6E-f@KgC~ z>QF3<?diMq<RB|{{h3?9OgZhl+$ien1=I%EQ{32RDYa=VU{{Q=(U~;Wr!9BX$O^y@ zU81#niNRqyCv(=GbyY~8D^1R`FAxza3y0MI-|$n&iFDJ4sq3sEG%OaUBa4BbvhRy+ z(Sn7+4DG8_yap+aDTZ57%P-N}Sz_RS4^?uz8P$fd?Kn36!HANSrxXCqdnhs}9jqp> z*B+lxh{CP7XSgy$cQ)m!CmxS>MHcJu2Rf1XbuF=#<>r6O9i*+fa$Vy&4V`LqWtp0F z*!nw$wtQH=gb&J;%TYY{to(bZ@(h_vNAX5uYB$1S5ahZ?$+YRN#qrxhHSn@!UrJ{( z?1m>=&c1IC8f)vY6gd!gRxO<+dPA(Y$YG{WXI$3;>w{n;8X^^ALICM7fJb!2K6UP^ z-Y0@tX2JxwvLOD|(RNk0i&|IHmxI3{deH$Z8U2XPWS>&GP40g~*Z;!}a`BqUbF8#R zOZus-TeE3K*@`U6<Xh0`7cA4{eA~Hmz^<+go(*#h<JHF+F}MTicXrYF9%ns~FI0w- zcau!s&l8?zSH7ZtcUNc+SMq@g&eYxlAAlj%giSk;^oGt}x~vfQ^D{?!{SV7+NRN<D z=+3s~8Srbne$#!zEF!DQ@>knLdXIE~9o16g_**2HML8`h7FR!4k@-Nk@b=jfcIZTM zl%B<44KM;Q?%d=#rP(cczBqfH|HE-=#)jIVwcDWVYtdUU0&uv~9Y;qdQ2V!=L`Q_Q zZI2+ivI#s^42m`)b=>$tGT2EhsG!riD!wRg8)p5W@%Piv3(%0Y#GsG4b+X9JG-Xf> zC17WeD;2@!&-Ep*4BQv%a;r9ONsRvN=l(L8emh(Q;SomVa;i7-7Dd>Y1!h5^bzt`1 zf&8cw^wddiph=7OT{fd*m(1VIHtIXvx9p{wLt@g;MQ6fEhd#v5G^h#Yc^=vf77%We zWBF(JVuDv>=IlqMMepd5nb~?qma1}LCECA2XKcm{_Ji>**QnDVB@ay!1RWPEs|gz{ zGZb12Ss!R*<OGUaAE0{>m&vVnN6tFJX`ulFgH+Tdpea;W&}&^NA;RpswyOLRlHoQW zefHT!hq6s3Tqz<}9+s<6_;AyURRU}`(4CD*ENX^th*{kbOA+K3MA=~;nNqI89tjCS z-tiU87XEWlx#kv~FFw1^SV#%TcIOVXr{A5Z1|;R{)%pO$hKS5Dx4@WQVTNiNg)LU# zU@;(z!opFdF5N^Cg$>alcLZBs1s(Y(K(=d+JDG(*9j_amGNP>}>q^VMnKth)V?4p` z@00b$_@6orB7TF76mpwc#uzf?U`Jw-{}O=|g+d*28{Dgv_MXQZxX=18FQB#q>>ZHs zm{M@Q+9i6iy_~Z9u1ZYBi$kf1KAE~n<G{A3FGEdmFSgL4*NL%z6dHP%q(ZzffS4u3 zY_fCU8sy#oiqQX^cgE_&iuvo}FVZbSlD>zw(>-f*r#3-Vzp-Los$~0s=jU()sVor< z_fX7WZro(6I0C7-!VSpUd+vHnnz!mBL$l?@U3IZgfIVtDD?#NKIXfvm@)lT(wx`-5 zR@aw<82R{3u)n8g*fb=Wp2vw3>YttAWgMKUGaR5kc5QUFDG^4~?Kxj(!}S4(ZM`(- z7W`ds+86;@$buf^4-7?D@`x*}IQGW8%D)5fciK)o3yWoBY7S2;6>G3^zMIUdx7YwY zQU}ra$xgFscps#v%QXp`)3{ahy-0VXxht8)p7ucPI^_f{y9)%iN5m~o9rOb?M3y6T zTev8Ph-}9ArW;s8-7XszfCDj~Oyro-1Sqf;>2MiOk%%LLyPQ~oEMV_lL|_?vH=^y4 zk!oTRZ)!a1ZUeSbVw}ksPj)J)E6CppEy>m#sU&116BursFz^>wMSoJPuPswUXgSTP zkB!PYCJHwT+=oOAd<gge5&I35HTPX`-R)DT9-%V6+Z$hAwChMH0gmpwt8ehQJ7Dkn zuRX}EY46Mj46-1yaAxzk17{(g5;qo^z(_K|9bd}HA}KW?<>!e#=@%q4L$}e#D^m|d zHPtC(-=R^izij)i^)_YU;wf@(vClrxy3|2TFHF51oFAljh$rTG!`jvmEjZ7-EcpU& z%km<)PpJ@9c|i@B;L!PyN52oA7w5+HY?<cdnnKs9O^q;OfoGMpDOYi=Q3GPyZ_4UI zek$l-!ps?=va~>?B0zmSDzhQoY4<%24h(TIS8BV{#XNXeLBy<Lj1F@sT4XsQBB$0c zxqFVOSfbLRc|-PrH!GlN!7Paz=0=dU7V8;W(A-dI2eUI`(%g9Ty)tGhEkxc@b1>*l zFte{E_rf{SCd<H6;I9J2_>IGFYH*CL+A81Buj<<13>&j)q37M@jtQZ=G@O+IMEe&W zntNf^&uN0xuy~Q{9AMvE)hzLocV05>VVwV}-0!){0Q~v-eDH-K+`dBf?}72y1nY-) z#Lnr#ySW(-be7V@z%>~l&AxCHmZm+Vw&d#x8#Sb!D!A^0pWqcdHi0|sOh{Oyl%}>z zwu1n87Kpt@Bno}nnB}QR{)7_D|2`U!s@aTS^8dvfy`-OCLS<(+A5MV%{Qn7UqbA5^ zcJN#m5wq;agGaHIHxhTJb>AyiQ7%52D-TXr{>eYHj>z7DimM-S|N3qEw@!YlteK>D zZ%OmOL1v2sqQE%oK69yX=M*S>;hIq^wlUFU%L*ZBHmc&i?5I2o5>Ll~TJ!!Sm)?dy zO*2r*Ae~_DBj-cT;7^l>ZrnVMv55CM_^z6r>T1f*BGH}^5M;^7MR+7uT=wA3U}&sm zA47!;8Q*%F3*_tEv@vFMX&D=DbiOo=CBNkoc{|{|bks7smtC1`=LTD-F!b8c5d;~? z20+MQ0hDV#J=>OZg|Fqbe{_F}2`XJu13w~sJ5Oqfr!a6f5!w(ltwkZc;&}?Bue~>; zB5ZlpMsgA(t*`A9?2^v2SUxQ#l!!^gBCa`MDZQ<=IAOYz%hY!0Pfq(4RL4DUJ=C}F zhgr|(|1QMDVIZsBxoezUB91$W_heVg!jaXUw{xXN(y#?I-S6>qoF1+k1f&eF7&AlQ zqgZ|S^KQ}qw8&i&$^gA}+C_%r)o_gso3Fg909=^Qw!N%lJ5sOXtJ)N<Wc~MJx(zbk zFIE>|Rl_y=NJgiIw@<vRz=GXumkXzv(o0?Niyi-^Ba88?nm+}^v*fEZgRO|}g*YEM zU<}6WL;~|fYvkt_n8xe*V$o9gWi{boM06e<z1=>?AR1pv&}i2m6RHnJbJ-HwaY02d zlQUtNyqgLZMH{p9@xbbd5;8K|!EFTH9J7jeEJu7Lp&_u-5O)FaJA)|xNezX+ttiCT zdO9+<<F5)f4?S+1n##nTP-A_<F(8b6hK2jfp6at%LP?c%TIl?P9Y_}w#s<)F*5$<& zS@L;6y(yz~bwJf~4}G%Lqx6m#_Zs-`iroe<N9hdx)oXtog9~-6n;q3UyUPqcJJo7q z$qd#66`Oyb9qsM7bh^0rd!mifW0ba}+Gc>*a>Y;<bs^p4VD4vK5=#Xc-H}_Bd+qT; zHv#tL&CDPnzP`T_R(bxJ9S)FQ@B@%^@MBn)hseW<c<2t1(NFN9XV015?8ww1=iAYp z&-v1Xx+5$4x^X2^6c10&TBnb#fN(5@lQpyQ&)7*<`cs;D66*?ICrMlQ@^^kg-^S`6 zQm&MN!X5TQur~4hFpr#oLc|EX(som<kgwn=EO3+=4}wk~;rz6xxOkT^WXdh@<zb*1 z&G%uKbm9F}-;jWmr^9SB#XGiY@w_KOC^a3fT=sJdM9Ex5U`dzXe%+(>%n9pu+TFa< zUI7udPb7W>;)_JRJfOI6C7JMA1clXf#h76^Kv#5QzXa~00g`+o)|?{_bYzibuys9} zvHs$2D#i9fo`B9Ob=Pq=Bo5tBk>S8@Xwu^TM9?Z4BadzObYQD$a(gw}TWW^jj4V@+ zX^Q(5_*Gjj0faMks41dSS={veq9FzrpZxdci*~MRgd|d-w%eV?eDjLS-^XW*_Z1JN z=P#v{UkF%9gaNnCo@vv8y`mvVr{{)%E^psi0hgeefFDl7eyk$0F`ogBaMFy{(3T@t zBjRTzjoCy{2DjP2vYgX8BqW)N3Pzted@gLY>SFYhwU9~Jn2{5w89kG#8JIlQ66Lq$ zKS@&YU*D4=y0ktz;mfJcH>Lk=KQsZKz+=AHYqnf{yq&pgj_5h^PFTqaXI5<0N;XXI z4MQGCMN@6A#kX_Evpl(TrZB`+j$DeSG&(%8KVuEN+SpIC5EV`BXKls$j@EoaY*_d4 zftmHD)I8~#Ca2bNi@LXTm{#|3sBwl9=U3Rcm-!8Aom01F*l_XcStMQfPil^Z5`t?E zjh|h-dVHqZ01A;5H%3VFRA|f%8`4wua(KEn9Vb5C>F2MYK+ch=MeSUuJ8?KMBo@4U zBM*zr5jt*8PB+;7XeU}2JdM^{aUC7OYa{n1#*+Lq#(cv(6>sEc#}}}rkfV`X#v^7J zifL0l)Tdq}Dlx4OJN8?xlc0t7f%u-4eJi~@=-)n2KBH=S)#$^>Jpj;nW%o?Mv5jp! zbVM^#Uq-gjk;Slg?V!i$ZK@3~iVH34$ynnMwR6par7=5?7EUWSS9Q;NrFTb6gB2_R z$=4NFh%;mS2;W?#YVkSMMpqAm3ecwEulDP>()QgNdfAmOZ?{}Lex$EXq>^Y?aPlhM zwA)?Dbb$F&dKj}_^>V=xo3p&v(8c`S2LUr4PyqA$5fOPxrdD`LX}d0D@VhCw*5#6q zBEv?iG~%@6v;>b%|2Dz8W;vPXM11Uq(vZa*IC5{D7;fz_X#8Q}0WB0H&fQ*E2~z4b zrj9A7$d<q{stKtj0&Blcl;u*Z0=|t|j(BU4*xYY_Xlo^Q$LOV-NW9G=l65?R+4yqe zHdwT5urayPaeV#{38`FlYfPHY_^fDTFIsrbAUwQeKP3#$$tISDdMjltEanme`J!VI zK+OywA)s9^;3LF<5Q7xwpj`=DFd=+L`k(QpDp+KnJ1rcQ=k)yjEX1^@etvIePXT8w z>N=c(YWR&m_|0ov*%Ol9tL<yc;TsABF~yjX;d-p1lsdb~X4wg^h{;ze8uH9vGiEcT zjyys%MG<)Q1Yggv5CI<@?`;+9{MnT&y#SmAVH-FB(YMp_)AvIQz(8E4%%AGmaZR59 z+2$ToN;>qS29w&%{;H03FYU1Q_^6HI{}7nL-Zw{W*G1$qY$G#o$o2_;uZtst1^slA zj3@T%g}z=(jWu_(7>LDTe))onWF4Y9_MC#i@fG}D8uT{g&I8U4+Md)@D}ii_%(&p} zi@2h#8DumHC44Y{QdNEEL!b&heqL3mbVzKk;D)E3<O(auoW&RODWO(jk}9zU8ZxKs zRq&P;Temd-21emQCj7X-)P67$;D*&iF<5F7k(H8=OuF643V=)-^UsnPrYR?3Jx#Uz zWk{Z>$s%wgtsw&nfiSl87v|)NPcc~%^XmR`2AQ3Wu5;RPb>Ce+Dhd*#z%~ocVi~uU zdcc=2SQ`EE!q6z$5UC$@lZ7gy+78Ae3~>(n*0G5+I0Lk<Iq|P-WCcfuGQ|TgIfQ)4 zn`2aVhWo9r6@RL{%89SefF%Z#c(~0^<|h+HZAIGCXk)TT)c-f_TCX72u{gTk?l1!K z6&ZiBsc?QmQ)#1piSfopxS(J$#Z%Mm>joMmpbL~=5a#u#(bgmOv{G~|54+9RY6N0< zY(aYbgBLweSvV8W=R8q)AHHO2-y*7McjqW)7?6er<A_%TO+U6MZ<aZi6&R;omj<)! z2M+c^Dv}@kY&2-=*L8lZsX6-=TalHKF}@DCP3e{x`spS^MB{{7T&*=WcTL01+l-GU zPM-%C4&~mMu7<54A`|yP#Q_IR+1zA^?WCT<hUGe0<Q%IB7uY+6?0?mc!kXu52Gz}2 zz3H#W!J2WrP~y%sjW9bvcBSn{nJbg_*Q}oy0{lwnPVzAx0@nyz-19JcOE0mf114=B zj?%Ad<GGp-4zG;jSU4<mvde<-6(uOUMv{9_pS`+82dck_dnKd>H>E#y6mF=_Pg*{y z1{J)s#A!L}vY;AL+mk3Ju1_Udp`V+ewg1s043%R)a9!(e1tEvb{RuEg_)jhWLw>3K z(7gg!>*2vJUs;SQcWeR&d|O@C?K3|+EI;4b6O@nTt=n+aK(JM@x_TEyDPoG}<DwPX zss-Wh6O*PXX(u^+yNe_3jkaaI*zf%pGI49WG_3J1cWbaT1CQi*yLtq?NTPwRX>1vJ zv6Yv{1Yit}YJjS-key$&P=~*aZtWVR#0hR!krhu?-;2{5U)o(AgP%^FJ%Uy=$g_C6 zCy_H+*SJz#fr5bBC~M;%Qk&mK6HO2rs{O>slI>C~f-2%%MSkwF6H$Gd-oN%ITRn7U zDrqJRE=Eh&ye?xmFcx_RXhXUtb%E(Jf4wIkK3WAYSHiG~o>1K|8U(e>OlVCbGlVWL zK@MoSrCM=`FW_9CB(ciD#M#AMcbp^XFQfcYH2;?a?IFs~odL%JR6Uj}pPcfS51K)! zvyU1#T=`EJ{*JI4+ayvn)n|Li+rg(^O9-!61DZ>~AcLZ3fk(K0_x$s4Ux7&jee+<+ zw**yTyE{niSH0LBd=ortr8HSe>0^XdHeXn(w~_J-&rt&mYO6KP0`#QOI!lWQq)QKb zI}re)K?+_@h<QIdbI{MO-{9Y2J{gTMX6lT3sfa921@QZ+)`nm-&$p1BRP0=Ns|niT zD|}Xv!sb1+3h=Kw#JC|NsO!A0Ztkg0E8I;SeZ$WvX3f<4^0f8OGeQZ5q?c<<9;Ew6 zZP>OXLYv5=8TYust!#^AIR<3NxYhK|><>=R?fH=pNX>cUcP$=AS%B~0W!vgUKtHc> z3O?)Ut`rVwWE+qIwsK2dzFgPUJx)EC{JHH=CQ(*M2OJ3=5BJUMg#H?}qG=V7+c=t$ zl9)PITm`|BuPP|wMxGvnE~Iu7e8oP*Wg9Zk(DW8N2Wpzq;pLKsR!S+BjVz_+@oAjT zM{>tM?fUS37$|gS^LCWB;)?p-kEIZ!BmB2GQT^JLKmYd1da%Q7ViD+nFL~ufK$nwV z{wLQn+nl>SFA4HmTSg*dSmZ^5nu_d0xzzOJ|A`5k7Lvwt@3IM|BHPPeL|m;vQ?+Zt z<yRw!;T1Ci{1gW>=nXgCWRu5zd&>_xyW;0BlNO$KZk8HgC6?67^6aBr62vZ?=0ypY zj7X7%;OMMv5NzzJ;BvxX47zOX3(|TwK~uO?iGJa{XPP;`KM#2i*s$foMB#YW!Vs-N zwqUX}csy#ra(!F!*cnmpI>5fAtCsz8U{Pek*8Y4xgLQytWts_20RxPmbuOz$D813F zwwqGQuw}edEw0Of*7AaLC(3}CSMUTdO#uaY{CxtY1kMYC8Q(od{ALnG!unOCG_p%o zjjT&q<j7#PEJ7P~JJ~=Bk*P?Vm`9xO3<Jd#h&w|oU>tGz$2PxduFMO7(|ls1Z)7h& z4c-ZT4+KYiu5}|Zkbvm%F{>W}$k%Ea1x4Y4F@XEk=fj>V=4N{ZMZE(JZ23dEI01RA zeKl3BBgnP*JcK@=3_}7lo3n|T6MTTa>mTsllE~Im?N0*+3Ag+T=P{bAt5lCSq}k=7 zyZo-{wvAXQlg<_Z)u1o>_*|-LaXL{eaq53ucHI_FV-eMhF}{o2>K>j3bPUX2x;!7- z^sf+~?30d9XwV=ce>(=4XTx&^#5attfmo(-D|V=RlAvw!iwII3vIDZ!%9~&6p0FD! z6BH6Aa(oeD=l+pAOEXVQ?_eJn-)yI8coPCK0OT7V|HR&DqS=JBOb%zy+ve&||KOl7 zZ`fJ9Qq#op&<lGIq=}hW>N}Z#Kw&k#>&U>5e5@CdLeDkN9RRk?Y*Y`>*m+?swQ#7u z$x-I?)n2c*7r4?&3${bdM{E&~=;TJ>Ij*9*f&shfH~8&&oKaM8BtVR6z3A4hMg~Sc zC0P~>ft4U8L|#Ti7l9)<y~hHvu!7}d5lIoVlvY2*=I;FuH+WwGtgj8>+yX5mh7}ZA z1@1CB5KWl9`HQRqc8_m79WBVr!#t*k@Wo0l(V>h{Y`jw<&_PJt6~^Z<)2~~LNGcQo zpR}u6MM*?!iJ{on;#~6&zhJ#?fRlKtC^(gfO6f*!(&ItiOrbIYPE2zj5M(sfu?;%I zxb}0Zx$3AHbXQh*&EWl`RI&|jqh{WfogVvJ)WNFH<;EhH+NI46GiO23T>5~@*4}vz zfrd?xANqxW$Fr~2T9-==u#&+4|Kl<de{+|NBU4$fl%fw|d}NmCzs2ad7ga*@uDLN) zZss`iD6r%ogAoq)cOlCMtJ-NHt<$_UY)d4C{i)92FcGRbF&DkL&}<rlhBy*+6ZIGg zN3h6b?f~mUP?Hp*sC$t>pK6fvv!)+L=Hdywku<PMvvETA!0dzKx4^6JF%31sCpDUb zLC92@%W#x<5|dFS1`felVmI~Q#^Re(-P0K-*5<42KH|^=efD5Y4UDnx)-Q3<L3NUD zqYC5d4qO)KY4BZ7fRza%r5uVrL$mwyPrU&TP}~&fJL1oox1Av>jwb(IL7S1BT`@2T z0H{p(tY`l$MpOS_^Kl1&CA1zS!b#b^jJj|n-OV0Zo6D{scP8K#zi_zKak(LA1Grno zCDq&5`+9yd+|Ygp)k<DCVp5PqNc_SF<Z5SbFnAFMf2D3tMia*2T(EF7&ek$`3@}b& zJhsaL0^P4b1EQn&&1WQOqHQ>+a&K7QIeT<TJcbA>C=y<G^G^uj-T+aswc`}9I+cP@ z|F%H3q~PPw*~4tp9!3RDs{-jh>Vp#G0V%+rMNnG9ujFS`-beX)zXJzgZiYarP^VkU zRqwRx3NC$&d31OY$zWH~xwRx_BrV=eQ>0JFE%`9j$$u3a@|cOOF9nYfLY$}Ql@D-Z zV14}a7POZ0r`UaucLCf{)F{$R3O+raQ$4n~Sh{OXNU;o}iYqog`}NX??N1-Gzl3Dv z<rbpf+*XP|d+>o_%{ZHerj^fmfxr|%BySpXBn{~XWCkP~zhqOOO*1mO<gHK6At!q< z5MNiEilwPo-#TYzn}VuCq#XNDUu4a<(fB`=`pKpuuGGb6S0$?Fw|6n~)o`tYemX=J z3Hve?ktEC4<0zvw)`G*2x{p~wapddOpfx*U;%W<A0?gi%Hx3)w&VO~?@QOuMbL2<4 zjb<=&DPdexj|p}bz86!|?mFwSd;XY;sgj)=PZ&9R`a8wXT|Lqxmxe3;`^c&%a2p?( zw=<d|9`~v&UPO2&DSDO?nUiUDKiu3AYDlc)*ZSX9h#Co6?OzNk$Wa6OC{jhkvl4s? z3x3Agrt$<2OiJWQTYNdJ?Wr7^RC6sm3kff)`TuWdBosZAe`&lqPZSEEAs_c>Q#KZm zoVWI*>i7f5;&}U#9>9qky>ilRYWtQ2kC@tIF_7|5iII>1Kb$?O&Wq_;V0Qk%(o#@{ zwql(Tiy^=d-4f9YFAi*ESzLp>tsWKT2i9;(f*k1T$~p+e>C&CMuVf95#bedX>ZIH0 zgY47u^3a{Z-!?A4ngkCy&{^7q$2Z=K>HRX+$N6rqaUe?CSV@g01CDbL?c(+w^p&4& zDw;^reyq(%QlCuHt8qj`F6PKB_c#gb!}~;T6q(+ZGkR)noundnRMv?o)fO|KAt81H z{+O!YfrMd0bJP1Pw;(mfu)YVn4MbJk>A5%pMoJcKv-RcKoWUCXBSyxwB>z0*L;`rT zY8=XTa)|MRP@&KqNp4Uw$U=m9n#00__Uj7&z_XYPhla;J7t=!89%q{D!%-;`<26v1 zA-w18-Lg-0Og}q$C}A}U^yrU$$yT{uhlb}z3&?z1r4^?ap<HuzYkaq4`qE%~Q?}YK zbl5;_)&l9{Nl@d+bR3-mIt=Gmgs8?oYWg0y`_<6%?vytdtE2I-Dc&JeboW9Mj8WOY zUdEV1KG1M%u6Rza;F+DJ=<S~qVKLIsN=1=Qa#zyhz-dc|jN!@N<7LquLpb{lGHVy$ z;0moG$P<PC=&gM_N~%c}Rd}@Nc`IVU%-9SeHGZvOgQ;%7#ZbB8bY<~3?FJx<PgOm) zK9m?K`%vJcu2ya^I<AYW%;~+{`IrTaB)63EMJbi8|0FK6e5~fZ(acU#t60t|;aOrT z3xu!NH;U{J)e19|9T#vwQlv5Hl_lB|DJf&`<pZ}vM$Nu<N-fW`&H1ffTS3N~?8Zcg zMn2A@Jfcqc1qxhrf*Tb5R@gKPEs7Ty?F0DJ@|r_DnVp^3Eht8KC{vI%|Kp=K(}gTc zZ^DOwtu$p4ey`6#OsM-EyqKrypsU>z6Whh_IvitVSF%V-<G8A|kG61pa$&p)tgkzx zc#IlZfI^ih(*7qmWQBA~Fw5?SXRn_<Tv^ucg*dEFrn6UonyQeSh>Bgv2tiv6U5NxM zl?t{tO3cPN%=#!&NuQNad<qMG#@VLw1P>;Wa`>dzY0M)_IHoo<I2Co>2RVUV_Hm!# zh_VlVu%7;`8<WYUiYh@xSwL;fg33S}kc?r8qdC(NNorAdT0Mq2{q<0iBS}!}FRX<a z&S<T)>zP=iY9ps@BLKAJ%^2N2n}{qgi_5mt9vWcn);uYlT9P`mDNa86x=;^12Vw>f zzTeyBAOumKM9TRU<ft*fOa`}_6sZonVp-KD+y2!7(`R<lDRU*WA`fMrK`pLjF1ely z9<+X7Anv0Effcf`D77}z-DL*g(j!aFA#0B&BfL<N^EigvmH+h?=`Dq_l=<7mOrDff j2_}`ySnK)<M<fDgKFgk(2qIeIx_X|w;76wfI+Yo)S$auG literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-defined.avif b/static/images/docs/oauth-server/scopes-defined.avif new file mode 100644 index 0000000000000000000000000000000000000000..37a52f34ad309e9698a29e8aa3c4c8af69e2a60b GIT binary patch literal 30500 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 pwyfpz9* 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 XFO<3`jK*Hth(W1&=3n5rr8(zXoXon( literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif b/static/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif new file mode 100644 index 0000000000000000000000000000000000000000..8888eba0a92c033fc281028d7a0f4d8cf443eaa3 GIT binary patch literal 17601 zcmYg$W2`7Vu<f>OTW8z0ZQHhO+qP}n#@V)QTkm}Ly_>vgI&0QslFpB|Y0?D%0Dxoa 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 Hy_cJlF|_^3 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.avif b/static/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..4a119e1569bf6331a616d8297f06e0382fe56a6d GIT binary patch literal 18144 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif b/static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif new file mode 100644 index 0000000000000000000000000000000000000000..c2ba5047ce600fee5875593b4fb2be11127447b0 GIT binary patch literal 27813 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif b/static/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif new file mode 100644 index 0000000000000000000000000000000000000000..8dc34ae643c2d99bb59e68e0acb637117286d4f2 GIT binary patch literal 33158 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif b/static/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif new file mode 100644 index 0000000000000000000000000000000000000000..c3b01390708295ab6f3a4dc2761a656afcc14424 GIT binary patch literal 30992 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%0Agj>Gt`PP%nS|aYSKtGEgY848G@yof0qa;<=^pz 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 Cgx6;P literal 0 HcmV?d00001 From 2ad43a9508ae77b7a76e1ddb171934fafcfc4a72 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 15 Jul 2026 00:41:05 +0530 Subject: [PATCH 14/38] docs: address OAuth2 server review feedback --- .optimize-cache.json | 4 +- src/routes/docs/Sidebar.svelte | 2 +- .../docs/partners/oauth-server/+layout.svelte | 2 +- .../docs/partners/oauth-server/+page.markdoc | 44 +- .../oauth-server/authorization/+page.markdoc | 158 +- .../oauth-server/clients/+page.markdoc | 1770 +++++++---------- .../custom-scopes/step-1/+page.markdoc | 10 +- .../custom-scopes/step-2/+page.markdoc | 4 +- .../custom-scopes/step-3/+page.markdoc | 8 +- .../custom-scopes/step-4/+page.markdoc | 10 +- .../custom-scopes/step-7/+page.markdoc | 4 +- .../oauth-server/device-flow/+page.markdoc | 199 +- .../oauth-server/quick-start/+page.markdoc | 373 +++- .../oauth-server/scopes/+page.markdoc | 272 +-- .../step-1/+page.markdoc | 12 +- .../step-2/+page.markdoc | 10 +- .../step-4/+page.markdoc | 4 +- .../step-5/+page.markdoc | 10 +- .../step-6/+page.markdoc | 2 +- .../step-7/+page.markdoc | 4 +- .../oauth-server/tokens/+page.markdoc | 282 +-- .../dark/oauth2-server-create-app.avif | Bin 24357 -> 24200 bytes .../oauth2-server-create-app.avif | Bin 22852 -> 23394 bytes 23 files changed, 1662 insertions(+), 1522 deletions(-) diff --git a/.optimize-cache.json b/.optimize-cache.json index f0a14ff0cd..42482acac8 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1589,7 +1589,7 @@ "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", "static/images/docs/oauth-server/dark/oauth2-server-apps-empty.png": "b81617a77c6489bc93cfe3c118c2fd075eebda850fc5803cba4b1b62792269f1", "static/images/docs/oauth-server/dark/oauth2-server-apps-list.png": "a0b1a9bcc5708bb48f7d4684d754cfc8af8e666f808e11d00fc42182ee7ccf6e", - "static/images/docs/oauth-server/dark/oauth2-server-create-app.png": "8237a7890f6246661086cf80b7eb6cdbf0b27b4bc1a5cbcf485209ef9a27dfcf", + "static/images/docs/oauth-server/dark/oauth2-server-create-app.png": "7ecd5625aa964ab77b87440e52bc866a4894dffe5183a0e86f7a46b8c438cee7", "static/images/docs/oauth-server/dark/oauth2-server-discovery.png": "e688439f87c4ae73086b76ee094e036d5bddb14b9431aaad5901d281ab3ca413", "static/images/docs/oauth-server/dark/oauth2-server-secret-created.png": "d675fe574706d58b224ce823c8904145482472f64ab940a8bb37b92fcc33008e", "static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.png": "ad51d531eaa3736839859097c024bca41a28d1339ceef773e376c06936e040ee", @@ -1602,7 +1602,7 @@ "static/images/docs/oauth-server/guide/vantage-landing.png": "dc597717bcc93de02b2e5336a0f05d743ea66e6d91cef40fbdc61f8380577bec", "static/images/docs/oauth-server/oauth2-server-apps-empty.png": "6f7b5c2021df2db7a3a1c4da3dfcf9b2ff119e98450e755eb64f03263030da0a", "static/images/docs/oauth-server/oauth2-server-apps-list.png": "e3f38509e45e502f742e7532ae1a19bdd35b0891821b6a81601b7960ff16b38c", - "static/images/docs/oauth-server/oauth2-server-create-app.png": "182c207475ebd8f386d3d1ec522058f23f59cb47d85f4b681889d0dd08eb8cd8", + "static/images/docs/oauth-server/oauth2-server-create-app.png": "fafb26a8844e4d792a8105c1da2f4c403df117887eeda0fd1c4ea3384929facd", "static/images/docs/oauth-server/oauth2-server-discovery.png": "5b75f8e780cac92a68fda24a9686ba89ce83d89ac66e5f651428b4c62bb81cbd", "static/images/docs/oauth-server/oauth2-server-secret-created.png": "5a6d48595018a8faaa26aeafe099c3dda23613a35e49884decbecb0029449168", "static/images/docs/oauth-server/oauth2-server-settings-disabled.png": "648091d9d81308ab93dd456f172fa1c1977c2fbce9b8aa03893398bdefe10595", diff --git a/src/routes/docs/Sidebar.svelte b/src/routes/docs/Sidebar.svelte index b1c7a1edfa..7d6432d285 100644 --- a/src/routes/docs/Sidebar.svelte +++ b/src/routes/docs/Sidebar.svelte @@ -103,7 +103,7 @@ isParent: true }, { - label: 'OAuth server', + label: 'OAuth2 server', href: '/docs/partners/oauth-server', icon: 'icon-key', isParent: true, diff --git a/src/routes/docs/partners/oauth-server/+layout.svelte b/src/routes/docs/partners/oauth-server/+layout.svelte index 19949838e0..047de6bb1a 100644 --- a/src/routes/docs/partners/oauth-server/+layout.svelte +++ b/src/routes/docs/partners/oauth-server/+layout.svelte @@ -4,7 +4,7 @@ const parent: NavParent = { href: '/docs', - label: 'OAuth server' + label: 'OAuth2 server' }; const navigation: NavTree = [ diff --git a/src/routes/docs/partners/oauth-server/+page.markdoc b/src/routes/docs/partners/oauth-server/+page.markdoc index 554ea1163e..8e79a9bdda 100644 --- a/src/routes/docs/partners/oauth-server/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/+page.markdoc @@ -1,11 +1,11 @@ --- layout: article -title: OAuth server -description: Turn your Appwrite project into an OAuth 2.1 and OpenID Connect provider so third-party apps can sign in with your product. +title: OAuth2 server +description: Turn your Appwrite project into an OAuth 2.1 and OpenID Connect (OIDC) provider so third-party apps can sign in with your product. back: /docs --- -Appwrite can act as an **OAuth 2.1 and OpenID Connect provider**. When you enable the OAuth server on a project, third-party apps register as clients, send your users to a consent screen you host, and receive tokens your project issues. The users in your project become an identity provider that any standards-compliant OAuth or OIDC library can integrate with, the same way apps integrate with "Sign in with Google" or "Sign in with GitHub". +Your Appwrite project can act as an **OAuth 2.1 and OpenID Connect provider** (OIDC provider). When you enable the OAuth2 server, third-party apps register as clients, send your users to a consent screen you host, and receive tokens your project issues. Your project becomes an identity provider that any standards-compliant OAuth or OIDC library can integrate with: the same way apps offer "Sign in with Google" or "Sign in with GitHub", integrators can offer **Sign in with your product**. {% only_dark %} ![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-settings.avif) @@ -16,23 +16,39 @@ Appwrite can act as an **OAuth 2.1 and OpenID Connect provider**. When you enabl # How it works {% #how-it-works %} -The OAuth server has three moving parts. +The OAuth2 server has three moving parts. -1. **The authorization server.** Enabling the server on your project exposes a full set of OIDC endpoints: authorization, token, userinfo, discovery, JWKS, revocation, and introspection. A keypair is generated for your project on first enable and used to sign tokens. -2. **Clients.** Each third-party app registers as a [client](/docs/partners/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). Clients declare the redirect URIs they are allowed to return to. -3. **The consent screen.** You host a consent screen at an authorization URL you configure. When a user authorizes a client, Appwrite redirects them to your screen, your screen confirms the grant, and Appwrite issues an authorization code the client exchanges for tokens. +1. **The authorization server.** Enabling the server on your project exposes the full set of endpoints: discovery, JWKS, authorize, approve and reject, token, userinfo, introspect, logout, and revoke. More advanced integrations also get device authorization, pushed authorization, and dynamic client registration. +2. **Clients.** Each third-party app registers as a [client](/docs/partners/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). A client declares the redirect URIs it can return to and the post-logout redirect URIs it can end sessions at, chooses whether the device flow is available (off by default), and carries what your consent screen shows for it: a name, logo, tagline, and description, along with directory details like tags, images, and contact and privacy information. +3. **The consent screen.** You host a consent screen at an authorization URL you configure. When a user authorizes a client, Appwrite redirects the user to your screen, your screen confirms the grant, and Appwrite issues an authorization code the client exchanges for tokens. -The flow follows the OAuth 2.1 authorization code grant with PKCE, plus the OpenID Connect layer for identity. Because the server is spec-compliant, integrators can point any OAuth or OIDC client library at your project's discovery URL and it works without Appwrite-specific code. +The flow follows the OAuth 2.1 authorization code grant, including PKCE for public clients, plus the OpenID Connect layer for identity. Because the server is spec-compliant, integrators can point any OAuth or OIDC client library at your project's discovery URL and it works without Appwrite-specific code. The URL is the same for every project, with only the project ID changing: + +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/.well-known/openid-configuration +``` # Standards support {% #standards %} -The server implements the current OAuth 2.1 and OpenID Connect security practices: +The server follows the OAuth 2.1 security practices: the password and implicit access-token grants are not supported, refresh tokens rotate on every use with reuse detection, and redirect URIs match exactly. The implemented standards: -- **Authorization code grant with PKCE.** PKCE uses `S256` and is required for public clients. The password grant and the implicit access-token grant are not supported. -- **Refresh tokens with rotation.** Every refresh issues a new refresh token and invalidates the previous one. Reusing an old refresh token revokes the whole token family. -- **Exact redirect URI matching.** A returned redirect URI must exactly match a registered one, with a narrow loopback-port exception for public native clients (RFC 8252). -- **OpenID Connect.** The server issues `id_token` values, serves a discovery document at `/.well-known/openid-configuration`, and publishes signing keys at `/.well-known/jwks.json`. -- **Device authorization grant** (RFC 8628) for input-constrained devices like TVs and CLIs. +| Standard | What it covers | +| --- | --- | +| [RFC 6749](https://datatracker.ietf.org/doc/html/rfc6749) | OAuth 2.0, the core of the sign-in implementation. | +| [RFC 6750](https://datatracker.ietf.org/doc/html/rfc6750) | Bearer token usage, including `WWW-Authenticate` error responses. | +| [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) | Token revocation. | +| [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) | Dynamic client registration, useful for MCP server support. | +| [RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636) | PKCE with `S256` hashing. Required for public clients, and a project setting can require it for confidential clients too. | +| [RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662) | Token introspection, for building APIs that validate access tokens. | +| [RFC 8252](https://datatracker.ietf.org/doc/html/rfc8252) | OAuth for native apps: loopback redirects match on any port, and public clients can register private-use scheme redirect URIs. | +| [RFC 8414](https://datatracker.ietf.org/doc/html/rfc8414) | Authorization server metadata, published as the OpenID Connect discovery document. | +| [RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628) | Device authorization grant, to sign in on input-constrained devices like TVs and remote servers. | +| [RFC 8707](https://datatracker.ietf.org/doc/html/rfc8707) | Resource indicators, so a token can be restricted to one of several APIs behind the same provider. | +| [RFC 7517](https://datatracker.ietf.org/doc/html/rfc7517), [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519), [RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068) | JWT access tokens with an audience, and the JWK Set published at a well-known URL. | +| [RFC 9126](https://datatracker.ietf.org/doc/html/rfc9126) | Pushed authorization requests, which keep the authorize URL short where it is visible as text, such as in a CLI or an MCP client. | +| [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396) | [Rich authorization requests](/docs/partners/oauth-server/scopes#rich-authorization-requests), structured constraints where a flat scope says too little. | +| [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) | The identity layer: ID tokens and the userinfo endpoint. | +| [OpenID Connect RP-Initiated Logout 1.0](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) | The logout endpoint, with per-client post-logout redirect URIs. | # Concepts {% #concepts %} diff --git a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc index be7872d8d9..ff12a3085b 100644 --- a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc @@ -1,29 +1,105 @@ --- layout: article title: Authorization -description: The OAuth 2.1 authorization code flow with PKCE, and how to host a consent screen for your Appwrite OAuth server. +description: How clients request authorization and how to host a consent screen for your Appwrite OAuth2 server. back: /docs/partners/oauth-server --- -Authorization is the step where a user allows a client to act on their behalf. Appwrite's OAuth server uses the **authorization code flow with PKCE**, the flow the OAuth 2.1 draft recommends for every client type. This page covers the flow end to end and how to host the consent screen it depends on. +Authorization is the step where a user allows a client to act on their behalf. Appwrite's OAuth2 server uses the authorization code flow. Public clients protect the flow with PKCE. Confidential clients authenticate with a client secret and can also use PKCE when your project requires it. # The authorization code flow {% #flow %} 1. The client sends the user to the **authorization endpoint** with its client ID, a registered redirect URI, `response_type=code`, and the scopes it wants. -2. Appwrite checks for a user session on your project. With a session, it creates a grant and redirects to your **authorization URL** with a `grant_id`. Without one, it redirects to your authorization URL with the full request so you can sign the user in first. -3. Your **consent screen** loads the grant, shows the user what is being requested, and approves or rejects it. -4. On approval, Appwrite redirects back to the client's redirect URI with a short-lived authorization `code`. -5. The client exchanges the code for tokens at the token endpoint. See [Tokens](/docs/partners/oauth-server/tokens). +2. Appwrite checks whether the user has a session on your project. If they are signed in, Appwrite creates a pending authorization request called a **grant**. The grant connects the user, client, requested scopes, and redirect URI. +3. Appwrite sends the browser to your **authorization URL**, which hosts your consent screen. The URL contains the grant ID for a signed-in user or the original authorization parameters for a signed-out user. +4. Your consent screen signs the user in when needed, loads the grant, and lets the user approve or reject it. +5. On approval, Appwrite redirects the browser to the client's redirect URI with a short-lived authorization `code`. +6. The client exchanges the code for tokens at the token endpoint. See [Tokens](/docs/partners/oauth-server/tokens). # PKCE {% #pkce %} -PKCE (Proof Key for Code Exchange) binds an authorization request to the client that started it, so an intercepted code cannot be redeemed by anyone else. The client generates a random `code_verifier`, hashes it with SHA-256 into a `code_challenge`, and sends the challenge on the authorize request. When it later redeems the code, it presents the original verifier, and the server checks that they match. +PKCE (Proof Key for Code Exchange) binds an authorization request to the client that started it. If someone intercepts the authorization code, they cannot exchange it without the original `code_verifier`. -The server supports the `S256` challenge method only. PKCE is **always required for public clients**. For confidential clients it is optional and controlled per project by the **Require PKCE** setting, since those clients already authenticate with a secret. +The client creates a random `code_verifier`, hashes it with SHA-256 to produce a `code_challenge`, and sends both `code_challenge` and `code_challenge_method=S256` in the authorization request. Appwrite supports `S256` only. -# Start authorization {% #authorize %} +PKCE is always required for **public clients**, which cannot safely keep a client secret. **Confidential clients** authenticate with a client secret and do not require PKCE by default. To require both protections for confidential clients, enable **Require PKCE** in your OAuth2 server settings. This setting is represented as `confidentialPkce` in the API. -Send the user to the authorization endpoint. A public client includes its `code_challenge`; a confidential client includes it when PKCE is enabled. +# 1. Send the user to the authorization endpoint {% #authorize %} + +The authorization endpoint is an Appwrite Cloud URL that the client opens in the user's browser. The client does not need an Appwrite SDK. + +The request contains: + +- `client_id`, which identifies the client asking for access. +- `redirect_uri`, which tells Appwrite where to return the browser after the user decides. It must match a URI registered for the client. +- `response_type=code`, which asks Appwrite to return an authorization code. The client exchanges this code for tokens later. +- `scope`, which lists the access the client is requesting. +- `state`, which the client uses to connect the callback to the request it started and protect against request forgery. +- `code_challenge` and `code_challenge_method=S256`, which are required for public clients and for confidential clients when **Require PKCE** is enabled. + +```http +GET /v1/oauth2/<PROJECT_ID>/authorize?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback&response_type=code&scope=openid%20profile&state=<STATE>&code_challenge=<CODE_CHALLENGE>&code_challenge_method=S256 HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +``` + +After Appwrite validates the request, the browser goes to the authorization URL configured for your project. Your consent screen handles the user's session and decision. + +## Pushed authorization requests {% #par %} + +Pushed authorization requests (PAR) keep the authorization parameters out of the browser URL. The client first sends the parameters to the PAR endpoint: + +```http +POST /v1/oauth2/<PROJECT_ID>/par HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/json + +{ + "client_id": "<CLIENT_ID>", + "redirect_uri": "https://client.example.com/callback", + "response_type": "code", + "scope": "openid profile", + "state": "<STATE>", + "code_challenge": "<CODE_CHALLENGE>", + "code_challenge_method": "S256" +} +``` + +Appwrite returns a `request_uri` and the number of seconds before it expires: + +```json +{ + "request_uri": "urn:appwrite:oauth2:request:<REQUEST_ID>", + "expires_in": 600 +} +``` + +Before it expires, send the user to the authorization endpoint with only the URL-encoded `request_uri`. Do not repeat the original authorization parameters. + +```http +GET /v1/oauth2/<PROJECT_ID>/authorize?request_uri=<URL_ENCODED_REQUEST_URI> HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +``` + +# 2. Host the consent screen {% #consent %} + +The authorization URL is a page you host. It must make sure the user is signed in, load the pending grant, explain what the client is requesting, and record the user's decision. + +The examples in this section use the generated client SDKs. The authorization URL is normally a browser page, but the same grant operations are available across the client SDKs. + +## Find or create the grant {% #resolve-grant %} + +A grant is Appwrite's record of one pending authorization request. It identifies the signed-in user and client, and stores the requested scopes, resources, and redirect URI. The `grant_id` in the consent page URL identifies the record your page needs to load. + +Handle the incoming URL in this order: + +1. Look for `grant_id` in the URL. If it is present, save the value and pass it to `oauth2.getGrant()` in [Load the request](#load-grant). The returned grant tells the consent screen which client is requesting access and which scopes and resources to show the user. +2. If `grant_id` is missing, call `account.get()` to check whether the user has a project session. +3. If the user is signed out, build a return URL from the consent page's current path and query string. Send the user to your normal sign-in or sign-up page with that value in a `redirect` search parameter. +4. After authentication, read `redirect` and return the user to it. The original authorization parameters are now available alongside the user's session. + +### Create the grant after sign-in {% #create-grant-after-sign-in %} + +When the signed-in user returns without `grant_id`, call `oauth2.authorize()` with the original authorization parameters. Use the returned `grantId` to continue. If the SDK returns `redirectUrl` instead, send the user there. {% multicode %} ```client-web @@ -43,7 +119,7 @@ const result = await oauth2.authorize({ state: '<STATE>', // optional nonce: '<NONCE>', // optional codeChallenge: '<CODE_CHALLENGE>', // optional - codeChallengeMethod: 's256', // optional + codeChallengeMethod: 'S256', // optional prompt: '<PROMPT>', // optional maxAge: 0, // optional authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional @@ -69,7 +145,7 @@ Oauth2Authorize result = await oauth2.authorize( state: '<STATE>', // optional nonce: '<NONCE>', // optional codeChallenge: '<CODE_CHALLENGE>', // optional - codeChallengeMethod: 's256', // optional + codeChallengeMethod: 'S256', // optional prompt: '<PROMPT>', // optional maxAge: 0, // optional authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional @@ -93,7 +169,7 @@ let oauth2Authorize = try await oauth2.authorize( state: "<STATE>", // optional nonce: "<NONCE>", // optional code_challenge: "<CODE_CHALLENGE>", // optional - code_challenge_method: "s256", // optional + code_challenge_method: "S256", // optional prompt: "<PROMPT>", // optional max_age: 0, // optional authorization_details: "<AUTHORIZATION_DETAILS>", // optional @@ -120,7 +196,7 @@ val result = oauth2.authorize( state = "<STATE>", // (optional) nonce = "<NONCE>", // (optional) code_challenge = "<CODE_CHALLENGE>", // (optional) - code_challenge_method = "s256", // (optional) + code_challenge_method = "S256", // (optional) prompt = "<PROMPT>", // (optional) max_age = 0, // (optional) authorization_details = "<AUTHORIZATION_DETAILS>", // (optional) @@ -146,7 +222,7 @@ oauth2.authorize( "<STATE>", // state (optional) "<NONCE>", // nonce (optional) "<CODE_CHALLENGE>", // code_challenge (optional) - "s256", // code_challenge_method (optional) + "S256", // code_challenge_method (optional) "<PROMPT>", // prompt (optional) 0, // max_age (optional) "<AUTHORIZATION_DETAILS>", // authorization_details (optional) @@ -179,7 +255,7 @@ const result = await oauth2.authorize({ state: '<STATE>', // optional nonce: '<NONCE>', // optional codeChallenge: '<CODE_CHALLENGE>', // optional - codeChallengeMethod: 's256', // optional + codeChallengeMethod: 'S256', // optional prompt: '<PROMPT>', // optional maxAge: 0, // optional authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional @@ -190,17 +266,11 @@ console.log(result); ``` {% /multicode %} -Without a session on the project, Appwrite redirects to your authorization URL with the original request parameters attached. Sign the user in there (with your normal [Appwrite authentication](/docs/products/auth)), then send them back through the authorize endpoint so a grant can be created. - -# Host the consent screen {% #consent %} +For a PAR request, send the browser back to the authorization endpoint with only its `request_uri`, as shown in [Pushed authorization requests](#par). -Your authorization URL is a page you host. When Appwrite redirects a signed-in user to it with a `grant_id`, the page reads the grant, presents it, and records the user's decision. The consent endpoints authenticate with the user's session on your project. +## Load the request {% #load-grant %} -**Load the grant** to see which client, scopes, and resources are being requested, then render your UI. - -{% info title="Required scope" %} -Reading a grant requires the `oauth2.read` scope. Approving or rejecting one requires `oauth2.write`. -{% /info %} +Pass the grant ID to `oauth2.getGrant()`. Use the returned client details, scopes, and resources to explain the request on the consent screen. Keep the same grant ID for the approve or reject call after the user decides. {% multicode %} ```client-web @@ -301,7 +371,9 @@ console.log(result); ``` {% /multicode %} -**Approve** the grant to continue. Appwrite responds with the redirect URL back to the client, carrying the authorization code. Send the user there. +## Record the user's decision {% #decision %} + +When the user approves the request, you can pass the scopes they kept selected. Omit `scope` to approve every scope in the grant. {% multicode %} ```client-web @@ -414,7 +486,9 @@ console.log(result); ``` {% /multicode %} -**Reject** the grant if the user declines. Appwrite responds with the redirect URL carrying an error instead of a code. +The SDK response contains `redirectUrl`. Send the user to that URL to return them to the client. + +If the user declines, reject the grant and return them to the client with an `access_denied` error. {% multicode %} ```client-web @@ -515,8 +589,34 @@ console.log(result); ``` {% /multicode %} +The SDK requests JSON responses so it can behave consistently with other SDK methods. The approve and reject methods therefore return `redirectUrl`, and your browser code must navigate to it. A direct HTTP request without an `Accept: application/json` header receives a `302` redirect automatically. + +## Consent screen best practices {% #consent-best-practices %} + +- Show the client's name and logo so the user can recognize who is asking for access. +- Name the client in the approval action, such as **Allow Vantage**. +- Explain each scope in plain language instead of showing only its identifier. +- Let the user turn off optional scopes. Pass the remaining scopes to `oauth2.approve()`. +- Call attention to scopes that allow writing, deleting, broad access, or administrator-level access. +- Give the reject action clear, visible placement. Consent should be a real choice. +- Do not ask the user for their Appwrite password on the consent screen. Send signed-out users through your normal authentication flow. + +# Device flow authorization {% #device-flow %} + +Device flow is used when the client cannot easily open a browser or accept a callback, such as a TV or command-line tool. The client starts device authorization and shows the user a verification URL and user code. See [Device flow](/docs/partners/oauth-server/device-flow) for the client requests and polling behavior. + +Your verification page on the user's second device completes the authorization: + +1. Read `user_code` from the URL. If it is missing, let the user enter the code shown on the original device. +2. Ask the user to confirm that the code matches the one on the original device. +3. Make sure the user is signed in. If not, use the same `redirect` pattern as the consent screen so the user returns with the code intact. +4. Call `oauth2.createGrant({ userCode })`. This connects the pending device request to the signed-in user and returns its grant record, including the client and requested access to show on the verification page. +5. Pass the returned grant's ID to `oauth2.approve()` or `oauth2.reject()` after the user decides. + +The original device continues polling the token endpoint at the response's `interval`. After the user approves the grant, the device receives access and refresh tokens directly. Device flow does not use an authorization code callback. + # Redirect URI matching {% #redirect-uris %} -The `redirect_uri` on an authorization request must exactly match one of the client's registered redirect URIs, character for character. This is what stops an attacker from redirecting a code to a URL they control. +The `redirect_uri` on an authorization request must exactly match one of the client's registered redirect URIs, character for character. This stops an attacker from redirecting a code to a URL they control. -There is one narrow exception. For **public** clients, an `http` loopback address (`localhost`, `127.0.0.1`, or `[::1]`) matches on everything except the port. Native and CLI apps bind an unpredictable local port at runtime and cannot register it ahead of time (RFC 8252). Confidential clients get no such exception; their redirect URIs must match exactly, port included. +There is one narrow exception. For **public** clients, an `http` loopback address (`localhost`, `127.0.0.1`, or `[::1]`) matches on everything except the port. Native and CLI apps bind an unpredictable local port at runtime and cannot register it ahead of time (RFC 8252). Confidential clients get no such exception. Their redirect URIs must match exactly, including the port. diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/partners/oauth-server/clients/+page.markdoc index 9b11a8e2f5..6a2294219f 100644 --- a/src/routes/docs/partners/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/clients/+page.markdoc @@ -1,11 +1,13 @@ --- layout: article title: Clients -description: Register confidential and public OAuth clients against your Appwrite project's OAuth server and manage their secrets. +description: Register confidential and public OAuth clients against your Appwrite project's OAuth2 server and manage them from your own developer platform. back: /docs/partners/oauth-server --- -A **client** is a third-party app that authenticates users through your project's OAuth server. Each client registers the redirect URIs it is allowed to return to, and, depending on its type, receives a client secret. Clients are managed from the **Auth > OAuth2 server > Apps** tab in the Console, or with a [Server SDK](/docs/sdks#server). +A **client** is a third-party app that authenticates users through your project's OAuth2 server. Each client registers the redirect URIs it is allowed to return to and the post-logout redirect URIs it can end sessions at, sets its type, and chooses whether the [device flow](/docs/partners/oauth-server/device-flow) is enabled. Its other attributes serve two surfaces: branding like the name, logo, and tagline can appear on your consent screen, while attributes like tags, images, and the privacy policy URL are for your project's apps marketplace. + +Integrators never visit the Appwrite Console. You are expected to build a developer platform on your own website with the [Client SDKs](/docs/sdks#client)' `apps` service, which covers the full lifecycle: `create`, `update`, `get`, `list`, `delete`, along with `createSecret`, `listSecrets`, `getSecret`, `deleteSecret`, `updateTeam`, and `deleteTokens`. Any signed-in user on your project can call them; no API key is involved. The Console's **Auth > OAuth2 server > Apps** tab is your own administrative view of the same data. {% only_dark %} ![OAuth2 clients list in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-apps-list.avif) @@ -14,6 +16,8 @@ A **client** is a third-party app that authenticates users through your project' ![OAuth2 clients list in the Appwrite Console](/images/docs/oauth-server/oauth2-server-apps-list.avif) {% /only_light %} +Server SDKs matter in exactly two places: [introspecting](/docs/partners/oauth-server/tokens#introspect) a public client's tokens, which needs an API key because there is no client secret, and administrative operations like [curating labels](#labels). + # Confidential and public clients {% #client-types %} Every client is one of two types, and the difference comes down to a single question: can the app keep a secret? @@ -34,7 +38,7 @@ The type a client uses changes what it can do: | --- | --- | --- | | Client secret | Issued, sent on token requests | None issued | | PKCE | Optional (configurable per project) | Always required | -| Token introspection | Allowed | Not allowed | +| Token introspection | With its client secret | With a project API key holding the `oauth2.read` scope | | Default access token lifetime | 8 hours | 1 hour | | Default refresh token lifetime | 365 days | 30 days | @@ -42,602 +46,538 @@ Choose confidential whenever the app has a backend. It is the safer default: the # Register a client {% #register %} -Create a client from the **Apps** tab, or with the `create` method of the `Apps` service. Registering a confidential client returns its secret once. Store it immediately, because the full value cannot be retrieved again. - -{% only_dark %} -![Create an OAuth2 client dialog](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) -{% /only_dark %} -{% only_light %} -![Create an OAuth2 client dialog](/images/docs/oauth-server/oauth2-server-create-app.avif) -{% /only_light %} - -{% info title="Required scope" %} -The API key used for this call needs the `apps.write` scope. -{% /info %} +Create a client with the `create` method. It needs only a name and a redirect URI; everything else can be filled in later with `update`. Registering a confidential client also calls for a [secret](#secrets) before it can exchange tokens. {% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; +```client-web +import { Client, Apps, ID } from 'appwrite'; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID const apps = new Apps(client); -const result = await apps.create({ - appId: '<APP_ID>', - name: '<NAME>', - redirectUris: [], - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - postLogoutRedirectUris: [], // optional - enabled: false, // optional - type: 'public', // optional - deviceFlow: false, // optional - teamId: '<TEAM_ID>' // optional +const app = await apps.create({ + appId: ID.unique(), + name: 'Custom App', + redirectUris: ['http://customapp.localhost/auth/redirect'], }); ``` -```server-deno -import { Client, Apps } from "npm:node-appwrite"; +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Custom App', + redirectUris: ['http://customapp.localhost/auth/redirect'], +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Custom App", + redirectUris: ["http://customapp.localhost/auth/redirect"] +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Custom App", + redirectUris = listOf("http://customapp.localhost/auth/redirect") +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Custom App", // name + List.of("http://customapp.localhost/auth/redirect"), // redirectUris + null, // description (optional) + null, // clientUri (optional) + null, // logoUri (optional) + null, // privacyPolicyUrl (optional) + null, // termsUrl (optional) + null, // contacts (optional) + null, // tagline (optional) + null, // tags (optional) + null, // images (optional) + null, // supportUrl (optional) + null, // dataDeletionUrl (optional) + null, // postLogoutRedirectUris (optional) + null, // enabled (optional) + null, // type (optional) + null, // deviceFlow (optional) + null, // teamId (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Apps, ID } from "react-native-appwrite"; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID const apps = new Apps(client); -const result = await apps.create({ - appId: '<APP_ID>', - name: '<NAME>', - redirectUris: [], - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - postLogoutRedirectUris: [], // optional - enabled: false, // optional - type: 'public', // optional - deviceFlow: false, // optional - teamId: '<TEAM_ID>' // optional +const app = await apps.create({ + appId: ID.unique(), + name: 'Custom App', + redirectUris: ['http://customapp.localhost/auth/redirect'], }); ``` -```server-php -```php -<?php +{% /multicode %} -use Appwrite\Client; -use Appwrite\Services\Apps; +An app is owned by the user who created it. For team-oriented platforms, pass `teamId` on creation to make it team-owned instead: every team member can see it, while members with the `owner` or `developer` role manage it. -$client = (new Client()) - ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - ->setProject('<YOUR_PROJECT_ID>') // Your project ID - ->setKey('<YOUR_API_KEY>'); // Your secret API key +You can also create clients from the Console's **Apps** tab, which offers the same fields. -$apps = new Apps($client); +{% only_dark %} +![Create an OAuth2 client dialog](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) +{% /only_dark %} +{% only_light %} +![Create an OAuth2 client dialog](/images/docs/oauth-server/oauth2-server-create-app.avif) +{% /only_light %} -$result = $apps->create( - appId: '<APP_ID>', - name: '<NAME>', - redirectUris: [], - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - postLogoutRedirectUris: [], // optional - enabled: false, // optional - type: 'public', // optional - deviceFlow: false, // optional - teamId: '<TEAM_ID>' // optional -);``` -``` -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.models import App +{% info title="Use Storage for logos and images" %} +`logoUri` and `images` accept URLs, not files. [Appwrite Storage](/docs/products/storage) pairs well here: upload the file to a bucket, take its preview URL, and store that URL on the app. +{% /info %} -client = Client() -client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('<YOUR_PROJECT_ID>') # Your project ID -client.set_key('<YOUR_API_KEY>') # Your secret API key +# Manage client secrets {% #secrets %} -apps = Apps(client) +A confidential client authenticates with a secret. Four methods manage them in one place: `createSecret`, `listSecrets`, `getSecret`, and `deleteSecret`. -result: App = apps.create( - app_id = '<APP_ID>', - name = '<NAME>', - redirect_uris = [], - description = '<DESCRIPTION>', # optional - client_uri = 'https://example.com', # optional - logo_uri = 'https://example.com', # optional - privacy_policy_url = 'https://example.com', # optional - terms_url = 'https://example.com', # optional - contacts = [], # optional - tagline = '<TAGLINE>', # optional - tags = [], # optional - images = [], # optional - support_url = 'https://example.com', # optional - data_deletion_url = 'https://example.com', # optional - post_logout_redirect_uris = [], # optional - enabled = False, # optional - type = 'public', # optional - device_flow = False, # optional - team_id = '<TEAM_ID>' # optional -) +Generate a new secret with `createSecret`. The plaintext value is returned only in this response. -print(result.model_dump()) -``` -```server-ruby -require 'appwrite' +{% only_dark %} +![OAuth2 client secret shown once on creation](/images/docs/oauth-server/dark/oauth2-server-secret-created.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 client secret shown once on creation](/images/docs/oauth-server/oauth2-server-secret-created.avif) +{% /only_light %} -include Appwrite +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; -client = Client.new - .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint - .set_project('<YOUR_PROJECT_ID>') # Your project ID - .set_key('<YOUR_API_KEY>') # Your secret API key +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -apps = Apps.new(client) +const apps = new Apps(client); -result = apps.create( - app_id: '<APP_ID>', - name: '<NAME>', - redirect_uris: [], - description: '<DESCRIPTION>', # optional - client_uri: 'https://example.com', # optional - logo_uri: 'https://example.com', # optional - privacy_policy_url: 'https://example.com', # optional - terms_url: 'https://example.com', # optional - contacts: [], # optional - tagline: '<TAGLINE>', # optional - tags: [], # optional - images: [], # optional - support_url: 'https://example.com', # optional - data_deletion_url: 'https://example.com', # optional - post_logout_redirect_uris: [], # optional - enabled: false, # optional - type: 'public', # optional - device_flow: false, # optional - team_id: '<TEAM_ID>' # optional -) +const secret = await apps.createSecret({ + appId: '<APP_ID>', +}); ``` -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; +```client-flutter +import 'package:appwrite/appwrite.dart'; Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID Apps apps = Apps(client); -App result = await apps.create( +AppSecretPlaintext secret = await apps.createSecret( appId: '<APP_ID>', - name: '<NAME>', - redirectUris: [], - description: '<DESCRIPTION>', // (optional) - clientUri: 'https://example.com', // (optional) - logoUri: 'https://example.com', // (optional) - privacyPolicyUrl: 'https://example.com', // (optional) - termsUrl: 'https://example.com', // (optional) - contacts: [], // (optional) - tagline: '<TAGLINE>', // (optional) - tags: [], // (optional) - images: [], // (optional) - supportUrl: 'https://example.com', // (optional) - dataDeletionUrl: 'https://example.com', // (optional) - postLogoutRedirectUris: [], // (optional) - enabled: false, // (optional) - type: 'public', // (optional) - deviceFlow: false, // (optional) - teamId: '<TEAM_ID>', // (optional) ); ``` -```server-dotnet -```csharp -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; +```client-apple +import Appwrite -Client client = new Client() - .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .SetProject("<YOUR_PROJECT_ID>") // Your project ID - .SetKey("<YOUR_API_KEY>"); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -Apps apps = new Apps(client); +let apps = Apps(client) -App result = await apps.Create( - appId: "<APP_ID>", - name: "<NAME>", - redirectUris: new List<string>(), - description: "<DESCRIPTION>", // optional - clientUri: "https://example.com", // optional - logoUri: "https://example.com", // optional - privacyPolicyUrl: "https://example.com", // optional - termsUrl: "https://example.com", // optional - contacts: new List<string>(), // optional - tagline: "<TAGLINE>", // optional - tags: new List<string>(), // optional - images: new List<string>(), // optional - supportUrl: "https://example.com", // optional - dataDeletionUrl: "https://example.com", // optional - postLogoutRedirectUris: new List<string>(), // optional - enabled: false, // optional - type: "public", // optional - deviceFlow: false, // optional - teamId: "<TEAM_ID>" // optional -);``` +let secret = try await apps.createSecret( + appId: "<APP_ID>" +) ``` -```server-kotlin +```client-android-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Apps -val client = Client() +val client = Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key val apps = Apps(client) -val response = apps.create( - appId = "<APP_ID>", - name = "<NAME>", - redirectUris = listOf(), - description = "<DESCRIPTION>", // optional - clientUri = "https://example.com", // optional - logoUri = "https://example.com", // optional - privacyPolicyUrl = "https://example.com", // optional - termsUrl = "https://example.com", // optional - contacts = listOf(), // optional - tagline = "<TAGLINE>", // optional - tags = listOf(), // optional - images = listOf(), // optional - supportUrl = "https://example.com", // optional - dataDeletionUrl = "https://example.com", // optional - postLogoutRedirectUris = listOf(), // optional - enabled = false, // optional - type = "public", // optional - deviceFlow = false, // optional - teamId = "<TEAM_ID>" // optional +val secret = apps.createSecret( + appId = "<APP_ID>" ) ``` -```server-java +```client-android-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; import io.appwrite.services.Apps; -Client client = new Client() +Client client = new Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>"); // Your secret API key + .setProject("<YOUR_PROJECT_ID>"); // Your project ID Apps apps = new Apps(client); -apps.create( +apps.createSecret( "<APP_ID>", // appId - "<NAME>", // name - List.of(), // redirectUris - "<DESCRIPTION>", // description (optional) - "https://example.com", // clientUri (optional) - "https://example.com", // logoUri (optional) - "https://example.com", // privacyPolicyUrl (optional) - "https://example.com", // termsUrl (optional) - List.of(), // contacts (optional) - "<TAGLINE>", // tagline (optional) - List.of(), // tags (optional) - List.of(), // images (optional) - "https://example.com", // supportUrl (optional) - "https://example.com", // dataDeletionUrl (optional) - List.of(), // postLogoutRedirectUris (optional) - false, // enabled (optional) - "public", // type (optional) - false, // deviceFlow (optional) - "<TEAM_ID>", // teamId (optional) new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); return; } - System.out.println(result); + Log.d("Appwrite", result.toString()); }) ); +``` +```client-react-native +import { Client, Apps } from "react-native-appwrite"; +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const secret = await apps.createSecret({ + appId: '<APP_ID>', +}); ``` -```server-swift +{% /multicode %} + +A client can hold several secrets at once, which is how you rotate them without downtime: create the new secret, roll it out, then delete the old one. Each entry in `listSecrets` carries the metadata for deciding which secret can be removed safely: a `hint` of the value, who created it (`createdById`, `createdByName`), when it was created, and `lastAccessedAt` for when it last authenticated a request. + +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const secrets = await apps.listSecrets({ + appId: '<APP_ID>', +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Apps apps = Apps(client); + +AppSecretList secrets = await apps.listSecrets( + appId: '<APP_ID>', +); +``` +```client-apple import Appwrite let client = Client() .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key let apps = Apps(client) -let app = try await apps.create( - appId: "<APP_ID>", - name: "<NAME>", - redirectUris: [], - description: "<DESCRIPTION>", // optional - clientUri: "https://example.com", // optional - logoUri: "https://example.com", // optional - privacyPolicyUrl: "https://example.com", // optional - termsUrl: "https://example.com", // optional - contacts: [], // optional - tagline: "<TAGLINE>", // optional - tags: [], // optional - images: [], // optional - supportUrl: "https://example.com", // optional - dataDeletionUrl: "https://example.com", // optional - postLogoutRedirectUris: [], // optional - enabled: false, // optional - type: "public", // optional - deviceFlow: false, // optional - teamId: "<TEAM_ID>" // optional +let secrets = try await apps.listSecrets( + appId: "<APP_ID>" ) - ``` -```server-go -package main +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps -import ( - "fmt" - "github.com/repoowner/reponame/client" - "github.com/repoowner/reponame/apps" -) +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -client := client.New( - client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") - client.WithProject("<YOUR_PROJECT_ID>") - appwrite.WithKey("<YOUR_API_KEY>") -) +val apps = Apps(client) -service := apps.New(client) - -response, error := service.Create( - "<APP_ID>", - "<NAME>", - []string{}, - apps.WithCreateDescription("<DESCRIPTION>"), - apps.WithCreateClientUri("https://example.com"), - apps.WithCreateLogoUri("https://example.com"), - apps.WithCreatePrivacyPolicyUrl("https://example.com"), - apps.WithCreateTermsUrl("https://example.com"), - apps.WithCreateContacts([]string{}), - apps.WithCreateTagline("<TAGLINE>"), - apps.WithCreateTags([]string{}), - apps.WithCreateImages([]string{}), - apps.WithCreateSupportUrl("https://example.com"), - apps.WithCreateDataDeletionUrl("https://example.com"), - apps.WithCreatePostLogoutRedirectUris([]string{}), - apps.WithCreateEnabled(false), - apps.WithCreateType("public"), - apps.WithCreateDeviceFlow(false), - apps.WithCreateTeamId("<TEAM_ID>"), +val secrets = apps.listSecrets( + appId = "<APP_ID>" ) ``` -```server-rust -use appwrite::Client; -use appwrite::services::Apps; +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint - client.set_project("<YOUR_PROJECT_ID>"); // Your project ID - client.set_key("<YOUR_API_KEY>"); // Your secret API key +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID - let apps = Apps::new(&client); +Apps apps = new Apps(client); - let result = apps.create( - "<APP_ID>", - "<NAME>", - vec![], - Some("<DESCRIPTION>"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some(vec![]), // optional - Some("<TAGLINE>"), // optional - Some(vec![]), // optional - Some(vec![]), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some(vec![]), // optional - Some(false), // optional - Some("public"), // optional - Some(false), // optional - Some("<TEAM_ID>") // optional - ).await?; - - let _ = result; +apps.listSecrets( + "<APP_ID>", // appId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } - Ok(()) -} + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Apps } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const secrets = await apps.listSecrets({ + appId: '<APP_ID>', +}); ``` {% /multicode %} -The `type` parameter accepts `confidential` (the default) or `public`. Set `deviceFlow` to `true` to let the client use the [device authorization flow](/docs/partners/oauth-server/device-flow). The branding fields (`logoUri`, `tagline`, `privacyPolicyUrl`, `termsUrl`) appear on the consent screen your users see. +`getSecret` reads a single entry by ID, and `deleteSecret` revokes it immediately. -# Manage client secrets {% #secrets %} +# List clients {% #list %} -A confidential client authenticates with a secret. Generate a new secret with the `createSecret` method. The plaintext value is returned only in this response. +The `list` method drives three different screens, depending on the queries you pass: -{% only_dark %} -![OAuth2 client secret shown once on creation](/images/docs/oauth-server/dark/oauth2-server-secret-created.avif) -{% /only_dark %} -{% only_light %} -![OAuth2 client secret shown once on creation](/images/docs/oauth-server/oauth2-server-secret-created.avif) -{% /only_light %} +- **A developer portal**: filter by the signed-in user with `Query.equal('userId', userId)` so developers manage their own apps. +- **Team settings**: filter with `Query.equal('teamId', teamId)` for the apps a team owns. +- **An apps marketplace**: list without an owner filter to show all registered apps. Filter by [labels](#labels), such as `Query.contains('labels', ['official'])`, when the marketplace should only show apps you have vetted, because labels cannot be self-assigned. + +Always paginate with `Query.limit()` and `Query.cursorAfter()`; a marketplace can grow past any single page. {% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; +```client-web +import { Client, Apps, Query } from 'appwrite'; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID const apps = new Apps(client); -const result = await apps.createSecret({ - appId: '<APP_ID>' +const portal = await apps.list({ + queries: [ + Query.equal('userId', '<SIGNED_IN_USER_ID>'), + Query.limit(25), + ], }); ``` -```server-deno -import { Client, Apps } from "npm:node-appwrite"; +```client-flutter +import 'package:appwrite/appwrite.dart'; -const client = new Client() +Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -const apps = new Apps(client); +Apps apps = Apps(client); -const result = await apps.createSecret({ - appId: '<APP_ID>' -}); +AppList portal = await apps.list( + queries: [ + Query.equal('userId', '<SIGNED_IN_USER_ID>'), + Query.limit(25), + ], +); ``` -```server-php -```php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; +```client-apple +import Appwrite -$client = (new Client()) - ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - ->setProject('<YOUR_PROJECT_ID>') // Your project ID - ->setKey('<YOUR_API_KEY>'); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -$apps = new Apps($client); +let apps = Apps(client) -$result = $apps->createSecret( - appId: '<APP_ID>' -);``` +let portal = try await apps.list( + queries: [ + Query.equal("userId", value: "<SIGNED_IN_USER_ID>"), + Query.limit(25) + ] +) ``` -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.models import AppSecretPlaintext +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.Query +import io.appwrite.services.Apps -client = Client() -client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('<YOUR_PROJECT_ID>') # Your project ID -client.set_key('<YOUR_API_KEY>') # Your secret API key +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -apps = Apps(client) +val apps = Apps(client) -result: AppSecretPlaintext = apps.create_secret( - app_id = '<APP_ID>' +val portal = apps.list( + queries = listOf( + Query.equal("userId", "<SIGNED_IN_USER_ID>"), + Query.limit(25) + ) ) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.Query; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; -print(result.model_dump()) +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Apps apps = new Apps(client); + +apps.list( + List.of( + Query.Companion.equal("userId", "<SIGNED_IN_USER_ID>"), + Query.Companion.limit(25) + ), // queries (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); ``` -```server-ruby -require 'appwrite' +```client-react-native +import { Client, Apps, Query } from "react-native-appwrite"; -include Appwrite +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -client = Client.new - .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint - .set_project('<YOUR_PROJECT_ID>') # Your project ID - .set_key('<YOUR_API_KEY>') # Your secret API key +const apps = new Apps(client); -apps = Apps.new(client) +const portal = await apps.list({ + queries: [ + Query.equal('userId', '<SIGNED_IN_USER_ID>'), + Query.limit(25), + ], +}); +``` +{% /multicode %} -result = apps.create_secret( - app_id: '<APP_ID>' -) +# Get a client {% #get %} + +Read a single client with `get`. This backs the app detail page in a developer portal, and a [consent screen](/docs/partners/oauth-server/authorization#consent) uses it to show the requesting app's name and logo. + +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.get({ + appId: '<APP_ID>', +}); ``` -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; +```client-flutter +import 'package:appwrite/appwrite.dart'; Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID Apps apps = Apps(client); -AppSecretPlaintext result = await apps.createSecret( +App app = await apps.get( appId: '<APP_ID>', ); ``` -```server-dotnet -```csharp -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; +```client-apple +import Appwrite -Client client = new Client() - .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .SetProject("<YOUR_PROJECT_ID>") // Your project ID - .SetKey("<YOUR_API_KEY>"); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -Apps apps = new Apps(client); +let apps = Apps(client) -AppSecretPlaintext result = await apps.CreateSecret( +let app = try await apps.get( appId: "<APP_ID>" -);``` +) ``` -```server-kotlin +```client-android-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Apps -val client = Client() +val client = Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key val apps = Apps(client) -val response = apps.createSecret( +val app = apps.get( appId = "<APP_ID>" ) ``` -```server-java +```client-android-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; import io.appwrite.services.Apps; -Client client = new Client() +Client client = new Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>"); // Your secret API key + .setProject("<YOUR_PROJECT_ID>"); // Your project ID Apps apps = new Apps(client); -apps.createSecret( +apps.get( "<APP_ID>", // appId new CoroutineCallback<>((result, error) -> { if (error != null) { @@ -645,307 +585,270 @@ apps.createSecret( return; } - System.out.println(result); + Log.d("Appwrite", result.toString()); }) ); - ``` -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key +```client-react-native +import { Client, Apps } from "react-native-appwrite"; -let apps = Apps(client) +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -let appSecretPlaintext = try await apps.createSecret( - appId: "<APP_ID>" -) +const apps = new Apps(client); +const app = await apps.get({ + appId: '<APP_ID>', +}); ``` -```server-go -package main +{% /multicode %} -import ( - "fmt" - "github.com/repoowner/reponame/client" - "github.com/repoowner/reponame/apps" -) +# Update a client {% #update %} -client := client.New( - client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") - client.WithProject("<YOUR_PROJECT_ID>") - appwrite.WithKey("<YOUR_API_KEY>") -) +Change a client's redirect URIs, branding, or type with the `update` method. -service := apps.New(client) +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; -response, error := service.CreateSecret( - "<APP_ID>", -) +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.update({ + appId: '<APP_ID>', + name: 'Custom App', + description: 'A third-party app that signs in with your product.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, +}); ``` -```server-rust -use appwrite::Client; -use appwrite::services::Apps; +```client-flutter +import 'package:appwrite/appwrite.dart'; -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint - client.set_project("<YOUR_PROJECT_ID>"); // Your project ID - client.set_key("<YOUR_API_KEY>"); // Your secret API key +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID - let apps = Apps::new(&client); +Apps apps = Apps(client); - let result = apps.create_secret( - "<APP_ID>" - ).await?; +App app = await apps.update( + appId: '<APP_ID>', + name: 'Custom App', + description: 'A third-party app that signs in with your product.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, +); +``` +```client-apple +import Appwrite - let _ = result; +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID - Ok(()) -} +let apps = Apps(client) + +let app = try await apps.update( + appId: "<APP_ID>", + name: "Custom App", + description: "A third-party app that signs in with your product.", + logoUri: "https://example.com/logo.png", + redirectUris: ["http://customapp.localhost/auth/redirect"], + enabled: true +) ``` -{% /multicode %} +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps -A client can hold more than one secret at a time, which lets you rotate without downtime: create the new secret, deploy it, then delete the old one. Deleting a secret immediately breaks any client still using it, including token refreshes in flight. +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -# List clients {% #list %} +val apps = Apps(client) -{% info title="Required scope" %} -The API key used for this call needs the `apps.read` scope. -{% /info %} +val app = apps.update( + appId = "<APP_ID>", + name = "Custom App", + description = "A third-party app that signs in with your product.", + logoUri = "https://example.com/logo.png", + redirectUris = listOf("http://customapp.localhost/auth/redirect"), + enabled = true +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; -{% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key +Apps apps = new Apps(client); -const apps = new Apps(client); +apps.update( + "<APP_ID>", // appId + "Custom App", // name + "A third-party app that signs in with your product.", // description (optional) + null, // clientUri (optional) + "https://example.com/logo.png", // logoUri (optional) + null, // privacyPolicyUrl (optional) + null, // termsUrl (optional) + null, // contacts (optional) + null, // tagline (optional) + null, // tags (optional) + null, // images (optional) + null, // supportUrl (optional) + null, // dataDeletionUrl (optional) + true, // enabled (optional) + List.of("http://customapp.localhost/auth/redirect"), // redirectUris (optional) + null, // postLogoutRedirectUris (optional) + null, // type (optional) + null, // deviceFlow (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } -const result = await apps.list({ - queries: [], // optional - total: false // optional -}); + Log.d("Appwrite", result.toString()); + }) +); ``` -```server-deno -import { Client, Apps } from "npm:node-appwrite"; +```client-react-native +import { Client, Apps } from "react-native-appwrite"; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID const apps = new Apps(client); -const result = await apps.list({ - queries: [], // optional - total: false // optional +const app = await apps.update({ + appId: '<APP_ID>', + name: 'Custom App', + description: 'A third-party app that signs in with your product.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, }); ``` -```server-php -```php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; - -$client = (new Client()) - ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - ->setProject('<YOUR_PROJECT_ID>') // Your project ID - ->setKey('<YOUR_API_KEY>'); // Your secret API key - -$apps = new Apps($client); - -$result = $apps->list( - queries: [], // optional - total: false // optional -);``` -``` -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.models import AppsList - -client = Client() -client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('<YOUR_PROJECT_ID>') # Your project ID -client.set_key('<YOUR_API_KEY>') # Your secret API key +{% /multicode %} -apps = Apps(client) +The `type` parameter accepts `confidential` (the default) or `public`. Set `deviceFlow` to `true` to let the client use the [device authorization flow](/docs/partners/oauth-server/device-flow). The branding fields (`logoUri`, `tagline`, `privacyPolicyUrl`, `termsUrl`) can appear on the consent screen, and they fill out the app's listing on your marketplace. -result: AppsList = apps.list( - queries = [], # optional - total = False # optional -) +# Transfer to a team {% #transfer %} -print(result.model_dump()) -``` -```server-ruby -require 'appwrite' +Convert a user-owned app to team ownership, or move it between teams, with `updateTeam`. The member doing the transfer needs the `owner` or `developer` role in the app's current team, and at least membership in the new one. -include Appwrite +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; -client = Client.new - .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint - .set_project('<YOUR_PROJECT_ID>') # Your project ID - .set_key('<YOUR_API_KEY>') # Your secret API key +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -apps = Apps.new(client) +const apps = new Apps(client); -result = apps.list( - queries: [], # optional - total: false # optional -) +const app = await apps.updateTeam({ + appId: '<APP_ID>', + teamId: '<TEAM_ID>', +}); ``` -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; +```client-flutter +import 'package:appwrite/appwrite.dart'; Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID Apps apps = Apps(client); -AppsList result = await apps.list( - queries: [], // (optional) - total: false, // (optional) +App app = await apps.updateTeam( + appId: '<APP_ID>', + teamId: '<TEAM_ID>', ); ``` -```server-dotnet -```csharp -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; +```client-apple +import Appwrite -Client client = new Client() - .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .SetProject("<YOUR_PROJECT_ID>") // Your project ID - .SetKey("<YOUR_API_KEY>"); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -Apps apps = new Apps(client); +let apps = Apps(client) -AppsList result = await apps.List( - queries: new List<string>(), // optional - total: false // optional -);``` +let app = try await apps.updateTeam( + appId: "<APP_ID>", + teamId: "<TEAM_ID>" +) ``` -```server-kotlin +```client-android-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Apps -val client = Client() +val client = Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key val apps = Apps(client) -val response = apps.list( - queries = listOf(), // optional - total = false // optional +val app = apps.updateTeam( + appId = "<APP_ID>", + teamId = "<TEAM_ID>" ) ``` -```server-java +```client-android-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; import io.appwrite.services.Apps; -Client client = new Client() +Client client = new Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>"); // Your secret API key + .setProject("<YOUR_PROJECT_ID>"); // Your project ID Apps apps = new Apps(client); -apps.list( - List.of(), // queries (optional) - false, // total (optional) +apps.updateTeam( + "<APP_ID>", // appId + "<TEAM_ID>", // teamId new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); return; } - System.out.println(result); + Log.d("Appwrite", result.toString()); }) ); - -``` -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key - -let apps = Apps(client) - -let appsList = try await apps.list( - queries: [], // optional - total: false // optional -) - -``` -```server-go -package main - -import ( - "fmt" - "github.com/repoowner/reponame/client" - "github.com/repoowner/reponame/apps" -) - -client := client.New( - client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") - client.WithProject("<YOUR_PROJECT_ID>") - appwrite.WithKey("<YOUR_API_KEY>") -) - -service := apps.New(client) - -response, error := service.List( - apps.WithListQueries([]string{}), - apps.WithListTotal(false), -) ``` -```server-rust -use appwrite::Client; -use appwrite::services::Apps; - -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint - client.set_project("<YOUR_PROJECT_ID>"); // Your project ID - client.set_key("<YOUR_API_KEY>"); // Your secret API key - - let apps = Apps::new(&client); +```client-react-native +import { Client, Apps } from "react-native-appwrite"; - let result = apps.list( - Some(vec![]), // optional - Some(false) // optional - ).await?; +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID - let _ = result; +const apps = new Apps(client); - Ok(()) -} +const app = await apps.updateTeam({ + appId: '<APP_ID>', + teamId: '<TEAM_ID>', +}); ``` {% /multicode %} -# Update a client {% #update %} +# Curate with labels {% #labels %} -Change a client's redirect URIs, branding, or type with the `update` method. +Labels are trust markers like `official`, `partner`, or `verified`. They are read-only for clients: only a [Server SDK](/docs/sdks#server) using a project API key with the `apps.write` scope can set them, so app owners cannot mark themselves as trusted. That is what makes them safe to filter a marketplace by. {% multicode %} ```server-nodejs @@ -958,25 +861,9 @@ const client = new Client() const apps = new Apps(client); -const result = await apps.update({ +const app = await apps.updateLabels({ appId: '<APP_ID>', - name: '<NAME>', - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - enabled: false, // optional - redirectUris: [], // optional - postLogoutRedirectUris: [], // optional - type: 'public', // optional - deviceFlow: false // optional + labels: ['official'], }); ``` ```server-deno @@ -989,29 +876,12 @@ const client = new Client() const apps = new Apps(client); -const result = await apps.update({ +const app = await apps.updateLabels({ appId: '<APP_ID>', - name: '<NAME>', - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - enabled: false, // optional - redirectUris: [], // optional - postLogoutRedirectUris: [], // optional - type: 'public', // optional - deviceFlow: false // optional + labels: ['official'], }); ``` ```server-php -```php <?php use Appwrite\Client; @@ -1024,31 +894,14 @@ $client = (new Client()) $apps = new Apps($client); -$result = $apps->update( +$app = $apps->updateLabels( appId: '<APP_ID>', - name: '<NAME>', - description: '<DESCRIPTION>', // optional - clientUri: 'https://example.com', // optional - logoUri: 'https://example.com', // optional - privacyPolicyUrl: 'https://example.com', // optional - termsUrl: 'https://example.com', // optional - contacts: [], // optional - tagline: '<TAGLINE>', // optional - tags: [], // optional - images: [], // optional - supportUrl: 'https://example.com', // optional - dataDeletionUrl: 'https://example.com', // optional - enabled: false, // optional - redirectUris: [], // optional - postLogoutRedirectUris: [], // optional - type: 'public', // optional - deviceFlow: false // optional -);``` + labels: ['official'] +); ``` ```server-python from appwrite.client import Client from appwrite.services.apps import Apps -from appwrite.models import App client = Client() client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint @@ -1057,28 +910,10 @@ client.set_key('<YOUR_API_KEY>') # Your secret API key apps = Apps(client) -result: App = apps.update( +app = apps.update_labels( app_id = '<APP_ID>', - name = '<NAME>', - description = '<DESCRIPTION>', # optional - client_uri = 'https://example.com', # optional - logo_uri = 'https://example.com', # optional - privacy_policy_url = 'https://example.com', # optional - terms_url = 'https://example.com', # optional - contacts = [], # optional - tagline = '<TAGLINE>', # optional - tags = [], # optional - images = [], # optional - support_url = 'https://example.com', # optional - data_deletion_url = 'https://example.com', # optional - enabled = False, # optional - redirect_uris = [], # optional - post_logout_redirect_uris = [], # optional - type = 'public', # optional - device_flow = False # optional + labels = ['official'] ) - -print(result.model_dump()) ``` ```server-ruby require 'appwrite' @@ -1092,25 +927,9 @@ client = Client.new apps = Apps.new(client) -result = apps.update( +app = apps.update_labels( app_id: '<APP_ID>', - name: '<NAME>', - description: '<DESCRIPTION>', # optional - client_uri: 'https://example.com', # optional - logo_uri: 'https://example.com', # optional - privacy_policy_url: 'https://example.com', # optional - terms_url: 'https://example.com', # optional - contacts: [], # optional - tagline: '<TAGLINE>', # optional - tags: [], # optional - images: [], # optional - support_url: 'https://example.com', # optional - data_deletion_url: 'https://example.com', # optional - enabled: false, # optional - redirect_uris: [], # optional - post_logout_redirect_uris: [], # optional - type: 'public', # optional - device_flow: false # optional + labels: ['official'] ) ``` ```server-dart @@ -1123,29 +942,12 @@ Client client = Client() Apps apps = Apps(client); -App result = await apps.update( +App app = await apps.updateLabels( appId: '<APP_ID>', - name: '<NAME>', - description: '<DESCRIPTION>', // (optional) - clientUri: 'https://example.com', // (optional) - logoUri: 'https://example.com', // (optional) - privacyPolicyUrl: 'https://example.com', // (optional) - termsUrl: 'https://example.com', // (optional) - contacts: [], // (optional) - tagline: '<TAGLINE>', // (optional) - tags: [], // (optional) - images: [], // (optional) - supportUrl: 'https://example.com', // (optional) - dataDeletionUrl: 'https://example.com', // (optional) - enabled: false, // (optional) - redirectUris: [], // (optional) - postLogoutRedirectUris: [], // (optional) - type: 'public', // (optional) - deviceFlow: false, // (optional) + labels: ['official'], ); ``` ```server-dotnet -```csharp using Appwrite; using Appwrite.Models; using Appwrite.Services; @@ -1157,30 +959,13 @@ Client client = new Client() Apps apps = new Apps(client); -App result = await apps.Update( +App app = await apps.UpdateLabels( appId: "<APP_ID>", - name: "<NAME>", - description: "<DESCRIPTION>", // optional - clientUri: "https://example.com", // optional - logoUri: "https://example.com", // optional - privacyPolicyUrl: "https://example.com", // optional - termsUrl: "https://example.com", // optional - contacts: new List<string>(), // optional - tagline: "<TAGLINE>", // optional - tags: new List<string>(), // optional - images: new List<string>(), // optional - supportUrl: "https://example.com", // optional - dataDeletionUrl: "https://example.com", // optional - enabled: false, // optional - redirectUris: new List<string>(), // optional - postLogoutRedirectUris: new List<string>(), // optional - type: "public", // optional - deviceFlow: false // optional -);``` + labels: new List<string> { "official" } +); ``` ```server-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Apps val client = Client() @@ -1190,25 +975,9 @@ val client = Client() val apps = Apps(client) -val response = apps.update( +val app = apps.updateLabels( appId = "<APP_ID>", - name = "<NAME>", - description = "<DESCRIPTION>", // optional - clientUri = "https://example.com", // optional - logoUri = "https://example.com", // optional - privacyPolicyUrl = "https://example.com", // optional - termsUrl = "https://example.com", // optional - contacts = listOf(), // optional - tagline = "<TAGLINE>", // optional - tags = listOf(), // optional - images = listOf(), // optional - supportUrl = "https://example.com", // optional - dataDeletionUrl = "https://example.com", // optional - enabled = false, // optional - redirectUris = listOf(), // optional - postLogoutRedirectUris = listOf(), // optional - type = "public", // optional - deviceFlow = false // optional + labels = listOf("official") ) ``` ```server-java @@ -1223,25 +992,9 @@ Client client = new Client() Apps apps = new Apps(client); -apps.update( +apps.updateLabels( "<APP_ID>", // appId - "<NAME>", // name - "<DESCRIPTION>", // description (optional) - "https://example.com", // clientUri (optional) - "https://example.com", // logoUri (optional) - "https://example.com", // privacyPolicyUrl (optional) - "https://example.com", // termsUrl (optional) - List.of(), // contacts (optional) - "<TAGLINE>", // tagline (optional) - List.of(), // tags (optional) - List.of(), // images (optional) - "https://example.com", // supportUrl (optional) - "https://example.com", // dataDeletionUrl (optional) - false, // enabled (optional) - List.of(), // redirectUris (optional) - List.of(), // postLogoutRedirectUris (optional) - "public", // type (optional) - false, // deviceFlow (optional) + List.of("official"), // labels new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); @@ -1251,7 +1004,6 @@ apps.update( System.out.println(result); }) ); - ``` ```server-swift import Appwrite @@ -1263,196 +1015,189 @@ let client = Client() let apps = Apps(client) -let app = try await apps.update( +let app = try await apps.updateLabels( appId: "<APP_ID>", - name: "<NAME>", - description: "<DESCRIPTION>", // optional - clientUri: "https://example.com", // optional - logoUri: "https://example.com", // optional - privacyPolicyUrl: "https://example.com", // optional - termsUrl: "https://example.com", // optional - contacts: [], // optional - tagline: "<TAGLINE>", // optional - tags: [], // optional - images: [], // optional - supportUrl: "https://example.com", // optional - dataDeletionUrl: "https://example.com", // optional - enabled: false, // optional - redirectUris: [], // optional - postLogoutRedirectUris: [], // optional - type: "public", // optional - deviceFlow: false // optional + labels: ["official"] ) - ``` ```server-go package main import ( "fmt" - "github.com/repoowner/reponame/client" - "github.com/repoowner/reponame/apps" + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" ) -client := client.New( - client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") - client.WithProject("<YOUR_PROJECT_ID>") - appwrite.WithKey("<YOUR_API_KEY>") -) +func main() { + c := client.New( + client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + client.WithProject("<YOUR_PROJECT_ID>"), + client.WithKey("<YOUR_API_KEY>"), + ) -service := apps.New(client) - -response, error := service.Update( - "<APP_ID>", - "<NAME>", - apps.WithUpdateDescription("<DESCRIPTION>"), - apps.WithUpdateClientUri("https://example.com"), - apps.WithUpdateLogoUri("https://example.com"), - apps.WithUpdatePrivacyPolicyUrl("https://example.com"), - apps.WithUpdateTermsUrl("https://example.com"), - apps.WithUpdateContacts([]string{}), - apps.WithUpdateTagline("<TAGLINE>"), - apps.WithUpdateTags([]string{}), - apps.WithUpdateImages([]string{}), - apps.WithUpdateSupportUrl("https://example.com"), - apps.WithUpdateDataDeletionUrl("https://example.com"), - apps.WithUpdateEnabled(false), - apps.WithUpdateRedirectUris([]string{}), - apps.WithUpdatePostLogoutRedirectUris([]string{}), - apps.WithUpdateType("public"), - apps.WithUpdateDeviceFlow(false), -) + service := apps.New(c) + + app, err := service.UpdateLabels( + "<APP_ID>", + []string{"official"}, + ) + if err != nil { + panic(err) + } + + fmt.Println(app) +} ``` ```server-rust -use appwrite::Client; -use appwrite::services::Apps; +use appwrite::client::Client; +use appwrite::services::apps::Apps; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint - client.set_project("<YOUR_PROJECT_ID>"); // Your project ID - client.set_key("<YOUR_API_KEY>"); // Your secret API key + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .set_project("<YOUR_PROJECT_ID>") // Your project ID + .set_key("<YOUR_API_KEY>"); // Your secret API key let apps = Apps::new(&client); - let result = apps.update( - "<APP_ID>", - "<NAME>", - Some("<DESCRIPTION>"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some(vec![]), // optional - Some("<TAGLINE>"), // optional - Some(vec![]), // optional - Some(vec![]), // optional - Some("https://example.com"), // optional - Some("https://example.com"), // optional - Some(false), // optional - Some(vec![]), // optional - Some(vec![]), // optional - Some("public"), // optional - Some(false) // optional - ).await?; - - let _ = result; + let app = apps + .update_labels( + "<APP_ID>", + vec!["official".into()], + ) + .await?; + + let _ = app; Ok(()) } ``` {% /multicode %} -# Delete a client {% #delete %} +Labels replace the previous set on every call. Up to 100 labels are allowed, each up to 36 alphanumeric characters. -Deleting a client immediately invalidates every token issued to it. +# Revoke all tokens {% #revoke-tokens %} + +`deleteTokens` invalidates every token issued to a client at once: a kill switch for all of its sessions. Reach for it when testing, since it forces the consent screen to reappear, or as an emergency response to a leaked secret, together with rotating the secret itself. {% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; +```client-web +import { Client, Apps } from 'appwrite'; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID const apps = new Apps(client); -const result = await apps.delete({ - appId: '<APP_ID>' +await apps.deleteTokens({ + appId: '<APP_ID>', }); ``` -```server-deno -import { Client, Apps } from "npm:node-appwrite"; +```client-flutter +import 'package:appwrite/appwrite.dart'; -const client = new Client() +Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -const apps = new Apps(client); +Apps apps = Apps(client); -const result = await apps.delete({ - appId: '<APP_ID>' -}); +await apps.deleteTokens( + appId: '<APP_ID>', +); ``` -```server-php -```php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; +```client-apple +import Appwrite -$client = (new Client()) - ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - ->setProject('<YOUR_PROJECT_ID>') // Your project ID - ->setKey('<YOUR_API_KEY>'); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -$apps = new Apps($client); +let apps = Apps(client) -$result = $apps->delete( - appId: '<APP_ID>' -);``` +try await apps.deleteTokens( + appId: "<APP_ID>" +) ``` -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps -client = Client() -client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint -client.set_project('<YOUR_PROJECT_ID>') # Your project ID -client.set_key('<YOUR_API_KEY>') # Your secret API key +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -apps = Apps(client) +val apps = Apps(client) -result = apps.delete( - app_id = '<APP_ID>' +apps.deleteTokens( + appId = "<APP_ID>" ) ``` -```server-ruby -require 'appwrite' +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; -include Appwrite +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID -client = Client.new - .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint - .set_project('<YOUR_PROJECT_ID>') # Your project ID - .set_key('<YOUR_API_KEY>') # Your secret API key +Apps apps = new Apps(client); -apps = Apps.new(client) +apps.deleteTokens( + "<APP_ID>", // appId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } -result = apps.delete( - app_id: '<APP_ID>' -) + Log.d("Appwrite", result.toString()); + }) +); ``` -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; +```client-react-native +import { Client, Apps } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +await apps.deleteTokens({ + appId: '<APP_ID>', +}); +``` +{% /multicode %} + +# Delete a client {% #delete %} + +Deleting a client immediately invalidates every token issued to it. + +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +await apps.delete({ + appId: '<APP_ID>', +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; Client client = Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>') // Your project ID - .setKey('<YOUR_API_KEY>'); // Your secret API key + .setProject('<YOUR_PROJECT_ID>'); // Your project ID Apps apps = Apps(client); @@ -1460,48 +1205,41 @@ await apps.delete( appId: '<APP_ID>', ); ``` -```server-dotnet -```csharp -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; +```client-apple +import Appwrite -Client client = new Client() - .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .SetProject("<YOUR_PROJECT_ID>") // Your project ID - .SetKey("<YOUR_API_KEY>"); // Your secret API key +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID -Apps apps = new Apps(client); +let apps = Apps(client) -await apps.Delete( +try await apps.delete( appId: "<APP_ID>" -);``` +) ``` -```server-kotlin +```client-android-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Apps -val client = Client() +val client = Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key val apps = Apps(client) -val response = apps.delete( +apps.delete( appId = "<APP_ID>" ) ``` -```server-java +```client-android-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; import io.appwrite.services.Apps; -Client client = new Client() +Client client = new Client(context) .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>"); // Your secret API key + .setProject("<YOUR_PROJECT_ID>"); // Your project ID Apps apps = new Apps(client); @@ -1513,67 +1251,51 @@ apps.delete( return; } - System.out.println(result); + Log.d("Appwrite", result.toString()); }) ); - ``` -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - .setKey("<YOUR_API_KEY>") // Your secret API key +```client-react-native +import { Client, Apps } from "react-native-appwrite"; -let apps = Apps(client) +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID -let result = try await apps.delete( - appId: "<APP_ID>" -) +const apps = new Apps(client); +await apps.delete({ + appId: '<APP_ID>', +}); ``` -```server-go -package main +{% /multicode %} -import ( - "fmt" - "github.com/repoowner/reponame/client" - "github.com/repoowner/reponame/apps" -) +# Dynamic client registration {% #dynamic-registration %} -client := client.New( - client.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1") - client.WithProject("<YOUR_PROJECT_ID>") - appwrite.WithKey("<YOUR_API_KEY>") -) +Clients can also register themselves over plain HTTP, without an Appwrite SDK or a signed-in user, through the registration endpoint ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)). This is what makes your OAuth2 server compatible with MCP servers and other software that provisions its own client on first contact. Registration is rate-limited per IP. -service := apps.New(client) +```http +POST /v1/oauth2/<PROJECT_ID>/register HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/json -response, error := service.Delete( - "<APP_ID>", -) +{ + "client_name": "MCP Client", + "redirect_uris": ["http://customapp.localhost/auth/redirect"], + "token_endpoint_auth_method": "none" +} ``` -```server-rust -use appwrite::Client; -use appwrite::services::Apps; - -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint - client.set_project("<YOUR_PROJECT_ID>"); // Your project ID - client.set_key("<YOUR_API_KEY>"); // Your secret API key - - let apps = Apps::new(&client); - - let result = apps.delete( - "<APP_ID>" - ).await?; - let _ = result; - - Ok(()) +```json +{ + "client_id": "6a56677caf736a2310a2", + "client_id_issued_at": 1784047484, + "redirect_uris": ["http://customapp.localhost/auth/redirect"], + "token_endpoint_auth_method": "none", + "grant_types": ["authorization_code"], + "response_types": ["code"], + "client_name": "MCP Client" } ``` -{% /multicode %} + +`token_endpoint_auth_method: none` registers a public client for PKCE; `client_secret_basic` (the default) and `client_secret_post` register confidential clients. The registered app appears in your Console and in `list` like any other client. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc index 45505c5453..99a9a4a1c7 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc @@ -1,12 +1,12 @@ --- layout: tutorial title: Protect your API with custom scopes -description: Define custom scopes on your Appwrite OAuth server, request them from a client, and enforce them on your own API. +description: Define custom scopes on your Appwrite OAuth2 server, request them from a client, and enforce them on your own API. step: 1 difficulty: intermediate readtime: 20 framework: TanStack Start -category: OAuth server +category: OAuth2 server back: /docs/partners/oauth-server --- @@ -16,12 +16,12 @@ This tutorial continues with the same two apps. TaskFlow gains a task API that c # What you will build {% #what-you-will-build %} -- Two custom scopes on TaskFlow's OAuth server: `read:tasks` and `write:tasks`. +- Two custom scopes on TaskFlow's OAuth2 server: `read:tasks` and `write:tasks`. - A consent screen where the user grants or withholds **each permission individually**. - A **resource server**: an API route on TaskFlow that validates access tokens and enforces the scopes they carry, operation by operation. - A task composer on Vantage's dashboard that succeeds or gets refused depending on what the user granted. -The resource server is the new idea. The OAuth server issues tokens and stamps the granted scopes onto them, but it does not know what `read:tasks` means in your product. Your API gives the scope its meaning by checking it on every request. +The resource server is the new idea. The OAuth2 server issues tokens and stamps the granted scopes onto them, but it does not know what `read:tasks` means in your product. Your API gives the scope its meaning by checking it on every request. # The flow {% #the-flow %} @@ -35,7 +35,7 @@ Everything up to step 3 is the authorization code flow from the first guide, wit # Prerequisites {% #prerequisites %} -- The two apps from [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1), running against a project with the OAuth server enabled and Vantage registered as a confidential client. +- The two apps from [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1), running against a project with the OAuth2 server enabled and Vantage registered as a confidential client. - [Node.js](https://nodejs.org/) 20 or newer and `pnpm`. {% info title="Get the finished code" %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc index 6651e4977c..523a75ad00 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc @@ -1,11 +1,11 @@ --- layout: tutorial title: Define the scopes -description: Add read:tasks and write:tasks to your OAuth server's scopes. +description: Add read:tasks and write:tasks to your OAuth2 server's scopes. step: 2 --- -Scopes have to be defined on the OAuth server before a client can request them. Requesting a scope you have not defined fails the authorization request with `invalid_scope`. +Scopes have to be defined on the OAuth2 server before a client can request them. Requesting a scope you have not defined fails the authorization request with `invalid_scope`. # Add the scopes {% #add %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc index dc1db6c8a6..6bc83e5c45 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc @@ -14,11 +14,11 @@ In the consumer, extend the scope list in `consumer/src/lib/oauth.ts`: ```ts // consumer/src/lib/oauth.ts // read:tasks and write:tasks are custom scopes defined on TaskFlow's -// OAuth server. They authorize Vantage against TaskFlow's task API. +// OAuth2 server. They authorize Vantage against TaskFlow's task API. export const SCOPES = 'openid profile email read:tasks write:tasks' ``` -`authorizeUrl` already passes `SCOPES` as the `scope` parameter, so nothing else changes on the consumer. The OAuth server carries the requested scopes into the grant and shows them to the user. +`authorizeUrl` already passes `SCOPES` as the `scope` parameter, so nothing else changes on the consumer. The OAuth2 server carries the requested scopes into the grant and shows them to the user. # Label the scopes on the consent screen {% #label %} @@ -42,13 +42,13 @@ A raw scope string like `read:tasks` means something to you, not to your users. # Let the user choose {% #choose %} -Consent is not all-or-nothing. When approving a grant, the consent screen can pass the subset of scopes the user agreed to, and the OAuth server narrows the grant to exactly that. It rejects any scope that was not requested, and `openid` is always retained because it is the sign-in itself. +Consent is not all-or-nothing. When approving a grant, the consent screen can pass the subset of scopes the user agreed to, and the OAuth2 server narrows the grant to exactly that. It rejects any scope that was not requested, and `openid` is always retained because it is the sign-in itself. Update the `approve` helper in `provider/src/lib/oauth-server.ts` to pass the chosen scopes: ```ts // provider/src/lib/oauth-server.ts -/** Approve a grant. The OAuth server responds with the URL to send the +/** Approve a grant. The OAuth2 server responds with the URL to send the * user back to, carrying the authorization code. Passing scopes narrows * the grant to that subset; the server rejects anything that was not * requested and always retains openid. */ diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc index 6afee0dcf3..932adb8b02 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc @@ -5,7 +5,7 @@ description: Verify incoming access tokens against your project's JWKS and read step: 4 --- -TaskFlow's API is about to accept access tokens from the outside world, so it first needs a way to tell a token it issued from one somebody made up. Access tokens from your OAuth server are RS256-signed JWTs, and the matching public keys are published at your project's JWKS endpoint. That means TaskFlow can verify tokens locally, with no call back to the OAuth server on each request. +TaskFlow's API is about to accept access tokens from the outside world, so it first needs a way to tell a token it issued from one somebody made up. Access tokens from your OAuth2 server are RS256-signed JWTs, and the matching public keys are published at your project's JWKS endpoint. That means TaskFlow can verify tokens locally, with no call back to the OAuth2 server on each request. # Install jose {% #install %} @@ -23,13 +23,13 @@ Create `provider/src/lib/resource-server.ts`: ```ts // provider/src/lib/resource-server.ts // TaskFlow's resource server: validates access tokens issued by the -// project's OAuth server and enforces the scopes they carry. +// project's OAuth2 server and enforces the scopes they carry. import '@tanstack/react-start/server-only' import { createRemoteJWKSet, jwtVerify, type JWTPayload } from 'jose' const issuer = process.env.OAUTH_ISSUER! -// The OAuth server publishes its signing keys as a JWK Set. jose caches +// The OAuth2 server publishes its signing keys as a JWK Set. jose caches // the keys and refetches them when it sees an unknown key ID. const jwks = createRemoteJWKSet(new URL(`${issuer}/.well-known/jwks.json`)) @@ -60,7 +60,7 @@ export function hasScope(token: AccessToken, scope: string): boolean { `jwtVerify` checks the signature against the published keys and rejects expired tokens, so a forged or stale token never reaches your handlers. It also pins the algorithm to the RS256 keys in the JWKS, so `alg: none` and HMAC confusion attacks fail here too. -The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth server signs [ID tokens](/docs/partners/oauth-server/tokens) with the same key as access tokens, and an ID token has no `scope` claim. Without the type check, a client could present its ID token to your API; requiring `at+jwt` (the [access token type](/docs/partners/oauth-server/tokens)) rejects it before it reaches a handler. An ID token is meant for the client that received it, never as a credential for your API. +The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth2 server signs [ID tokens](/docs/partners/oauth-server/tokens) with the same key as access tokens, and an ID token has no `scope` claim. Without the type check, a client could present its ID token to your API; requiring `at+jwt` (the [access token type](/docs/partners/oauth-server/tokens)) rejects it before it reaches a handler. An ID token is meant for the client that received it, never as a credential for your API. Two claims in the verified payload matter for the API: @@ -68,7 +68,7 @@ Two claims in the verified payload matter for the API: - `sub` is the ID of the user who approved the grant. The API uses it to load that user's tasks, so a token can never read anyone else's data. {% info title="Build the JWKS URL from your own configuration" %} -The guard builds the JWKS URL from the `OAUTH_ISSUER` value the provider already has, the same base it uses for every other OAuth server call. Since [tokens](/docs/partners/oauth-server/tokens) are standard JWTs, any JWT library with JWKS support in any language can do this job. The API route just happens to live next to the consent screen here. +The guard builds the JWKS URL from the `OAUTH_ISSUER` value the provider already has, the same base it uses for every other OAuth2 server call. Since [tokens](/docs/partners/oauth-server/tokens) are standard JWTs, any JWT library with JWKS support in any language can do this job. The API route just happens to live next to the consent screen here. {% /info %} Continue to put the guard in front of an API route. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc index e9bb0f9003..4ac3b8a072 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc @@ -25,7 +25,7 @@ pnpm dev ![TaskFlow consent screen with the write permission switched off](/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif) -Open `http://localhost:4100` and click **Sign in with TaskFlow**. On the consent screen, switch **Create and update your tasks** off and authorize. The OAuth server narrows the grant to what was actually approved, so the access token comes back carrying `read:tasks` but not `write:tasks`. +Open `http://localhost:4100` and click **Sign in with TaskFlow**. On the consent screen, switch **Create and update your tasks** off and authorize. The OAuth2 server narrows the grant to what was actually approved, so the access token comes back carrying `read:tasks` but not `write:tasks`. ![Vantage dashboard with the write attempt refused as insufficient_scope](/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif) @@ -41,7 +41,7 @@ Add the same task again. It lands in the list, and the `write:tasks` chip sits i # What each piece did {% #recap %} -- **The OAuth server** published the scopes, put them in front of the user as individual choices, and stamped the approved subset onto a signed access token. +- **The OAuth2 server** published the scopes, put them in front of the user as individual choices, and stamped the approved subset onto a signed access token. - **TaskFlow's API** verified each token against the project's JWKS and turned the `scope` claim into an allow-or-deny decision per operation. - **Vantage** requested the scopes it can use, and its access ends exactly where the user's grant does. diff --git a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc index 53e233e687..1ae6eec6ad 100644 --- a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc @@ -1,28 +1,123 @@ --- layout: article title: Device flow -description: Authorize TVs, CLIs, and other input-constrained devices against your Appwrite OAuth server with the device authorization grant. +description: Authorize TVs, CLIs, and other input-constrained devices against your Appwrite OAuth2 server with the device authorization grant. back: /docs/partners/oauth-server --- -Some devices cannot show a browser or take typed input: a TV app, a CLI on a remote server, a hardware device. The **device authorization grant** (RFC 8628) lets these clients get tokens by having the user approve on a second device, like their phone or laptop. +The device authorization grant (RFC 8628) lets a client request access even when it cannot open a browser or accept a callback. A TV app, command-line tool, or hardware device shows the user a code, and the user completes authorization on a phone or computer. + +This flow involves two applications: + +- The **device client** is the third-party application requesting access. It communicates with Appwrite over HTTP. +- The **verification page** belongs to your project. You build this page with an Appwrite Client SDK so the user can sign in, review the request, and approve or reject it. # How it works {% #how-it-works %} -1. The device asks the OAuth server to start a device authorization. The server returns a **device code**, a short **user code**, and a **verification URL**. -2. The device shows the user code and verification URL to the user (for example, "Go to example.com/activate and enter WDJB-MJHT"). -3. The user opens the verification URL on another device, signs in, and approves. -4. Meanwhile the device polls the token endpoint. Once the user approves, the poll returns tokens. +1. The device client starts a device authorization. Appwrite returns a device code, a shorter user code, and the URL of your verification page. +2. The device shows the user code and verification URL to the user. +3. The user opens the verification page on a second device, confirms the code, signs in, and reviews the request. +4. The verification page connects the pending request to the signed-in user and asks them to approve or reject it. +5. While this happens, the original device polls the token endpoint. After approval, the next successful poll returns tokens directly to the device. + +# Configure device flow {% #configure %} + +Device flow must be enabled in both the OAuth2 server settings and the client settings. + +## Configure the OAuth2 server {% #configure-server %} + +Use `project.updateOAuth2Server` from a Server SDK to configure the verification page and code behavior: + +| Setting | Purpose | +| --- | --- | +| `verificationUrl` | The URL of the verification page you host, such as `https://your-product.com/activate`. This setting is required for device flow. | +| `userCodeLength` | The number of characters in the user code. It can be from 6 to 12 and defaults to 8. | +| `userCodeFormat` | The characters used in the user code: `numeric`, `alphabetic`, or `alphanumeric`. The default is `alphanumeric`. | +| `deviceCodeDuration` | How long the device code and user code remain valid, in seconds. It can be from 60 to 1,800 and defaults to 600. | + +{% info title="The call replaces the whole configuration" %} +`updateOAuth2Server` sets the full OAuth2 server configuration in one call. Include your existing authorization URL, scopes, and other settings when you add the device flow settings. +{% /info %} + +## Enable device flow for the client {% #enable-client %} + +The client must also have **Device flow** enabled. Turn it on when you create or update the client in the Console, or set `deviceFlow: true` with a Server SDK. Devices that cannot protect a client secret should be registered as public clients. See [Clients](/docs/partners/oauth-server/clients#register) for client registration. + +# Integrate the device client {% #integrate-device %} + +The device client uses HTTP for the device authorization and token requests. + +## 1. Start a device authorization {% #start %} + +Send the client ID and requested scopes to the device authorization endpoint as JSON: + +```http +POST /v1/oauth2/<PROJECT_ID>/device_authorization HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/json +Accept: application/json + +{ + "client_id": "<CLIENT_ID>", + "scope": "openid profile tasks.read" +} +``` + +The request can also include: + +- `authorization_details` for a JSON-encoded rich authorization request. +- `resource` for one resource indicator URI or an array of URIs. +- `audience` as a compatibility alias for one resource indicator. + +See [Scopes](/docs/partners/oauth-server/scopes#rich-authorization-requests) for authorization details and resource restrictions. + +Appwrite returns the codes, expiration, and polling interval: + +```json +{ + "device_code": "8575375669b9031cb5371b0ee39985c2...", + "user_code": "3RG9K9QF", + "verification_uri": "https://your-product.com/activate", + "verification_uri_complete": "https://your-product.com/activate?user_code=3RG9K9QF", + "expires_in": 600, + "interval": 1 +} +``` + +Show the `user_code` and `verification_uri` on the device. You can also present `verification_uri_complete` as a link or QR code, which opens the verification page with the code already filled in. -Device flow is available to a client only when both the project has a **verification URL** configured on the OAuth2 server settings and the client has **device flow** enabled. Device clients are public clients, so they authenticate with no secret. +## 2. Poll for tokens {% #poll %} -# Enable device flow on a client {% #enable %} +Start polling the token endpoint in the background. Wait at least the number of seconds in `interval` between requests: -Turn on **Device flow** when you create or update the client. In the Console, it is a toggle in the client dialog; with a Server SDK, set `deviceFlow: true` on the [client](/docs/partners/oauth-server/clients#register). +```http +POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/json +Accept: application/json -# Start a device authorization {% #start %} +{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "<DEVICE_CODE>", + "client_id": "<CLIENT_ID>" +} +``` + +Handle each response according to its `error` value: + +- `authorization_pending`: The user has not finished authorization. Wait for `interval`, then poll again. +- `slow_down`: The client is polling too quickly. Increase the delay before the next request. +- `expired_token`: The device code expired. Start a new device authorization and show the new user code. +- `access_denied`: The user rejected the request. Stop polling and let them restart if they want to try again. -The device requests a device authorization with its client ID and the scopes it wants. +# Build the verification page {% #verification-page %} + +The `verificationUrl` page runs on the user's second device and completes the interactive part of the flow. + +1. Read `user_code` from the URL search parameters. If it is missing, show an input where the user can enter the code displayed on the original device. +2. Show the code and ask the user to confirm that it matches the original device. +3. Make sure the user is signed in to your project. If they are signed out, send them through your sign-in or sign-up flow and return them to the verification page with the user code intact. +4. Pass the confirmed code to `oauth2.createGrant`. This connects the pending device request to the signed-in user and returns the grant record. {% multicode %} ```client-web @@ -34,11 +129,8 @@ const client = new Client() const oauth2 = new Oauth2(client); -const result = await oauth2.createDeviceAuthorization({ - clientId: '<CLIENT_ID>', // optional - scope: '<SCOPE>', // optional - authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional - resource: '' // optional +const result = await oauth2.createGrant({ + userCode: '<USER_CODE>' }); console.log(result); @@ -52,11 +144,8 @@ Client client = Client() Oauth2 oauth2 = Oauth2(client); -Oauth2DeviceAuthorization result = await oauth2.createDeviceAuthorization( - clientId: '<CLIENT_ID>', // optional - scope: '<SCOPE>', // optional - authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional - resource: '', // optional +Oauth2Grant result = await oauth2.createGrant( + userCode: '<USER_CODE>', ); ``` ```client-apple @@ -68,17 +157,12 @@ let client = Client() let oauth2 = Oauth2(client) -let oauth2DeviceAuthorization = try await oauth2.createDeviceAuthorization( - client_id: "<CLIENT_ID>", // optional - scope: "<SCOPE>", // optional - authorization_details: "<AUTHORIZATION_DETAILS>", // optional - resource: "" // optional +let oauth2Grant = try await oauth2.createGrant( + user_code: "<USER_CODE>" ) - ``` ```client-android-kotlin import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback import io.appwrite.services.Oauth2 val client = Client(context) @@ -87,11 +171,8 @@ val client = Client(context) val oauth2 = Oauth2(client) -val result = oauth2.createDeviceAuthorization( - client_id = "<CLIENT_ID>", // (optional) - scope = "<SCOPE>", // (optional) - authorization_details = "<AUTHORIZATION_DETAILS>", // (optional) - resource = "", // (optional) +val result = oauth2.createGrant( + user_code = "<USER_CODE>", ) ``` ```client-android-java @@ -105,11 +186,8 @@ Client client = new Client(context) Oauth2 oauth2 = new Oauth2(client); -oauth2.createDeviceAuthorization( - "<CLIENT_ID>", // client_id (optional) - "<SCOPE>", // scope (optional) - "<AUTHORIZATION_DETAILS>", // authorization_details (optional) - "", // resource (optional) +oauth2.createGrant( + "<USER_CODE>", // user_code new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); @@ -119,10 +197,9 @@ oauth2.createDeviceAuthorization( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native -import { Client, Oauth2 } from "react-native-appwrite"; +import { Client, Oauth2 } from 'react-native-appwrite'; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint @@ -130,42 +207,30 @@ const client = new Client() const oauth2 = new Oauth2(client); -const result = await oauth2.createDeviceAuthorization({ - clientId: '<CLIENT_ID>', // optional - scope: '<SCOPE>', // optional - authorizationDetails: '<AUTHORIZATION_DETAILS>', // optional - resource: '' // optional +const result = await oauth2.createGrant({ + userCode: '<USER_CODE>' }); console.log(result); ``` {% /multicode %} -The response contains the codes and where to send the user: +Use the returned grant to show the client, requested scopes, and authorization details. Then let the user approve or reject it with the same [consent flow](/docs/partners/oauth-server/authorization#consent) used for browser authorization. + +# Finish on the original device {% #finish %} + +The original device keeps polling while the user completes the verification page. After approval, the token endpoint returns access and refresh tokens, plus an ID token when `openid` was granted. The device uses these tokens directly. Device flow has no authorization code or redirect callback on the original device. ```json { - "device_code": "8575375669b9031cb5371b0ee39985c2...", - "user_code": "WDJB-MJHT", - "verification_uri": "https://example.com/activate", - "verification_uri_complete": "https://example.com/activate?user_code=WDJB-MJHT", - "expires_in": 600, - "interval": 1 + "access_token": "<ACCESS_TOKEN>", + "refresh_token": "<REFRESH_TOKEN>", + "id_token": "<ID_TOKEN>", + "token_type": "Bearer", + "expires_in": 3600, + "scope": "openid profile tasks.read", + "authorization_details": null } ``` -Show the `user_code` and `verification_uri` to the user. The `verification_uri_complete` embeds the code so a phone can open it directly, often as a QR code. - -# Poll for tokens {% #poll %} - -While the user approves on their other device, the client polls the token endpoint with the device code grant, waiting `interval` seconds between attempts. - -```http -POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 -Host: <REGION>.cloud.appwrite.io -Content-Type: application/x-www-form-urlencoded - -grant_type=urn:ietf:params:oauth:grant-type:device_code&device_code=<DEVICE_CODE>&client_id=<CLIENT_ID> -``` - -Until the user approves, the endpoint returns `authorization_pending`; keep polling. Once they approve, it returns an access token, refresh token, and ID token, exactly like the [authorization code flow](/docs/partners/oauth-server/tokens). If the user declines or the codes expire, the poll returns a terminal error and the device restarts the flow. +Store the newest refresh token securely and use the token response's granted scopes to determine which features are available. See [Tokens](/docs/partners/oauth-server/tokens) for validation, refresh, and revocation. diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc index 30842fb69d..e09fe840f1 100644 --- a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc @@ -1,11 +1,16 @@ --- layout: article -title: OAuth server quick start -description: Enable Appwrite's OAuth server, register a client, and run your first authorization code sign-in end to end. +title: OAuth2 server quick start +description: Enable Appwrite's OAuth2 server, register a client, and run your first authorization code sign-in end to end. back: /docs/partners/oauth-server --- -This guide turns a project into an OAuth provider and runs one sign-in through it. By the end you will have an enabled server, a registered client, and an access token issued by your project. +This guide turns your project into an OAuth2 provider and runs one sign-in through it. By the end you will have an enabled server, a registered client, and an access token issued by your project. + +The examples follow two apps, the same pair the [tutorials](/docs/partners/oauth-server/sign-in-with-your-product/step-1) build out in full: + +- **TaskFlow** (`http://platform.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. +- **Vantage** (`http://customapp.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. # Enable the server {% #enable %} @@ -18,7 +23,7 @@ In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **E ![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) {% /only_light %} -Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization. You can point it at a placeholder for now and change it later. The `openid`, `profile`, and `email` scopes are always included; add any custom scopes your clients will request. +Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization, and where you present them the details of the request so they can approve or cancel. Point it at `http://platform.localhost/consent`, where TaskFlow will host its consent screen. Nothing needs to run there yet. The `openid`, `profile`, and `email` scopes are always included; add any scopes your custom APIs will support. You can also enable and configure the server with a [Server SDK](/docs/sdks#server) using the `updateOAuth2Server` method. @@ -394,11 +399,13 @@ Once enabled, the server publishes an OpenID Connect discovery document. Integra ![The OIDC discovery URL in the Appwrite Console](/images/docs/oauth-server/oauth2-server-discovery.avif) {% /only_light %} -Open it in a browser to confirm the server is live. It returns JSON describing the authorization, token, userinfo, and JWKS endpoints. +Open it in a browser to confirm the server is live. It returns JSON describing the authorization, token, userinfo, and JWKS endpoints, and more. # Register a client {% #register %} -Open the **Apps** sub-tab and create a client. Give it a name, add at least one redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. +Each app that integrates with your project registers as a client. Here that is Vantage. The **redirect URI** it declares is a URL on Vantage, `http://customapp.localhost/auth/redirect`, where the OAuth2 server sends users back with the authorization code. Any HTTP or HTTPS URL works. + +Open the **Apps** sub-tab and create a client. Name it `Vantage`, add the redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. {% only_dark %} ![Creating an OAuth2 client](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) @@ -407,30 +414,344 @@ Open the **Apps** sub-tab and create a client. Give it a name, add at least one ![Creating an OAuth2 client](/images/docs/oauth-server/oauth2-server-create-app.avif) {% /only_light %} -See [Clients](/docs/partners/oauth-server/clients) for the full set of options and the SDK equivalents. +Clients can also be registered from code with the `apps` service in the [Client SDKs](/docs/sdks#client). Any signed-in user on your project can register an app, which enables self-serve registration for integrators. Creating a client needs only a name and a redirect URI: + +{% multicode %} +```client-web +import { Client, Apps, ID } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://customapp.localhost/auth/redirect'], +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://customapp.localhost/auth/redirect'], +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Vantage", + redirectUris: ["http://customapp.localhost/auth/redirect"] +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Vantage", + redirectUris = listOf("http://customapp.localhost/auth/redirect") +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Vantage", // name + List.of("http://customapp.localhost/auth/redirect"), // redirectUris + null, // description (optional) + null, // clientUri (optional) + null, // logoUri (optional) + null, // privacyPolicyUrl (optional) + null, // termsUrl (optional) + null, // contacts (optional) + null, // tagline (optional) + null, // tags (optional) + null, // images (optional) + null, // supportUrl (optional) + null, // dataDeletionUrl (optional) + null, // postLogoutRedirectUris (optional) + null, // enabled (optional) + null, // type (optional) + null, // deviceFlow (optional) + null, // teamId (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Apps, ID } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://customapp.localhost/auth/redirect'], +}); +``` +{% /multicode %} + +Updating a client accepts the full set of options, from consent screen branding to logout URIs and the device flow: + +{% multicode %} +```client-web +import { Client, Apps } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.update({ + appId: '<APP_ID>', + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Apps apps = Apps(client); + +App app = await apps.update( + appId: '<APP_ID>', + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let apps = Apps(client) + +let app = try await apps.update( + appId: "<APP_ID>", + name: "Vantage", + description: "A dashboard that signs in with TaskFlow.", + logoUri: "https://example.com/logo.png", + redirectUris: ["http://customapp.localhost/auth/redirect"], + enabled: true +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val apps = Apps(client) + +val app = apps.update( + appId = "<APP_ID>", + name = "Vantage", + description = "A dashboard that signs in with TaskFlow.", + logoUri = "https://example.com/logo.png", + redirectUris = listOf("http://customapp.localhost/auth/redirect"), + enabled = true +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Apps apps = new Apps(client); + +apps.update( + "<APP_ID>", // appId + "Vantage", // name + "A dashboard that signs in with TaskFlow.", // description (optional) + null, // clientUri (optional) + "https://example.com/logo.png", // logoUri (optional) + null, // privacyPolicyUrl (optional) + null, // termsUrl (optional) + null, // contacts (optional) + null, // tagline (optional) + null, // tags (optional) + null, // images (optional) + null, // supportUrl (optional) + null, // dataDeletionUrl (optional) + true, // enabled (optional) + List.of("http://customapp.localhost/auth/redirect"), // redirectUris (optional) + null, // postLogoutRedirectUris (optional) + null, // type (optional) + null, // deviceFlow (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Apps } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.update({ + appId: '<APP_ID>', + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + logoUri: 'https://example.com/logo.png', + redirectUris: ['http://customapp.localhost/auth/redirect'], + enabled: true, +}); +``` +{% /multicode %} + +The same `apps` service is available in the [Server SDKs](/docs/sdks#server) with an API key. See [Clients](/docs/partners/oauth-server/clients) for the full set of options. # Run the authorization code flow {% #flow %} -With the server enabled and a client registered, you can run a sign-in. The flow has three steps: send the user to authorize, let them consent, then exchange the returned code for tokens. +With the server enabled and a client registered, you can run a sign-in. The flow has four steps: send the user to authorize, approve the grant, exchange the returned code for tokens, and use the access token to read their profile. + +## 1. Send the user to the authorization endpoint {% #send-to-authorization %} + +Vantage begins the sign-in by sending the user's browser to TaskFlow's authorization endpoint. This is the URL behind Vantage's **Sign in with TaskFlow** button. + +The URL uses TaskFlow's Appwrite API endpoint because its Appwrite project is acting as the authorization server. Replace `<REGION>` with the region from your API endpoint, `<PROJECT_ID>` with TaskFlow's Appwrite project ID, and `<CLIENT_ID>` with the ID generated when you registered Vantage: + +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=http://customapp.localhost/auth/redirect + &response_type=code + &scope=openid%20profile%20email + &state=<STATE> +``` + +Each query parameter tells TaskFlow how to handle the request: + +| Parameter | Meaning | +| --- | --- | +| `client_id` | Identifies Vantage as the client requesting access. | +| `redirect_uri` | Tells TaskFlow where to return the browser after the user approves or cancels. It must match a URI registered for Vantage. | +| `response_type=code` | Requests an authorization code. The browser receives this temporary code, then Vantage's server exchanges it for tokens in step 3. | +| `scope` | Lists the access Vantage is requesting. `openid` starts an OpenID Connect sign-in, while `profile` and `email` request the user's basic profile and email claims. | +| `state` | Carries a random value created and stored by Vantage. Vantage compares it with the value returned after authorization to confirm the response belongs to the same sign-in request. | + +When you open this URL, Appwrite validates the request and checks for an active TaskFlow user session. + +## 2. Review and approve Vantage's request {% #approve-grant %} + +After Vantage opens the authorization endpoint: + +- **Appwrite creates a grant.** For a signed-in user, Appwrite creates a pending authorization request that connects the user, Vantage, the requested scopes, and Vantage's redirect URI. This pending request is called a grant. + +- **Appwrite redirects to TaskFlow.** The **authorization endpoint** is the Appwrite Cloud URL Vantage opens. The **authorization URL** is TaskFlow's consent page, where Appwrite sends the browser with a `grant_id`. + +- **TaskFlow presents the request.** A complete consent screen uses the grant ID to show that Vantage is asking for the user's profile and email, then lets the user approve or cancel. The [Authorization](/docs/partners/oauth-server/authorization#consent) guide shows how to build this screen. + +- **Copy the grant ID.** This quick start does not build TaskFlow's consent screen, so the browser lands on `http://platform.localhost/consent` and finds nothing there. Copy the `grant_id` from the address bar to continue manually. -**1. Send the user to the authorization endpoint.** Include the client ID, a registered redirect URI, `response_type=code`, and the scopes you want. If the user has a session on your project, Appwrite redirects to your authorization URL with a `grant_id`. Otherwise it redirects there with the full request so your screen can sign the user in first. +- **Sign in if the grant ID is missing.** A URL without a `grant_id` means the user does not have an active TaskFlow session. Sign in a user on the project, then open Vantage's authorization URL again. + +- **Approve Vantage's request.** Send the `grant_id` to the approval endpoint using the same TaskFlow user's session. A browser sends the session cookie automatically. From another environment, pass the session token in the `X-Appwrite-Session` header. Use this request: ```http -GET /v1/oauth2/<PROJECT_ID>/authorize?client_id=<CLIENT_ID>&redirect_uri=<REDIRECT_URI>&response_type=code&scope=openid%20profile%20email&state=<STATE> HTTP/1.1 +POST /v1/oauth2/<PROJECT_ID>/approve HTTP/1.1 Host: <REGION>.cloud.appwrite.io +Content-Type: application/json + +{ + "grant_id": "<GRANT_ID>" +} ``` -**2. Approve the grant.** Your consent screen loads the grant, shows the user what the client is requesting, and approves it. Appwrite then redirects back to the client's redirect URI with an authorization `code`. Building this screen is covered in [Authorization](/docs/partners/oauth-server/authorization). +- **Return to Vantage.** After approval, Appwrite redirects the browser to Vantage's registered redirect URI with an authorization `code` in the query string. Vantage uses this code in the next step. + +## 3. Exchange the code for tokens {% #exchange-code %} -**3. Exchange the code for tokens.** The client sends the code to the token endpoint. A confidential client authenticates with HTTP Basic auth using its client ID and secret. +Vantage's server sends the code to the token endpoint. A confidential client passes its `client_secret`; a public client passes its PKCE `code_verifier` instead. ```http POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 Host: <REGION>.cloud.appwrite.io -Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> -Content-Type: application/x-www-form-urlencoded +Content-Type: application/json -grant_type=authorization_code&code=<CODE>&redirect_uri=<REDIRECT_URI> +{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://customapp.localhost/auth/redirect", + "client_id": "<CLIENT_ID>", + "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", + "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" +} ``` The response contains an access token, a refresh token, and an ID token: @@ -446,7 +767,27 @@ The response contains an access token, a refresh token, and an ID token: } ``` -The client can now call the userinfo endpoint with the access token, or validate the ID token against the server's JWKS. See [Tokens](/docs/partners/oauth-server/tokens) for token structure, refresh, and revocation. +## 4. Read the user's profile {% #read-profile %} + +Call the userinfo endpoint with the access token to confirm the sign-in worked end to end: + +```http +GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Bearer <ACCESS_TOKEN> +``` + +```json +{ + "sub": "6a5138d1971d49a87f0a", + "email": "walter@example.com", + "email_verified": true, + "name": "Walter O'Brien", + "updated_at": 1784040398 +} +``` + +See [Tokens](/docs/partners/oauth-server/tokens) for token structure, validation, refresh, and revocation. # Next steps {% #next-steps %} diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc index 0d22ad96b6..f3d3c7c583 100644 --- a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc @@ -1,7 +1,7 @@ --- layout: article title: Scopes -description: The built-in OpenID Connect scopes and the custom scopes clients can request from your Appwrite OAuth server. +description: The built-in OpenID Connect scopes and the custom scopes clients can request from your Appwrite OAuth2 server. back: /docs/partners/oauth-server --- @@ -22,7 +22,9 @@ These appear as locked entries in the **Scopes** field on the OAuth2 server sett # Custom scopes {% #custom %} -Beyond the built-in scopes, you define your own to represent permissions in your product, such as `read:projects` or `write:billing`. Add them in the **Scopes** field on the OAuth2 server settings, or with the `scopes` array on the `updateOAuth2Server` method. The `openid`, `profile`, `email`, and `phone` scopes are always merged in, so you only list the custom ones. +Beyond the built-in scopes, you define your own to represent permissions in your product. A common naming pattern is `resource.action`, such as `games.read` or `billing.write`. Some products also define an `admin` scope for full access. If you use a broad scope, describe it clearly on the consent screen and enforce it consistently in your API. + +Add custom scopes in the **Scopes** field on the OAuth2 server settings, or with the `scopes` array on the `updateOAuth2Server` method. The `openid`, `profile`, `email`, and `phone` scopes are always merged in, so you only list the custom ones. {% only_dark %} ![Configuring scopes on the OAuth2 server](/images/docs/oauth-server/dark/oauth2-server-settings.avif) @@ -33,166 +35,25 @@ Beyond the built-in scopes, you define your own to represent permissions in your A project can define up to 100 scopes, each up to 128 characters. A client can only request scopes you have defined; requesting an unknown scope fails the authorization request. -Custom scopes are labels the OAuth server carries through the flow and stamps onto the access token. Enforcing what each scope allows is your resource server's job: read the `scope` claim from the access token (or from an [introspection](/docs/partners/oauth-server/tokens#introspect) response) and allow or deny the request accordingly. +Custom scopes are labels the OAuth2 server carries through the flow and stamps onto the access token. Enforcing what each scope allows is your resource server's job: read the `scope` claim from the access token (or from an [introspection](/docs/partners/oauth-server/tokens#introspect) response) and allow or deny the request accordingly. # Requesting scopes {% #requesting %} -A client asks for scopes when it starts [authorization](/docs/partners/oauth-server/authorization#authorize). The request is a redirect to your project's authorize URL, and the scopes ride along as the `scope` query parameter, space-separated: - -```text -https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize - ?client_id=<CLIENT_ID> - &redirect_uri=https://example.com/oauth/callback - &response_type=code - &scope=openid%20profile%20email%20read:tasks - &state=<STATE> -``` - -Integrators building on the Appwrite SDKs make the same request with the `authorize` method: - -{% multicode %} -```client-web -import { Client, Oauth2 } from 'appwrite'; - -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID - -const oauth2 = new Oauth2(client); +A client asks for scopes in the space-separated `scope` parameter when it starts authorization, for example `openid profile games.read`. See [Authorization](/docs/partners/oauth-server/authorization#authorize) for the authorize request and SDK examples. -const result = await oauth2.authorize({ - clientId: '<CLIENT_ID>', - redirectUri: 'https://example.com/oauth/callback', - responseType: 'code', - scope: 'openid profile email read:tasks', - state: '<STATE>', -}); -``` -```client-flutter -import 'package:appwrite/appwrite.dart'; - -Client client = Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID - -Oauth2 oauth2 = Oauth2(client); - -Oauth2Authorize result = await oauth2.authorize( - clientId: '<CLIENT_ID>', - redirectUri: 'https://example.com/oauth/callback', - responseType: 'code', - scope: 'openid profile email read:tasks', - state: '<STATE>', -); -``` -```client-apple -import Appwrite - -let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - -let oauth2 = Oauth2(client) - -let result = try await oauth2.authorize( - client_id: "<CLIENT_ID>", - redirect_uri: "https://example.com/oauth/callback", - response_type: "code", - scope: "openid profile email read:tasks", - state: "<STATE>" -) -``` -```client-android-kotlin -import io.appwrite.Client -import io.appwrite.services.Oauth2 - -val client = Client(context) - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID - -val oauth2 = Oauth2(client) - -val result = oauth2.authorize( - client_id = "<CLIENT_ID>", - redirect_uri = "https://example.com/oauth/callback", - response_type = "code", - scope = "openid profile email read:tasks", - state = "<STATE>", -) -``` -```client-android-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Oauth2; - -Client client = new Client(context) - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>"); // Your project ID - -Oauth2 oauth2 = new Oauth2(client); - -oauth2.authorize( - "<CLIENT_ID>", // client_id - "https://example.com/oauth/callback", // redirect_uri - "code", // response_type - "openid profile email read:tasks", // scope (optional) - "<STATE>", // state (optional) - null, // nonce (optional) - null, // code_challenge (optional) - null, // code_challenge_method (optional) - null, // prompt (optional) - null, // max_age (optional) - null, // authorization_details (optional) - null, // resource (optional) - new CoroutineCallback<>((result, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - Log.d("Appwrite", result.toString()); - }) -); -``` -```client-react-native -import { Client, Oauth2 } from "react-native-appwrite"; - -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID - -const oauth2 = new Oauth2(client); - -const result = await oauth2.authorize({ - clientId: '<CLIENT_ID>', - redirectUri: 'https://example.com/oauth/callback', - responseType: 'code', - scope: 'openid profile email read:tasks', - state: '<STATE>', -}); -``` -{% /multicode %} - -The user is shown exactly these scopes on your consent screen, where they [approve or withhold each one](/docs/partners/oauth-server/authorization#consent). Whatever they grant is what the issued access token carries in its `scope` claim, and the token response reports the granted set in its `scope` field, so a client can tell when it received less than it asked for. Request only what the integration needs; smaller requests are easier to approve. +Your consent screen shows the requested scopes and can approve a subset. The access token and token response contain the scopes that were granted, so the client can detect when it received less access than it requested. Clients should request only the permissions the integration needs. # Rich authorization requests {% #rich-authorization-requests %} -A scope is a flat string, which works well for broad capabilities like `read:tasks` but cannot express structured constraints like "read tasks, in these two projects only". For that, the OAuth server supports rich authorization requests (RAR, [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)): the client sends an `authorization_details` parameter, a JSON array of objects that each describe one grant of access in your product's own vocabulary. +A scope is a flat permission such as `tasks.read`. It tells your API what the client may do, but it cannot identify which projects the permission applies to. Rich authorization requests (RAR, [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)) add those structured details. -Scopes and authorization details are not exclusive. Use scopes for broad capabilities, and add authorization details when an integration needs caveats a flat string cannot carry. +Keep scopes as the primary permission contract for third-party clients. Use authorization details to bind those permissions to resources selected during consent. With this model, a client can request `tasks.read` without knowing a project ID, and your consent screen can ask the user which projects to grant. ## Define accepted types {% #define-authorization-details-types %} -Think of an `authorization_details` entry as a small form the client fills in to ask for access. The `type` is the name printed at the top of the form. When your API sees `"type": "tasks"`, it knows it is reading the "access to tasks" form, so it knows what the other fields on it mean: which actions, which projects. - -For the task example, the two mechanisms cover the same resource at different granularities: - -- The `read:tasks` **scope** grants blanket read access to every task. -- A `tasks` **entry** describes task access with constraints attached, such as which actions and which projects. - -An integration that needs everything requests the scope. One that should only touch part of the data requests a `tasks` entry instead. +The OAuth2 server accepts only the authorization detail types configured in `authorizationDetailsTypes`. For project-level restrictions, include `project`. A `project` entry contains a non-empty `identifiers` array with project IDs, or `*` to represent every project. -The OAuth server only accepts types you have allowed on the project. Define them with the `authorizationDetailsTypes` parameter: +Configure the accepted types when you update the OAuth2 server: {% multicode %} ```server-nodejs @@ -208,8 +69,8 @@ const project = new Project(client); const result = await project.updateOAuth2Server({ enabled: true, authorizationUrl: 'https://your-product.com/oauth/consent', - scopes: ['read:tasks', 'write:tasks'], - authorizationDetailsTypes: ['tasks'], + scopes: ['tasks.read', 'tasks.write'], + authorizationDetailsTypes: ['project'], }); ``` ```server-php @@ -228,8 +89,8 @@ $project = new Project($client); $result = $project->updateOAuth2Server( enabled: true, authorizationUrl: 'https://your-product.com/oauth/consent', - scopes: ['read:tasks', 'write:tasks'], - authorizationDetailsTypes: ['tasks'] + scopes: ['tasks.read', 'tasks.write'], + authorizationDetailsTypes: ['project'] ); ``` ```server-python @@ -246,8 +107,8 @@ project = Project(client) result = project.update_o_auth2_server( enabled = True, authorization_url = 'https://your-product.com/oauth/consent', - scopes = ['read:tasks', 'write:tasks'], - authorization_details_types = ['tasks'] + scopes = ['tasks.read', 'tasks.write'], + authorization_details_types = ['project'] ) ``` ```server-ruby @@ -265,8 +126,8 @@ project = Project.new(client) result = project.update_o_auth2_server( enabled: true, authorization_url: 'https://your-product.com/oauth/consent', - scopes: ['read:tasks', 'write:tasks'], - authorization_details_types: ['tasks'] + scopes: ['tasks.read', 'tasks.write'], + authorization_details_types: ['project'] ) ``` ```server-dart @@ -282,8 +143,8 @@ Project project = Project(client); Project result = await project.updateOAuth2Server( enabled: true, authorizationUrl: 'https://your-product.com/oauth/consent', - scopes: ['read:tasks', 'write:tasks'], - authorizationDetailsTypes: ['tasks'], + scopes: ['tasks.read', 'tasks.write'], + authorizationDetailsTypes: ['project'], ); ``` ```server-dotnet @@ -301,8 +162,8 @@ Project project = new Project(client); Project result = await project.UpdateOAuth2Server( enabled: true, authorizationUrl: "https://your-product.com/oauth/consent", - scopes: new List<string> { "read:tasks", "write:tasks" }, - authorizationDetailsTypes: new List<string> { "tasks" } + scopes: new List<string> { "tasks.read", "tasks.write" }, + authorizationDetailsTypes: new List<string> { "project" } ); ``` ```server-kotlin @@ -319,8 +180,8 @@ val project = Project(client) val response = project.updateOAuth2Server( enabled = true, authorizationUrl = "https://your-product.com/oauth/consent", - scopes = listOf("read:tasks", "write:tasks"), - authorizationDetailsTypes = listOf("tasks") + scopes = listOf("tasks.read", "tasks.write"), + authorizationDetailsTypes = listOf("project") ) ``` ```server-java @@ -338,8 +199,8 @@ Project project = new Project(client); project.updateOAuth2Server( true, // enabled "https://your-product.com/oauth/consent", // authorizationUrl - List.of("read:tasks", "write:tasks"), // scopes (optional) - List.of("tasks"), // authorizationDetailsTypes (optional) + List.of("tasks.read", "tasks.write"), // scopes (optional) + List.of("project"), // authorizationDetailsTypes (optional) null, // accessTokenDuration (optional) null, // refreshTokenDuration (optional) null, // publicAccessTokenDuration (optional) @@ -372,8 +233,8 @@ let project = Project(client) let result = try await project.updateOAuth2Server( enabled: true, authorizationUrl: "https://your-product.com/oauth/consent", - scopes: ["read:tasks", "write:tasks"], - authorizationDetailsTypes: ["tasks"] + scopes: ["tasks.read", "tasks.write"], + authorizationDetailsTypes: ["project"] ) ``` ```server-go @@ -397,8 +258,8 @@ func main() { response, err := service.UpdateOAuth2Server( true, "https://your-product.com/oauth/consent", - project.WithUpdateOAuth2ServerScopes([]string{"read:tasks", "write:tasks"}), - project.WithUpdateOAuth2ServerAuthorizationDetailsTypes([]string{"tasks"}), + project.WithUpdateOAuth2ServerScopes([]string{"tasks.read", "tasks.write"}), + project.WithUpdateOAuth2ServerAuthorizationDetailsTypes([]string{"project"}), ) if err != nil { panic(err) @@ -424,8 +285,8 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { .update_o_auth2_server( true, "https://your-product.com/oauth/consent", - Some(vec!["read:tasks".into(), "write:tasks".into()]), - Some(vec!["tasks".into()]), // authorization details types + Some(vec!["tasks.read".into(), "tasks.write".into()]), + Some(vec!["project".into()]), // authorization details types None, None, None, @@ -449,55 +310,50 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { `updateOAuth2Server` sets the full OAuth2 server configuration in one call. Include your existing scopes and settings when adding types, or they reset to their defaults. {% /info %} -Like scopes, a project can define up to 100 types, each up to 128 characters. The accepted types are published in the [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `authorization_details_types_supported`, so integrators can see them without asking you. +Like scopes, a project can define up to 100 types, each up to 128 characters. The accepted types are published in the [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `authorization_details_types_supported`. ## Request authorization details {% #request-authorization-details %} -A client sends its entries, JSON-encoded, as the `authorization_details` parameter on the same [authorize request](/docs/partners/oauth-server/authorization#authorize) that carries `scope`: +Most clients should request scopes without sending `authorization_details`. Your consent screen can read the requested scopes, ask the user to select resources, and add the details when it approves the grant. This keeps project IDs and resource-selection logic out of the third-party integration. -```client-web -import { Client, Oauth2 } from 'appwrite'; +For example, after a client requests `tasks.read`, the user might choose one project. The consent screen approves the grant with the selected project in `authorization_details`: -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID - -const oauth2 = new Oauth2(client); - -const details = [ +```bash +curl --request POST \ + 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ + --header 'Accept: application/json' \ + --header 'X-Appwrite-Session: <SESSION_TOKEN>' \ + --form 'grant_id=<GRANT_ID>' \ + --form 'authorization_details=[ { - type: 'tasks', - actions: ['read'], - projects: ['launch'], - }, -]; - -const result = await oauth2.authorize({ - clientId: '<CLIENT_ID>', - redirectUri: 'https://example.com/oauth/callback', - responseType: 'code', - scope: 'openid', - authorizationDetails: JSON.stringify(details), -}); + "type": "project", + "identifiers": ["<RESOURCE_PROJECT_ID>"] + } + ]' ``` -The server validates every entry before creating the grant: +In a browser-based consent screen, the project session cookie is sent automatically, so the `X-Appwrite-Session` header is not needed. The JSON response contains the client's redirect URL. Send the browser to that URL to continue the authorization flow. -- `type` is required and must be one of the types you defined. An unknown type fails the request with `invalid_authorization_details`. -- `actions`, when present, must be an array of non-empty strings. -- Every other field, like `projects` above, is yours to design. The server carries them through untouched. +A client that already knows the relevant resource IDs may send the same structure on its [authorize request](/docs/partners/oauth-server/authorization#authorize). Treat that as an optional preselection. The authorization flow should also work when the client omits it, and the consent screen should let the user review or narrow the final resource selection. + +For the `project` type, Appwrite accepts only `type` and a non-empty `identifiers` array. Each identifier must be a project ID, or `*` for every project. Other values fail validation before the grant is approved. ## Consent and enforcement {% #authorization-details-consent %} -Authorization details ride through the flow the same way scopes do: +Scopes and authorization details answer different questions throughout the flow: + +1. The client requests capabilities such as `tasks.read`. +2. Your consent screen reads the grant and asks the user which projects those capabilities should cover. +3. The consent screen approves the grant with the selected `authorization_details`. +4. Appwrite returns the granted details in the token response, includes them in the access token, and returns them from token introspection. -1. The requested details are stored on the grant, where your consent screen reads them to show the user exactly what is being asked. -2. When approving, the consent screen can pass a narrowed `authorization_details` back, the same way [consent](/docs/partners/oauth-server/authorization#consent) can grant a subset of the requested scopes. The user might approve `"actions": ["read"]` after the client asked for read and write. -3. The granted details are returned in the token response and stamped onto the access token as the `authorization_details` claim. +Your resource server must enforce both parts. After [introspecting the access token](/docs/partners/oauth-server/tokens#introspect), check that `active` is `true`, require the scope needed by the API operation, and then require an authorization detail that covers the requested resource. For an endpoint that reads tasks from one project, require `tasks.read` and a `project` entry whose `identifiers` contains that project ID or `*`. -Enforcement works exactly like scopes. Your API reads the `authorization_details` claim from the verified access token and applies the constraints it describes. The OAuth server only carries the details; your product gives them meaning. +Apply these checks conservatively: -That includes deciding how the two mechanisms combine when a token carries both: +- Treat a missing scope, missing authorization detail, unknown type, or unmatched identifier as denied. +- Interpret `*` explicitly as every project. Decide whether that includes projects created later and state that behavior on the consent screen. +- If `admin` grants every operation, document whether it also bypasses resource restrictions. Keep that rule consistent across every API endpoint. +- Compare stable resource IDs, not display names, and remove duplicate identifiers before evaluating them. -- If the token holds a `tasks` entry, apply its constraints: only the listed actions, only the listed projects. -- If it holds only the blanket scope, allow the whole resource. +Appwrite validates and carries the authorization details. Your consent screen decides what the user grants, and your resource server decides whether the granted scopes and details cover each API request. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc index 56f071e9f6..527c77a5f1 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc @@ -1,22 +1,22 @@ --- layout: tutorial title: Sign in with your product -description: Build an end-to-end "Sign in with your product" experience against your Appwrite OAuth server, from the consent screen to the token exchange. +description: Build an end-to-end "Sign in with your product" experience against your Appwrite OAuth2 server, from the consent screen to the token exchange. step: 1 difficulty: intermediate readtime: 25 framework: TanStack Start -category: OAuth server +category: OAuth2 server back: /docs/partners/oauth-server --- -Once your project's [OAuth server](/docs/partners/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. +Once your project's [OAuth2 server](/docs/partners/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. # What you will build {% #what-you-will-build %} Two apps play the two sides of an OAuth integration: -- **TaskFlow**, the provider. It owns the Appwrite project with the OAuth server enabled, and it hosts the **consent screen** where its users approve access. +- **TaskFlow**, the provider. It owns the Appwrite project with the OAuth2 server enabled, and it hosts the **consent screen** where its users approve access. - **Vantage**, the consumer. A separate product that adds a **Sign in with TaskFlow** button, exchanges the authorization code for tokens on its server, and reads the user's profile. TaskFlow is your product. Vantage stands in for any third party integrating with it. @@ -26,7 +26,7 @@ TaskFlow is your product. Vantage stands in for any third party integrating with When a Vantage user clicks **Sign in with TaskFlow**, this happens: 1. Vantage redirects the user to TaskFlow's **authorize** endpoint. -2. The OAuth server sends the user to TaskFlow's **consent screen** to sign in and approve. +2. The OAuth2 server sends the user to TaskFlow's **consent screen** to sign in and approve. 3. On approval, the server redirects back to Vantage with an **authorization code**. 4. Vantage's server **exchanges the code for tokens** using its client secret. 5. Vantage reads the user's profile from **userinfo** and signs them in. @@ -47,4 +47,4 @@ Vantage is a **confidential client**: it has a client secret. That secret authen The complete apps from this tutorial are on GitHub at [appwrite-community/oauth-guide-taskflow](https://github.com/appwrite-community/oauth-guide-taskflow). Clone it to follow along or to compare against your own. {% /info %} -Continue to enable the OAuth server on your project. +Continue to enable the OAuth2 server on your project. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc index 97c5a91157..06ac4fa880 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc @@ -1,7 +1,7 @@ --- layout: tutorial -title: Enable the OAuth server -description: Turn on the OAuth server on your Appwrite project and register the client app. +title: Enable the OAuth2 server +description: Turn on the OAuth2 server on your Appwrite project and register the client app. step: 2 --- @@ -18,7 +18,7 @@ Before writing any code, turn TaskFlow's project into an OAuth provider and regi In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **Enable OAuth2 server**. -Set the **Authorization URL** to where TaskFlow will host its consent screen. In this tutorial that is `http://localhost:4000/oauth/consent`. This is where the OAuth server sends users to sign in and approve. +Set the **Authorization URL** to where TaskFlow will host its consent screen. In this tutorial that is `http://localhost:4000/oauth/consent`. This is where the OAuth2 server sends users to sign in and approve. Leave the scopes at their defaults. `openid`, `profile`, and `email` are always included, which is all Vantage needs. See [Scopes](/docs/partners/oauth-server/scopes) to add your own later. @@ -35,7 +35,7 @@ Open the **Apps** sub-tab and create a client for Vantage: - **Name**: `Vantage`. This appears on the consent screen. - **Client type**: `Confidential`. Vantage has a server that can hold a secret. -- **Redirect URIs**: `http://localhost:4100/oauth/callback`. The OAuth server only returns codes to registered URIs. +- **Redirect URIs**: `http://localhost:4100/oauth/callback`. The OAuth2 server only returns codes to registered URIs. When you create the client, copy the **client secret**. It is shown once. You will also need the **client ID** from the clients list. @@ -47,7 +47,7 @@ When you create the client, copy the **client secret**. It is shown once. You wi {% /only_light %} {% info title="Keep these three values" %} -You now have everything the apps need to talk to the OAuth server: the **client ID**, the **client secret**, and your **project ID**. Keep them handy for the next step. +You now have everything the apps need to talk to the OAuth2 server: the **client ID**, the **client secret**, and your **project ID**. Keep them handy for the next step. {% /info %} For the full set of client options and the SDK equivalents, see [Clients](/docs/partners/oauth-server/clients). diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc index cbed8da94f..f8cb982b4f 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc @@ -47,7 +47,7 @@ export function vantageSession() { # The start route {% #start-route %} -Clicking the button navigates to `/oauth/start`. Its loader mints a random `state` value, stores it in the session to protect against CSRF, and redirects to the OAuth server. Create `consumer/src/routes/oauth.start.tsx`: +Clicking the button navigates to `/oauth/start`. Its loader mints a random `state` value, stores it in the session to protect against CSRF, and redirects to the OAuth2 server. Create `consumer/src/routes/oauth.start.tsx`: ```tsx // consumer/src/routes/oauth.start.tsx @@ -83,4 +83,4 @@ On the landing page, the button is a link to `/oauth/start`: </a> ``` -Start the app with `pnpm dev` and open `http://localhost:4100`. You have a landing page with a working sign-in button. Clicking it redirects to the OAuth server, which sends the user to TaskFlow's consent screen. That screen does not exist yet, so build it next. +Start the app with `pnpm dev` and open `http://localhost:4100`. You have a landing page with a working sign-in button. Clicking it redirects to the OAuth2 server, which sends the user to TaskFlow's consent screen. That screen does not exist yet, so build it next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc index 0cdffe9d85..fa6c2766cc 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc @@ -5,7 +5,7 @@ description: Host the consent screen where your users sign in and approve access step: 5 --- -The consent screen is the page TaskFlow hosts at its authorization URL. When the OAuth server sends a user here, the screen signs them in, shows what the client is asking for, and records their decision. All of it runs on TaskFlow's server, carrying the user's Appwrite session. +The consent screen is the page TaskFlow hosts at its authorization URL. When the OAuth2 server sends a user here, the screen signs them in, shows what the client is asking for, and records their decision. All of it runs on TaskFlow's server, carrying the user's Appwrite session. # Types for the consent card {% #types %} @@ -33,7 +33,7 @@ export const SCOPE_LABELS: Record<string, string> = { # The server helpers {% #helpers %} -Create `provider/src/lib/oauth-server.ts`. Every function here calls the OAuth server on behalf of the signed-in user. Appwrite returns the user's session token in a cookie on login, and that token is passed as the `X-Appwrite-Session` header on later calls. +Create `provider/src/lib/oauth-server.ts`. Every function here calls the OAuth2 server on behalf of the signed-in user. Appwrite returns the user's session token in a cookie on login, and that token is passed as the `X-Appwrite-Session` header on later calls. ```ts // provider/src/lib/oauth-server.ts @@ -98,7 +98,7 @@ export async function getClientApp(appId: string): Promise<ClientApp> { return res.json() } -/** Approve or reject a grant. The OAuth server returns the URL to send the +/** Approve or reject a grant. The OAuth2 server returns the URL to send the * user back to, carrying the authorization code (approve) or an error (reject). */ async function decide( action: 'approve' | 'reject', @@ -212,8 +212,8 @@ The component renders one of two cards from the loader data. The login form subm ![TaskFlow consent screen sign-in form](/images/docs/oauth-server/guide/taskflow-login.avif) -When the OAuth server sends a user to the consent screen, they first sign in with their TaskFlow account. +When the OAuth2 server sends a user to the consent screen, they first sign in with their TaskFlow account. ![TaskFlow consent screen showing the requested permissions](/images/docs/oauth-server/guide/taskflow-consent.avif) -The consent card then shows the client's name and exactly what it is asking for. On **Authorize**, the OAuth server redirects back to Vantage with an authorization code. Vantage handles it next. +The consent card then shows the client's name and exactly what it is asking for. On **Authorize**, the OAuth2 server redirects back to Vantage with an authorization code. Vantage handles it next. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc index 874fbedfdf..38d65716cb 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc @@ -5,7 +5,7 @@ description: Handle the callback, exchange the authorization code for tokens on step: 6 --- -The OAuth server redirects back to Vantage's redirect URI with a `code` and the `state`. Vantage exchanges that code for tokens on its server, reads the user's profile, and signs them in. +The OAuth2 server redirects back to Vantage's redirect URI with a `code` and the `state`. Vantage exchanges that code for tokens on its server, reads the user's profile, and signs them in. # Add the token functions {% #token-functions %} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc index 4ffa7df73e..be0e5d5ec7 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc @@ -31,11 +31,11 @@ Open `http://localhost:4100` and click **Sign in with TaskFlow**. You will: 2. See exactly what Vantage is requesting, and approve it. 3. Return to Vantage, signed in, with your TaskFlow name and email on the dashboard. -That round trip is a complete OAuth 2.1 authorization code flow against your project's OAuth server. +That round trip is a complete OAuth 2.1 authorization code flow against your project's OAuth2 server. # What each side did {% #recap %} -- **TaskFlow** enabled the OAuth server, registered Vantage as a confidential client, and hosted a consent screen that authenticates its users and approves grants. +- **TaskFlow** enabled the OAuth2 server, registered Vantage as a confidential client, and hosted a consent screen that authenticates its users and approves grants. - **Vantage** redirected to the authorize endpoint, exchanged the returned code for tokens on its server, and read the user's profile from userinfo. The client secret never left its server. Because the flow is standards-based, a real integrator does not have to use Appwrite or TanStack Start. Any OAuth or OpenID Connect client library pointed at your project's [discovery URL](/docs/partners/oauth-server/quick-start#discovery) works the same way. diff --git a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc index 91a8901fce..add1fab9d3 100644 --- a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc @@ -1,17 +1,17 @@ --- layout: article title: Tokens -description: Access, refresh, and ID tokens issued by Appwrite's OAuth server, their lifetimes, and how to refresh, introspect, and revoke them. +description: Access, refresh, and ID tokens issued by Appwrite's OAuth2 server, their lifetimes, and how to validate, refresh, introspect, revoke, and end sessions. back: /docs/partners/oauth-server --- -When a client redeems an authorization code, the OAuth server issues three tokens: an access token, a refresh token, and an ID token. This page covers what each one is, how long it lives, and how to refresh, validate, and revoke them. +When a client redeems an authorization code, the OAuth2 server issues an access token and refresh token. It also issues an ID token when the `openid` scope was granted. This page covers what each token does and how clients and resource servers validate, refresh, introspect, revoke, and end sessions. # The three tokens {% #tokens %} -- **Access token.** A JWT the client sends to call APIs on the user's behalf. It is signed with your project's key (`RS256`) and carries the granted scopes. Present it as a `Bearer` token to the userinfo endpoint or your own resource server. -- **Refresh token.** An opaque token the client exchanges for a new access token when the old one expires, without sending the user through authorization again. -- **ID token.** A JWT from the OpenID Connect layer that identifies the user (subject, and any profile claims the granted scopes allow). Clients validate it against the server's published keys. +- **Access token.** A signed JWT that a client presents to a resource server when it calls an API on the user's behalf. It contains the authorization information the resource server needs to evaluate the request. The claims are explained in [Validate tokens](#validate). +- **Refresh token.** A value the client exchanges for a new access token when the current one expires, without sending the user through authorization again. Treat it as an opaque secret even though Appwrite currently encodes it as a JWT. +- **ID token.** A signed JWT from OpenID Connect that tells the client who authenticated. It is returned when the `openid` scope is granted and can include profile, email, or phone claims when those scopes were approved. A public client can use these verified claims to show the user's name or decide that its sign-in UI needs attention before calling an API. Resource servers authorize requests with the access token, not the ID token. # Exchange a code for tokens {% #exchange %} @@ -164,7 +164,19 @@ console.log(result); ``` {% /multicode %} -The response contains the access token, refresh token, ID token, granted scope, and the access token's lifetime in seconds. +The response includes the access token, refresh token, granted scopes, token type, and access-token lifetime. It includes an ID token when the `openid` scope was granted. `authorization_details` contains the approved rich authorization data when the request used it. + +```json +{ + "access_token": "eyJ...", + "token_type": "Bearer", + "expires_in": 3600, + "refresh_token": "eyJ...", + "scope": "openid profile email", + "authorization_details": null, + "id_token": "eyJ..." +} +``` # Token lifetimes {% #lifetimes %} @@ -179,170 +191,198 @@ Public clients get shorter lifetimes because their tokens live on user devices, # Refresh with rotation {% #refresh %} -To refresh, the client calls the token endpoint with `grantType: 'refresh_token'` and its current refresh token. The response includes a **new** access token and a **new** refresh token. +To refresh, the client sends its current refresh token to the token endpoint. A successful response contains a new access token and a new refresh token. -Refresh tokens rotate: each refresh invalidates the token that was used. If an old refresh token is presented again, the server treats it as a compromise and revokes the entire token family, forcing the user to reauthorize. This means a client must always store the newest refresh token it received. +Each successful refresh replaces the stored refresh token. The client must store the newest refresh token before making another request. If the client presents an older refresh token again, Appwrite treats it as reuse and deletes the OAuth identity for that client and user. The current access token and newest refresh token then stop working, and the user must authorize that client again. Tokens issued to other clients are not affected. -To refresh, reuse the `createToken` call with the refresh grant: +This public-client example sends JSON. A confidential client also includes its `client_secret`. ```http POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 Host: <REGION>.cloud.appwrite.io -Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> -Content-Type: application/x-www-form-urlencoded +Content-Type: application/json -grant_type=refresh_token&refresh_token=<REFRESH_TOKEN> +{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>" +} ``` +The response has the same shape as the original token response, with new values for `access_token`, `refresh_token`, and `expires_in`. + # Validate tokens {% #validate %} -Access and ID tokens are `RS256` JWTs signed with your project's key. A client validates them offline by fetching the server's public keys once from the JWKS endpoint and checking the signature, issuer, and expiry. +Access and ID tokens are `RS256` JWTs signed with your project's key. A JWT contains a header, payload, and signature. The payload is readable, but its claims are trustworthy only after the client or resource server verifies the signature, issuer, audience, and expiry. + +The server publishes its public keys as a JWKS document: ```http GET /v1/oauth2/<PROJECT_ID>/.well-known/jwks.json HTTP/1.1 Host: <REGION>.cloud.appwrite.io ``` -To read the user's profile from an access token, call the userinfo endpoint: +A web client can use the `jose` package to read the discovery document, select the correct public key from the JWKS response, and verify both tokens: -```http -GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 -Host: <REGION>.cloud.appwrite.io -Authorization: Bearer <ACCESS_TOKEN> -``` +```client-web +import { createRemoteJWKSet, jwtVerify } from 'jose'; -# Introspect a token {% #introspect %} +const accessToken = '<ACCESS_TOKEN>'; +const idToken = '<ID_TOKEN>'; +const clientId = '<CLIENT_ID>'; -A resource server can ask the OAuth server whether a token is still valid with the introspection endpoint. Introspection requires client authentication, so only confidential clients (or an API key with the `oauth2.read` scope) can call it. A public client, having no secret, cannot introspect. +const discoveryUrl = + 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/.well-known/openid-configuration'; +const metadata = await fetch(discoveryUrl).then((response) => response.json()); +const jwks = createRemoteJWKSet(new URL(metadata.jwks_uri)); +const projectAudience = metadata.issuer.replace('/oauth2/', '/'); -```http -POST /v1/oauth2/<PROJECT_ID>/introspect HTTP/1.1 -Host: <REGION>.cloud.appwrite.io -Authorization: Basic <BASE64(CLIENT_ID:CLIENT_SECRET)> -Content-Type: application/x-www-form-urlencoded +const { payload: accessClaims } = await jwtVerify(accessToken, jwks, { + issuer: metadata.issuer, + audience: projectAudience +}); -token=<ACCESS_TOKEN> +const { payload: idClaims } = await jwtVerify(idToken, jwks, { + issuer: metadata.issuer, + audience: clientId +}); ``` -A valid token returns `"active": true` with its scope, subject, and expiry. A revoked or expired token returns `"active": false`. - -# Revoke a token {% #revoke %} - -A client revokes a token it no longer needs with the revocation endpoint. Confidential clients authenticate with their secret; public clients revoke without one. - -{% multicode %} -```client-web -import { Client, Oauth2 } from 'appwrite'; +A verified access-token payload contains the authorization context for API calls: + +```json +{ + "iss": "<ISSUER>", + "sub": "<USER_ID>", + "aud": ["<PROJECT_API_AUDIENCE>"], + "client_id": "<CLIENT_ID>", + "scope": "openid profile email calendar.read", + "auth_time": 1784052423, + "iat": 1784052858, + "exp": 1784056458, + "jti": "<TOKEN_JTI>", + "tokenId": "<TOKEN_ID>" +} +``` -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID +A verified ID-token payload identifies the signed-in user. Profile claims appear only when their matching scopes were granted: + +```json +{ + "iss": "<ISSUER>", + "sub": "<USER_ID>", + "aud": "<CLIENT_ID>", + "name": "Ada Lovelace", + "email": "ada@example.com", + "email_verified": true, + "auth_time": 1784052423, + "iat": 1784052858, + "exp": 1784056458, + "at_hash": "<ACCESS_TOKEN_HASH>" +} +``` -const oauth2 = new Oauth2(client); +A client may decode a token without verification to make a temporary UI choice, such as showing a sign-in screen before an API request. Only verified claims should control access or display trusted identity information. -const result = await oauth2.revoke({ - token: '<TOKEN>', - tokenTypeHint: 'access_token', // optional - clientId: '<CLIENT_ID>', // optional - clientSecret: '<CLIENT_SECRET>' // optional -}); +To retrieve the current user's profile with an access token, call the userinfo endpoint: -console.log(result); +```http +GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Authorization: Bearer <ACCESS_TOKEN> ``` -```client-flutter -import 'package:appwrite/appwrite.dart'; -Client client = Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID +# Introspect a token {% #introspect %} -Oauth2 oauth2 = Oauth2(client); +An OAuth access token is not an Appwrite session or API key, so it does not authorize general Appwrite SDK methods. Appwrite's OAuth endpoints consume tokens only where the OAuth flow defines them. For example, userinfo accepts an access token as a bearer credential, while the token, introspection, and revocation endpoints accept their respective tokens as request parameters. - result = await oauth2.revoke( - token: '<TOKEN>', - tokenTypeHint: 'access_token', // optional - clientId: '<CLIENT_ID>', // optional - clientSecret: '<CLIENT_SECRET>', // optional -); -``` -```client-apple -import Appwrite +To make an access token useful to your product: -let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID +1. Add custom scopes in **Auth > OAuth2 server > Settings** that describe the operations your API exposes. +2. Host an API that acts as the resource server. Appwrite Functions and server-rendered Appwrite Sites are suitable places to run it. +3. Read the bearer access token from each incoming request. +4. From your server, call the introspection endpoint with an Appwrite API key that has the `oauth2.read` scope. Keep this API key on the server. +5. Require `active: true`, then check that `scope` contains every permission the API operation needs. +6. Perform the operation only after those checks pass. -let oauth2 = Oauth2(client) +Introspection verifies the token against the current OAuth identity, so it detects expiry, revocation, refresh rotation, and refresh-token reuse. This is different from offline JWT verification, which cannot detect a token that was revoked before its `exp` time. -let result = try await oauth2.revoke( - token: "<TOKEN>", - token_type_hint: "access_token", // optional - client_id: "<CLIENT_ID>", // optional - client_secret: "<CLIENT_SECRET>" // optional -) +The resource server sends JSON: +```http +POST /v1/oauth2/<PROJECT_ID>/introspect HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <API_KEY> +Content-Type: application/json + +{ + "token": "<ACCESS_TOKEN>", + "token_type_hint": "access_token" +} ``` -```client-android-kotlin -import io.appwrite.Client -import io.appwrite.coroutines.CoroutineCallback -import io.appwrite.services.Oauth2 -val client = Client(context) - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>") // Your project ID +An active access token returns its client, user, audience, expiry, and granted scopes: + +```json +{ + "active": true, + "scope": "calendar.read calendar.write", + "client_id": "<CLIENT_ID>", + "token_type": "Bearer", + "sub": "<USER_ID>", + "aud": ["<PROJECT_API_AUDIENCE>"], + "iss": "<ISSUER>", + "exp": 1784056458, + "iat": 1784052858, + "jti": "<TOKEN_JTI>", + "token_use": "access_token" +} +``` -val oauth2 = Oauth2(client) +An expired, revoked, malformed, or otherwise inactive token returns: -val result = oauth2.revoke( - token = "<TOKEN>", - token_type_hint = "access_token", // (optional) - client_id = "<CLIENT_ID>", // (optional) - client_secret = "<CLIENT_SECRET>", // (optional) -) +```json +{ + "active": false +} ``` -```client-android-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Oauth2; -Client client = new Client(context) - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<YOUR_PROJECT_ID>"); // Your project ID +A confidential OAuth client can also authenticate with its client ID and client secret to introspect one of its own tokens. Public clients must not receive a project API key or client secret. -Oauth2 oauth2 = new Oauth2(client); +# Revoke a token {% #revoke %} -oauth2.revoke( - "<TOKEN>", // token - "access_token", // token_type_hint (optional) - "<CLIENT_ID>", // client_id (optional) - "<CLIENT_SECRET>", // client_secret (optional) - new CoroutineCallback<>((result, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } +A third-party client should revoke its token when the user disconnects the integration or the client no longer needs access. Revoking either the current access token or refresh token deletes the OAuth identity for that client and user, so both current tokens stop working. - Log.d("Appwrite", result.toString()); - }) -); +This public-client example sends JSON. A confidential client also includes its `client_secret`. +```http +POST /v1/oauth2/<PROJECT_ID>/revoke HTTP/1.1 +Host: <REGION>.cloud.appwrite.io +Content-Type: application/json + +{ + "token": "<TOKEN>", + "token_type_hint": "access_token", + "client_id": "<CLIENT_ID>" +} ``` -```client-react-native -import { Client, Oauth2 } from "react-native-appwrite"; -const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint - .setProject('<YOUR_PROJECT_ID>'); // Your project ID +A successful revocation returns `200 OK` with an empty body. The endpoint returns the same response for an unknown token so callers cannot use it to discover valid tokens. -const oauth2 = new Oauth2(client); +# Sign out from the authorization server {% #logout %} -const result = await oauth2.revoke({ - token: '<TOKEN>', - tokenTypeHint: 'access_token', // optional - clientId: '<CLIENT_ID>', // optional - clientSecret: '<CLIENT_SECRET>' // optional -}); +Revocation disconnects one client without ending the user's browser session on your project. OpenID Connect logout ends that Appwrite session and revokes the tokens issued to the app identified by the ID token. This is useful for official apps that share your authorization server and need signing out of one app to require a fresh project sign-in elsewhere. -console.log(result); +Other clients' existing OAuth tokens remain valid. Revoke those clients separately if your security policy requires it. + +Before using logout, add the destination to the app's **Post-logout redirect URIs** in **Auth > OAuth2 server > Apps**. The URI in the logout request must match a registered value exactly. + +Send the browser to the logout endpoint with the ID token previously issued to the app: + +```http +GET /v1/oauth2/<PROJECT_ID>/logout?id_token_hint=<URL_ENCODED_ID_TOKEN>&post_logout_redirect_uri=https%3A%2F%2Fclient.example.com%2Fsigned-out&state=<STATE> HTTP/1.1 +Host: <REGION>.cloud.appwrite.io ``` -{% /multicode %} + +Appwrite verifies the ID token's signature, issuer, client, and user. It accepts an expired ID token as a logout hint, but still requires the token to be validly signed. After deleting the current project session and the app's OAuth identity, Appwrite redirects to the registered URI and returns `state` unchanged. If no post-logout redirect URI is supplied, the endpoint returns `204 No Content`. diff --git a/static/images/docs/oauth-server/dark/oauth2-server-create-app.avif b/static/images/docs/oauth-server/dark/oauth2-server-create-app.avif index a38ed59cfced29c781c521ab2c33dd606be79c58..94bd4a953e265f718c1a2fe4e60a227e90c2e96a 100644 GIT binary patch delta 23830 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 @aYe;{BMRDl4kV6wb6w^}h^skg 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 delta 23986 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 diff --git a/static/images/docs/oauth-server/oauth2-server-create-app.avif b/static/images/docs/oauth-server/oauth2-server-create-app.avif index 76a620c6698d7f75127ed421989532184037faa0..c437b93ebbf40f5f9538918220fe68d87f7124c6 100644 GIT binary patch delta 22528 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 bXr)BB?}P8#tgEVMs(+aZ9_Y({AzH8~8I)vi delta 21981 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 A-2eap From 289f7dec17b7095447e0ecf2a6b254a58749453c Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 15 Jul 2026 16:44:16 +0530 Subject: [PATCH 15/38] docs(oauth-server): replace raw HTTP blocks with tabbed cURL and Hurl examples --- src/lib/utils/code.ts | 2 + src/lib/utils/references.ts | 2 + .../oauth-server/authorization/+page.markdoc | 83 +++++++++----- .../oauth-server/clients/+page.markdoc | 49 ++++++--- .../oauth-server/device-flow/+page.markdoc | 35 ++++-- .../oauth-server/quick-start/+page.markdoc | 90 +++++++++------ .../oauth-server/tokens/+page.markdoc | 103 ++++++++++++------ 7 files changed, 248 insertions(+), 116 deletions(-) diff --git a/src/lib/utils/code.ts b/src/lib/utils/code.ts index 87503c1066..f58058218a 100644 --- a/src/lib/utils/code.ts +++ b/src/lib/utils/code.ts @@ -54,6 +54,8 @@ const languages = { java: java, cpp: cpp, bash: bash, + curl: bash, + hurl: http, powershell: powershell, cmd: dos, yaml: yaml, diff --git a/src/lib/utils/references.ts b/src/lib/utils/references.ts index ad3358eebf..bc2dda57f8 100644 --- a/src/lib/utils/references.ts +++ b/src/lib/utils/references.ts @@ -136,6 +136,8 @@ export const platformMap: Record<Language | string, string> = { csharp: 'C#', cpp: 'C++', bash: 'Bash', + curl: 'cURL', + hurl: 'Hurl', powershell: 'PowerShell', cmd: 'CMD', yaml: 'YAML', diff --git a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc index ff12a3085b..0ac7119c28 100644 --- a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc @@ -37,10 +37,29 @@ The request contains: - `state`, which the client uses to connect the callback to the request it started and protect against request forgery. - `code_challenge` and `code_challenge_method=S256`, which are required for public clients and for confidential clients when **Require PKCE** is enabled. -```http -GET /v1/oauth2/<PROJECT_ID>/authorize?client_id=<CLIENT_ID>&redirect_uri=https%3A%2F%2Fclient.example.com%2Fcallback&response_type=code&scope=openid%20profile&state=<STATE>&code_challenge=<CODE_CHALLENGE>&code_challenge_method=S256 HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -G 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize' \ + --data-urlencode 'client_id=<CLIENT_ID>' \ + --data-urlencode 'redirect_uri=https://client.example.com/callback' \ + --data-urlencode 'response_type=code' \ + --data-urlencode 'scope=openid profile' \ + --data-urlencode 'state=<STATE>' \ + --data-urlencode 'code_challenge=<CODE_CHALLENGE>' \ + --data-urlencode 'code_challenge_method=S256' +``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize +[Query] +client_id: <CLIENT_ID> +redirect_uri: https://client.example.com/callback +response_type: code +scope: openid profile +state: <STATE> +code_challenge: <CODE_CHALLENGE> +code_challenge_method: S256 ``` +{% /multicode %} After Appwrite validates the request, the browser goes to the authorization URL configured for your project. Your consent screen handles the user's session and decision. @@ -48,21 +67,34 @@ After Appwrite validates the request, the browser goes to the authorization URL Pushed authorization requests (PAR) keep the authorization parameters out of the browser URL. The client first sends the parameters to the PAR endpoint: -```http -POST /v1/oauth2/<PROJECT_ID>/par HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/par' \ + -H 'Content-Type: application/json' \ + -d '{ + "client_id": "<CLIENT_ID>", + "redirect_uri": "https://client.example.com/callback", + "response_type": "code", + "scope": "openid profile", + "state": "<STATE>", + "code_challenge": "<CODE_CHALLENGE>", + "code_challenge_method": "S256" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/par Content-Type: application/json - { - "client_id": "<CLIENT_ID>", - "redirect_uri": "https://client.example.com/callback", - "response_type": "code", - "scope": "openid profile", - "state": "<STATE>", - "code_challenge": "<CODE_CHALLENGE>", - "code_challenge_method": "S256" + "client_id": "<CLIENT_ID>", + "redirect_uri": "https://client.example.com/callback", + "response_type": "code", + "scope": "openid profile", + "state": "<STATE>", + "code_challenge": "<CODE_CHALLENGE>", + "code_challenge_method": "S256" } ``` +{% /multicode %} Appwrite returns a `request_uri` and the number of seconds before it expires: @@ -73,12 +105,19 @@ Appwrite returns a `request_uri` and the number of seconds before it expires: } ``` -Before it expires, send the user to the authorization endpoint with only the URL-encoded `request_uri`. Do not repeat the original authorization parameters. +Before it expires, send the user to the authorization endpoint with only the `request_uri`. Do not repeat the original authorization parameters. -```http -GET /v1/oauth2/<PROJECT_ID>/authorize?request_uri=<URL_ENCODED_REQUEST_URI> HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -G 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize' \ + --data-urlencode 'request_uri=<REQUEST_URI>' +``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize +[Query] +request_uri: <REQUEST_URI> ``` +{% /multicode %} # 2. Host the consent screen {% #consent %} @@ -175,7 +214,6 @@ let oauth2Authorize = try await oauth2.authorize( authorization_details: "<AUTHORIZATION_DETAILS>", // optional resource: "" // optional ) - ``` ```client-android-kotlin import io.appwrite.Client @@ -236,7 +274,6 @@ oauth2.authorize( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native import { Client, Oauth2 } from "react-native-appwrite"; @@ -313,7 +350,6 @@ let oauth2 = Oauth2(client) let oauth2Grant = try await oauth2.getGrant( grant_id: "<GRANT_ID>" ) - ``` ```client-android-kotlin import io.appwrite.Client @@ -352,7 +388,6 @@ oauth2.getGrant( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native import { Client, Oauth2 } from "react-native-appwrite"; @@ -422,7 +457,6 @@ let oauth2Approve = try await oauth2.approve( authorization_details: "<AUTHORIZATION_DETAILS>", // optional scope: "<SCOPE>" // optional ) - ``` ```client-android-kotlin import io.appwrite.Client @@ -465,7 +499,6 @@ oauth2.approve( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native import { Client, Oauth2 } from "react-native-appwrite"; @@ -531,7 +564,6 @@ let oauth2 = Oauth2(client) let oauth2Reject = try await oauth2.reject( grant_id: "<GRANT_ID>" ) - ``` ```client-android-kotlin import io.appwrite.Client @@ -570,7 +602,6 @@ oauth2.reject( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native import { Client, Oauth2 } from "react-native-appwrite"; diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/partners/oauth-server/clients/+page.markdoc index 6a2294219f..a5839e34e1 100644 --- a/src/routes/docs/partners/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/clients/+page.markdoc @@ -61,7 +61,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], }); ``` ```client-flutter @@ -76,7 +76,7 @@ Apps apps = Apps(client); App app = await apps.create( appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], ); ``` ```client-apple @@ -91,7 +91,7 @@ let apps = Apps(client) let app = try await apps.create( appId: ID.unique(), name: "Custom App", - redirectUris: ["http://customapp.localhost/auth/redirect"] + redirectUris: ["http://vantage.localhost/auth/redirect"] ) ``` ```client-android-kotlin @@ -108,7 +108,7 @@ val apps = Apps(client) val app = apps.create( appId = ID.unique(), name = "Custom App", - redirectUris = listOf("http://customapp.localhost/auth/redirect") + redirectUris = listOf("http://vantage.localhost/auth/redirect") ) ``` ```client-android-java @@ -126,7 +126,7 @@ Apps apps = new Apps(client); apps.create( ID.unique(), // appId "Custom App", // name - List.of("http://customapp.localhost/auth/redirect"), // redirectUris + List.of("http://vantage.localhost/auth/redirect"), // redirectUris null, // description (optional) null, // clientUri (optional) null, // logoUri (optional) @@ -165,7 +165,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], }); ``` {% /multicode %} @@ -623,7 +623,7 @@ const app = await apps.update({ name: 'Custom App', description: 'A third-party app that signs in with your product.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, }); ``` @@ -641,7 +641,7 @@ App app = await apps.update( name: 'Custom App', description: 'A third-party app that signs in with your product.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, ); ``` @@ -659,7 +659,7 @@ let app = try await apps.update( name: "Custom App", description: "A third-party app that signs in with your product.", logoUri: "https://example.com/logo.png", - redirectUris: ["http://customapp.localhost/auth/redirect"], + redirectUris: ["http://vantage.localhost/auth/redirect"], enabled: true ) ``` @@ -678,7 +678,7 @@ val app = apps.update( name = "Custom App", description = "A third-party app that signs in with your product.", logoUri = "https://example.com/logo.png", - redirectUris = listOf("http://customapp.localhost/auth/redirect"), + redirectUris = listOf("http://vantage.localhost/auth/redirect"), enabled = true ) ``` @@ -708,7 +708,7 @@ apps.update( null, // supportUrl (optional) null, // dataDeletionUrl (optional) true, // enabled (optional) - List.of("http://customapp.localhost/auth/redirect"), // redirectUris (optional) + List.of("http://vantage.localhost/auth/redirect"), // redirectUris (optional) null, // postLogoutRedirectUris (optional) null, // type (optional) null, // deviceFlow (optional) @@ -736,7 +736,7 @@ const app = await apps.update({ name: 'Custom App', description: 'A third-party app that signs in with your product.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, }); ``` @@ -1274,23 +1274,36 @@ await apps.delete({ Clients can also register themselves over plain HTTP, without an Appwrite SDK or a signed-in user, through the registration endpoint ([RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591)). This is what makes your OAuth2 server compatible with MCP servers and other software that provisions its own client on first contact. Registration is rate-limited per IP. -```http -POST /v1/oauth2/<PROJECT_ID>/register HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/register' \ + -H 'Content-Type: application/json' \ + -d '{ + "client_name": "MCP Client", + "redirect_uris": [ + "http://vantage.localhost/auth/redirect" + ], + "token_endpoint_auth_method": "none" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/register Content-Type: application/json - { "client_name": "MCP Client", - "redirect_uris": ["http://customapp.localhost/auth/redirect"], + "redirect_uris": [ + "http://vantage.localhost/auth/redirect" + ], "token_endpoint_auth_method": "none" } ``` +{% /multicode %} ```json { "client_id": "6a56677caf736a2310a2", "client_id_issued_at": 1784047484, - "redirect_uris": ["http://customapp.localhost/auth/redirect"], + "redirect_uris": ["http://vantage.localhost/auth/redirect"], "token_endpoint_auth_method": "none", "grant_types": ["authorization_code"], "response_types": ["code"], diff --git a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc index 1ae6eec6ad..a034054364 100644 --- a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc @@ -51,17 +51,26 @@ The device client uses HTTP for the device authorization and token requests. Send the client ID and requested scopes to the device authorization endpoint as JSON: -```http -POST /v1/oauth2/<PROJECT_ID>/device_authorization HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/device_authorization' \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -d '{ + "client_id": "<CLIENT_ID>", + "scope": "openid profile tasks.read" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/device_authorization Content-Type: application/json Accept: application/json - { "client_id": "<CLIENT_ID>", "scope": "openid profile tasks.read" } ``` +{% /multicode %} The request can also include: @@ -90,18 +99,28 @@ Show the `user_code` and `verification_uri` on the device. You can also present Start polling the token endpoint in the background. Wait at least the number of seconds in `interval` between requests: -```http -POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ + -H 'Content-Type: application/json' \ + -H 'Accept: application/json' \ + -d '{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "<DEVICE_CODE>", + "client_id": "<CLIENT_ID>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token Content-Type: application/json Accept: application/json - { "grant_type": "urn:ietf:params:oauth:grant-type:device_code", "device_code": "<DEVICE_CODE>", "client_id": "<CLIENT_ID>" } ``` +{% /multicode %} Handle each response according to its `error` value: diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc index e09fe840f1..81a22008e2 100644 --- a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc @@ -9,8 +9,8 @@ This guide turns your project into an OAuth2 provider and runs one sign-in throu The examples follow two apps, the same pair the [tutorials](/docs/partners/oauth-server/sign-in-with-your-product/step-1) build out in full: -- **TaskFlow** (`http://platform.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. -- **Vantage** (`http://customapp.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. +- **TaskFlow** (`http://taskflow.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. +- **Vantage** (`http://vantage.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. # Enable the server {% #enable %} @@ -23,7 +23,7 @@ In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **E ![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) {% /only_light %} -Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization, and where you present them the details of the request so they can approve or cancel. Point it at `http://platform.localhost/consent`, where TaskFlow will host its consent screen. Nothing needs to run there yet. The `openid`, `profile`, and `email` scopes are always included; add any scopes your custom APIs will support. +Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization, and where you present them the details of the request so they can approve or cancel. Point it at `http://taskflow.localhost/consent`, where TaskFlow will host its consent screen. Nothing needs to run there yet. The `openid`, `profile`, and `email` scopes are always included; add any scopes your custom APIs will support. You can also enable and configure the server with a [Server SDK](/docs/sdks#server) using the `updateOAuth2Server` method. @@ -290,7 +290,6 @@ project.updateOAuth2Server( System.out.println(result); }) ); - ``` ```server-swift import Appwrite @@ -317,7 +316,6 @@ let project = try await project.updateOAuth2Server( userCodeFormat: "numeric", // optional deviceCodeDuration: 60 // optional ) - ``` ```server-go package main @@ -403,7 +401,7 @@ Open it in a browser to confirm the server is live. It returns JSON describing t # Register a client {% #register %} -Each app that integrates with your project registers as a client. Here that is Vantage. The **redirect URI** it declares is a URL on Vantage, `http://customapp.localhost/auth/redirect`, where the OAuth2 server sends users back with the authorization code. Any HTTP or HTTPS URL works. +Each app that integrates with your project registers as a client. Here that is Vantage. The **redirect URI** it declares is a URL on Vantage, `http://vantage.localhost/auth/redirect`, where the OAuth2 server sends users back with the authorization code. Any HTTP or HTTPS URL works. Open the **Apps** sub-tab and create a client. Name it `Vantage`, add the redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. @@ -429,7 +427,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], }); ``` ```client-flutter @@ -444,7 +442,7 @@ Apps apps = Apps(client); App app = await apps.create( appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], ); ``` ```client-apple @@ -459,7 +457,7 @@ let apps = Apps(client) let app = try await apps.create( appId: ID.unique(), name: "Vantage", - redirectUris: ["http://customapp.localhost/auth/redirect"] + redirectUris: ["http://vantage.localhost/auth/redirect"] ) ``` ```client-android-kotlin @@ -476,7 +474,7 @@ val apps = Apps(client) val app = apps.create( appId = ID.unique(), name = "Vantage", - redirectUris = listOf("http://customapp.localhost/auth/redirect") + redirectUris = listOf("http://vantage.localhost/auth/redirect") ) ``` ```client-android-java @@ -494,7 +492,7 @@ Apps apps = new Apps(client); apps.create( ID.unique(), // appId "Vantage", // name - List.of("http://customapp.localhost/auth/redirect"), // redirectUris + List.of("http://vantage.localhost/auth/redirect"), // redirectUris null, // description (optional) null, // clientUri (optional) null, // logoUri (optional) @@ -533,7 +531,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], }); ``` {% /multicode %} @@ -555,7 +553,7 @@ const app = await apps.update({ name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, }); ``` @@ -573,7 +571,7 @@ App app = await apps.update( name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, ); ``` @@ -591,7 +589,7 @@ let app = try await apps.update( name: "Vantage", description: "A dashboard that signs in with TaskFlow.", logoUri: "https://example.com/logo.png", - redirectUris: ["http://customapp.localhost/auth/redirect"], + redirectUris: ["http://vantage.localhost/auth/redirect"], enabled: true ) ``` @@ -610,7 +608,7 @@ val app = apps.update( name = "Vantage", description = "A dashboard that signs in with TaskFlow.", logoUri = "https://example.com/logo.png", - redirectUris = listOf("http://customapp.localhost/auth/redirect"), + redirectUris = listOf("http://vantage.localhost/auth/redirect"), enabled = true ) ``` @@ -640,7 +638,7 @@ apps.update( null, // supportUrl (optional) null, // dataDeletionUrl (optional) true, // enabled (optional) - List.of("http://customapp.localhost/auth/redirect"), // redirectUris (optional) + List.of("http://vantage.localhost/auth/redirect"), // redirectUris (optional) null, // postLogoutRedirectUris (optional) null, // type (optional) null, // deviceFlow (optional) @@ -668,7 +666,7 @@ const app = await apps.update({ name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', logoUri: 'https://example.com/logo.png', - redirectUris: ['http://customapp.localhost/auth/redirect'], + redirectUris: ['http://vantage.localhost/auth/redirect'], enabled: true, }); ``` @@ -689,9 +687,9 @@ The URL uses TaskFlow's Appwrite API endpoint because its Appwrite project is ac ```text https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize ?client_id=<CLIENT_ID> - &redirect_uri=http://customapp.localhost/auth/redirect + &redirect_uri=http://vantage.localhost/auth/redirect &response_type=code - &scope=openid%20profile%20email + &scope=openid profile email &state=<STATE> ``` @@ -717,21 +715,30 @@ After Vantage opens the authorization endpoint: - **TaskFlow presents the request.** A complete consent screen uses the grant ID to show that Vantage is asking for the user's profile and email, then lets the user approve or cancel. The [Authorization](/docs/partners/oauth-server/authorization#consent) guide shows how to build this screen. -- **Copy the grant ID.** This quick start does not build TaskFlow's consent screen, so the browser lands on `http://platform.localhost/consent` and finds nothing there. Copy the `grant_id` from the address bar to continue manually. +- **Copy the grant ID.** This quick start does not build TaskFlow's consent screen, so the browser lands on `http://taskflow.localhost/consent` and finds nothing there. Copy the `grant_id` from the address bar to continue manually. - **Sign in if the grant ID is missing.** A URL without a `grant_id` means the user does not have an active TaskFlow session. Sign in a user on the project, then open Vantage's authorization URL again. - **Approve Vantage's request.** Send the `grant_id` to the approval endpoint using the same TaskFlow user's session. A browser sends the session cookie automatically. From another environment, pass the session token in the `X-Appwrite-Session` header. Use this request: -```http -POST /v1/oauth2/<PROJECT_ID>/approve HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ + -H 'Content-Type: application/json' \ + -H 'X-Appwrite-Session: <SESSION_TOKEN>' \ + -d '{ + "grant_id": "<GRANT_ID>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve Content-Type: application/json - +X-Appwrite-Session: <SESSION_TOKEN> { "grant_id": "<GRANT_ID>" } ``` +{% /multicode %} - **Return to Vantage.** After approval, Appwrite redirects the browser to Vantage's registered redirect URI with an authorization `code` in the query string. Vantage uses this code in the next step. @@ -739,20 +746,32 @@ Content-Type: application/json Vantage's server sends the code to the token endpoint. A confidential client passes its `client_secret`; a public client passes its PKCE `code_verifier` instead. -```http -POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ + -H 'Content-Type: application/json' \ + -d '{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://vantage.localhost/auth/redirect", + "client_id": "<CLIENT_ID>", + "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", + "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token Content-Type: application/json - { "grant_type": "authorization_code", "code": "<CODE>", - "redirect_uri": "http://customapp.localhost/auth/redirect", + "redirect_uri": "http://vantage.localhost/auth/redirect", "client_id": "<CLIENT_ID>", "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" } ``` +{% /multicode %} The response contains an access token, a refresh token, and an ID token: @@ -771,11 +790,16 @@ The response contains an access token, a refresh token, and an ID token: Call the userinfo endpoint with the access token to confirm the sign-in worked end to end: -```http -GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/userinfo' \ + -H 'Authorization: Bearer <ACCESS_TOKEN>' +``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/userinfo Authorization: Bearer <ACCESS_TOKEN> ``` +{% /multicode %} ```json { diff --git a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc index add1fab9d3..13324a6daf 100644 --- a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc @@ -82,7 +82,6 @@ let oauth2Token = try await oauth2.createToken( redirect_uri: "https://example.com", // optional resource: "" // optional ) - ``` ```client-android-kotlin import io.appwrite.Client @@ -137,7 +136,6 @@ oauth2.createToken( Log.d("Appwrite", result.toString()); }) ); - ``` ```client-react-native import { Client, Oauth2 } from "react-native-appwrite"; @@ -197,17 +195,26 @@ Each successful refresh replaces the stored refresh token. The client must store This public-client example sends JSON. A confidential client also includes its `client_secret`. -```http -POST /v1/oauth2/<PROJECT_ID>/token HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ + -H 'Content-Type: application/json' \ + -d '{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token Content-Type: application/json - { - "grant_type": "refresh_token", - "refresh_token": "<REFRESH_TOKEN>", - "client_id": "<CLIENT_ID>" + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>" } ``` +{% /multicode %} The response has the same shape as the original token response, with new values for `access_token`, `refresh_token`, and `expires_in`. @@ -217,9 +224,8 @@ Access and ID tokens are `RS256` JWTs signed with your project's key. A JWT cont The server publishes its public keys as a JWKS document: -```http -GET /v1/oauth2/<PROJECT_ID>/.well-known/jwks.json HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/.well-known/jwks.json ``` A web client can use the `jose` package to read the discovery document, select the correct public key from the JWKS response, and verify both tokens: @@ -286,11 +292,16 @@ A client may decode a token without verification to make a temporary UI choice, To retrieve the current user's profile with an access token, call the userinfo endpoint: -```http -GET /v1/oauth2/<PROJECT_ID>/userinfo HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/userinfo' \ + -H 'Authorization: Bearer <ACCESS_TOKEN>' +``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/userinfo Authorization: Bearer <ACCESS_TOKEN> ``` +{% /multicode %} # Introspect a token {% #introspect %} @@ -309,18 +320,28 @@ Introspection verifies the token against the current OAuth identity, so it detec The resource server sends JSON: -```http -POST /v1/oauth2/<PROJECT_ID>/introspect HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/introspect' \ + -H 'X-Appwrite-Project: <PROJECT_ID>' \ + -H 'X-Appwrite-Key: <API_KEY>' \ + -H 'Content-Type: application/json' \ + -d '{ + "token": "<ACCESS_TOKEN>", + "token_type_hint": "access_token" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/introspect X-Appwrite-Project: <PROJECT_ID> X-Appwrite-Key: <API_KEY> Content-Type: application/json - { - "token": "<ACCESS_TOKEN>", - "token_type_hint": "access_token" + "token": "<ACCESS_TOKEN>", + "token_type_hint": "access_token" } ``` +{% /multicode %} An active access token returns its client, user, audience, expiry, and granted scopes: @@ -356,17 +377,26 @@ A third-party client should revoke its token when the user disconnects the integ This public-client example sends JSON. A confidential client also includes its `client_secret`. -```http -POST /v1/oauth2/<PROJECT_ID>/revoke HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/revoke' \ + -H 'Content-Type: application/json' \ + -d '{ + "token": "<TOKEN>", + "token_type_hint": "access_token", + "client_id": "<CLIENT_ID>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/revoke Content-Type: application/json - { - "token": "<TOKEN>", - "token_type_hint": "access_token", - "client_id": "<CLIENT_ID>" + "token": "<TOKEN>", + "token_type_hint": "access_token", + "client_id": "<CLIENT_ID>" } ``` +{% /multicode %} A successful revocation returns `200 OK` with an empty body. The endpoint returns the same response for an unknown token so callers cannot use it to discover valid tokens. @@ -380,9 +410,20 @@ Before using logout, add the destination to the app's **Post-logout redirect URI Send the browser to the logout endpoint with the ID token previously issued to the app: -```http -GET /v1/oauth2/<PROJECT_ID>/logout?id_token_hint=<URL_ENCODED_ID_TOKEN>&post_logout_redirect_uri=https%3A%2F%2Fclient.example.com%2Fsigned-out&state=<STATE> HTTP/1.1 -Host: <REGION>.cloud.appwrite.io +{% multicode %} +```curl +curl -G 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/logout' \ + --data-urlencode 'id_token_hint=<ID_TOKEN>' \ + --data-urlencode 'post_logout_redirect_uri=https://client.example.com/signed-out' \ + --data-urlencode 'state=<STATE>' ``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/logout +[Query] +id_token_hint: <ID_TOKEN> +post_logout_redirect_uri: https://client.example.com/signed-out +state: <STATE> +``` +{% /multicode %} Appwrite verifies the ID token's signature, issuer, client, and user. It accepts an expired ID token as a logout hint, but still requires the token to be validly signed. After deleting the current project session and the app's OAuth identity, Appwrite redirects to the registered URI and returns `state` unchanged. If no post-logout redirect URI is supplied, the endpoint returns `204 No Content`. From 1448a129c17ac188ef62a98a88cc5c1aa19f8bec Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 15 Jul 2026 17:20:46 +0530 Subject: [PATCH 16/38] docs(oauth-server): rename custom scopes to dot notation (tasks.read, tasks.write) Aligns the custom-scopes tutorial and announcement blog with the dot notation used by the scopes reference and device-flow pages. Retakes the console and Vantage screenshots that displayed the old names. --- .optimize-cache.json | 10 +- .../announcing-oauth2-server/+page.markdoc | 265 ++++++++++++++++++ .../custom-scopes/step-1/+page.markdoc | 6 +- .../custom-scopes/step-2/+page.markdoc | 10 +- .../custom-scopes/step-3/+page.markdoc | 10 +- .../custom-scopes/step-4/+page.markdoc | 2 +- .../custom-scopes/step-5/+page.markdoc | 8 +- .../custom-scopes/step-6/+page.markdoc | 8 +- .../custom-scopes/step-7/+page.markdoc | 8 +- .../oauth-server/dark/scopes-defined.avif | Bin 32796 -> 32407 bytes .../docs/oauth-server/scopes-defined.avif | Bin 30500 -> 30213 bytes .../scopes-guide/vantage-tasks-dashboard.avif | Bin 27813 -> 27583 bytes .../scopes-guide/vantage-write-denied.avif | Bin 33158 -> 32980 bytes .../scopes-guide/vantage-write-granted.avif | Bin 30992 -> 30555 bytes 14 files changed, 296 insertions(+), 31 deletions(-) create mode 100644 src/routes/blog/post/announcing-oauth2-server/+page.markdoc diff --git a/.optimize-cache.json b/.optimize-cache.json index 42482acac8..684bc08a9b 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1595,7 +1595,7 @@ "static/images/docs/oauth-server/dark/oauth2-server-settings-disabled.png": "ad51d531eaa3736839859097c024bca41a28d1339ceef773e376c06936e040ee", "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", - "static/images/docs/oauth-server/dark/scopes-defined.png": "71fe55ebcc533a83709394926d8cd8b3735d8f7bab3983590073357f467f7271", + "static/images/docs/oauth-server/dark/scopes-defined.png": "4723658a478b30e4f97372661d4ed7a9ba14d1cc7f0b56d4f5bf6148b5326cf1", "static/images/docs/oauth-server/guide/taskflow-consent.png": "5c4f4cbc6b225c60d5d6e2f1616abe45f0e6b66a5014438961fca98db349bd18", "static/images/docs/oauth-server/guide/taskflow-login.png": "5d0013b31b211efe4d3a2f6a9f224a5b547d3ef1370e507b9a183bb276fc90e1", "static/images/docs/oauth-server/guide/vantage-dashboard.png": "b2e95c34ec9c19be090e5f3384e0c3278dd840059b3f015ccdb13a16c135dde1", @@ -1608,12 +1608,12 @@ "static/images/docs/oauth-server/oauth2-server-settings-disabled.png": "648091d9d81308ab93dd456f172fa1c1977c2fbce9b8aa03893398bdefe10595", "static/images/docs/oauth-server/oauth2-server-settings.png": "914aa6511caedb568f199eacef837366c523f78125c551afa992e39098707431", "static/images/docs/oauth-server/oauth2-server-token-lifetimes.png": "895bf62c7f5171c8f244fda37b516760266c47447f2c66c93c3c812139823b96", - "static/images/docs/oauth-server/scopes-defined.png": "63d9d4bd8bfa353fe8760a4840f396cee6efd8d79351966eadff9659972701cf", + "static/images/docs/oauth-server/scopes-defined.png": "ae1d03cc7cd585f52b6445f5b6506a77f3cb47f50f5677c23e5ff650667942b4", "static/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.png": "27a8ebf167728a50059bf315bc9676e3c5ec9f32f47eb70ea7c4e4715fadbf99", "static/images/docs/oauth-server/scopes-guide/taskflow-consent-scopes.png": "ad7975be44e1840e85d994c3a12e19bcbe63e4eec5ba4bec9028c6683db3ae60", - "static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.png": "d8f81bd5e0dce05d66d286aa08c57710e383e37c026695c5d97621a4ccdaff07", - "static/images/docs/oauth-server/scopes-guide/vantage-write-denied.png": "d2f1fc73a56e88608109b35905d23a0a8ebfd35f13b21c207f11bab526aa30d6", - "static/images/docs/oauth-server/scopes-guide/vantage-write-granted.png": "6d82810a35789608f50cf27299f506551c5138ae8854b2dc8bfdb71d8f2ceb96", + "static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.png": "a621e10d803c25408eafcb0393e934080c4a2fd00e3230ad2a8cab0fbc84d778", + "static/images/docs/oauth-server/scopes-guide/vantage-write-denied.png": "7e2f32309bad509c9920e5725f8b49654e4dbc19699ee6af309b174e955bd2fd", + "static/images/docs/oauth-server/scopes-guide/vantage-write-granted.png": "1565538a08f94180a7ff35df2cad426c962609eeeae021e2fc8c076242882e1e", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/routes/blog/post/announcing-oauth2-server/+page.markdoc b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc new file mode 100644 index 0000000000..593359ce33 --- /dev/null +++ b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc @@ -0,0 +1,265 @@ +--- +layout: post +title: "Announcing the Appwrite OAuth2 server: Turn your project into an identity provider" +description: Your Appwrite project can now act as an OAuth 2.1 and OpenID Connect provider, so other apps can offer Sign in with your product and request scoped access to your APIs. +date: 2026-07-15 +cover: /images/blog/announcing-oauth2-server/cover.png +timeToRead: 6 +author: matej-baco +category: announcement +featured: false +callToAction: true +draft: true +faqs: + - question: "What is the Appwrite OAuth2 server?" + answer: "The OAuth2 server lets your Appwrite project act as an OAuth 2.1 and OpenID Connect provider. Third-party apps register as clients, send your users through an authorization flow you control, and receive tokens they can use to sign users in or call your APIs with scoped access." + - question: "How is the OAuth2 server different from Appwrite's OAuth providers?" + answer: "OAuth providers let your users sign in to your app with Google, GitHub, and other identity providers. The OAuth2 server is the other direction: your project becomes the identity provider, and other apps integrate with you the same way you would integrate with Google." + - question: "Which OAuth standards does the Appwrite OAuth2 server support?" + answer: "The server implements OAuth 2.1 with PKCE, OpenID Connect Core, discovery metadata, token introspection and revocation, the device authorization flow, pushed authorization requests, dynamic client registration, JWT access tokens, and rich authorization requests." + - question: "Can users register OAuth2 clients without the Appwrite Console?" + answer: "Yes. The apps service is available in the Client SDKs, so any signed-in user on your project can register and manage their own clients. This lets you build a self-serve developer portal on top of your project, and the standard dynamic client registration endpoint is also supported." + - question: "Can I define custom scopes for my own APIs?" + answer: "Yes. Alongside the built-in openid, profile, and email scopes, you can define scopes like tasks.read for your own APIs. Your resource server verifies the access token and checks the granted scopes before serving a request." + - question: "Is the OAuth2 server available on self-hosted Appwrite?" + answer: "The OAuth2 server is available on Appwrite Cloud. Every project includes it, and you can enable it from the Auth section of the Console." +--- + +If you have ever added **Sign in with Google** or **Sign in with GitHub** to an app, you have been on the consuming side of OAuth. Being on the other side, the side that issues the tokens, has always been much harder. Building an authorization server means implementing authorize and token endpoints, PKCE, consent, token rotation, client management, and a stack of specifications that are easy to get subtly wrong. + +That work is now part of your Appwrite project. With the **OAuth2 server**, your project can act as an **OAuth 2.1 and OpenID Connect provider**. Third-party developers register their apps as clients, your users approve what those apps can access, and your project issues the tokens. Integrators can offer **Sign in with your product** and request scoped access to your APIs, using the same standard flows they already know from Google or GitHub. + +# What your project provides + +Once enabled, your project exposes the full set of endpoints an OAuth or OIDC integration expects: authorization, token, userinfo, introspection, revocation, logout, device authorization, pushed authorization requests, and dynamic client registration. All of them are described by a discovery document, so most integrators point their OAuth library at one URL and never read your endpoint list: + +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/.well-known/openid-configuration +``` + +Two design decisions matter more than the endpoint list. + +First, **you own the consent screen**. The OAuth2 server handles the protocol, but the page where users review and approve a request is a page you host, built with your components and your branding. Users approving access to their data never leave your product's design language. + +Second, **client registration is an API, not a Console form**. The `apps` service is available in the Client SDKs, so any signed-in user on your project can register an app. That is what makes a self-serve developer portal possible: integrators create their clients, manage their secrets, and rotate credentials inside your product, while the Console remains your admin view. + +# Enable the server in the Console + +The OAuth2 server lives in the **Auth** section of the Console, under the **OAuth2 server** tab. Turn it on, set the authorization URL to the page that will host your consent screen, and add any custom scopes your APIs support. The `openid`, `profile`, and `email` scopes are always included. + +Once enabled, the Console shows your project's discovery URL, and opening it in a browser confirms the server is live. + +![The OIDC discovery URL in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-discovery.avif) + +# Register a client + +The rest of this post follows two apps: + +- **TaskFlow**: your product, a task manager built on Appwrite, acting as the OAuth2 provider. +- **Vantage**: a third-party analytics dashboard that wants to offer **Sign in with TaskFlow**. + +Vantage registers as a client with a name and a redirect URI, the URL where users return to Vantage with an authorization code after approving access. You can create the client in the **Apps** sub-tab of the Console, or let integrators like Vantage register their own from code: + +{% multicode %} +```client-web +import { Client, Apps, ID } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://vantage.localhost/auth/redirect'], +}); +``` +```client-flutter +import 'package:appwrite/appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://vantage.localhost/auth/redirect'], +); +``` +```client-apple +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Vantage", + redirectUris: ["http://vantage.localhost/auth/redirect"] +) +``` +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Vantage", + redirectUris = listOf("http://vantage.localhost/auth/redirect") +) +``` +```client-android-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>"); // Your project ID + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Vantage", // name + List.of("http://vantage.localhost/auth/redirect"), // redirectUris + null, // description (optional) + null, // clientUri (optional) + null, // logoUri (optional) + null, // privacyPolicyUrl (optional) + null, // termsUrl (optional) + null, // contacts (optional) + null, // tagline (optional) + null, // tags (optional) + null, // images (optional) + null, // supportUrl (optional) + null, // dataDeletionUrl (optional) + null, // postLogoutRedirectUris (optional) + null, // enabled (optional) + null, // type (optional) + null, // deviceFlow (optional) + null, // teamId (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + Log.d("Appwrite", result.toString()); + }) +); +``` +```client-react-native +import { Client, Apps, ID } from "react-native-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>'); // Your project ID + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Vantage', + redirectUris: ['http://vantage.localhost/auth/redirect'], +}); +``` +{% /multicode %} + +Clients come in two types: + +- **Confidential** clients run on a server, hold a client secret, and authenticate the token exchange with it. +- **Public** clients, such as mobile and single-page apps, cannot keep a secret and use PKCE instead. + +Beyond the basics, each client carries consent screen branding, post-logout redirect URIs, and an optional device flow, and clients can be transferred to teams so a whole organization manages them together. + +# Run a sign-in + +The default flow is the standard authorization code flow. When a user clicks **Sign in with TaskFlow**, Vantage sends their browser to TaskFlow's authorization endpoint with its client ID, redirect URI, and requested scopes: + +```text +https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=http://vantage.localhost/auth/redirect + &response_type=code + &scope=openid profile email + &state=<STATE> +``` + +Appwrite validates the request and redirects the user to TaskFlow's consent screen with a grant ID. The page shows what Vantage is asking for, and when the user approves, Appwrite sends them back to Vantage with an authorization code. Vantage's server then exchanges the code for tokens: + +{% multicode %} +```curl +curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ + -H 'Content-Type: application/json' \ + -d '{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://vantage.localhost/auth/redirect", + "client_id": "<CLIENT_ID>", + "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", + "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" + }' +``` +```hurl +POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token +Content-Type: application/json +{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://vantage.localhost/auth/redirect", + "client_id": "<CLIENT_ID>", + "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", + "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" +} +``` +{% /multicode %} + +The response contains a JWT access token, a refresh token with rotation, and an OIDC ID token. A call to the userinfo endpoint with the access token returns the user's profile, which is everything Vantage needs to sign the user in on its side. + +# Protect your own APIs with custom scopes + +Sign-in is the starting point. The larger opportunity is scoped access to your APIs. TaskFlow defines scopes like `tasks.read` or `tasks.write` on the server, Vantage requests them during authorization, and users see exactly what they are granting on the consent screen before Vantage can read a single task. + +Access tokens are signed JWTs that carry the granted scopes, so your API verifies a request with your project's public keys from the JWKS endpoint and checks the scope before serving it. No call back to Appwrite is needed on the hot path. For fine-grained cases that scopes cannot express, such as an app requesting access to one specific resource, the server also supports rich authorization requests (RFC 9396). + +# Standards support + +Every flow follows the corresponding specification, so off-the-shelf OAuth and OIDC libraries work without custom adapters: + +| Standard | What it covers | +| --- | --- | +| OAuth 2.1 with PKCE | Authorization code flow with proof key for code exchange | +| OpenID Connect Core | ID tokens, userinfo, and RP-initiated logout | +| RFC 8414 | Discovery metadata for automatic client configuration | +| RFC 7662 and RFC 7009 | Token introspection and revocation | +| RFC 8628 | Device authorization flow for TVs and CLIs | +| RFC 9126 | Pushed authorization requests | +| RFC 7591 | Dynamic client registration | +| RFC 9068 | JWT access tokens | +| RFC 9396 | Rich authorization requests | + +# Get started + +The OAuth2 server is available on Appwrite Cloud. Enable it from the **Auth** section of your project, register a client, and run your first sign-in in a few minutes with the quick start. + +- [OAuth2 server documentation](/docs/partners/oauth-server) +- [Quick start: run your first authorization flow](/docs/partners/oauth-server/quick-start) +- [Tutorial: add Sign in with your product to an app](/docs/partners/oauth-server/sign-in-with-your-product/step-1) +- [Tutorial: protect an API with custom scopes](/docs/partners/oauth-server/custom-scopes/step-1) diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc index 99a9a4a1c7..578b28a6ea 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc @@ -16,16 +16,16 @@ This tutorial continues with the same two apps. TaskFlow gains a task API that c # What you will build {% #what-you-will-build %} -- Two custom scopes on TaskFlow's OAuth2 server: `read:tasks` and `write:tasks`. +- Two custom scopes on TaskFlow's OAuth2 server: `tasks.read` and `tasks.write`. - A consent screen where the user grants or withholds **each permission individually**. - A **resource server**: an API route on TaskFlow that validates access tokens and enforces the scopes they carry, operation by operation. - A task composer on Vantage's dashboard that succeeds or gets refused depending on what the user granted. -The resource server is the new idea. The OAuth2 server issues tokens and stamps the granted scopes onto them, but it does not know what `read:tasks` means in your product. Your API gives the scope its meaning by checking it on every request. +The resource server is the new idea. The OAuth2 server issues tokens and stamps the granted scopes onto them, but it does not know what `tasks.read` means in your product. Your API gives the scope its meaning by checking it on every request. # The flow {% #the-flow %} -1. Vantage adds `read:tasks` and `write:tasks` to its authorization request. +1. Vantage adds `tasks.read` and `tasks.write` to its authorization request. 2. TaskFlow's consent screen shows each permission, and the user decides which to grant. 3. The access token Vantage receives carries exactly the approved scopes in its `scope` claim. 4. Vantage calls TaskFlow's task API with the access token. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc index 523a75ad00..5a7c2c7891 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc @@ -1,7 +1,7 @@ --- layout: tutorial title: Define the scopes -description: Add read:tasks and write:tasks to your OAuth2 server's scopes. +description: Add tasks.read and tasks.write to your OAuth2 server's scopes. step: 2 --- @@ -10,16 +10,16 @@ Scopes have to be defined on the OAuth2 server before a client can request them. # Add the scopes {% #add %} {% only_dark %} -![The read:tasks and write:tasks scopes on the OAuth2 server settings](/images/docs/oauth-server/dark/scopes-defined.avif) +![The tasks.read and tasks.write scopes on the OAuth2 server settings](/images/docs/oauth-server/dark/scopes-defined.avif) {% /only_dark %} {% only_light %} -![The read:tasks and write:tasks scopes on the OAuth2 server settings](/images/docs/oauth-server/scopes-defined.avif) +![The tasks.read and tasks.write scopes on the OAuth2 server settings](/images/docs/oauth-server/scopes-defined.avif) {% /only_light %} In the Console, open **Auth**, select the **OAuth2 server** tab, and find the **Scopes** field on the **Integration** card. Add two scopes and click **Update**: -- `read:tasks` grants read access to the user's tasks. -- `write:tasks` grants permission to create and update tasks. +- `tasks.read` grants read access to the user's tasks. +- `tasks.write` grants permission to create and update tasks. The `openid`, `profile`, `email`, and `phone` scopes stay locked in place. They are always available, so you only define the ones specific to your product. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc index 6bc83e5c45..43cb397a4d 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc @@ -13,9 +13,9 @@ In the consumer, extend the scope list in `consumer/src/lib/oauth.ts`: ```ts // consumer/src/lib/oauth.ts -// read:tasks and write:tasks are custom scopes defined on TaskFlow's +// tasks.read and tasks.write are custom scopes defined on TaskFlow's // OAuth2 server. They authorize Vantage against TaskFlow's task API. -export const SCOPES = 'openid profile email read:tasks write:tasks' +export const SCOPES = 'openid profile email tasks.read tasks.write' ``` `authorizeUrl` already passes `SCOPES` as the `scope` parameter, so nothing else changes on the consumer. The OAuth2 server carries the requested scopes into the grant and shows them to the user. @@ -33,12 +33,12 @@ export const SCOPE_LABELS: Record<string, string> = { profile: 'See your name and profile details', email: 'See your email address', phone: 'See your phone number', - 'read:tasks': 'See your tasks', - 'write:tasks': 'Create and update your tasks', + 'tasks.read': 'See your tasks', + 'tasks.write': 'Create and update your tasks', } ``` -A raw scope string like `read:tasks` means something to you, not to your users. The label is what stands between them and approving a permission they do not understand. +A raw scope string like `tasks.read` means something to you, not to your users. The label is what stands between them and approving a permission they do not understand. # Let the user choose {% #choose %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc index 932adb8b02..ac6e1e1189 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc @@ -64,7 +64,7 @@ The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth2 server si Two claims in the verified payload matter for the API: -- `scope` holds the granted scopes as a single space-separated string, such as `openid profile email read:tasks`. `hasScope` splits it and looks for an exact entry. +- `scope` holds the granted scopes as a single space-separated string, such as `openid profile email tasks.read`. `hasScope` splits it and looks for an exact entry. - `sub` is the ID of the user who approved the grant. The API uses it to load that user's tasks, so a token can never read anyone else's data. {% info title="Build the JWKS URL from your own configuration" %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc index 2ba5f9a05b..048f7446f2 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc @@ -1,7 +1,7 @@ --- layout: tutorial title: Protect the API route -description: Serve tasks only to tokens that carry read:tasks. +description: Serve tasks only to tokens that carry tasks.read. step: 5 --- @@ -108,7 +108,7 @@ export const Route = createFileRoute('/api/tasks')({ GET: async ({ request }) => { const token = await authenticate(request) if (!token) return unauthorized() - if (!hasScope(token, 'read:tasks')) return forbidden('read:tasks') + if (!hasScope(token, 'tasks.read')) return forbidden('tasks.read') // The token's subject is the TaskFlow user who approved access. return Response.json({ tasks: tasksFor(token.sub!) }) @@ -117,7 +117,7 @@ export const Route = createFileRoute('/api/tasks')({ POST: async ({ request }) => { const token = await authenticate(request) if (!token) return unauthorized() - if (!hasScope(token, 'write:tasks')) return forbidden('write:tasks') + if (!hasScope(token, 'tasks.write')) return forbidden('tasks.write') const { title } = await request.json() return Response.json( @@ -137,6 +137,6 @@ Each handler applies the same two checks, in order: The two error shapes follow RFC 6750, including the `WWW-Authenticate` header, so standard OAuth client libraries understand the refusal. The distinction matters to callers: a 401 means get a new token, a 403 means ask the user for more scopes. -Note what the `POST` handler implies: a client can hold a perfectly valid token and still be refused a write with it, whenever the user granted `read:tasks` but withheld `write:tasks` on the consent screen. +Note what the `POST` handler implies: a client can hold a perfectly valid token and still be refused a write with it, whenever the user granted `tasks.read` but withheld `tasks.write` on the consent screen. Continue to call the API from Vantage. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc index d3e1d724f6..72ff42e695 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc @@ -37,7 +37,7 @@ export type TaskFlowTask = { done: boolean } -/** Read the user's tasks. Requires the read:tasks scope. */ +/** Read the user's tasks. Requires the tasks.read scope. */ export async function fetchTasks(accessToken: string): Promise<TaskFlowTask[]> { const res = await fetch(`${taskflowApi}/api/tasks`, { headers: { Authorization: `Bearer ${accessToken}` }, @@ -52,7 +52,7 @@ export type WriteResult = | { created: false; status: number; error: string } /** Create a task on TaskFlow. Succeeds only when the access token - * carries the write:tasks scope; otherwise TaskFlow answers with + * carries the tasks.write scope; otherwise TaskFlow answers with * 403 insufficient_scope. */ export async function createTask( accessToken: string, @@ -106,7 +106,7 @@ const loadDashboard = createServerFn().handler( if (!user || !accessToken) throw redirect({ to: '/' }) // Reads the user's tasks from TaskFlow's API with the granted - // access token. Works because the user granted read:tasks. + // access token. Works because the user granted tasks.read. const tasks = await fetchTasks(accessToken) return { user, grantedScope: grantedScope ?? '', tasks } @@ -120,7 +120,7 @@ const addTask = createServerFn({ method: 'POST' }) const { accessToken } = session.data if (!accessToken) throw redirect({ to: '/' }) - // TaskFlow only accepts this if the token carries write:tasks. + // TaskFlow only accepts this if the token carries tasks.write. return createTask(accessToken, data.title) }) ``` diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc index 4ac3b8a072..1f90027370 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc @@ -25,7 +25,7 @@ pnpm dev ![TaskFlow consent screen with the write permission switched off](/images/docs/oauth-server/scopes-guide/taskflow-consent-choice.avif) -Open `http://localhost:4100` and click **Sign in with TaskFlow**. On the consent screen, switch **Create and update your tasks** off and authorize. The OAuth2 server narrows the grant to what was actually approved, so the access token comes back carrying `read:tasks` but not `write:tasks`. +Open `http://localhost:4100` and click **Sign in with TaskFlow**. On the consent screen, switch **Create and update your tasks** off and authorize. The OAuth2 server narrows the grant to what was actually approved, so the access token comes back carrying `tasks.read` but not `tasks.write`. ![Vantage dashboard with the write attempt refused as insufficient_scope](/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif) @@ -33,11 +33,11 @@ On the dashboard, your tasks render live, so the read scope is doing its job. No # Grant the write {% #grant %} -Sign out of Vantage and sign in again. This time leave every permission on and authorize. The previous grant did not cover `write:tasks`, so the consent screen asks again. +Sign out of Vantage and sign in again. This time leave every permission on and authorize. The previous grant did not cover `tasks.write`, so the consent screen asks again. -![Vantage dashboard with write:tasks granted and the new task in the list](/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif) +![Vantage dashboard with tasks.write granted and the new task in the list](/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif) -Add the same task again. It lands in the list, and the `write:tasks` chip sits in the granted scopes. Nothing about TaskFlow's API changed between the two runs; the same guard that refused the write now lets it through, because the token finally carries the scope it checks for. +Add the same task again. It lands in the list, and the `tasks.write` chip sits in the granted scopes. Nothing about TaskFlow's API changed between the two runs; the same guard that refused the write now lets it through, because the token finally carries the scope it checks for. # What each piece did {% #recap %} diff --git a/static/images/docs/oauth-server/dark/scopes-defined.avif b/static/images/docs/oauth-server/dark/scopes-defined.avif index 125cff62c454ef3357739e3e58840cb8b095c52a..b9a5517403b401e8c5759d3cdec7e8699dc19266 100644 GIT binary patch delta 31284 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 delta 31685 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 diff --git a/static/images/docs/oauth-server/scopes-defined.avif b/static/images/docs/oauth-server/scopes-defined.avif index 37a52f34ad309e9698a29e8aa3c4c8af69e2a60b..22023b347a9f449f29fcd7fb1c0696d41ded1d4e 100644 GIT binary patch delta 28367 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 E&v2R?#8Jnrc{3p|@v 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 delta 28649 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 MdFEf>xTQJgTGfDTuK)l5 diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif b/static/images/docs/oauth-server/scopes-guide/vantage-tasks-dashboard.avif index c2ba5047ce600fee5875593b4fb2be11127447b0..ceac007fb183e2250d74ff40d850a93d92a9204b 100644 GIT binary patch delta 6527 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 delta 6761 zcmV-v8kXh1*8!#30g!hBYpaoYdn0SJZDe6|5&#McIcjJ9p~3<h4Ina^*8v>_umJ=B z0YCshB$Ht!9J4b4I2wN-$fe{S4qRA(DB8Qq_obZYy9Deo4XIfuI{lC7&bU(&B*V5E zl+*8eILs-L)@&N=07J@jiEwR5VVcp$iUGNs#=2R`1OY-z%x<6EJ_wzDUpZ=L>+3_Z zfJiUB4mHQvUBM+muzcC6&wTjwn7@?E*24)JOkj?Ycf%}{S1y09a3RGqUTPnL#@;RB z213doP{BssWh~%O&iQz2!tetB`fbXG4dH>R*xhwIgODuf(|hI=T6zBj?n#=urIF6% z2lIZCnf@FqHsQIgg9r16jtEg9MegzX=P@uElf`t-ERTnCly0!>YBA!5KeJ~i7tZ)3 zP@V{QHUwkQp5cF3&k?@}yTDPPIb4^Fq5x``1dR^Ei%5HK15X4p3v0+HjQQP62&-u6 zpu((LbKl2{e^z(dz<$}O6;|oTr<LaR*3%1%=YbVb4y<X*sFh|WW_g}?-g2kaqVR8x z%UFGIb^nkKn7A3=9f`5>TFA+TF~Y2hM&5L+?yPIS>UV$DQ>=|?8<A`~Vb!Z{#8}IX z)<kKfI6$yyv1<nhB%N4s7h`C5gu+3GWGvSTK}-2~MwBQ-Pa;x%6lW5Na8P340b4S6 zeh~n_cx}teaYtpzrJy>11?yDw?dlB<Gn<>x=`t*3V1sp$(~TqRN7wUEytNr4omcDX z9OREIh)aL#bO{d&))?Gt=RtOfTo=@hYFu*_mXW453q`7h(@SFHnGiOZks)wCm7?8U zab^~8JIyOoW|`2NUz0kJ?{=H;#l%gZQ*eI@C~%LP@WGv622u$U8v*~(Z637S>(?u4 zx4bQSg-SIH7=^<BT1G*tEl|qM1$Fe_ZZSpu-9UfGXEzA#fzArNGpgtFzEKq7(Rh)s z8(L5jHp6Y#Rb0xea-aX2I6({88}{9w+54#_W=|49OP{eZ)wdsgtu^<YOwOHU-LNK2 z)H*UkW{V4xTAMTo;M5`WIz-16b*x8Il^(MJ@&;OhPbJYguNH|53#f-Brp-^%wIz`} z39x@Xv3F#6r`h8KK+9wq2ErzaC2yt5sTp2J?b2ODqj`%`3p#!FwzL~(;CGNpS7qIB zzRA`nH?Mtq;UW6yVUcH&>JKc88&rR^BsQER68{6pq-ioZJ#wcjINDO*7|HLsx4mHd zEL}+)U5O7d2Z4;@&`*J48vePTpX?Mmz#V@t9y!z-zfU!2YGRApR`}?TGQ~hEdj{Qr zLU<s-4z=hb8ulKH3yo(iQ#BUT3z#GGRHFNP6f`FnFl@^C8)(dTg{2o;80-k}acMy@ z3a8QlYiXe}mT7C~C(T$)zU!HrBahMj>^pS<i3e96=7_^SnF}NNFZx>vRI&z)L<N5< zk0HbKJm($>du*->=#I%P3c3R^po%0;QdQ;u-;2OfPPa8(O-u%aq|~Td8UnvFVEtW2 z&vYkJgKR>yR@$=U6c8dxD;Jhx*bddGH>T)nd>mscXLwPVWtrpDas1+NL|ryn;1~o1 z(@ICLcM!%`OsB8xT4WsuVvviC8lZpfVz~Hp;KkOM!j#}Mdr?$7+7qxqHdWjgk>BGZ z{#717B~u($?FQ+Jq;lbH=4xF70~=?R_mX8zjnnlMjEG^iBfRwl4G_TCG<w(DtP$V< zgJEIGLD(-Dq*RA+mFvebnENZ|DV89dbu?hHH(><K+in1Ulop$@);I2^+W3F&Pl1UT zanO~+jX;K&<}cE?Q@Q6@2bbD-U?T4>oXEq0l3Kmn7pvDw9^U6pbe^|2XgX<$%Dx8x zr(R{C!#*G?v}c6P%M(6ofWtOnc4g>WFx57UGqzR+Le?2_XkDCzn)3?LUc}V$Os^d~ z{AJm8boi|(?1MNrjghnNoYjBWK=Rtt+w|OdA7`C*paScWDOzQ@i%gov+5JpM{DzFp z4tB&tWPLz_jrtVlz=2T^pwQ+qv#j|lrdf%?BnU60!J~Msge<i9>3swE*kCBapd+>6 zn#`rS?mPuK!4Emum|4jm83%yc7+l@`Jwsv<n=T}rxV-(IYDxl@*b{%j#}|i7u=Z6K zMV96WozKFw-AkKX$LOVKp%IO8J__b3t9y66lAr~#0QRyPs34N4Dq}c&>$x`uejmC$ zWXMx11<B1Ohon@czeXBp>6==mgVt7J6PXu3z3UHYZ1CQitFhSPWxOo(zckxdAbKds zj%f<Pq7ZtctM{&iDEEKG`QQ{F{05`_x@RAjuC;%H1Go;%wVxYYtBN5s`yVQas#mZq zu6tKWe9N&Wxa%+U5a+X)70BziR(yL>u=PM9+N&+E<G|u3N@BCU)rOq&&!5tGk~-Gr zh&ru=08h)Z*}2b$<>^2lN35qt)In~Pq5Hu>K?qbqohceY@BDw)7e0olG83#nFDwk+ z+qH%8T1_5vS@PFoE9#n}_GbU9U(BMwrt-9@a^dl$y4#(;m%xzT0&s6HVU2Q>k8{QE z#W+4IO^F+W;(|inDd-#&I{g-vd_bAHK(uxLD0MnW`coD*^S^*N6{`3Jy!o$SpM@(_ zB_itGF;?<x^DKYMPm_Mv^2|wIJoNW1<US%oTz^Bvd-w4XN)t|Mdx2zj$oodcogVDb z^!nm1#&i$%OMTbiPM4t#^#yGux6EC(*~JE5m}nWzSZ9IOtssEi|2P$k2xTnb(S2VM zo)V|OVzDzvh&nudPqwp^Ffw}TSy@gQwk^g_<4K#x5B+~Q>ZgE|ZS&ZFWiABPU+5VM z)zwG2ltocqN?wdS@k<L+Vpmdub8w+7$OaZNmu(LUDakH|{9&jKI*AstKR5D6kMYu? zW1?lV;R=4)i#8@B!-I}(gckCnvug=AY7PyM4fm!&h0wty3Tt9<L7Mxkdt~3~TWI(< zHh3Xt`*eSTi`H#~93&}VjhKw|<B0lXPw443Yvdn%-2$cqa8bF=jgTCXknR7DEy5s< zFH}Hg*HwYkECvXHGP5#^u`Q(wE`>$5ho^F3f6))!Dtu)p8Dlx}KX6Q!iM>cJE#}QM z<SO;%fgK@9=GBA%vr=;{lw^A4dQ;S}&1mu)l<|Mk5BH#ztNp}}e5Z{FadJj5;W#Bh z{t^?%SBZF3IuN`RZ_x>>GDTOQkqV>s=zIsPN}^QXWjkH?CMYYwv3IrVGw)K!EDu}b zq?IH}uj{j8R#kTKNt>`vvq=$bBwJ?&ory9Vc8)tCO42%E@KYKj<4%a0-`}~<2>wZy zk_CS(u9TsTP^*2ST_1|z`71PAZPupSw*2$qp$<~iZypl9L6IHH-+#;zO$Wb)$s?lt zeR1HIq`qwu6ORU>+<?peq71<ataX14$Qox7Rb2S{JvSOs3AX<A+i^OvHh41{LgP=6 zQ=B}`G0BLb*aCdW0N}>zWezs=dLxXwOZEZ+7PDa`S`2?F<Jp9Ke!m0p4^qrEHQ1I- z5SA5O4M@3sPT5VqvtqBE3aOHqmmzzBVTv5K+V=kJCb_Mu_V5?VepA`4_BOQMV_(}y z7V1slQNd)MNx)9@Ai^hr1Z6~B?X}_u!D8ANsa!+9bMm(Fgb8?#D~T<Mgq_J2zw4E8 zChithDn5UZ=seF)TfP+eBdhi_ir+Yguh6tbo<<FAObeisnpP{=gN<Bf1CfnxaBHN^ z>bO?{vLOb!zqsXLhKe}G;rV{ud_i9Zuq)z6dr$o1eUwF3x_KwBFU;F;{xGRqYCOH< zHTSm%)fi$s&0gZyioU`!THAg2%#CnRT1iGW>DYhxrE|Pb>uW*PX*0nmXWGdka6g_R zGnv0tz}C@)WR}Hjduw=LZcXX3@9}5Ne>tBR{)Zn%snc?|j;gmYc7V_K$&<f0p7ug1 z3Aeo8_dSz3(l;ckw?aNLeUPGo?xL=TPdUr8`hP^!c&T@;Je7gL=y&KO_{bh-LjRnh z7DRvcctCP>_4#3dfeh+_&ur(<SoQFXjYvj2Pe4BQ;G$L53OkIKu$NNB7?#TiNO$(A z!HY4nzx9hgW8q(`9dL88JulPXF0~5PzwamQ1!Duch`Xx6mRZ)K*T8|e?dN5Q@cg>1 z;{0%Us<R$Xf<{R3(r`ZpCw1K_w|%tPdZT}Xd}|4o+e$CdoMK(+d6GP2xGFX_3|j#? z$&?fQFX9Hh!copr5;ez*%iY7)$Eb$3Do-G5qUAknJ2cS(iH{uF5({DRqG+h9=4#>| zC^Q)zAc>~VDrHuU@jcRmG3qO3Q@5{&!CE{VwB1~|$jjjw^&Y~%IPb$xXW&XkWKn;T zQGjpZVp}A&Tp5>xLqJhECA);HNvx_USefA^Po9=AlUC00n!Ux8rimwq7`vC&I~&g4 zOESPQR_{ZyKIf&)UJXmL5zU!uQ^5aC$5NY$)x46N5Ey5C9gbz#iPCaE_on58(T4fT zsi`ck{hCA-@H-M0lu2imYX6}ajMjhKVzyDL#sX=kF2lUgaZW###8zZBf<C2_f8%U# zh7_;?&og~_S62|a%wZgFD69FlnCT8q68(}(gS3guXxD9qbP;a8y-Am8PtIDM0iQNz z9ZX*c+P4%@iF{mp>`b=cvQ&lcu2L*r8#Zw9dnJ%_N3fa2iXlJ^1_sYybe(^A?1tNx zImj!UvmSI;@2dehl4o>ZReR=9|4Wv$Il0ZAGT01^gYrv@`spVwLr|BJ$KLasQcD)c z!ZcPe%btg^XSl6A-jjG_P*Pe{RhEOOG^Ei-OcLb705<TaB)mmz@ZD@<tc%!FGy8hu zeQ)qc@DZ+lQ@PZd%-9l_jM9HK855LB@HbIbio&L9=^Qr*eEr!tXt(8WuJ4F2ih4|o zD)M)6Qh1LqO-H2TVyz2c&BNoJe}Im4w1^2{;7R=}|9(aY0U&6o<4+$6AM7W6zE85Q zxFtZ9)!<V79&aN@fpXw~;`A|gkyIre6|G;t=m%KuhPM3)5_4~CzU6=V>dJ93cjFi( zQ=-!m8_7InVLrEvFI^BlW0XEOh8RPO4+8GB&<wx&L|tn(qwCTqJcL&_6X|Qc`T2`z zFpL1zwkc0ajpPA&emUY$nc^4T?&Xi*tyTiQfZr=62X^=w@BMMbov{Y5NY_a%$RPND z<t5c2HdJRU@tkB@LN0&S2OIbc=}yK1{ShH98$1xVn;8Wg5zWl5&FyZ<uj;fESR->7 z2K}|v3b?jxEiCCK{r^V7c6|rQFbXr`=2fH^o3S`^jF>SaBA@}>(f~zU{)y9=NY-7f zR(G2+)B_Y(A1`?`@`|Y{nlk6O+PH>H6SU7<=gxrM(@1!NFCu?NqYITn!*};w%mvFi zL784YT7g$c9=b=pB23D1`!IAQfpR?*8so6~iUILa^hZ(T!Cq~52Y?P>O}C7Zu0@-k z9z<ROnGRj@MF{$|H%*8%9sB>f@Tld?Yg_J<+R-=A&4+tU>_AkAsGQcD6l<sekk6;2 zM-BSJ@@zIYc4mKsbHzdeQeai*f@nTJ6Uzf!=4y9YMTE8<KyFt-jb%%Bcixb=!)=JD zX&dR}YZOF%xNHLjL~o>~=f9`B0kdOR$i1!VK#syupEyR2vI(<?J2PedZnc=m_Gz!l zXEH9-5azCZ6gZJby}~&RZ3l6O$_&ll6&g0+uet_pohyH3;^te`-#hO-I=!veyIWH~ z2>`mry`OkZ;z>q?fzV>XvD9DHN0MZ2G#h5PpYb9l+T+{^JUmHHX+%HAC6x9MmZCee z^kX1WdrnF`F&s3a*#pP%+Pt7Y%1`?fMhT#IRz!AOL{+dm#4>@3$g3_J5iMhip;MT~ zvc?PFvpj!@=1CO!eEPKhD$E8dGnc2E-MB`(%STLz5;omc+!JuIwIz%FIU&BQi6&g8 zh(m|MZ5KYuwE&srjCv(DAq-;V9fLe<xe$(1oZe}LN%C&yTxhKAP|8Vd2Z3i<^Nkqa zrSc?*U(1?p>HQ;2RuAO)!JLq~guzr%1pY0S31@$^iAWv;)};7BVN<u2PL>(sSQKB^ zWc;+Y>|M4!c->^~wkuOdlI6(@)Vk1^?==Z<6<E@?x3;DmJA2p1(7iFDF)6|}erJt9 z$5d(Sq2lFv+$gBOTK~JoxZaD}&FlaPm30e3Xd!#?SRw9vLotD%#IOS~UnJirr!#dN zlGcAAzleoRC_nGAn-mi|ga9!%%1H}Tr}RGpDAo&;;r<%Y6zLhdz@nuBvGU&F$-5VI zoF{R+xK3oO4T_Zx9L?DZ8YL~la}i-1dI~G5P;bMU;3PN0vR!<EgiR}qIMv?4+Q-5_ z;x~he`kd`1J6NU^Q3&W4;#+O4DN~t9E){<ht9#O%BJWKVQ?RV+Fi&-7c|2(guoWxp z4Of5iYBr1Q&TX09VE-1T^c9RRV?x{XRYSZSkk%bZqpvfFrvYaHv_Zdm=Ip6AkWNY- zaOBAUr53gY`dRrl*W@ysBE*y~mBqTVPRL5eujg#hZvWl{m-pSU;A6u5iDL_P<J5oA zghz!$Qr@Zt03B>fP>&`N8U{zXPqWTf*^g0idiiZj&y;jCrY;BDe5F+cpWq#f`dW<_ z%R$ey1ZjGYfSsx?p3D>kfpNq7ES7Swb*Guq?faFmlL9)UtHZtT$pKRBu<t=W6xicU z2)0nk!)nVO?Bcx$ya>FxcP6q^Fn&HBoMw(7{coR%DYq-V=@f!mhFFh|R)U<)Gha(j zuU6V)h2D>@(oBb*-0`m!rr3aMN==YeMvH135Q*>;5R+jg9J8T1bR_|Avld`01%Gq~ zqHJ<O8K%-UQQl%KZ8QJ2)<eZ->!~w6TBujD0R68~_X`s{R+r3C0q(XAecD?7xf=92 zt7d|L1*-s?@ig~LL3k3>?6_Qd32#^r+9O+wIhM<;#$iM&uwsBU0BEq*AL9%Il`Om0 zd%S{n=)65;9}Iu|4G~0~i%8zcZGZ9s#AtNfw@PChZ2TEUe9a4uG$A6!6my|E*5O>$ zt~&XF-GLey6~fik7=g{aNs`XTOg=IJtE0TVzErYn5Kn$uMsU)x-f}Gu9$gQUdc5}r zt*XVHP^#ge72=E3gplOcD`isUhrqZ=LUb56+K7*302qxEA&O>2;_^=;5Pw-uq~-(A z5j)TXgNqZ=A|?PqAQKFWg#?e&8zuH{D7676U}sYcIZG;ha+hHhWO!gg4V$<C^Y~r@ zzs^ZrfSI34kFMhxav{Y*a}c;ffsN9VXwM`@`7y&)6IUr7bUGb@n60F<^<SFB@Y_b1 zHp5g(mJ$tFZLLHt?{&E$TYpuJYYIQcRN5`5X1%IA;WqU^dP&r=oGe(s&@~Jmr;j`_ zpT;EKr_H2au<ish)<SHXA_3+7X!Sw_yI@h>-fsdN7D4*x(6Qa$3sqkKE=Tf#U`xEn zYr1>rl@yc+gO@Tpd>wuj=ri<}c>Q3!S;dW=DrN|bER3^H_@7wb#eY)Su4XkT*aFrA zNQM1O&)O6%mrQah-TNxhMg-|!xdt~{*4tjv2G&g4?n70?9Nc3=$f0Zt$-OF@Z)kx= zxNvTiK{Gi-dQnk=CpEacCWCo}Nc!xP>k{?v1-D3KE@G}xCGQ#&rK|xwJC+-vZTqPB z_0F|)ha+EL7}#|z|9{`1Pd$M3B!aC~lxx%5u9S3o>le6fW;#SM)Vn_LLb|PqZ=x>E z2D*cJZ7nhD-38BrIl8=v+ojn8+idKlpr4O^FWQjwc^tEz+4m~oRn$PlX-tn2&|)FJ z@stM+M|mT4x7Ww;1ZbwG&PR?8#7E#I@f}Yml-a4=_g~uwY=7Gx8J0X39YRA7@SP~{ zQj<I9U})8~TO7<Vs<YKJEhez!z&&e7Mc8PBnINqN^+(V(rC1{t56JjTKs|bGy3_I& zxtTQhp>dL3$&y0%cIX;rNm(#3rE%njLNAIb9f^@OBGE|}2k<QmfapyT^w<30^tWcg zcN;yIrz_CKR)6n_n(uk;RH52*9xnxJOF5jfz?i6WjU9%51KU_F>lBRck4;*?>J7B> zU%V4}l{60((u6HdzTwP<&8cUc+@!K9(~U^@&d@b;x&9`bPh74DX{P7#6%ghEFbe<^ zqZkd-ncX6~j*Mc`W;?Wj`$fMR=21NdV7?#8m&5scUw<r1a~Mf^v--d9bO5exD&M%# z%-3P&uNywvx{g<)Q@FH9Jb*%e^lbtO{|*r2+{hdH9ryLKWzp}d)=&Aus^Adz?vq@Q zdF{PA8@Pd~wUHHy{w%Qd&V{O|w*%g<cUKx5P*Ik+S{Q?&QnYtARsk(a3$HGwgG)_1 zkpvhf)PIYmE}g7qQm3gVyOTbqp=pwgN5z0!m>-gj%-d{kj*p28#|!6e>!9(RAD_+3 z$>T386dw}4`wl9qh5}^lmWbkK<LN@OpfGNudtq(M|4t`V@R=Z@GRm&dn+$V{9)a*7 zcZfv8>xPS0TMc;R$x*HqpIdSE2#CJKFDC?d(0{;xzn(Q7*411OWfPN$CbzZXZIen7 zyiO`LnE4S58zOD-U5r66l<Vv;P)=%@!cD?jl6CS&*H%Ss39wD>_s53i)Z}!xw<q!i z^X@B0bY+=;#ay8ynVDiHAalS};V(gLi`cVJ+!9KCj9;)?X~QYx8DIHnrG%?37$xDY zcYkw&%oYvV64@N_(h~c=?W~X3tk;&fq}L`?ZvF9`vz;tV>Hi%*`_yPoT-J;)ff-U8 zDUF4Ij2z59*$t#?P~B(`t&VxkDpV($R1?S;cPpvL^v-1GS=UcrPgYCBB=fBFyc}5+ z=~8cIdU+0gEF)X6X=!nLghu=oa;+ItSyI_aF5<!*j$$^v9Lrc#g0ax+iA{|_kES0O zF*O}V3wTD@CH|9Hx&5<8q$xSDg@t3fgtpS1e&>@xB4j_pT;4(t^cO($wfFky#nGmg LpK5e~lX`1KSE>J; diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif b/static/images/docs/oauth-server/scopes-guide/vantage-write-denied.avif index 8dc34ae643c2d99bb59e68e0acb637117286d4f2..b142fe1c762d58727cfec535bcfd0793a2fe66b7 100644 GIT binary patch delta 14991 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 Z#86#@^3FIFvF^$mHeU(D%36~{fkVz*@9zKr delta 15162 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 diff --git a/static/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif b/static/images/docs/oauth-server/scopes-guide/vantage-write-granted.avif index c3b01390708295ab6f3a4dc2761a656afcc14424..6615d730ea1b6c92dd0de4a790964790ce78ba2e 100644 GIT binary patch delta 12428 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 K8v@9a%6LWu4I!cc delta 12871 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 From 24f9966ca80ecce650aff67e54807c0ff72bd292 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 15 Jul 2026 18:20:46 +0530 Subject: [PATCH 17/38] docs(oauth-server): add concept diagrams to all reference pages Mermaid-rendered flow diagrams (light and dark) placed after the concept heading on the overview, authorization, clients, tokens, scopes, and device-flow pages. --- .optimize-cache.json | 12 ++++++++++++ .../docs/partners/oauth-server/+page.markdoc | 7 +++++++ .../oauth-server/authorization/+page.markdoc | 7 +++++++ .../partners/oauth-server/clients/+page.markdoc | 7 +++++++ .../oauth-server/device-flow/+page.markdoc | 7 +++++++ .../partners/oauth-server/scopes/+page.markdoc | 7 +++++++ .../partners/oauth-server/tokens/+page.markdoc | 7 +++++++ .../dark/diagram-authorization.avif | Bin 0 -> 28852 bytes .../docs/oauth-server/dark/diagram-clients.avif | Bin 0 -> 13076 bytes .../oauth-server/dark/diagram-device-flow.avif | Bin 0 -> 25062 bytes .../oauth-server/dark/diagram-overview.avif | Bin 0 -> 13290 bytes .../docs/oauth-server/dark/diagram-scopes.avif | Bin 0 -> 10818 bytes .../docs/oauth-server/dark/diagram-tokens.avif | Bin 0 -> 19087 bytes .../oauth-server/diagram-authorization.avif | Bin 0 -> 26408 bytes .../docs/oauth-server/diagram-clients.avif | Bin 0 -> 12975 bytes .../docs/oauth-server/diagram-device-flow.avif | Bin 0 -> 22997 bytes .../docs/oauth-server/diagram-overview.avif | Bin 0 -> 13788 bytes .../docs/oauth-server/diagram-scopes.avif | Bin 0 -> 11200 bytes .../docs/oauth-server/diagram-tokens.avif | Bin 0 -> 19035 bytes 19 files changed, 54 insertions(+) create mode 100644 static/images/docs/oauth-server/dark/diagram-authorization.avif create mode 100644 static/images/docs/oauth-server/dark/diagram-clients.avif create mode 100644 static/images/docs/oauth-server/dark/diagram-device-flow.avif create mode 100644 static/images/docs/oauth-server/dark/diagram-overview.avif create mode 100644 static/images/docs/oauth-server/dark/diagram-scopes.avif create mode 100644 static/images/docs/oauth-server/dark/diagram-tokens.avif create mode 100644 static/images/docs/oauth-server/diagram-authorization.avif create mode 100644 static/images/docs/oauth-server/diagram-clients.avif create mode 100644 static/images/docs/oauth-server/diagram-device-flow.avif create mode 100644 static/images/docs/oauth-server/diagram-overview.avif create mode 100644 static/images/docs/oauth-server/diagram-scopes.avif create mode 100644 static/images/docs/oauth-server/diagram-tokens.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 684bc08a9b..1406333235 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1587,6 +1587,12 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", + "static/images/docs/oauth-server/dark/diagram-authorization.png": "5f82a31fb0ec0b753b7b0a2dc6b4f044609847c870205cc32e9ee87767db2d8f", + "static/images/docs/oauth-server/dark/diagram-clients.png": "00de79e7ef87e325309ae33c34a21395b4f3906bfa0809698f63214e3b9457ef", + "static/images/docs/oauth-server/dark/diagram-device-flow.png": "e555617a52b852a33df22d2c991ee8948e0e64599775efea533327cf79d8e37c", + "static/images/docs/oauth-server/dark/diagram-overview.png": "cf64794cfb2d0204d4cff2f0061923a73f5d77a8333bfba6ddb693f28a80671d", + "static/images/docs/oauth-server/dark/diagram-scopes.png": "9e1aeae9645bb68b581881596393db446402f76ecb4740dd05aca69536324876", + "static/images/docs/oauth-server/dark/diagram-tokens.png": "060e52ff548a7a337af7a62ac89f0f832034255cf4d3b3652d15384b989622fd", "static/images/docs/oauth-server/dark/oauth2-server-apps-empty.png": "b81617a77c6489bc93cfe3c118c2fd075eebda850fc5803cba4b1b62792269f1", "static/images/docs/oauth-server/dark/oauth2-server-apps-list.png": "a0b1a9bcc5708bb48f7d4684d754cfc8af8e666f808e11d00fc42182ee7ccf6e", "static/images/docs/oauth-server/dark/oauth2-server-create-app.png": "7ecd5625aa964ab77b87440e52bc866a4894dffe5183a0e86f7a46b8c438cee7", @@ -1596,6 +1602,12 @@ "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", "static/images/docs/oauth-server/dark/scopes-defined.png": "4723658a478b30e4f97372661d4ed7a9ba14d1cc7f0b56d4f5bf6148b5326cf1", + "static/images/docs/oauth-server/diagram-authorization.png": "84371bcc0218c49124772bb1efffd98880195f580dd53350c57c93ac7a0cea94", + "static/images/docs/oauth-server/diagram-clients.png": "d288a77ddede75c405419df9e3477d471ee7cb57ed63efe6c005cdf2b35098ac", + "static/images/docs/oauth-server/diagram-device-flow.png": "2e887ebd32a76f9ba1aae2f377f7e5c74f4456f36c91ee767aeb4a3dc307a7ee", + "static/images/docs/oauth-server/diagram-overview.png": "71488c2c882c2befa2384cf20aaff7f681bf55b52f3247a4b0f3e73b3684f412", + "static/images/docs/oauth-server/diagram-scopes.png": "6bc6b498f71b1ec5ac1fdac3cddedca3749b2e50c8452e587235b366b577638c", + "static/images/docs/oauth-server/diagram-tokens.png": "62de8f079c3b585c312c13c830fc53d957e8fc8e6432eaa0d33c5a1942e331bc", "static/images/docs/oauth-server/guide/taskflow-consent.png": "5c4f4cbc6b225c60d5d6e2f1616abe45f0e6b66a5014438961fca98db349bd18", "static/images/docs/oauth-server/guide/taskflow-login.png": "5d0013b31b211efe4d3a2f6a9f224a5b547d3ef1370e507b9a183bb276fc90e1", "static/images/docs/oauth-server/guide/vantage-dashboard.png": "b2e95c34ec9c19be090e5f3384e0c3278dd840059b3f015ccdb13a16c135dde1", diff --git a/src/routes/docs/partners/oauth-server/+page.markdoc b/src/routes/docs/partners/oauth-server/+page.markdoc index 8e79a9bdda..48bffe9978 100644 --- a/src/routes/docs/partners/oauth-server/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/+page.markdoc @@ -16,6 +16,13 @@ Your Appwrite project can act as an **OAuth 2.1 and OpenID Connect provider** (O # How it works {% #how-it-works %} +{% only_dark %} +![A third-party app obtaining tokens from your project's OAuth2 server and calling your APIs](/images/docs/oauth-server/dark/diagram-overview.avif) +{% /only_dark %} +{% only_light %} +![A third-party app obtaining tokens from your project's OAuth2 server and calling your APIs](/images/docs/oauth-server/diagram-overview.avif) +{% /only_light %} + The OAuth2 server has three moving parts. 1. **The authorization server.** Enabling the server on your project exposes the full set of endpoints: discovery, JWKS, authorize, approve and reject, token, userinfo, introspect, logout, and revoke. More advanced integrations also get device authorization, pushed authorization, and dynamic client registration. diff --git a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc index 0ac7119c28..127f12ba1d 100644 --- a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/authorization/+page.markdoc @@ -9,6 +9,13 @@ Authorization is the step where a user allows a client to act on their behalf. A # The authorization code flow {% #flow %} +{% only_dark %} +![The authorization code flow between the browser, the client, the OAuth2 server, and your consent screen](/images/docs/oauth-server/dark/diagram-authorization.avif) +{% /only_dark %} +{% only_light %} +![The authorization code flow between the browser, the client, the OAuth2 server, and your consent screen](/images/docs/oauth-server/diagram-authorization.avif) +{% /only_light %} + 1. The client sends the user to the **authorization endpoint** with its client ID, a registered redirect URI, `response_type=code`, and the scopes it wants. 2. Appwrite checks whether the user has a session on your project. If they are signed in, Appwrite creates a pending authorization request called a **grant**. The grant connects the user, client, requested scopes, and redirect URI. 3. Appwrite sends the browser to your **authorization URL**, which hosts your consent screen. The URL contains the grant ID for a signed-in user or the original authorization parameters for a signed-out user. diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/partners/oauth-server/clients/+page.markdoc index a5839e34e1..a23c43be9d 100644 --- a/src/routes/docs/partners/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/clients/+page.markdoc @@ -20,6 +20,13 @@ Server SDKs matter in exactly two places: [introspecting](/docs/partners/oauth-s # Confidential and public clients {% #client-types %} +{% only_dark %} +![Confidential clients hold a secret on a server while public clients rely on PKCE](/images/docs/oauth-server/dark/diagram-clients.avif) +{% /only_dark %} +{% only_light %} +![Confidential clients hold a secret on a server while public clients rely on PKCE](/images/docs/oauth-server/diagram-clients.avif) +{% /only_light %} + Every client is one of two types, and the difference comes down to a single question: can the app keep a secret? - A **confidential** client runs code on a server the developer controls, so it can store a `client_secret` that users never see. It authenticates to the token endpoint with that secret, which lets your server prove which client is calling. diff --git a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc index a034054364..0c5e4ea45b 100644 --- a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc @@ -14,6 +14,13 @@ This flow involves two applications: # How it works {% #how-it-works %} +{% only_dark %} +![The device flow between the device, the OAuth2 server, and the user's phone](/images/docs/oauth-server/dark/diagram-device-flow.avif) +{% /only_dark %} +{% only_light %} +![The device flow between the device, the OAuth2 server, and the user's phone](/images/docs/oauth-server/diagram-device-flow.avif) +{% /only_light %} + 1. The device client starts a device authorization. Appwrite returns a device code, a shorter user code, and the URL of your verification page. 2. The device shows the user code and verification URL to the user. 3. The user opens the verification page on a second device, confirms the code, signs in, and reviews the request. diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc index f3d3c7c583..5bea1af18c 100644 --- a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc @@ -39,6 +39,13 @@ Custom scopes are labels the OAuth2 server carries through the flow and stamps o # Requesting scopes {% #requesting %} +{% only_dark %} +![A scope travels from the client's request through consent and the access token to the resource server's check](/images/docs/oauth-server/dark/diagram-scopes.avif) +{% /only_dark %} +{% only_light %} +![A scope travels from the client's request through consent and the access token to the resource server's check](/images/docs/oauth-server/diagram-scopes.avif) +{% /only_light %} + A client asks for scopes in the space-separated `scope` parameter when it starts authorization, for example `openid profile games.read`. See [Authorization](/docs/partners/oauth-server/authorization#authorize) for the authorize request and SDK examples. Your consent screen shows the requested scopes and can approve a subset. The access token and token response contain the scopes that were granted, so the client can detect when it received less access than it requested. Clients should request only the permissions the integration needs. diff --git a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc index 13324a6daf..d20f16d6fa 100644 --- a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/tokens/+page.markdoc @@ -9,6 +9,13 @@ When a client redeems an authorization code, the OAuth2 server issues an access # The three tokens {% #tokens %} +{% only_dark %} +![The token endpoint issues access, refresh, and ID tokens, with refresh rotation and revocation](/images/docs/oauth-server/dark/diagram-tokens.avif) +{% /only_dark %} +{% only_light %} +![The token endpoint issues access, refresh, and ID tokens, with refresh rotation and revocation](/images/docs/oauth-server/diagram-tokens.avif) +{% /only_light %} + - **Access token.** A signed JWT that a client presents to a resource server when it calls an API on the user's behalf. It contains the authorization information the resource server needs to evaluate the request. The claims are explained in [Validate tokens](#validate). - **Refresh token.** A value the client exchanges for a new access token when the current one expires, without sending the user through authorization again. Treat it as an opaque secret even though Appwrite currently encodes it as a JWT. - **ID token.** A signed JWT from OpenID Connect that tells the client who authenticated. It is returned when the `openid` scope is granted and can include profile, email, or phone claims when those scopes were approved. A public client can use these verified claims to show the user's name or decide that its sign-in UI needs attention before calling an API. Resource servers authorize requests with the access token, not the ID token. diff --git a/static/images/docs/oauth-server/dark/diagram-authorization.avif b/static/images/docs/oauth-server/dark/diagram-authorization.avif new file mode 100644 index 0000000000000000000000000000000000000000..cd9c4fce615df7120ac784be7fab5cf73dfac2d3 GIT binary patch literal 28852 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-clients.avif b/static/images/docs/oauth-server/dark/diagram-clients.avif new file mode 100644 index 0000000000000000000000000000000000000000..565a9a2ae3d5088eda391aea7b6227399e10d356 GIT binary patch literal 13076 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-device-flow.avif b/static/images/docs/oauth-server/dark/diagram-device-flow.avif new file mode 100644 index 0000000000000000000000000000000000000000..4b562e0b5d2eaca927bc8697205fc457fefe9b9e GIT binary patch literal 25062 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%0Dl;T-jpvtU9Ja&`jsS|}cCfip&7 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-overview.avif b/static/images/docs/oauth-server/dark/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..46af40e6d53ef4a4e8837c9c2b68512788f12995 GIT binary patch literal 13290 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-scopes.avif b/static/images/docs/oauth-server/dark/diagram-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..2c4d72e3cf7ccdc4a6dfa2b82e8eb5909e947e34 GIT binary patch literal 10818 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-tokens.avif b/static/images/docs/oauth-server/dark/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..f496fb4a2f222f037d0e7ae17f8b82b14023ae46 GIT binary patch literal 19087 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-authorization.avif b/static/images/docs/oauth-server/diagram-authorization.avif new file mode 100644 index 0000000000000000000000000000000000000000..6991f58ba54af0cd0d75e2b3d94a9988c56e8f51 GIT binary patch literal 26408 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 Q_q0sA+rR?)Q^T*afH6Pm%>V!Z literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-clients.avif b/static/images/docs/oauth-server/diagram-clients.avif new file mode 100644 index 0000000000000000000000000000000000000000..430c22c882c01b9e8e6e7b849881932afefc1524 GIT binary patch literal 12975 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 F{67Wr>Mj5P literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-device-flow.avif b/static/images/docs/oauth-server/diagram-device-flow.avif new file mode 100644 index 0000000000000000000000000000000000000000..7f3517e54555e139df2f588b5fd774d684245ffe GIT binary patch literal 22997 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 BiAewe literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-overview.avif b/static/images/docs/oauth-server/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..531e123229903be66ca7eb9f3f9d5618c1e48ceb GIT binary patch literal 13788 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-scopes.avif b/static/images/docs/oauth-server/diagram-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..aabd371fc8703389877e58383142bc822bd596f6 GIT binary patch literal 11200 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 DAuwOE literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-tokens.avif b/static/images/docs/oauth-server/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..83a12298ecbcb0d61342ca6bba4066ee316cba63 GIT binary patch literal 19035 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 literal 0 HcmV?d00001 From d2aa7e584271fd9525e8b28f662c3ae18875a51a Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 15 Jul 2026 18:42:37 +0530 Subject: [PATCH 18/38] docs(oauth-server): tab authorize URL as text/curl/hurl and authenticate approve with session cookie --- .../oauth-server/quick-start/+page.markdoc | 25 ++++++++++++++++--- .../oauth-server/scopes/+page.markdoc | 4 +-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc index 81a22008e2..91c48791bb 100644 --- a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc @@ -684,6 +684,7 @@ Vantage begins the sign-in by sending the user's browser to TaskFlow's authoriza The URL uses TaskFlow's Appwrite API endpoint because its Appwrite project is acting as the authorization server. Replace `<REGION>` with the region from your API endpoint, `<PROJECT_ID>` with TaskFlow's Appwrite project ID, and `<CLIENT_ID>` with the ID generated when you registered Vantage: +{% multicode %} ```text https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize ?client_id=<CLIENT_ID> @@ -692,6 +693,24 @@ https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize &scope=openid profile email &state=<STATE> ``` +```curl +curl -G 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize' \ + --data-urlencode 'client_id=<CLIENT_ID>' \ + --data-urlencode 'redirect_uri=http://vantage.localhost/auth/redirect' \ + --data-urlencode 'response_type=code' \ + --data-urlencode 'scope=openid profile email' \ + --data-urlencode 'state=<STATE>' +``` +```hurl +GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize +[Query] +client_id: <CLIENT_ID> +redirect_uri: http://vantage.localhost/auth/redirect +response_type: code +scope: openid profile email +state: <STATE> +``` +{% /multicode %} Each query parameter tells TaskFlow how to handle the request: @@ -719,13 +738,13 @@ After Vantage opens the authorization endpoint: - **Sign in if the grant ID is missing.** A URL without a `grant_id` means the user does not have an active TaskFlow session. Sign in a user on the project, then open Vantage's authorization URL again. -- **Approve Vantage's request.** Send the `grant_id` to the approval endpoint using the same TaskFlow user's session. A browser sends the session cookie automatically. From another environment, pass the session token in the `X-Appwrite-Session` header. Use this request: +- **Approve Vantage's request.** Send the `grant_id` to the approval endpoint using the same TaskFlow user's session. A browser sends the session cookie automatically. From another environment, send the same cookie yourself: it is named `a_session_<PROJECT_ID>` and holds the session token. Use this request: {% multicode %} ```curl curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ -H 'Content-Type: application/json' \ - -H 'X-Appwrite-Session: <SESSION_TOKEN>' \ + -H 'Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN>' \ -d '{ "grant_id": "<GRANT_ID>" }' @@ -733,7 +752,7 @@ curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' ```hurl POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve Content-Type: application/json -X-Appwrite-Session: <SESSION_TOKEN> +Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN> { "grant_id": "<GRANT_ID>" } diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc index 5bea1af18c..effca6f659 100644 --- a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/partners/oauth-server/scopes/+page.markdoc @@ -329,7 +329,7 @@ For example, after a client requests `tasks.read`, the user might choose one pro curl --request POST \ 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ --header 'Accept: application/json' \ - --header 'X-Appwrite-Session: <SESSION_TOKEN>' \ + --header 'Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN>' \ --form 'grant_id=<GRANT_ID>' \ --form 'authorization_details=[ { @@ -339,7 +339,7 @@ curl --request POST \ ]' ``` -In a browser-based consent screen, the project session cookie is sent automatically, so the `X-Appwrite-Session` header is not needed. The JSON response contains the client's redirect URL. Send the browser to that URL to continue the authorization flow. +In a browser-based consent screen, the project session cookie is sent automatically, so the `Cookie` header is not needed. The JSON response contains the client's redirect URL. Send the browser to that URL to continue the authorization flow. A client that already knows the relevant resource IDs may send the same structure on its [authorize request](/docs/partners/oauth-server/authorization#authorize). Treat that as an optional preselection. The authorization flow should also work when the client omits it, and the consent screen should let the user review or narrow the final resource selection. From 850d7b652c9e91318c3d0364f876aad23e3404fe Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Wed, 15 Jul 2026 23:18:23 +0530 Subject: [PATCH 19/38] Add folder support --- .../docs/products/storage/s3/+page.markdoc | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc index 33f185f8a4..339f7aaea6 100644 --- a/src/routes/docs/products/storage/s3/+page.markdoc +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -17,11 +17,11 @@ Configure your client with the following values. S3 clients authenticate with an | Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | | Access key ID | Your Appwrite project ID | | Secret access key | An Appwrite API key secret | -| Region | `auto` or `us-east-1` | +| Region | `auto` | | Signature version | AWS Signature Version 4 (SigV4) | | Addressing style | Path-style only | -The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate, and Appwrite ignores it. Set it to `auto` or `us-east-1` and leave it alone. Some S3 clients require a region to sign requests, but the value has no effect. +The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate, and Appwrite ignores it. Set it to `auto` and leave it alone. Some S3 clients require a region to sign requests, but the value has no effect. # Configure your client {% #configure-your-client %} @@ -137,6 +137,30 @@ Listing a bucket to discover the `{fileId}-{fileName}` key is also how the S3 AP Because a new file ID is generated on every plain upload, uploading twice with the same key creates two distinct objects instead of overwriting. To read, copy, overwrite, or delete an object, use its canonical key from a list operation. Uploading to a canonical key that already exists overwrites that object in place. {% /info %} +# Folders {% #folders %} + +Appwrite Storage buckets are flat. There is no folder resource, and folders are never created or deleted on their own: they exist only as `/`-separated prefixes in object keys. Uploading to `reports/2024/january.pdf` stores a single object whose name contains those prefixes; it does not create `reports/` or `reports/2024/` as separate entities. + +To browse a bucket like a directory tree, list objects with the `/` delimiter and, optionally, a `prefix`. Appwrite groups object names at each `/` boundary: names sharing a prefix up to the next `/` collapse into a single entry under `CommonPrefixes` (the "folders"), while objects at the current level are returned under `Contents` (the "files"). Grouping is applied to the object's name, the key you uploaded, so folder prefixes come back clean, without the generated file ID. Pass a `prefix` such as `reports/` to open that folder and list one level deeper. Listing without a delimiter returns every matching object with its full name, which is how you enumerate a bucket recursively. + +Objects under `Contents` are still identified by their canonical `{fileId}-{fileName}` key (see [Object key mapping](#object-key-mapping)); use that key to read, copy, or delete a file. `CommonPrefixes` are folder paths only, with nothing to download at the prefix itself. + +`/` is the only supported delimiter. Setting `delimiter` to any other value returns `NotImplemented` (HTTP 501). + +```bash +# List the top level of a bucket: immediate folders (CommonPrefixes) and files +aws s3api list-objects-v2 --bucket my-bucket --delimiter / \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Open the "reports" folder and list one level down +aws s3api list-objects-v2 --bucket my-bucket --prefix reports/ --delimiter / \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# aws s3 ls uses the / delimiter automatically; omit --recursive to browse by folder +aws s3 ls s3://my-bucket/reports/ \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + # Example commands {% #example-commands %} Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above and set an alias or environment default for the endpoint. @@ -186,7 +210,7 @@ The following object operations are supported. | `DeleteObject` | Delete a single object. | | `DeleteObjects` | Delete multiple objects in one request, including quiet mode. | | `ListObjects` | List objects in a bucket, with `prefix` filtering. | -| `ListObjectsV2` | List objects with `prefix`, `delimiter`, `max-keys`, `continuation-token`, and `start-after`. | +| `ListObjectsV2` | List objects with `prefix`, `delimiter` (only `/`), `max-keys`, `continuation-token`, and `start-after`. Use `delimiter=/` to browse [folders](#folders). | | `GetObjectAcl`, `PutObjectAcl` | Compatibility responses only. See [Limitations](#limitations). | Content type is taken from the `Content-Type` you send. When that is missing or generic (`application/octet-stream`), Appwrite infers a type from the file extension. Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and disabled buckets are treated as not found. @@ -217,7 +241,7 @@ The S3 API targets the operations most clients depend on. Keep the following in - **Signature Version 4 only.** Requests are authenticated with SigV4, and the request timestamp must be within 15 minutes of the server's clock. - **Reading back objects.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [Object key mapping](#object-key-mapping). - **ACLs are compatibility responses.** `GetObjectAcl`, `PutObjectAcl`, `GetBucketAcl`, and `PutBucketAcl` return a canned private ACL and are accepted for tooling compatibility. They do not change access. Manage access with [Appwrite permissions](/docs/products/storage/permissions) and API key scopes instead. -- **Folders are not supported.** Uploading a folder marker (a key ending in `/`) returns `NotImplemented` (HTTP 501). Object keys can still contain `/`, so prefixes behave as expected. +- **No folder resource or folder markers.** Folders are virtual: they are `/`-separated prefixes in object keys, browsed by listing with `delimiter=/`. See [Folders](#folders). `/` is the only supported delimiter, and any other delimiter value returns `NotImplemented` (HTTP 501). Uploading a folder-marker object (a key ending in `/`) is likewise not supported and returns `NotImplemented` (HTTP 501). - **Object listings are built in memory.** `ListObjects` and `ListObjectsV2` load the matching objects from the database and order them in the API. `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped, but listing very large buckets increases per-request latency and memory. - **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. - **Unsupported S3 features.** Object tagging, CORS, lifecycle, bucket policies and policy status, encryption configuration, ownership controls, notifications, and versioning are not supported. Requests to these sub-resources return `NotImplemented` (HTTP 501). From c8c417252a48da6e7723baf0b55e9f4750b0d1c6 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Wed, 15 Jul 2026 23:55:50 +0530 Subject: [PATCH 20/38] edits --- .../docs/products/storage/s3/+page.markdoc | 91 ++++++++++++------- 1 file changed, 57 insertions(+), 34 deletions(-) diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc index 339f7aaea6..4a61b38b45 100644 --- a/src/routes/docs/products/storage/s3/+page.markdoc +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -4,9 +4,9 @@ title: S3 API description: Connect any S3-compatible client, SDK, or tool to Appwrite Storage. Configure credentials once, then manage buckets, objects, and multipart uploads over the S3 API. --- -Appwrite Storage exposes an S3-compatible API, so you can point the AWS CLI, the AWS SDKs, and third-party tools like rclone or s3cmd at your buckets and files. The API speaks AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, so most existing S3 code works after you change three settings: the endpoint, the credentials, and the region. +Appwrite Storage exposes an S3-compatible API, so you can point the AWS CLI, the AWS SDKs, and third-party tools like rclone or s3cmd at your buckets and files. The API uses AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, so most existing S3 code works after you change three settings: the endpoint, the credentials, and the region. -The S3 API is available on Appwrite Cloud. It needs a project ID and an [API key](/docs/advanced/security/api-keys) with the storage scopes described below, and it works alongside your existing data: buckets and files are addressable over both the native Storage API and the S3 API at the same time, with no migration required. +The S3 API is available on Appwrite Cloud. It needs a project ID and an [API key](/docs/advanced/security/api-keys) with the [storage scopes](#api-key-scopes) described below. It also works alongside your existing data: buckets and files are addressable over both the native Storage API and the S3 API at the same time, with no migration required. # Connect an S3 client {% #connect-an-s3-client %} @@ -21,11 +21,9 @@ Configure your client with the following values. S3 clients authenticate with an | Signature version | AWS Signature Version 4 (SigV4) | | Addressing style | Path-style only | -The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same host you use for the rest of the Appwrite API. The S3 `region` setting is separate, and Appwrite ignores it. Set it to `auto` and leave it alone. Some S3 clients require a region to sign requests, but the value has no effect. +The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same region you use for the rest of the Appwrite API. The S3 `region` setting is separate: some clients require a region to sign requests, but Appwrite ignores the value, so set it to `auto`. -# Configure your client {% #configure-your-client %} - -Point your client at the endpoint from the table above, set the region to `auto`, enable path-style addressing, and pass your project ID and API key secret as the credentials. +The examples below apply these settings in the AWS CLI and the AWS SDKs. {% multicode %} ```bash @@ -73,20 +71,43 @@ s3 = boto3.client( ```go // Go: aws-sdk-go-v2 -cfg, err := config.LoadDefaultConfig(context.TODO(), - config.WithRegion("auto"), - config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( - "<PROJECT_ID>", "<API_KEY_SECRET>", "", - )), +package main + +import ( + "context" + "log" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/credentials" + "github.com/aws/aws-sdk-go-v2/service/s3" ) -if err != nil { - log.Fatal(err) -} -client := s3.NewFromConfig(cfg, func(o *s3.Options) { - o.BaseEndpoint = aws.String("https://<REGION>.cloud.appwrite.io/v1/s3") - o.UsePathStyle = true -}) +func main() { + cfg, err := config.LoadDefaultConfig(context.TODO(), + config.WithRegion("auto"), + config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider( + "<PROJECT_ID>", "<API_KEY_SECRET>", "", + )), + ) + if err != nil { + log.Fatal(err) + } + + client := s3.NewFromConfig(cfg, func(o *s3.Options) { + o.BaseEndpoint = aws.String("https://<REGION>.cloud.appwrite.io/v1/s3") + o.UsePathStyle = true + }) + + buckets, err := client.ListBuckets(context.TODO(), &s3.ListBucketsInput{}) + if err != nil { + log.Fatal(err) + } + + for _, bucket := range buckets.Buckets { + log.Println(*bucket.Name) + } +} ``` ```php @@ -108,30 +129,30 @@ $client = new S3Client([ # API key scopes {% #api-key-scopes %} -Create an API key in your project's **Overview** settings, then grant the storage scopes your workload needs. The project ID identifies your project, while the API key secret both authenticates the request and determines what it is allowed to do. +Create an API key in the Appwrite Console under **Overview** > **Integrations** > **API keys**, then grant the storage scopes your workload needs. The project ID identifies your project, while the API key secret both authenticates the request and determines what it is allowed to do. | Access level | Required scopes | | --- | --- | | Read-only (list and download) | `buckets.read`, `files.read` | | Write (create buckets, upload, delete) | `buckets.write`, `files.write` | -| Copy (`CopyObject`, `UploadPartCopy`) | `files.read` and `files.write` | +| Copy (`CopyObject`, `UploadPartCopy`) | `files.read`, `files.write` | | Full read and write | `buckets.read`, `files.read`, `buckets.write`, `files.write` | Copying an object reads the source and writes the destination, so `CopyObject` and `UploadPartCopy` need both `files.read` and `files.write`. A request signed with a secret that does not match a project API key, or a key missing the required scope, is rejected with `AccessDenied` (HTTP 403). # Object key mapping {% #object-key-mapping %} -S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files. Creating a bucket over S3 creates an Appwrite bucket with the bucket name set to the ID you provided and Appwrite's default settings. Any bucket you already have in your project is usable over S3 immediately. +S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files. Creating a bucket over S3 creates an Appwrite bucket that uses the S3 bucket name as both its ID and its name, with Appwrite's default settings. Any bucket you already have in your project is usable over S3 immediately. -Every object maps to a file. When you upload an object, Appwrite stores it as a file with an automatically generated file ID and uses the object key you provided as the file's name. The **canonical key**, the key returned by list operations and expected by read, copy, and delete operations, is: +When you upload an object, Appwrite stores it as a file with an automatically generated file ID and uses the object key you provided as the file's name. Read, copy, and delete operations then address the object by its **canonical key**, which list operations return: ```text {fileId}-{fileName} ``` -For example, uploading to the key `reports/january.pdf` creates a file whose name is `reports/january.pdf`, and the object is then listed under a canonical key such as `6710e2...f3-reports/january.pdf`. +For example, uploading to the key `reports/january.pdf` creates a file whose name is `reports/january.pdf`, and the object is then listed under a canonical key such as `6710e2f300048d1e2c3f-reports/january.pdf`. -Listing a bucket to discover the `{fileId}-{fileName}` key is also how the S3 API interoperates with files created through the native Storage API and Console: list the bucket, then address the file over S3 with its canonical key. +The same flow covers files created through the native Storage API or the Console: list the bucket to discover a file's canonical key, then address it over S3 with that key. {% info title="Uploads never overwrite by key" %} Because a new file ID is generated on every plain upload, uploading twice with the same key creates two distinct objects instead of overwriting. To read, copy, overwrite, or delete an object, use its canonical key from a list operation. Uploading to a canonical key that already exists overwrites that object in place. @@ -141,7 +162,9 @@ Because a new file ID is generated on every plain upload, uploading twice with t Appwrite Storage buckets are flat. There is no folder resource, and folders are never created or deleted on their own: they exist only as `/`-separated prefixes in object keys. Uploading to `reports/2024/january.pdf` stores a single object whose name contains those prefixes; it does not create `reports/` or `reports/2024/` as separate entities. -To browse a bucket like a directory tree, list objects with the `/` delimiter and, optionally, a `prefix`. Appwrite groups object names at each `/` boundary: names sharing a prefix up to the next `/` collapse into a single entry under `CommonPrefixes` (the "folders"), while objects at the current level are returned under `Contents` (the "files"). Grouping is applied to the object's name, the key you uploaded, so folder prefixes come back clean, without the generated file ID. Pass a `prefix` such as `reports/` to open that folder and list one level deeper. Listing without a delimiter returns every matching object with its full name, which is how you enumerate a bucket recursively. +To browse a bucket like a directory tree, list objects with the `/` delimiter and, optionally, a `prefix`. Appwrite groups object names at each `/` boundary: names sharing a prefix up to the next `/` collapse into a single entry under `CommonPrefixes` (the "folders"), while objects at the current level are returned under `Contents` (the "files"). + +Grouping is applied to the object's name (the key you uploaded), so folder prefixes come back clean, without the generated file ID. Pass a `prefix` such as `reports/` to open that folder and list one level deeper. Listing without a delimiter returns every matching object with its full name, which is how you enumerate a bucket recursively. Objects under `Contents` are still identified by their canonical `{fileId}-{fileName}` key (see [Object key mapping](#object-key-mapping)); use that key to read, copy, or delete a file. `CommonPrefixes` are folder paths only, with nothing to download at the prefix itself. @@ -163,7 +186,7 @@ aws s3 ls s3://my-bucket/reports/ \ # Example commands {% #example-commands %} -Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above and set an alias or environment default for the endpoint. +Once your client is configured, everyday S3 commands work as usual. These AWS CLI examples assume you have run `aws configure` as shown above; each command passes the endpoint explicitly with `--endpoint-url`. ```bash # Create a bucket @@ -180,7 +203,7 @@ aws s3 ls s3://my-bucket --recursive \ # Download using the canonical {fileId}-{fileName} key from the listing aws s3api get-object --bucket my-bucket \ - --key 6710e2f3-reports/january.pdf ./january.pdf \ + --key 6710e2f300048d1e2c3f-reports/january.pdf ./january.pdf \ --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 ``` @@ -191,7 +214,7 @@ All operations are addressed with path-style URLs under `/v1/s3`. The following | Operation | Description | | --- | --- | | `ListBuckets` | List the project's buckets. | -| `CreateBucket` | Create a bucket. The bucket ID becomes the bucket name, with Appwrite's default settings. | +| `CreateBucket` | Create a bucket. The S3 bucket name becomes the Appwrite bucket's ID and name, with Appwrite's default settings. | | `HeadBucket` | Check that a bucket exists and is accessible. | | `DeleteBucket` | Delete an empty bucket. Deleting a bucket that still contains objects returns `BucketNotEmpty` (HTTP 409). | | `GetBucketLocation` | Returns `us-east-1`. | @@ -213,7 +236,7 @@ The following object operations are supported. | `ListObjectsV2` | List objects with `prefix`, `delimiter` (only `/`), `max-keys`, `continuation-token`, and `start-after`. Use `delimiter=/` to browse [folders](#folders). | | `GetObjectAcl`, `PutObjectAcl` | Compatibility responses only. See [Limitations](#limitations). | -Content type is taken from the `Content-Type` you send. When that is missing or generic (`application/octet-stream`), Appwrite infers a type from the file extension. Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and disabled buckets are treated as not found. +Content type is taken from the `Content-Type` header you send. When that is missing or generic (`application/octet-stream`), Appwrite infers a type from the file extension. Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and disabled buckets are treated as not found. # Multipart uploads {% #multipart-uploads %} @@ -230,19 +253,19 @@ Large files are uploaded in parts. Standard SDK multipart helpers, such as the A | `ListParts` | List the parts already uploaded for an `UploadId`. | {% info title="Multipart requirements" %} -Parts must be contiguous and start at part number 1. Completing an upload with non-contiguous part numbers (for example parts 1, 5, and 100) is rejected. Sequential uploads, which is what SDK multipart flows produce, are unaffected. In-progress uploads are kept for 24 hours before they are cleaned up, so complete or abort within that window. +Parts must be contiguous and start at part number 1. Completing an upload with non-contiguous part numbers (for example, parts 1, 5, and 100) is rejected. SDK multipart helpers upload parts sequentially, so they are unaffected. In-progress uploads are kept for 24 hours before they are cleaned up, so complete or abort within that window. {% /info %} # Limitations {% #limitations %} The S3 API targets the operations most clients depend on. Keep the following in mind. -- **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in [Configure your client](#configure-your-client). +- **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in [Connect an S3 client](#connect-an-s3-client). - **Signature Version 4 only.** Requests are authenticated with SigV4, and the request timestamp must be within 15 minutes of the server's clock. -- **Reading back objects.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [Object key mapping](#object-key-mapping). +- **Objects are addressed by canonical key.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [Object key mapping](#object-key-mapping). - **ACLs are compatibility responses.** `GetObjectAcl`, `PutObjectAcl`, `GetBucketAcl`, and `PutBucketAcl` return a canned private ACL and are accepted for tooling compatibility. They do not change access. Manage access with [Appwrite permissions](/docs/products/storage/permissions) and API key scopes instead. -- **No folder resource or folder markers.** Folders are virtual: they are `/`-separated prefixes in object keys, browsed by listing with `delimiter=/`. See [Folders](#folders). `/` is the only supported delimiter, and any other delimiter value returns `NotImplemented` (HTTP 501). Uploading a folder-marker object (a key ending in `/`) is likewise not supported and returns `NotImplemented` (HTTP 501). -- **Object listings are built in memory.** `ListObjects` and `ListObjectsV2` load the matching objects from the database and order them in the API. `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped, but listing very large buckets increases per-request latency and memory. +- **No folder resource or folder markers.** Folders are virtual: they are `/`-separated prefixes in object keys, browsed by listing with `delimiter=/`. See [Folders](#folders). Using any other delimiter value or uploading a folder-marker object (a key ending in `/`) returns `NotImplemented` (HTTP 501). +- **Large listings increase latency.** `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped. For large buckets, prefer `ListObjectsV2` with pagination. - **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. - **Unsupported S3 features.** Object tagging, CORS, lifecycle, bucket policies and policy status, encryption configuration, ownership controls, notifications, and versioning are not supported. Requests to these sub-resources return `NotImplemented` (HTTP 501). From 3a7072eb45765f77a91040cd8d04ebe618fabc30 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Thu, 16 Jul 2026 01:11:41 +0530 Subject: [PATCH 21/38] Add announcement blog and changelog --- .../blog/post/announcing-s3-api/+page.markdoc | 156 ++++++++++++++++++ .../changelog/(entries)/2026-07-31.markdoc | 16 ++ 2 files changed, 172 insertions(+) create mode 100644 src/routes/blog/post/announcing-s3-api/+page.markdoc create mode 100644 src/routes/changelog/(entries)/2026-07-31.markdoc diff --git a/src/routes/blog/post/announcing-s3-api/+page.markdoc b/src/routes/blog/post/announcing-s3-api/+page.markdoc new file mode 100644 index 0000000000..e714ce11a2 --- /dev/null +++ b/src/routes/blog/post/announcing-s3-api/+page.markdoc @@ -0,0 +1,156 @@ +--- +layout: post +title: "Announcing the S3 API: Use any S3 client with Appwrite Storage" +description: Appwrite Storage now exposes an S3-compatible API. Point the AWS CLI, the AWS SDKs, and tools like rclone at your Appwrite buckets, with no migration required. +date: 2026-07-31 +cover: /images/blog/announcing-s3-api/cover.avif +timeToRead: 5 +author: aditya-oberai +category: announcement +featured: false +callToAction: true +faqs: + - question: "What is the Appwrite S3 API?" + answer: "It is an S3-compatible API for Appwrite Storage. It authenticates requests with AWS Signature Version 4 and maps standard S3 operations onto Appwrite buckets and files, so existing S3 clients, SDKs, and tools work after you change the endpoint, credentials, and region." + - question: "Which credentials do I use with an S3 client?" + answer: "Your Appwrite project ID is the access key ID, and an Appwrite API key secret is the secret access key. The API key needs the storage scopes that match your workload: `buckets.read` and `files.read` for read-only access, plus `buckets.write` and `files.write` for uploads, deletes, and bucket creation." + - question: "Do I need to migrate my existing buckets and files?" + answer: "No. Buckets and files are addressable over both the native Storage API and the S3 API at the same time. Any bucket you already have in your project is usable over S3 immediately, and objects uploaded over S3 appear in the Appwrite Console like any other file." + - question: "Which S3 operations are supported?" + answer: "The API covers the operations most clients depend on: bucket operations like `ListBuckets`, `CreateBucket`, and `DeleteBucket`; object operations like `PutObject`, `GetObject`, `CopyObject`, `DeleteObjects`, and `ListObjectsV2`; and the full multipart upload flow. Features like object tagging, lifecycle rules, bucket policies, and versioning return `NotImplemented`." + - question: "Does the S3 API support folders?" + answer: "Folders are virtual, as they are on S3 itself: they exist as `/`-separated prefixes in object keys. List a bucket with `delimiter=/` and an optional `prefix` to browse it like a directory tree, with folders returned under `CommonPrefixes` and files under `Contents`." + - question: "How are object keys mapped to Appwrite files?" + answer: "Uploading an object creates an Appwrite file with a generated file ID and your object key as the file name. Read, copy, and delete operations then address the object by its canonical `{fileId}-{fileName}` key, which list operations return. See the [S3 API documentation](/docs/products/storage/s3) for details." +--- + +The S3 API has become the common language of object storage. The AWS CLI, the AWS SDKs, backup tools like rclone and s3cmd, data pipelines, and countless libraries all speak it. Until now, using them with Appwrite Storage meant writing glue code around the native API. + +Today, we are announcing the **S3 API** for Appwrite Storage, an S3-compatible API that lets you point any S3 client, SDK, or tool at your Appwrite buckets and files. + +The API uses AWS Signature Version 4 and maps standard S3 operations onto Appwrite Storage, so most existing S3 code works after you change three settings: the endpoint, the credentials, and the region. + +# Why this matters + +Appwrite Storage already gives you buckets, permissions, image transformations, and file tokens through the native API and SDKs. The S3 API adds a second door into the same storage, unlocking the whole S3 ecosystem: + +- **Bring your existing tools.** Use the AWS CLI, rclone, s3cmd, and any S3-aware library or service against Appwrite buckets without glue code. +- **Reuse existing code.** Applications already written against the AWS SDKs connect to Appwrite by changing the client configuration, not the code. +- **No migration required.** Buckets and files are addressable over both the native Storage API and the S3 API at the same time. Files uploaded over S3 show up in the Appwrite Console, and files uploaded through the Console or SDKs are listable and downloadable over S3. +- **Multipart uploads out of the box.** SDK transfer managers and `aws s3 cp` upload large files in parts automatically, with the standard multipart operations fully supported. + +# How it works + +S3 clients authenticate with an access key ID and a secret access key. Appwrite maps these to your project ID and an [API key](/docs/advanced/security/api-keys) secret: + +| Setting | Value | +| --- | --- | +| Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | +| Access key ID | Your Appwrite project ID | +| Secret access key | An Appwrite API key secret | +| Region | `auto` | +| Signature version | AWS Signature Version 4 (SigV4) | +| Addressing style | Path-style only | + +The API key's scopes control what the client can do: grant `buckets.read` and `files.read` for read-only workloads, and add `buckets.write` and `files.write` for uploads, deletes, and bucket creation. + +Here is the same configuration in the AWS CLI, the AWS SDK for JavaScript, and boto3: + +{% multicode %} +```bash +# AWS CLI +aws configure set aws_access_key_id <PROJECT_ID> +aws configure set aws_secret_access_key <API_KEY_SECRET> +aws configure set region auto + +# Appwrite serves path-style URLs only, so force path addressing +aws configure set default.s3.addressing_style path + +# Pass the Appwrite endpoint on every command +aws s3 ls --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + +```js +// Node.js: @aws-sdk/client-s3 (v3) +import { S3Client } from '@aws-sdk/client-s3'; + +const client = new S3Client({ + endpoint: 'https://<REGION>.cloud.appwrite.io/v1/s3', + region: 'auto', + forcePathStyle: true, + credentials: { + accessKeyId: '<PROJECT_ID>', + secretAccessKey: '<API_KEY_SECRET>' + } +}); +``` + +```python +# Python: boto3 +import boto3 +from botocore.config import Config + +s3 = boto3.client( + 's3', + endpoint_url='https://<REGION>.cloud.appwrite.io/v1/s3', + region_name='auto', + aws_access_key_id='<PROJECT_ID>', + aws_secret_access_key='<API_KEY_SECRET>', + config=Config(signature_version='s3v4', s3={'addressing_style': 'path'}) +) +``` +{% /multicode %} + +Once the client is configured, everyday S3 commands work as usual: + +```bash +# Create a bucket +aws s3api create-bucket --bucket my-bucket \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# Upload a file (uses multipart automatically for large files) +aws s3 cp ./january.pdf s3://my-bucket/reports/january.pdf \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 + +# List objects to discover canonical keys +aws s3 ls s3://my-bucket --recursive \ + --endpoint-url https://<REGION>.cloud.appwrite.io/v1/s3 +``` + +# S3 objects, Appwrite files + +S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files. When you upload an object, Appwrite stores it as a file with a generated file ID and uses your object key as the file's name. Read, copy, and delete operations then address the object by its **canonical key**, which list operations return: + +```text +{fileId}-{fileName} +``` + +This means files created through the native Storage API or the Console are usable over S3 too: list the bucket to discover a file's canonical key, then address it with that key. + +Folders work the way they do on S3 itself: they are virtual, existing as `/`-separated prefixes in object keys. List a bucket with the `/` delimiter and an optional `prefix` to browse it like a directory tree, with folders grouped under `CommonPrefixes` and files under `Contents`. + +# What's supported + +The S3 API targets the operations most clients depend on: + +- **Bucket operations**: `ListBuckets`, `CreateBucket`, `HeadBucket`, `DeleteBucket`, and `GetBucketLocation` +- **Object operations**: `PutObject`, `GetObject` (with `Range` and conditional requests), `HeadObject`, `CopyObject`, `DeleteObject`, `DeleteObjects`, `ListObjects`, and `ListObjectsV2` +- **Multipart uploads**: the full flow, from `CreateMultipartUpload` through `UploadPart`, `UploadPartCopy`, `CompleteMultipartUpload`, `AbortMultipartUpload`, `ListMultipartUploads`, and `ListParts` + +Buckets keep their constraints under the S3 API: uploads that exceed the bucket's maximum file size or use a disallowed extension are rejected, and access is governed by [Appwrite permissions](/docs/products/storage/permissions) and API key scopes. Features outside this set, such as object tagging, lifecycle rules, bucket policies, and versioning, return standard `NotImplemented` errors, so clients fail cleanly. The full list is in the [limitations documentation](/docs/products/storage/s3#limitations). + +# Get started + +The S3 API is available on **Appwrite Cloud** today. + +1. Navigate to **Overview** > **Integrations** > **API keys** and create an API key with the storage scopes your workload needs. +2. Configure your S3 client with the `https://<REGION>.cloud.appwrite.io/v1/s3` endpoint, your project ID as the access key ID, and the API key secret as the secret access key. +3. Run your existing S3 commands and code against your Appwrite buckets. + +Full documentation, including object key mapping, folder listings, and error responses, is available on the [S3 API documentation page](/docs/products/storage/s3). + +# Resources + +- [S3 API documentation](/docs/products/storage/s3) +- [Storage documentation](/docs/products/storage) +- [API keys documentation](/docs/advanced/security/api-keys) diff --git a/src/routes/changelog/(entries)/2026-07-31.markdoc b/src/routes/changelog/(entries)/2026-07-31.markdoc new file mode 100644 index 0000000000..8fbc7a863e --- /dev/null +++ b/src/routes/changelog/(entries)/2026-07-31.markdoc @@ -0,0 +1,16 @@ +--- +layout: changelog +title: "Announcing the S3 API for Appwrite Storage" +date: 2026-07-31 +cover: /images/blog/announcing-s3-api/cover.avif +--- + +Appwrite Storage now exposes an **S3-compatible API**. Point the AWS CLI, the AWS SDKs, and tools like rclone or s3cmd at your Appwrite buckets by changing three settings: the endpoint (`https://<REGION>.cloud.appwrite.io/v1/s3`), the credentials (your project ID and an API key secret), and the region (`auto`). + +The API uses AWS Signature Version 4 and covers the operations most clients depend on, including bucket management, object uploads and downloads, copy and batch delete, folder-style listings with `delimiter=/`, and the full multipart upload flow. It works alongside your existing data: buckets and files are addressable over both the native Storage API and the S3 API at the same time, with no migration required. + +The S3 API is available on Appwrite Cloud today. + +{% arrow_link href="/blog/post/announcing-s3-api" %} +Read the announcement +{% /arrow_link %} From c7e7d3302f22aab659b6b2994a12ea86e89a937a Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 16 Jul 2026 12:16:53 +0530 Subject: [PATCH 22/38] docs(oauth-server): move section under Auth product Moves docs/partners/oauth-server to docs/products/auth/oauth-server, rewrites all internal links, links it from the Auth sidebar with a new badge until 30 Aug, and resets the section layout to avoid nesting inside the Auth layout. --- .../announcing-oauth2-server/+page.markdoc | 8 ++++---- src/routes/docs/Sidebar.svelte | 7 ------- .../oauth-server/custom-scopes/+page.ts | 5 ----- .../sign-in-with-your-product/+page.ts | 5 ----- src/routes/docs/products/auth/+layout.svelte | 5 +++++ .../auth/oauth-server/+layout@docs.svelte} | 20 +++++++++---------- .../auth}/oauth-server/+page.markdoc | 20 +++++++++---------- .../oauth-server/authorization/+page.markdoc | 6 +++--- .../auth}/oauth-server/clients/+page.markdoc | 10 +++++----- .../oauth-server/custom-scopes/+layout.svelte | 0 .../oauth-server/custom-scopes/+layout.ts | 0 .../auth/oauth-server/custom-scopes/+page.ts | 5 +++++ .../custom-scopes/step-1/+page.markdoc | 6 +++--- .../custom-scopes/step-2/+page.markdoc | 2 +- .../custom-scopes/step-3/+page.markdoc | 2 +- .../custom-scopes/step-4/+page.markdoc | 4 ++-- .../custom-scopes/step-5/+page.markdoc | 0 .../custom-scopes/step-6/+page.markdoc | 2 +- .../custom-scopes/step-7/+page.markdoc | 6 +++--- .../oauth-server/device-flow/+page.markdoc | 10 +++++----- .../oauth-server/quick-start/+page.markdoc | 16 +++++++-------- .../auth}/oauth-server/scopes/+page.markdoc | 12 +++++------ .../sign-in-with-your-product/+layout.svelte | 0 .../sign-in-with-your-product/+layout.ts | 0 .../sign-in-with-your-product/+page.ts | 5 +++++ .../step-1/+page.markdoc | 4 ++-- .../step-2/+page.markdoc | 4 ++-- .../step-3/+page.markdoc | 0 .../step-4/+page.markdoc | 0 .../step-5/+page.markdoc | 0 .../step-6/+page.markdoc | 0 .../step-7/+page.markdoc | 8 ++++---- .../auth}/oauth-server/tokens/+page.markdoc | 2 +- 33 files changed, 86 insertions(+), 88 deletions(-) delete mode 100644 src/routes/docs/partners/oauth-server/custom-scopes/+page.ts delete mode 100644 src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts rename src/routes/docs/{partners/oauth-server/+layout.svelte => products/auth/oauth-server/+layout@docs.svelte} (65%) rename src/routes/docs/{partners => products/auth}/oauth-server/+page.markdoc (80%) rename src/routes/docs/{partners => products/auth}/oauth-server/authorization/+page.markdoc (99%) rename src/routes/docs/{partners => products/auth}/oauth-server/clients/+page.markdoc (97%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/+layout.svelte (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/+layout.ts (100%) create mode 100644 src/routes/docs/products/auth/oauth-server/custom-scopes/+page.ts rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-1/+page.markdoc (77%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-2/+page.markdoc (91%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-3/+page.markdoc (96%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-4/+page.markdoc (83%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-5/+page.markdoc (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-6/+page.markdoc (96%) rename src/routes/docs/{partners => products/auth}/oauth-server/custom-scopes/step-7/+page.markdoc (92%) rename src/routes/docs/{partners => products/auth}/oauth-server/device-flow/+page.markdoc (95%) rename src/routes/docs/{partners => products/auth}/oauth-server/quick-start/+page.markdoc (97%) rename src/routes/docs/{partners => products/auth}/oauth-server/scopes/+page.markdoc (92%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/+layout.svelte (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/+layout.ts (100%) create mode 100644 src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+page.ts rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-1/+page.markdoc (88%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-2/+page.markdoc (95%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-3/+page.markdoc (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-4/+page.markdoc (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-5/+page.markdoc (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-6/+page.markdoc (100%) rename src/routes/docs/{partners => products/auth}/oauth-server/sign-in-with-your-product/step-7/+page.markdoc (85%) rename src/routes/docs/{partners => products/auth}/oauth-server/tokens/+page.markdoc (99%) diff --git a/src/routes/blog/post/announcing-oauth2-server/+page.markdoc b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc index 593359ce33..d0059a64cb 100644 --- a/src/routes/blog/post/announcing-oauth2-server/+page.markdoc +++ b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc @@ -259,7 +259,7 @@ Every flow follows the corresponding specification, so off-the-shelf OAuth and O The OAuth2 server is available on Appwrite Cloud. Enable it from the **Auth** section of your project, register a client, and run your first sign-in in a few minutes with the quick start. -- [OAuth2 server documentation](/docs/partners/oauth-server) -- [Quick start: run your first authorization flow](/docs/partners/oauth-server/quick-start) -- [Tutorial: add Sign in with your product to an app](/docs/partners/oauth-server/sign-in-with-your-product/step-1) -- [Tutorial: protect an API with custom scopes](/docs/partners/oauth-server/custom-scopes/step-1) +- [OAuth2 server documentation](/docs/products/auth/oauth-server) +- [Quick start: run your first authorization flow](/docs/products/auth/oauth-server/quick-start) +- [Tutorial: add Sign in with your product to an app](/docs/products/auth/oauth-server/sign-in-with-your-product/step-1) +- [Tutorial: protect an API with custom scopes](/docs/products/auth/oauth-server/custom-scopes/step-1) diff --git a/src/routes/docs/Sidebar.svelte b/src/routes/docs/Sidebar.svelte index 7d6432d285..1dd3ea69ec 100644 --- a/src/routes/docs/Sidebar.svelte +++ b/src/routes/docs/Sidebar.svelte @@ -101,13 +101,6 @@ href: '/docs/partners/project', icon: 'icon-briefcase', isParent: true - }, - { - label: 'OAuth2 server', - href: '/docs/partners/oauth-server', - icon: 'icon-key', - isParent: true, - new: isNewUntil('31 Aug 2026') } ] }, diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts b/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts deleted file mode 100644 index 33146aab15..0000000000 --- a/src/routes/docs/partners/oauth-server/custom-scopes/+page.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load() { - redirect(303, '/docs/partners/oauth-server/custom-scopes/step-1'); -} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts b/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts deleted file mode 100644 index deeb96a18b..0000000000 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+page.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { redirect } from '@sveltejs/kit'; - -export function load() { - redirect(303, '/docs/partners/oauth-server/sign-in-with-your-product/step-1'); -} diff --git a/src/routes/docs/products/auth/+layout.svelte b/src/routes/docs/products/auth/+layout.svelte index e651ad2612..e15760af6c 100644 --- a/src/routes/docs/products/auth/+layout.svelte +++ b/src/routes/docs/products/auth/+layout.svelte @@ -75,6 +75,11 @@ label: 'Presences', href: '/docs/products/auth/presences', new: isNewUntil('31 Aug 2026') + }, + { + label: 'OAuth2 server', + href: '/docs/products/auth/oauth-server', + new: isNewUntil('30 Aug 2026') } ] }, diff --git a/src/routes/docs/partners/oauth-server/+layout.svelte b/src/routes/docs/products/auth/oauth-server/+layout@docs.svelte similarity index 65% rename from src/routes/docs/partners/oauth-server/+layout.svelte rename to src/routes/docs/products/auth/oauth-server/+layout@docs.svelte index 047de6bb1a..28b8f6b6e9 100644 --- a/src/routes/docs/partners/oauth-server/+layout.svelte +++ b/src/routes/docs/products/auth/oauth-server/+layout@docs.svelte @@ -3,7 +3,7 @@ import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; const parent: NavParent = { - href: '/docs', + href: '/docs/products/auth', label: 'OAuth2 server' }; @@ -13,11 +13,11 @@ items: [ { label: 'Overview', - href: '/docs/partners/oauth-server' + href: '/docs/products/auth/oauth-server' }, { label: 'Quick start', - href: '/docs/partners/oauth-server/quick-start' + href: '/docs/products/auth/oauth-server/quick-start' } ] }, @@ -26,23 +26,23 @@ items: [ { label: 'Clients', - href: '/docs/partners/oauth-server/clients' + href: '/docs/products/auth/oauth-server/clients' }, { label: 'Authorization', - href: '/docs/partners/oauth-server/authorization' + href: '/docs/products/auth/oauth-server/authorization' }, { label: 'Tokens', - href: '/docs/partners/oauth-server/tokens' + href: '/docs/products/auth/oauth-server/tokens' }, { label: 'Scopes', - href: '/docs/partners/oauth-server/scopes' + href: '/docs/products/auth/oauth-server/scopes' }, { label: 'Device flow', - href: '/docs/partners/oauth-server/device-flow' + href: '/docs/products/auth/oauth-server/device-flow' } ] }, @@ -51,11 +51,11 @@ items: [ { label: 'Sign in with your product', - href: '/docs/partners/oauth-server/sign-in-with-your-product/step-1' + href: '/docs/products/auth/oauth-server/sign-in-with-your-product/step-1' }, { label: 'Custom scopes', - href: '/docs/partners/oauth-server/custom-scopes/step-1' + href: '/docs/products/auth/oauth-server/custom-scopes/step-1' } ] } diff --git a/src/routes/docs/partners/oauth-server/+page.markdoc b/src/routes/docs/products/auth/oauth-server/+page.markdoc similarity index 80% rename from src/routes/docs/partners/oauth-server/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/+page.markdoc index 48bffe9978..9fc060eeba 100644 --- a/src/routes/docs/partners/oauth-server/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/+page.markdoc @@ -26,7 +26,7 @@ Your Appwrite project can act as an **OAuth 2.1 and OpenID Connect provider** (O The OAuth2 server has three moving parts. 1. **The authorization server.** Enabling the server on your project exposes the full set of endpoints: discovery, JWKS, authorize, approve and reject, token, userinfo, introspect, logout, and revoke. More advanced integrations also get device authorization, pushed authorization, and dynamic client registration. -2. **Clients.** Each third-party app registers as a [client](/docs/partners/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). A client declares the redirect URIs it can return to and the post-logout redirect URIs it can end sessions at, chooses whether the device flow is available (off by default), and carries what your consent screen shows for it: a name, logo, tagline, and description, along with directory details like tags, images, and contact and privacy information. +2. **Clients.** Each third-party app registers as a [client](/docs/products/auth/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). A client declares the redirect URIs it can return to and the post-logout redirect URIs it can end sessions at, chooses whether the device flow is available (off by default), and carries what your consent screen shows for it: a name, logo, tagline, and description, along with directory details like tags, images, and contact and privacy information. 3. **The consent screen.** You host a consent screen at an authorization URL you configure. When a user authorizes a client, Appwrite redirects the user to your screen, your screen confirms the grant, and Appwrite issues an authorization code the client exchanges for tokens. The flow follows the OAuth 2.1 authorization code grant, including PKCE for public clients, plus the OpenID Connect layer for identity. Because the server is spec-compliant, integrators can point any OAuth or OIDC client library at your project's discovery URL and it works without Appwrite-specific code. The URL is the same for every project, with only the project ID changing: @@ -53,29 +53,29 @@ The server follows the OAuth 2.1 security practices: the password and implicit a | [RFC 8707](https://datatracker.ietf.org/doc/html/rfc8707) | Resource indicators, so a token can be restricted to one of several APIs behind the same provider. | | [RFC 7517](https://datatracker.ietf.org/doc/html/rfc7517), [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519), [RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068) | JWT access tokens with an audience, and the JWK Set published at a well-known URL. | | [RFC 9126](https://datatracker.ietf.org/doc/html/rfc9126) | Pushed authorization requests, which keep the authorize URL short where it is visible as text, such as in a CLI or an MCP client. | -| [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396) | [Rich authorization requests](/docs/partners/oauth-server/scopes#rich-authorization-requests), structured constraints where a flat scope says too little. | +| [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396) | [Rich authorization requests](/docs/products/auth/oauth-server/scopes#rich-authorization-requests), structured constraints where a flat scope says too little. | | [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) | The identity layer: ID tokens and the userinfo endpoint. | | [OpenID Connect RP-Initiated Logout 1.0](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) | The logout endpoint, with per-client post-logout redirect URIs. | # Concepts {% #concepts %} {% cards %} -{% cards_item href="/docs/partners/oauth-server/quick-start" title="Quick start" %} +{% cards_item href="/docs/products/auth/oauth-server/quick-start" title="Quick start" %} Enable the server, register a client, and run your first sign-in end to end. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/clients" title="Clients" %} +{% cards_item href="/docs/products/auth/oauth-server/clients" title="Clients" %} Register confidential and public OAuth clients and manage their secrets. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/authorization" title="Authorization" %} +{% cards_item href="/docs/products/auth/oauth-server/authorization" title="Authorization" %} The authorization code flow, PKCE, and hosting your own consent screen. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +{% cards_item href="/docs/products/auth/oauth-server/tokens" title="Tokens" %} Access, refresh, and ID tokens, their lifetimes, introspection, and revocation. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +{% cards_item href="/docs/products/auth/oauth-server/scopes" title="Scopes" %} The built-in OpenID scopes and the custom scopes your clients can request. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +{% cards_item href="/docs/products/auth/oauth-server/device-flow" title="Device flow" %} Authorize TVs, CLIs, and other input-constrained devices. {% /cards_item %} {% /cards %} @@ -83,10 +83,10 @@ Authorize TVs, CLIs, and other input-constrained devices. # Guides {% #guides %} {% cards %} -{% cards_item href="/docs/partners/oauth-server/sign-in-with-your-product/step-1" title="Sign in with your product" %} +{% cards_item href="/docs/products/auth/oauth-server/sign-in-with-your-product/step-1" title="Sign in with your product" %} Build a full sign-in with your product experience end to end, from the consent screen to the token exchange. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/custom-scopes/step-1" title="Protect your API with custom scopes" %} +{% cards_item href="/docs/products/auth/oauth-server/custom-scopes/step-1" title="Protect your API with custom scopes" %} Define custom scopes, request them from a client, and enforce them on your own API. {% /cards_item %} {% /cards %} diff --git a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc b/src/routes/docs/products/auth/oauth-server/authorization/+page.markdoc similarity index 99% rename from src/routes/docs/partners/oauth-server/authorization/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/authorization/+page.markdoc index 127f12ba1d..45e5730a6c 100644 --- a/src/routes/docs/partners/oauth-server/authorization/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/authorization/+page.markdoc @@ -2,7 +2,7 @@ layout: article title: Authorization description: How clients request authorization and how to host a consent screen for your Appwrite OAuth2 server. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- Authorization is the step where a user allows a client to act on their behalf. Appwrite's OAuth2 server uses the authorization code flow. Public clients protect the flow with PKCE. Confidential clients authenticate with a client secret and can also use PKCE when your project requires it. @@ -21,7 +21,7 @@ Authorization is the step where a user allows a client to act on their behalf. A 3. Appwrite sends the browser to your **authorization URL**, which hosts your consent screen. The URL contains the grant ID for a signed-in user or the original authorization parameters for a signed-out user. 4. Your consent screen signs the user in when needed, loads the grant, and lets the user approve or reject it. 5. On approval, Appwrite redirects the browser to the client's redirect URI with a short-lived authorization `code`. -6. The client exchanges the code for tokens at the token endpoint. See [Tokens](/docs/partners/oauth-server/tokens). +6. The client exchanges the code for tokens at the token endpoint. See [Tokens](/docs/products/auth/oauth-server/tokens). # PKCE {% #pkce %} @@ -641,7 +641,7 @@ The SDK requests JSON responses so it can behave consistently with other SDK met # Device flow authorization {% #device-flow %} -Device flow is used when the client cannot easily open a browser or accept a callback, such as a TV or command-line tool. The client starts device authorization and shows the user a verification URL and user code. See [Device flow](/docs/partners/oauth-server/device-flow) for the client requests and polling behavior. +Device flow is used when the client cannot easily open a browser or accept a callback, such as a TV or command-line tool. The client starts device authorization and shows the user a verification URL and user code. See [Device flow](/docs/products/auth/oauth-server/device-flow) for the client requests and polling behavior. Your verification page on the user's second device completes the authorization: diff --git a/src/routes/docs/partners/oauth-server/clients/+page.markdoc b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc similarity index 97% rename from src/routes/docs/partners/oauth-server/clients/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/clients/+page.markdoc index a23c43be9d..344f9700de 100644 --- a/src/routes/docs/partners/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc @@ -2,10 +2,10 @@ layout: article title: Clients description: Register confidential and public OAuth clients against your Appwrite project's OAuth2 server and manage them from your own developer platform. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- -A **client** is a third-party app that authenticates users through your project's OAuth2 server. Each client registers the redirect URIs it is allowed to return to and the post-logout redirect URIs it can end sessions at, sets its type, and chooses whether the [device flow](/docs/partners/oauth-server/device-flow) is enabled. Its other attributes serve two surfaces: branding like the name, logo, and tagline can appear on your consent screen, while attributes like tags, images, and the privacy policy URL are for your project's apps marketplace. +A **client** is a third-party app that authenticates users through your project's OAuth2 server. Each client registers the redirect URIs it is allowed to return to and the post-logout redirect URIs it can end sessions at, sets its type, and chooses whether the [device flow](/docs/products/auth/oauth-server/device-flow) is enabled. Its other attributes serve two surfaces: branding like the name, logo, and tagline can appear on your consent screen, while attributes like tags, images, and the privacy policy URL are for your project's apps marketplace. Integrators never visit the Appwrite Console. You are expected to build a developer platform on your own website with the [Client SDKs](/docs/sdks#client)' `apps` service, which covers the full lifecycle: `create`, `update`, `get`, `list`, `delete`, along with `createSecret`, `listSecrets`, `getSecret`, `deleteSecret`, `updateTeam`, and `deleteTokens`. Any signed-in user on your project can call them; no API key is involved. The Console's **Auth > OAuth2 server > Apps** tab is your own administrative view of the same data. @@ -16,7 +16,7 @@ Integrators never visit the Appwrite Console. You are expected to build a develo ![OAuth2 clients list in the Appwrite Console](/images/docs/oauth-server/oauth2-server-apps-list.avif) {% /only_light %} -Server SDKs matter in exactly two places: [introspecting](/docs/partners/oauth-server/tokens#introspect) a public client's tokens, which needs an API key because there is no client secret, and administrative operations like [curating labels](#labels). +Server SDKs matter in exactly two places: [introspecting](/docs/products/auth/oauth-server/tokens#introspect) a public client's tokens, which needs an API key because there is no client secret, and administrative operations like [curating labels](#labels). # Confidential and public clients {% #client-types %} @@ -517,7 +517,7 @@ const portal = await apps.list({ # Get a client {% #get %} -Read a single client with `get`. This backs the app detail page in a developer portal, and a [consent screen](/docs/partners/oauth-server/authorization#consent) uses it to show the requesting app's name and logo. +Read a single client with `get`. This backs the app detail page in a developer portal, and a [consent screen](/docs/products/auth/oauth-server/authorization#consent) uses it to show the requesting app's name and logo. {% multicode %} ```client-web @@ -749,7 +749,7 @@ const app = await apps.update({ ``` {% /multicode %} -The `type` parameter accepts `confidential` (the default) or `public`. Set `deviceFlow` to `true` to let the client use the [device authorization flow](/docs/partners/oauth-server/device-flow). The branding fields (`logoUri`, `tagline`, `privacyPolicyUrl`, `termsUrl`) can appear on the consent screen, and they fill out the app's listing on your marketplace. +The `type` parameter accepts `confidential` (the default) or `public`. Set `deviceFlow` to `true` to let the client use the [device authorization flow](/docs/products/auth/oauth-server/device-flow). The branding fields (`logoUri`, `tagline`, `privacyPolicyUrl`, `termsUrl`) can appear on the consent screen, and they fill out the app's listing on your marketplace. # Transfer to a team {% #transfer %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte b/src/routes/docs/products/auth/oauth-server/custom-scopes/+layout.svelte similarity index 100% rename from src/routes/docs/partners/oauth-server/custom-scopes/+layout.svelte rename to src/routes/docs/products/auth/oauth-server/custom-scopes/+layout.svelte diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts b/src/routes/docs/products/auth/oauth-server/custom-scopes/+layout.ts similarity index 100% rename from src/routes/docs/partners/oauth-server/custom-scopes/+layout.ts rename to src/routes/docs/products/auth/oauth-server/custom-scopes/+layout.ts diff --git a/src/routes/docs/products/auth/oauth-server/custom-scopes/+page.ts b/src/routes/docs/products/auth/oauth-server/custom-scopes/+page.ts new file mode 100644 index 0000000000..cda74d9cd1 --- /dev/null +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/+page.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(303, '/docs/products/auth/oauth-server/custom-scopes/step-1'); +} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-1/+page.markdoc similarity index 77% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-1/+page.markdoc index 578b28a6ea..253a056a9d 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-1/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-1/+page.markdoc @@ -7,10 +7,10 @@ difficulty: intermediate readtime: 20 framework: TanStack Start category: OAuth2 server -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- -The [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1) guide gave Vantage the user's identity. Identity alone only answers who the user is. To let an integration read the user's data from your product, you need [custom scopes](/docs/partners/oauth-server/scopes): permissions you define, users approve, and your API enforces. +The [Sign in with your product](/docs/products/auth/oauth-server/sign-in-with-your-product/step-1) guide gave Vantage the user's identity. Identity alone only answers who the user is. To let an integration read the user's data from your product, you need [custom scopes](/docs/products/auth/oauth-server/scopes): permissions you define, users approve, and your API enforces. This tutorial continues with the same two apps. TaskFlow gains a task API that checks scopes, and Vantage asks for permission to read the user's tasks and shows them on its dashboard. @@ -35,7 +35,7 @@ Everything up to step 3 is the authorization code flow from the first guide, wit # Prerequisites {% #prerequisites %} -- The two apps from [Sign in with your product](/docs/partners/oauth-server/sign-in-with-your-product/step-1), running against a project with the OAuth2 server enabled and Vantage registered as a confidential client. +- The two apps from [Sign in with your product](/docs/products/auth/oauth-server/sign-in-with-your-product/step-1), running against a project with the OAuth2 server enabled and Vantage registered as a confidential client. - [Node.js](https://nodejs.org/) 20 or newer and `pnpm`. {% info title="Get the finished code" %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-2/+page.markdoc similarity index 91% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-2/+page.markdoc index 5a7c2c7891..26aa8e3e1e 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-2/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-2/+page.markdoc @@ -27,6 +27,6 @@ The `openid`, `profile`, `email`, and `phone` scopes stay locked in place. They The `verb:resource` shape is a convention, not a requirement. Any string up to 128 characters works. Splitting read and write per resource keeps grants small: an integration that only shows data never has to ask for permission to change it, which is an easier ask on the consent screen. -Both scopes are now published in your project's [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `scopes_supported`, so integrators can see them without asking you. +Both scopes are now published in your project's [discovery document](/docs/products/auth/oauth-server/quick-start#discovery) under `scopes_supported`, so integrators can see them without asking you. Continue to request the new scopes from Vantage. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-3/+page.markdoc similarity index 96% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-3/+page.markdoc index 43cb397a4d..3df32151cd 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-3/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-3/+page.markdoc @@ -5,7 +5,7 @@ description: Ask for the task scopes during authorization and let the user grant step: 3 --- -A client receives a scope by asking for it during [authorization](/docs/partners/oauth-server/authorization). Vantage requests both task scopes, and TaskFlow's consent screen lets the user decide which of them to grant. +A client receives a scope by asking for it during [authorization](/docs/products/auth/oauth-server/authorization). Vantage requests both task scopes, and TaskFlow's consent screen lets the user decide which of them to grant. # Add the scopes to the request {% #request %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-4/+page.markdoc similarity index 83% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-4/+page.markdoc index ac6e1e1189..aacb16bd74 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-4/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-4/+page.markdoc @@ -60,7 +60,7 @@ export function hasScope(token: AccessToken, scope: string): boolean { `jwtVerify` checks the signature against the published keys and rejects expired tokens, so a forged or stale token never reaches your handlers. It also pins the algorithm to the RS256 keys in the JWKS, so `alg: none` and HMAC confusion attacks fail here too. -The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth2 server signs [ID tokens](/docs/partners/oauth-server/tokens) with the same key as access tokens, and an ID token has no `scope` claim. Without the type check, a client could present its ID token to your API; requiring `at+jwt` (the [access token type](/docs/partners/oauth-server/tokens)) rejects it before it reaches a handler. An ID token is meant for the client that received it, never as a credential for your API. +The `{ typ: 'at+jwt' }` option matters more than it looks. Your OAuth2 server signs [ID tokens](/docs/products/auth/oauth-server/tokens) with the same key as access tokens, and an ID token has no `scope` claim. Without the type check, a client could present its ID token to your API; requiring `at+jwt` (the [access token type](/docs/products/auth/oauth-server/tokens)) rejects it before it reaches a handler. An ID token is meant for the client that received it, never as a credential for your API. Two claims in the verified payload matter for the API: @@ -68,7 +68,7 @@ Two claims in the verified payload matter for the API: - `sub` is the ID of the user who approved the grant. The API uses it to load that user's tasks, so a token can never read anyone else's data. {% info title="Build the JWKS URL from your own configuration" %} -The guard builds the JWKS URL from the `OAUTH_ISSUER` value the provider already has, the same base it uses for every other OAuth2 server call. Since [tokens](/docs/partners/oauth-server/tokens) are standard JWTs, any JWT library with JWKS support in any language can do this job. The API route just happens to live next to the consent screen here. +The guard builds the JWKS URL from the `OAUTH_ISSUER` value the provider already has, the same base it uses for every other OAuth2 server call. Since [tokens](/docs/products/auth/oauth-server/tokens) are standard JWTs, any JWT library with JWKS support in any language can do this job. The API route just happens to live next to the consent screen here. {% /info %} Continue to put the guard in front of an API route. diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-5/+page.markdoc similarity index 100% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-5/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-5/+page.markdoc diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-6/+page.markdoc similarity index 96% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-6/+page.markdoc index 72ff42e695..8239fc3da1 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-6/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-6/+page.markdoc @@ -5,7 +5,7 @@ description: Read tasks with the granted access token and add a task composer th step: 6 --- -Vantage already holds the access token in its session after the [token exchange](/docs/partners/oauth-server/sign-in-with-your-product/step-6). Reading tasks is one authenticated fetch away, and a small composer will exercise the write path. +Vantage already holds the access token in its session after the [token exchange](/docs/products/auth/oauth-server/sign-in-with-your-product/step-6). Reading tasks is one authenticated fetch away, and a small composer will exercise the write path. # Point Vantage at the API {% #env %} diff --git a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-7/+page.markdoc similarity index 92% rename from src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/custom-scopes/step-7/+page.markdoc index 1f90027370..b244345d4b 100644 --- a/src/routes/docs/partners/oauth-server/custom-scopes/step-7/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/custom-scopes/step-7/+page.markdoc @@ -50,13 +50,13 @@ The full source for both apps is on GitHub at [appwrite-community/oauth-guide-cu # Next steps {% #next-steps %} {% cards %} -{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +{% cards_item href="/docs/products/auth/oauth-server/tokens" title="Tokens" %} Refresh access tokens, and revoke them on sign-out. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +{% cards_item href="/docs/products/auth/oauth-server/scopes" title="Scopes" %} The scope model in full, including limits and the built-in scopes. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +{% cards_item href="/docs/products/auth/oauth-server/device-flow" title="Device flow" %} Support TVs, CLIs, and other input-constrained devices. {% /cards_item %} {% /cards %} diff --git a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc b/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc similarity index 95% rename from src/routes/docs/partners/oauth-server/device-flow/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc index 0c5e4ea45b..1883634532 100644 --- a/src/routes/docs/partners/oauth-server/device-flow/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc @@ -2,7 +2,7 @@ layout: article title: Device flow description: Authorize TVs, CLIs, and other input-constrained devices against your Appwrite OAuth2 server with the device authorization grant. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- The device authorization grant (RFC 8628) lets a client request access even when it cannot open a browser or accept a callback. A TV app, command-line tool, or hardware device shows the user a code, and the user completes authorization on a phone or computer. @@ -48,7 +48,7 @@ Use `project.updateOAuth2Server` from a Server SDK to configure the verification ## Enable device flow for the client {% #enable-client %} -The client must also have **Device flow** enabled. Turn it on when you create or update the client in the Console, or set `deviceFlow: true` with a Server SDK. Devices that cannot protect a client secret should be registered as public clients. See [Clients](/docs/partners/oauth-server/clients#register) for client registration. +The client must also have **Device flow** enabled. Turn it on when you create or update the client in the Console, or set `deviceFlow: true` with a Server SDK. Devices that cannot protect a client secret should be registered as public clients. See [Clients](/docs/products/auth/oauth-server/clients#register) for client registration. # Integrate the device client {% #integrate-device %} @@ -85,7 +85,7 @@ The request can also include: - `resource` for one resource indicator URI or an array of URIs. - `audience` as a compatibility alias for one resource indicator. -See [Scopes](/docs/partners/oauth-server/scopes#rich-authorization-requests) for authorization details and resource restrictions. +See [Scopes](/docs/products/auth/oauth-server/scopes#rich-authorization-requests) for authorization details and resource restrictions. Appwrite returns the codes, expiration, and polling interval: @@ -241,7 +241,7 @@ console.log(result); ``` {% /multicode %} -Use the returned grant to show the client, requested scopes, and authorization details. Then let the user approve or reject it with the same [consent flow](/docs/partners/oauth-server/authorization#consent) used for browser authorization. +Use the returned grant to show the client, requested scopes, and authorization details. Then let the user approve or reject it with the same [consent flow](/docs/products/auth/oauth-server/authorization#consent) used for browser authorization. # Finish on the original device {% #finish %} @@ -259,4 +259,4 @@ The original device keeps polling while the user completes the verification page } ``` -Store the newest refresh token securely and use the token response's granted scopes to determine which features are available. See [Tokens](/docs/partners/oauth-server/tokens) for validation, refresh, and revocation. +Store the newest refresh token securely and use the token response's granted scopes to determine which features are available. See [Tokens](/docs/products/auth/oauth-server/tokens) for validation, refresh, and revocation. diff --git a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc similarity index 97% rename from src/routes/docs/partners/oauth-server/quick-start/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc index 91c48791bb..76d28d3864 100644 --- a/src/routes/docs/partners/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc @@ -2,12 +2,12 @@ layout: article title: OAuth2 server quick start description: Enable Appwrite's OAuth2 server, register a client, and run your first authorization code sign-in end to end. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- This guide turns your project into an OAuth2 provider and runs one sign-in through it. By the end you will have an enabled server, a registered client, and an access token issued by your project. -The examples follow two apps, the same pair the [tutorials](/docs/partners/oauth-server/sign-in-with-your-product/step-1) build out in full: +The examples follow two apps, the same pair the [tutorials](/docs/products/auth/oauth-server/sign-in-with-your-product/step-1) build out in full: - **TaskFlow** (`http://taskflow.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. - **Vantage** (`http://vantage.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. @@ -672,7 +672,7 @@ const app = await apps.update({ ``` {% /multicode %} -The same `apps` service is available in the [Server SDKs](/docs/sdks#server) with an API key. See [Clients](/docs/partners/oauth-server/clients) for the full set of options. +The same `apps` service is available in the [Server SDKs](/docs/sdks#server) with an API key. See [Clients](/docs/products/auth/oauth-server/clients) for the full set of options. # Run the authorization code flow {% #flow %} @@ -732,7 +732,7 @@ After Vantage opens the authorization endpoint: - **Appwrite redirects to TaskFlow.** The **authorization endpoint** is the Appwrite Cloud URL Vantage opens. The **authorization URL** is TaskFlow's consent page, where Appwrite sends the browser with a `grant_id`. -- **TaskFlow presents the request.** A complete consent screen uses the grant ID to show that Vantage is asking for the user's profile and email, then lets the user approve or cancel. The [Authorization](/docs/partners/oauth-server/authorization#consent) guide shows how to build this screen. +- **TaskFlow presents the request.** A complete consent screen uses the grant ID to show that Vantage is asking for the user's profile and email, then lets the user approve or cancel. The [Authorization](/docs/products/auth/oauth-server/authorization#consent) guide shows how to build this screen. - **Copy the grant ID.** This quick start does not build TaskFlow's consent screen, so the browser lands on `http://taskflow.localhost/consent` and finds nothing there. Copy the `grant_id` from the address bar to continue manually. @@ -830,18 +830,18 @@ Authorization: Bearer <ACCESS_TOKEN> } ``` -See [Tokens](/docs/partners/oauth-server/tokens) for token structure, validation, refresh, and revocation. +See [Tokens](/docs/products/auth/oauth-server/tokens) for token structure, validation, refresh, and revocation. # Next steps {% #next-steps %} {% cards %} -{% cards_item href="/docs/partners/oauth-server/authorization" title="Authorization" %} +{% cards_item href="/docs/products/auth/oauth-server/authorization" title="Authorization" %} Host your consent screen and drive the authorize, grant, and approve steps. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/clients" title="Clients" %} +{% cards_item href="/docs/products/auth/oauth-server/clients" title="Clients" %} Confidential vs public clients, secrets, and rotation. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +{% cards_item href="/docs/products/auth/oauth-server/tokens" title="Tokens" %} Token lifetimes, refresh with rotation, introspection, and revocation. {% /cards_item %} {% /cards %} diff --git a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc b/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc similarity index 92% rename from src/routes/docs/partners/oauth-server/scopes/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc index effca6f659..08c7323fa7 100644 --- a/src/routes/docs/partners/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc @@ -2,7 +2,7 @@ layout: article title: Scopes description: The built-in OpenID Connect scopes and the custom scopes clients can request from your Appwrite OAuth2 server. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- Scopes are the permissions a client asks for during authorization. The user sees the requested scopes on the consent screen and approves or declines them. The access token the server issues carries the scopes that were granted. @@ -35,7 +35,7 @@ Add custom scopes in the **Scopes** field on the OAuth2 server settings, or with A project can define up to 100 scopes, each up to 128 characters. A client can only request scopes you have defined; requesting an unknown scope fails the authorization request. -Custom scopes are labels the OAuth2 server carries through the flow and stamps onto the access token. Enforcing what each scope allows is your resource server's job: read the `scope` claim from the access token (or from an [introspection](/docs/partners/oauth-server/tokens#introspect) response) and allow or deny the request accordingly. +Custom scopes are labels the OAuth2 server carries through the flow and stamps onto the access token. Enforcing what each scope allows is your resource server's job: read the `scope` claim from the access token (or from an [introspection](/docs/products/auth/oauth-server/tokens#introspect) response) and allow or deny the request accordingly. # Requesting scopes {% #requesting %} @@ -46,7 +46,7 @@ Custom scopes are labels the OAuth2 server carries through the flow and stamps o ![A scope travels from the client's request through consent and the access token to the resource server's check](/images/docs/oauth-server/diagram-scopes.avif) {% /only_light %} -A client asks for scopes in the space-separated `scope` parameter when it starts authorization, for example `openid profile games.read`. See [Authorization](/docs/partners/oauth-server/authorization#authorize) for the authorize request and SDK examples. +A client asks for scopes in the space-separated `scope` parameter when it starts authorization, for example `openid profile games.read`. See [Authorization](/docs/products/auth/oauth-server/authorization#authorize) for the authorize request and SDK examples. Your consent screen shows the requested scopes and can approve a subset. The access token and token response contain the scopes that were granted, so the client can detect when it received less access than it requested. Clients should request only the permissions the integration needs. @@ -317,7 +317,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { `updateOAuth2Server` sets the full OAuth2 server configuration in one call. Include your existing scopes and settings when adding types, or they reset to their defaults. {% /info %} -Like scopes, a project can define up to 100 types, each up to 128 characters. The accepted types are published in the [discovery document](/docs/partners/oauth-server/quick-start#discovery) under `authorization_details_types_supported`. +Like scopes, a project can define up to 100 types, each up to 128 characters. The accepted types are published in the [discovery document](/docs/products/auth/oauth-server/quick-start#discovery) under `authorization_details_types_supported`. ## Request authorization details {% #request-authorization-details %} @@ -341,7 +341,7 @@ curl --request POST \ In a browser-based consent screen, the project session cookie is sent automatically, so the `Cookie` header is not needed. The JSON response contains the client's redirect URL. Send the browser to that URL to continue the authorization flow. -A client that already knows the relevant resource IDs may send the same structure on its [authorize request](/docs/partners/oauth-server/authorization#authorize). Treat that as an optional preselection. The authorization flow should also work when the client omits it, and the consent screen should let the user review or narrow the final resource selection. +A client that already knows the relevant resource IDs may send the same structure on its [authorize request](/docs/products/auth/oauth-server/authorization#authorize). Treat that as an optional preselection. The authorization flow should also work when the client omits it, and the consent screen should let the user review or narrow the final resource selection. For the `project` type, Appwrite accepts only `type` and a non-empty `identifiers` array. Each identifier must be a project ID, or `*` for every project. Other values fail validation before the grant is approved. @@ -354,7 +354,7 @@ Scopes and authorization details answer different questions throughout the flow: 3. The consent screen approves the grant with the selected `authorization_details`. 4. Appwrite returns the granted details in the token response, includes them in the access token, and returns them from token introspection. -Your resource server must enforce both parts. After [introspecting the access token](/docs/partners/oauth-server/tokens#introspect), check that `active` is `true`, require the scope needed by the API operation, and then require an authorization detail that covers the requested resource. For an endpoint that reads tasks from one project, require `tasks.read` and a `project` entry whose `identifiers` contains that project ID or `*`. +Your resource server must enforce both parts. After [introspecting the access token](/docs/products/auth/oauth-server/tokens#introspect), check that `active` is `true`, require the scope needed by the API operation, and then require an authorization detail that covers the requested resource. For an endpoint that reads tasks from one project, require `tasks.read` and a `project` entry whose `identifiers` contains that project ID or `*`. Apply these checks conservatively: diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+layout.svelte similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.svelte rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+layout.svelte diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+layout.ts similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/+layout.ts rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+layout.ts diff --git a/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+page.ts b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+page.ts new file mode 100644 index 0000000000..b99655b83d --- /dev/null +++ b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/+page.ts @@ -0,0 +1,5 @@ +import { redirect } from '@sveltejs/kit'; + +export function load() { + redirect(303, '/docs/products/auth/oauth-server/sign-in-with-your-product/step-1'); +} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc similarity index 88% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc index 527c77a5f1..ad75a5973a 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-1/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc @@ -7,10 +7,10 @@ difficulty: intermediate readtime: 25 framework: TanStack Start category: OAuth2 server -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- -Once your project's [OAuth2 server](/docs/partners/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. +Once your project's [OAuth2 server](/docs/products/auth/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. # What you will build {% #what-you-will-build %} diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-2/+page.markdoc similarity index 95% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-2/+page.markdoc index 06ac4fa880..c096f429b1 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-2/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-2/+page.markdoc @@ -20,7 +20,7 @@ In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **E Set the **Authorization URL** to where TaskFlow will host its consent screen. In this tutorial that is `http://localhost:4000/oauth/consent`. This is where the OAuth2 server sends users to sign in and approve. -Leave the scopes at their defaults. `openid`, `profile`, and `email` are always included, which is all Vantage needs. See [Scopes](/docs/partners/oauth-server/scopes) to add your own later. +Leave the scopes at their defaults. `openid`, `profile`, and `email` are always included, which is all Vantage needs. See [Scopes](/docs/products/auth/oauth-server/scopes) to add your own later. # Register the client {% #register-client %} @@ -50,6 +50,6 @@ When you create the client, copy the **client secret**. It is shown once. You wi You now have everything the apps need to talk to the OAuth2 server: the **client ID**, the **client secret**, and your **project ID**. Keep them handy for the next step. {% /info %} -For the full set of client options and the SDK equivalents, see [Clients](/docs/partners/oauth-server/clients). +For the full set of client options and the SDK equivalents, see [Clients](/docs/products/auth/oauth-server/clients). Continue to scaffold the two apps. diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-3/+page.markdoc similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-3/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-3/+page.markdoc diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-4/+page.markdoc similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-4/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-4/+page.markdoc diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-5/+page.markdoc similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-5/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-5/+page.markdoc diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-6/+page.markdoc similarity index 100% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-6/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-6/+page.markdoc diff --git a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-7/+page.markdoc similarity index 85% rename from src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-7/+page.markdoc index be0e5d5ec7..c37f57e71d 100644 --- a/src/routes/docs/partners/oauth-server/sign-in-with-your-product/step-7/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-7/+page.markdoc @@ -38,20 +38,20 @@ That round trip is a complete OAuth 2.1 authorization code flow against your pro - **TaskFlow** enabled the OAuth2 server, registered Vantage as a confidential client, and hosted a consent screen that authenticates its users and approves grants. - **Vantage** redirected to the authorize endpoint, exchanged the returned code for tokens on its server, and read the user's profile from userinfo. The client secret never left its server. -Because the flow is standards-based, a real integrator does not have to use Appwrite or TanStack Start. Any OAuth or OpenID Connect client library pointed at your project's [discovery URL](/docs/partners/oauth-server/quick-start#discovery) works the same way. +Because the flow is standards-based, a real integrator does not have to use Appwrite or TanStack Start. Any OAuth or OpenID Connect client library pointed at your project's [discovery URL](/docs/products/auth/oauth-server/quick-start#discovery) works the same way. The full source for both apps is on GitHub at [appwrite-community/oauth-guide-taskflow](https://github.com/appwrite-community/oauth-guide-taskflow). # Next steps {% #next-steps %} {% cards %} -{% cards_item href="/docs/partners/oauth-server/tokens" title="Tokens" %} +{% cards_item href="/docs/products/auth/oauth-server/tokens" title="Tokens" %} Refresh access tokens, and revoke them on sign-out. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/scopes" title="Scopes" %} +{% cards_item href="/docs/products/auth/oauth-server/scopes" title="Scopes" %} Add custom scopes to represent permissions in your product. {% /cards_item %} -{% cards_item href="/docs/partners/oauth-server/device-flow" title="Device flow" %} +{% cards_item href="/docs/products/auth/oauth-server/device-flow" title="Device flow" %} Support TVs, CLIs, and other input-constrained devices. {% /cards_item %} {% /cards %} diff --git a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc b/src/routes/docs/products/auth/oauth-server/tokens/+page.markdoc similarity index 99% rename from src/routes/docs/partners/oauth-server/tokens/+page.markdoc rename to src/routes/docs/products/auth/oauth-server/tokens/+page.markdoc index d20f16d6fa..872c13ccd4 100644 --- a/src/routes/docs/partners/oauth-server/tokens/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/tokens/+page.markdoc @@ -2,7 +2,7 @@ layout: article title: Tokens description: Access, refresh, and ID tokens issued by Appwrite's OAuth2 server, their lifetimes, and how to validate, refresh, introspect, revoke, and end sessions. -back: /docs/partners/oauth-server +back: /docs/products/auth/oauth-server --- When a client redeems an authorization code, the OAuth2 server issues an access token and refresh token. It also issues an ID token when the `openid` scope was granted. This page covers what each token does and how clients and resource servers validate, refresh, introspect, revoke, and end sessions. From b2a6e1cb18b41b733dbcd9309ffe7d974df2bc68 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 16 Jul 2026 12:40:23 +0530 Subject: [PATCH 23/38] docs(oauth-server): address diagram and standards review feedback Adds RFC 9207 to the standards table (verified in cloud main), applies the reviewed PAR wording, removes the settings screenshot from the overview, reworks the clients diagram to contrast the confidential and public token exchange flows, and redraws the authorization and device-flow diagrams as flowcharts with the second device called out. --- .optimize-cache.json | 12 ++++++------ .../products/auth/oauth-server/+page.markdoc | 10 ++-------- .../auth/oauth-server/clients/+page.markdoc | 4 ++-- .../oauth-server/device-flow/+page.markdoc | 4 ++-- .../dark/diagram-authorization.avif | Bin 28852 -> 19300 bytes .../dark/diagram-authorization.png | Bin 0 -> 101140 bytes .../oauth-server/dark/diagram-clients.avif | Bin 13076 -> 18800 bytes .../dark/diagram-device-flow.avif | Bin 25062 -> 24115 bytes .../oauth-server/diagram-authorization.avif | Bin 26408 -> 20979 bytes .../oauth-server/diagram-authorization.png | Bin 0 -> 92712 bytes .../docs/oauth-server/diagram-clients.avif | Bin 12975 -> 20015 bytes .../oauth-server/diagram-device-flow.avif | Bin 22997 -> 25218 bytes 12 files changed, 12 insertions(+), 18 deletions(-) create mode 100644 static/images/docs/oauth-server/dark/diagram-authorization.png create mode 100644 static/images/docs/oauth-server/diagram-authorization.png diff --git a/.optimize-cache.json b/.optimize-cache.json index 1406333235..0954678bbe 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1587,9 +1587,9 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", - "static/images/docs/oauth-server/dark/diagram-authorization.png": "5f82a31fb0ec0b753b7b0a2dc6b4f044609847c870205cc32e9ee87767db2d8f", - "static/images/docs/oauth-server/dark/diagram-clients.png": "00de79e7ef87e325309ae33c34a21395b4f3906bfa0809698f63214e3b9457ef", - "static/images/docs/oauth-server/dark/diagram-device-flow.png": "e555617a52b852a33df22d2c991ee8948e0e64599775efea533327cf79d8e37c", + "static/images/docs/oauth-server/dark/diagram-authorization.png": "c45bea5c61a8c3db746e6d3ddd25e79fdc0a5d964dac34ddd17938630eda80f9", + "static/images/docs/oauth-server/dark/diagram-clients.png": "449f59c258d8ebcb39fcbe4bd16a31c57965a94b15abdcc11650a79f850f2438", + "static/images/docs/oauth-server/dark/diagram-device-flow.png": "8627fa4798301bd9d3e989c4fe5d754060e4c9473a30b55911a810597655733c", "static/images/docs/oauth-server/dark/diagram-overview.png": "cf64794cfb2d0204d4cff2f0061923a73f5d77a8333bfba6ddb693f28a80671d", "static/images/docs/oauth-server/dark/diagram-scopes.png": "9e1aeae9645bb68b581881596393db446402f76ecb4740dd05aca69536324876", "static/images/docs/oauth-server/dark/diagram-tokens.png": "060e52ff548a7a337af7a62ac89f0f832034255cf4d3b3652d15384b989622fd", @@ -1602,9 +1602,9 @@ "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", "static/images/docs/oauth-server/dark/scopes-defined.png": "4723658a478b30e4f97372661d4ed7a9ba14d1cc7f0b56d4f5bf6148b5326cf1", - "static/images/docs/oauth-server/diagram-authorization.png": "84371bcc0218c49124772bb1efffd98880195f580dd53350c57c93ac7a0cea94", - "static/images/docs/oauth-server/diagram-clients.png": "d288a77ddede75c405419df9e3477d471ee7cb57ed63efe6c005cdf2b35098ac", - "static/images/docs/oauth-server/diagram-device-flow.png": "2e887ebd32a76f9ba1aae2f377f7e5c74f4456f36c91ee767aeb4a3dc307a7ee", + "static/images/docs/oauth-server/diagram-authorization.png": "cf0122349ca24f1cecea2f4cd1b71ab6a447fed317bf1c2d724fdb79d0dfd140", + "static/images/docs/oauth-server/diagram-clients.png": "b5b50d547a151976275b12fe7077cbc1a22fc209f2b3fbd1832e96f0a95d37b5", + "static/images/docs/oauth-server/diagram-device-flow.png": "a10392f90870623f84667ba8d0d3d753f4ad22d82b72a0b47cb3207f803f2fbd", "static/images/docs/oauth-server/diagram-overview.png": "71488c2c882c2befa2384cf20aaff7f681bf55b52f3247a4b0f3e73b3684f412", "static/images/docs/oauth-server/diagram-scopes.png": "6bc6b498f71b1ec5ac1fdac3cddedca3749b2e50c8452e587235b366b577638c", "static/images/docs/oauth-server/diagram-tokens.png": "62de8f079c3b585c312c13c830fc53d957e8fc8e6432eaa0d33c5a1942e331bc", diff --git a/src/routes/docs/products/auth/oauth-server/+page.markdoc b/src/routes/docs/products/auth/oauth-server/+page.markdoc index 9fc060eeba..d6422c6e57 100644 --- a/src/routes/docs/products/auth/oauth-server/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/+page.markdoc @@ -7,13 +7,6 @@ back: /docs Your Appwrite project can act as an **OAuth 2.1 and OpenID Connect provider** (OIDC provider). When you enable the OAuth2 server, third-party apps register as clients, send your users to a consent screen you host, and receive tokens your project issues. Your project becomes an identity provider that any standards-compliant OAuth or OIDC library can integrate with: the same way apps offer "Sign in with Google" or "Sign in with GitHub", integrators can offer **Sign in with your product**. -{% only_dark %} -![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-settings.avif) -{% /only_dark %} -{% only_light %} -![OAuth2 server settings in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) -{% /only_light %} - # How it works {% #how-it-works %} {% only_dark %} @@ -52,7 +45,8 @@ The server follows the OAuth 2.1 security practices: the password and implicit a | [RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628) | Device authorization grant, to sign in on input-constrained devices like TVs and remote servers. | | [RFC 8707](https://datatracker.ietf.org/doc/html/rfc8707) | Resource indicators, so a token can be restricted to one of several APIs behind the same provider. | | [RFC 7517](https://datatracker.ietf.org/doc/html/rfc7517), [RFC 7519](https://datatracker.ietf.org/doc/html/rfc7519), [RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068) | JWT access tokens with an audience, and the JWK Set published at a well-known URL. | -| [RFC 9126](https://datatracker.ietf.org/doc/html/rfc9126) | Pushed authorization requests, which keep the authorize URL short where it is visible as text, such as in a CLI or an MCP client. | +| [RFC 9126](https://datatracker.ietf.org/doc/html/rfc9126) | Pushed authorization requests keep authorization URLs short and protect request parameters from exposure or tampering. | +| [RFC 9207](https://datatracker.ietf.org/doc/html/rfc9207) | Authorization server issuer identification: authorization responses carry an `iss` parameter, so clients can detect mix-up attacks. | | [RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396) | [Rich authorization requests](/docs/products/auth/oauth-server/scopes#rich-authorization-requests), structured constraints where a flat scope says too little. | | [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html) | The identity layer: ID tokens and the userinfo endpoint. | | [OpenID Connect RP-Initiated Logout 1.0](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) | The logout endpoint, with per-client post-logout redirect URIs. | diff --git a/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc index 344f9700de..8df06a2fbb 100644 --- a/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc @@ -21,10 +21,10 @@ Server SDKs matter in exactly two places: [introspecting](/docs/products/auth/oa # Confidential and public clients {% #client-types %} {% only_dark %} -![Confidential clients hold a secret on a server while public clients rely on PKCE](/images/docs/oauth-server/dark/diagram-clients.avif) +![Confidential clients exchange the code from their backend with a client secret, while public clients exchange it from the device with PKCE](/images/docs/oauth-server/dark/diagram-clients.avif) {% /only_dark %} {% only_light %} -![Confidential clients hold a secret on a server while public clients rely on PKCE](/images/docs/oauth-server/diagram-clients.avif) +![Confidential clients exchange the code from their backend with a client secret, while public clients exchange it from the device with PKCE](/images/docs/oauth-server/diagram-clients.avif) {% /only_light %} Every client is one of two types, and the difference comes down to a single question: can the app keep a secret? diff --git a/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc b/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc index 1883634532..d9f8f71d07 100644 --- a/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/device-flow/+page.markdoc @@ -15,10 +15,10 @@ This flow involves two applications: # How it works {% #how-it-works %} {% only_dark %} -![The device flow between the device, the OAuth2 server, and the user's phone](/images/docs/oauth-server/dark/diagram-device-flow.avif) +![The device flow between the device, the OAuth2 server, and a second device like the user's phone or laptop](/images/docs/oauth-server/dark/diagram-device-flow.avif) {% /only_dark %} {% only_light %} -![The device flow between the device, the OAuth2 server, and the user's phone](/images/docs/oauth-server/diagram-device-flow.avif) +![The device flow between the device, the OAuth2 server, and a second device like the user's phone or laptop](/images/docs/oauth-server/diagram-device-flow.avif) {% /only_light %} 1. The device client starts a device authorization. Appwrite returns a device code, a shorter user code, and the URL of your verification page. diff --git a/static/images/docs/oauth-server/dark/diagram-authorization.avif b/static/images/docs/oauth-server/dark/diagram-authorization.avif index cd9c4fce615df7120ac784be7fab5cf73dfac2d3..c9feb8022510dd82fd9e6bba08c759f74eb5284f 100644 GIT binary patch delta 19221 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 literal 28852 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 diff --git a/static/images/docs/oauth-server/dark/diagram-authorization.png b/static/images/docs/oauth-server/dark/diagram-authorization.png new file mode 100644 index 0000000000000000000000000000000000000000..97496408331238c998b8ef46574e5094f679478b GIT binary patch literal 101140 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 EpM0h`KL7v# literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/dark/diagram-clients.avif b/static/images/docs/oauth-server/dark/diagram-clients.avif index 565a9a2ae3d5088eda391aea7b6227399e10d356..bc025635a96644e617611fbebb3e96d61a8758a2 100644 GIT binary patch delta 18716 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 delta 12947 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 J1)H@FGJs6*6C3~l diff --git a/static/images/docs/oauth-server/dark/diagram-device-flow.avif b/static/images/docs/oauth-server/dark/diagram-device-flow.avif index 4b562e0b5d2eaca927bc8697205fc457fefe9b9e..cffb0b4d381173a45863e0ae29000cf411159ce9 100644 GIT binary patch delta 24073 zcmV(_K-9nH!vV9r0g!hBT{)3?dw*R)ZDe6|5&#McIcjJ9p~3<h4Inb7x&a*&umHml z0YCt@2><|n$vR<Ey0Q8*K{qDvc<Q$1{CNbL<#W@@+rz<G@Jx*iQA(?)6D?OF+qdhD zGPq-H>^*~%eEW<A|Ar}{L&H2Qj$?1EHpijSP-!GzVr^f6cvFRXR5D8lZGVNVyPvpG z);<VJU<u#Sf};luJxX%TiyPva0)#{PV=kSjia8LT`Ndl>)umJ0+Y0c>R^^NtlA|hQ zlr*^V=%(7gIu>U;WBPYsMX38KEET!VvJzb8<Kb7%vrRY+*i{GjDWN4q1>C8RjIGp! z@~Bgl$@bH?aMOi^7O9x^Dt{%q5GF{Vaas<c5JyhFuM);K+vW9~9FaJl<FJ%mg9)S7 zqz@kd0;tgn<i8#h12J+!xhNN(N%a`gz?+uUu72fgC_L!FCV(|!;gzkrOKx&s<(OL8 z-ocm#CjJZ^gVXuIUnf>X&W}q3ho&RXiD^&^MjA^Kcd~Hv^j1!f0)H!%8%Mw!V9eiX zNTLWSk;UZzAf;ae25`TgXHD)8yr9#FsTo_j%R7_<Tc-cP(QWHzECE$J$@5=?2LF&# zK|GX?RbgFOJ)2N*vB(<2zWu=YF|RD?<Qw85lIBllJ58u7$ui;L`2}sF;V0f_Z?y#c z5_A5*RLDk(_NZ^8Jb#3_LE@N=Xd$5>?OCp-k2)n^=01vcImaB*G&sFOsi}{+;S3DG zSaJN3dk|^V=~HCW#{`!N4;Rya_56oZfIMBb%_X@)<EO9Uc)QU|a~%)l!Fc=83uWJP zQ6$l_O_O?^)BfiDE$=v0cwbDZNZzO{A$(*EhO9%}C5IsjGJkg1v5WmA+fOUvNCkEI z?WF!vuO9$Kf9505_|%r4o2r0%^XiMRuY?*Z8vwpo+|FJBJsBSBE|`G~bm9AjS?!|9 z9!sadz3kL9LJ@!+$?S#!J1()$cLczx$3poxo36wldtWlhXj7vpcm{hmSB`P2@xu`m zH<aJoY~Q44rhi>x{iiAjV$u_2)VL<lsMiz0i_Jy0f5cNmiuArfy1b%jxAwZDGsBDM z0xNxIB6o-G_LJ3-of0(TJ1N$8zqD;eFW(+zOqD4*-mgM@7_<NLvTf-Wex$`@?Gwh~ zRUSFRHcRQCE5HhH`*w*eCKF1b>Sxm?zEilIGw)Ev^?z+YjC0S_kw?WqvX|57oBLpS z<aP2p*EGJ-DMbxZt;GnwTn<>4Y9`@G+i6EAAh9<ouxj#Mgu;^SK>3$|Rtt;1_V#b| zB)>F>P<n$f;d)nV*TM`02PQt(Tde~g*A)m>^T{XcoG23>f!U_19NYY8m(+-iPp_)= z&5R>JgMW2dH%PE2D~4F6fDtm)COYWd%%Xc%ECX-Xg)Bw+s_Yk*8mZ+Z7>sn?qMwa7 z6eqS(giT`&JQ;ruogzqHl1}<6v8H8%)ZOz+q`5*SSsKelcg8)81#-H?FU~182^KSY zJrMtRTwTy-<uU{Wz>Af9)BM3{8FYUvc06|>#(yG8v8+XE6nvP30&L}fdK$@RCwo@{ z!s`YO;r4Hcu^^#C@ok(jF|B`NPbQ1$DAwaN5+$<MyTE2Y1X2^l)MfdDweO+(g?66) zV_Y{6LmQNfytsNAzq6%b@_QT|f7!z~(I~*lg4X6!gz=B=`uCdJbvxYIi)kEq|CIL1 z%zs2(+LszH6x3o&%zCg?_fE#NQcTS_J7Z^WgwJ~Z3u%5e3o>(`+B}J4H~T8E?_~jq z5d9bF2dh-3egIC)7q$EW%@5Nw`>8z44!o5h=0kQcB5wgnl;ksU6u%kHB37}G@9;&5 zu}`b3@Cm&Co_knY!uk2!D~(hfIsZF*Eq|x}k=)zgNyx(j4J6VvsTg+{>jsbD9yV;v zk#`^-U4qUU+GxjRZ(C_2H*{*!#+Jqvm@I8zo^yQzdSmExf=Gd!N-$;;JEk-cJ_M6$ z<4{eUH4$5&dCluXsviheqO1w>a#fh=)(_zgueK+_m?JF72a*x#T=bhroQY|C^nV{e z*+_PqrvYj#<{uP~>dXUlX1(y6I+sU5cO#5YeZm9SMy4qDjfa8!4WnlPsx>B5%_plc zG--0ao?eil3vIpO!xSLT2Y3uQ00b<DCd3k}#<^*-TBj3xtX<e(OwIMcs|jIi7y9SU z(HxO{P}0swt4fIKP^zi3Qyk0cbbmNZ{97cvv5z$s8eI?o`Dx|aS84)5psPRXPO`6O zDK*fL`Y@RGw>6;*Ph}{~pdhf`2$mXRbAit^Hbejz@6e;0U}PGUv2M3AhsQT7_36|> z6GQOy{$3NiEv?nqBkMAyq@YG@>fv_SWqR~;x1!5-0JXIHotiiex8N^`?|+{h<TncH zqA3!v;DS#6%Fv+9Y#FbaA5*0MWg+qB<A6De0+}~L5oHb~cmhb@Sfz=A{f~UP;=$pv z59JH~*^?ajP`*V&>u5ao{f*8<Rhqmyg)*X3XE#(@SNl~-0@!>));VGAW?6#K|M~%; zyq`JDo7<nD+gwf(+6%fM>wnExQ`uyT&si``z^6fUJ5zgoB>x`fZhq@UUgxj{w8w%! zpZ)2a?=PHRZ#Kws`$*U@F^G!u^I;CtHSBz-u@1v-R$@16VU<jO^dkv-{W+~dLlm(q zDHyz3O<}QWDKMbX=ZgZWSmX;$2bjW8XJWI6J)fq5Cg&$%oueU<x_`w_!;=1=m&21m z>tYYc@x*T2*_iSa0vj-=hcQbT+mT?+uh%D#!h^58L3|L*a0Oy7#_eTUg1U+k^EnJ9 zPM4FJV4%vOMj*jjlruF2Cjva9pxII^LVv9<)j-hyUGiMGZ*Mf*os#<nsBH*Csq#4~ zsY2{A^OuYXUbSkQRDUXMz>b5j35})V+)*rezvWyh%$5n#!ijyh7^FLP-DJx9JQ8jL z#hb5X(?~_|&Z+zr6+F&`u}%jPQt8{wHq9~$oQc8$mAqfT^N%=zL{mU8c3GkVpDTh% zwesa^!VD7J2T=rkv%|fH4M|tB#{toLQwkV)p7C^@TP|9!!GF5w(K}ixMjuQqO;~%p z>S``%28k+|`knb%l=XW-X5i{NTZP;f8@0#jL@?js`1fvL;D2MZTKg$1#@ZQaD|pJq z?t-MO)Aq;?l+<)FaH>2Me6QV|=1-y{dF;|!_;v$!MHQWOiXFY&&p>jt8jl%?0?U4I zk>t({y?^zdet+1Ce-rcYqpRH03%Z~U%?HB3=k0<=wa{84w$`E{J}_st3XzN(?2Uwi z{vf!Mkok&&2+?O~--_oz1$6mZl1<a9aT6{hT{HsR2?l$AYXq+dHt&Sx4(y5KI8%s- z;KnJ4t~Pk3-HCUgV6mDO7ytl$$vR<Ey0QCDwHQk0hkvFC_^78ImGLJ%hW`J#Eu`8( zPPrMFqJTtXP{o+iLvxqDd<%V58DIEUmcTp3yuz^2-1(PEIY2G&eC<KOeUKxh;VrL= zH?Dz@kOB$mnX8r(klK}#f0TOiJ?}~pG5G{klRYIwqUP|T?i6NsC+&swMH38H`m;c@ zq-?d;&VQB`9x=E*Ns0w?sDDYOoNvrAd#Sa9FDWZJ+KH5VQmj+>g8ExqnLq33J(90u z@=^zcraSnCkVfUQdqSG%<4ueGm3rWVoLQr!T}w{3n0~Zl7!6QG9Z-3|We6(3nOJ%$ zr3aokSi%pNp7Hs?PED<|9q_xdQBq(AIH<h1lz-=3i-92pWoC*M8>5Z3&11J!f}(zP zq?_-0dVx7koXMn)w#QzlzLOh2)B6MnJhp{JuUR9eLSJijq2#!mJH<~unCHDiU%b0O ztku_s4H1<}R)}xl;_9s3&S}A8Vy9s<VGQ~vf<qp$%_2+2YVs&f0mWc9I+{uw?BDh` ztbdzsO{n(OuP9jSfrfAKfj&=oh9ksG0Xo4{S((SDgJ6n0F#W|NJs6hb#v}T3`v-yg zVr2)vYyG9NA1_w>Q-%Q{h4=NIO^d0Wkh7IrEb9E0$9;lQL{D{jQUZzeNXxj@0b~yA zJc60U;KsUe6dfCD+~8y4IPpH(jC>@)n162V2KHV-lpdW`=D*$bmqZ0@e6@4ZFdq#P zZQz_r&1)<JUsbL85$+j+=^t_*{C`L=xU_5J4}%d$G?_m)I2-z~m<frw7%71FWp1k} z^|3tK9$u<R>gsP94(Y{(GccasmNIw$N#uw36v8*8t*fKj#&rQ-QtTkSxnITYpnrWH zqWsuH0YwxrSPN$BdTOFtZ3h|T7r)UCKU7>4Grds#z2v9LI2}Wb7BT+@#dDE#7P7hA zC*mGtIwr~%*Miu{YW7R{20{x?d4f(t(e5J^Y?qO|uPH_B@mP$<Im}oalMiLF8ueCG z1((|49_zi~r*$gj2cXVJoe*z}5r1&ywnS)|)%r6s$HC*YC5U<_>%f;yg)5#62yr_= zYxydGI&x>U+b=`CWb1>vb(WmEMIPnIH}w@_QQlXSCNr7JE~y9Q_J6CD_^td2%a0k{ zI_m_<F#YxvpbRf408RQ<zpfqi*-xdY{|avlFgSb-+|;nB?A?giowo3kO@FKN&fDb} zf5H}>ZlkSdnOGEN82?HI;JV&fHix?(Is-3oKo3*y2zCA7Be?01+CgEn^t{c1uHxn* z6!Dk?zlLiBPlE<HKM89xmDPvky)isyR#LQkczfpfFtl!;;!LdP8~<=+YoEtj8GEau zgdnHdQ$;YAE?czcf#)T)cz-iy)I-PLh57?pL@%kC;sGl|nB1PVggx-_=GH>qH=I^i z8(oK_MtSo<X}m*m#jX^G)sRwtaJYa^3_@f#P?G(6U!eMAvWo|}q<Pel0S#eJZyvZ* zViL9JJvuyBBsWkKMDBr62>~d`Hm+SKq8hl+fK7)gOgqy_lwnvz2Y;TRW=_ZdI}hhE z_`?S&OgJ#ZT+NHR^;B<G<A#Xlc^4ecB8Z%Qka-st?b%TzK&~)mGY2s{6tpz2y<OZG zAdZJR+&uj^PPb(Fq8ilqf}2{3tQre1rp@QE_jumSkNs0By3*<3Od?y@vclRQBUR@j z45~e%iR&;Ez04*ht$&+`C*^v_M^eIzUZ$+?yu3J+CYc3jck8@7xnw@*4TPVe#XwIL z&63pMWhq~$*5`7D4VTwPDx!y?>{^_}AwN{Rgqf%K*=7e>C;0tsD>1U=E)QLVJ59eY z$;9ULWLTlj0^ecqHH)Qi>}<gsRX5kq5d((XB9T)sOL$PDOn=3vkJ6pZD*{?QpYT4? zzDIa-oi+r&$<i3xgh>A=bG0@CV+<@kqWTmgl=+uN{3mF7Wl=MdaX}+f07s3L^j2>g z4wOkqW;}{nT0){JgE&Q4%2(&LoWgH&+-MYi?xM2w(qy1T8Amm`8q2zFtmpVnT$vud zatPG4uKV`g;(w2l<P`W2GVmj0f6~xZp=)`t%|MUueceE#ILCEdS%0ss=Y)>3NL#ZW ztJktsRbY4q)h_*tu17UG_PEX=_(iF*4OG<qbm{^BMLX1rW}5F|ix_Iqv9-er%W1N3 z#+R*u1*S2YJ@&L*9dHxTfjFY=?tL~Cx-0Rq>Dxua9Dh=f=-8W)QIm>1)XXSrJ1xOK z>a-~o2QJJ3DoeonUns3rlhm{U+3gcNN8QMi8oKj-OLEZL3%H9Dv?P@2jH8q1DJG=d zP*>XCv}nu*niJetm<&;WipUFdi~pzlz4uA73t%RaYHY&~N}gg{1MgHDGZAiQVz74w z;P%K-y?^*>H@t}N@hBGAJ2W%)RqvF9q(#CHQzgx|b6dgMNxf<(8IhMqoQ%`-&K*m= z?wVWVS!BKbzty6+AK<1~NdkS`B0n7;2a}O3%hq%xx&;pfb1E$&@#>Hjkx4bERsl<Z zF18DgA(_2_cBZier}w7CAb(Cm{h{uEQ`Le95`RV>`>lGbQcrXtQzaSv+WK~%?BR0L z{p9Wmv#e8aCVj0+<Sn>hhUK+)B8}&je;AJ6t&?POdRDVqw$B!REoom#o}4)j#6MNw zi>Ty0?w8C2BX_@vJ?Lvr&MoL~t|h@^t3iZoZY7KCJ>-aezX43cQdZD(aZRa6TV%X| zyni+8nvOn)dgnR@a-iZPOwQT*?DSlZ9m=CUQycqAMRI4fy3)m?I;!1uFX(qT(zNL= zqRXG0Wu-Oy3ugdw8WVxj3RW0p=emIb%U0wIk$2)ydWW)A38CPf>Xr6_Ra$xk`QqPQ z!|7WAxmv}GzXP~7SsOo@*(DTEWYdxyEPwJz>2ZL*==)YlFLg1fg#Dy%TJtfaW83Gl zc_O51Fh&oIWuJ!0-Q`3_cTlCPJqv8?*t4>f1H2|*m4l6XeeB}x5>Mz%%Ot)mOvNoc z+jpxhb0YpKQDfu;Ec*h5bj2&TXl^%DOM$A;9YL&~7dx>pXb5T0lH<$&4`azU*?*5k z=iXLhVMYG^(;Hn0g@$)k6!3^wGQ9NB5mkEjrr9%YFmkvn$+wKPp^r*HcTG=61-d<= zUFsuovY)X8FAwi8lOJ_yFqA?`P7(%^C*^O$w(=}=EBrE~fFW4RCxf@()?A#(mQ=Zs z2mysZw3hy(*~cPl{)k=A4>pCJD}S%An_P(*iUfwkNCX>gI61~+io#{HZ!i9qPv09m zj*TAnW3`}bU~Cq(XPZX-&BOin;B^ct4iAvEI0S7WXl%{OR}rQ79ch9{Hn}YVx6UVe z7y(E4_z{Sq$>a&a=^lQzY~i)w8u)6spoE@zYwMEjR-Stdj!&JT8>bDEQ-5qPkQT@< zOc=z7cCCB8AI(~R5`tRddcoR?b<fIom^kt!rk%C%(A5!TtsJS2SbhjoC#0nH;41O4 zp}2&Y{n(exq?H5ydC)m29msp&fj-FC-FEZWP?8P>`}3&&&%8iJt!vqN;|G@=oMlPO z5EBA1ug}`TKzHcZi}F;7M1PJx>ff;ss2_X*=mwWJzo4!&O{d$)i2>G`T-jO~mhZ!- z_PW!1xJ1zl@;VG5VU{M*ue?U!MAVnvxJ)_sxgo(e?4Nfp%^QmZqMHEU3UMBRU`Ef2 zxr)4cW#ytNCGsd{|0i^emXx3%|JNzk!$CX&49WIj{$ra`9leEP;eY>e7#lFhm=cAq zuf9)iL^4uF=m8%Fge}p*L!KUoon1d1Vr5Z1E8pOvn-dtD%{3ETIL4GFSZO&lm)4it z^`RI@D7e$Oe}>$N*aVx5eqjp;KA>_@3UyC}BeL1xpcgiGposdp23odbmj0|?AAC|= zcI_PjN`ksaf`ZWT`G4T$k%Q?dUp8#nk%qJ|U1v3shVo1K()dsl07$}4rJ|H9nPp4I zFWJ<8{uXb#?XZFK_tc?DozX<`b?TVxP|gA-RdL&-D#n2Fh|eh!kkpOhxGYc2uX;kF ztWz|Kga9YP)+wG^XsM*2>O5~}4@CO)Olk|`6kfXQNoX>)XMe%GG^oJ#;GK1(AV4en zi#1;f31T1z_w$30<`P`z_6zt(7?an3Lw~6-n^Katk*C#*%iGKtG1ca%BVIC30jgh( zmn})6QJW2m9$i?itxfovyI%I_u@gM_h25{$y}vTz_0Df4M6)Q-utiJA*193anm zkE(&=w43*5{eJ);vQa^vQrN5@;SV{z^j*N<Re}%KV)u6L(~3yZi)AbbXwZafCRmpj zN?4@jSh8B=q{#Lc|AT_;`22eoZN_<Ypo>(RFr;dW_091_eaXTj8`HE;th&DQUOSF` z2RMR0m~D#A!bvt<*IB|WCF=t^ovL<A-8d3b<(WTjd4Cz<PbswU{|W}#N%Mbhay<&G z6G0eawf1hMDNLmq;w;{`fT{GXH8d#vUlwk~le7_m-3%wP)3a>$7+!<-b~b{j*X>%u zKsU#u?j_t&G4TLz^v-6@wqbmCqEy)z{=Ax_GvKG^qs5SB$>t=l(6Aibxau$b73M)F zdy^uXTYo@J>oK{=v5M&(4>d}O$7}U!H}MN4T;IR@oM5)-?5iU34pFi&XtWcb2<Zk@ zHV;sfDn1-(NOy~+sy<@)H0+U4r+Xr&eJJT0N!%n=w+ikoS6Hp1DSohWf}n;*^*ABh zqa34D(V`f=+ECbYoU5fFJv*)oitoq%xN{Jbk$;OzW3z{^!2aKM1^?)y`!Ih07rx=k zlR+@t&m@h$u?_`*CCE<#q4#J^|3QA}4pbf@jC~W=_MP8(59DHWAwE}ob&FDw{IbZg zt|N+lz|tV_%DI;E15q_&&mJZPQ<h@VQ=oSYfr$e7o~YMrXhp!A)-&K{(Lu~dI(Cb> zX@AFRlCrgT;HzXGF7)*_RV;Undc58awf3~K%Q}-V#nukIhpAR&weVI`qOl<U{Ve~! zvR9HV$3YI>9CFxHj&#N6GI~g-(mbP>9eMmxPibcBgS#9~7SV^^pnUYebz8VEbsP!_ zTT_wQV{7~D{f^qj?0hoqL#4A0gleaL{eK`of$acRf`vNF*d)M+#7p`e|B+GNzMDu! zP{n)umUO5KAT$E#DiRq+CH+ZGXpo<CSj?1Npcr6{$k}lMmfOe?ULHJ|-#AH`<tI01 z+b@1ZcD5E8)m~)FD|yr8hZ&}$EO3F@ZXKW3!Z(mgeDw%n6XKdlSFksW9IMNET7PO( z5p3F={<l)4v!;6G<#7EZS0I$8C2tw3{I4pI+F2QK`&?1Dmp~N{mON_D+<9_?12gn% z{JjJ@{)GR6Yw?<lAQzXRQde%7UL+B}$O*f+$G4tE6+tD}XupI(YAcy9ByeoQzXKl& zI=8UcNQd!ug<=b$NxKDrM}j)@Vt<0Fpde-eLJID``6O=R<KQOi4bPnB|N0o+|Je#5 z`~C>O+ZyXjuVQaoSBtF84h#?*7;C}qjtnB)<GlaF9$B&ThY#E`7F|U6t6}Cvby}9F ziy9AS`A)-d0l#w7#mbER`%_9GRxi0me`=O;9QPks6H*oBgdX}9U}|kS+<)M@<1-_Z zsBAi3v)r*7)}t#gJ)s<A$&_0<JETe=4yUFT80Lf)b#4BTxDC%lkbmfU?@hO`|DoW! zLvH3z=={}Xj$WsISm1&n=<$Q$%NPEpXXG+5(^PgJRx#Io>?9)L;LmM8*>7_+faGS& ztly!kR6){$?u3p#GmSxzsehOhO^i>npXUe{T_}qqTtuKh=F*`H97=)D#sP%~&_KTv z-@=&AY5lTbzS+XXUwR`*qm$YaN~H2hkwG-5DIw^_UBGZli+Nh+A@})|W&nsq6(vY0 z0PY*6k+F_IO0G+?zMT+f#Zg|b<C(2~*|__v%B+sp{>0C;%%I)04S#dVn+{h}P9hZ4 z9(>fzce8Fbl?y&;lukerTzRgu9L0~R*%>SROCTo=pyW&}O|B0*2wEnBm9rcG%+=_P zTNJ%HNW|F5<ORhx8q~z6f>~D8r}@0)wmZeAH5<d|IqJ?DG4^1=SGXg3(4TGqHk<$! zH8CVl*Q_k4^-^)#aDN;@0SL@Uk=UKWv6Yk|L?S2H7#OTG*(u9SF{<g&bAPUoaP(#$ zOZ-=?uZJ9MUN*POPK&)v6byMD+JnzixYR3OX^?KDY2P;B#J@^WF{~Apvnu=)IvE|o zp>8olvF=yBsck3XEr~wb7p!R&bAD_eo#PS=5|Err31{jCAb(;{@|r=e(R=S84>|k# zSaxMa{`Rr)TtlPnbPfpnRB;ZDsmWy0_xu-vzDCOr(<~?1OuZr9epmc+c(=?z)|RvI z;$9>#&D{r}9<^WUOD3;c5D!_aV0cl?c@R`SrzZJN1LU+DcCP%=3KEiOW9AI%UKJdT zm^+QP%GucMD}M|86o+K~VDXaH4huYVix>-)iO;E2REKac@&N}>q$m<ebV)=^WhNmm zN-|8tQ2|hXegne&$$MQ_RX%BvaPksYl?V0GtlIjH-I>q!_}B7A<qzg_hPBA2Cmh+c zylNZe1_shQo>HZH`hkBkZ{j#UmQ8d(>s{&6N0hzjoqxKxd-U@%8dq{$v8Za_ylNY> zX!I1l+V?V^(!*0qkk1LcEAT>K@ymZsn61k<eJui8ZEERJA|{@Et)k+xl3!Kgd8zC= z#QkUGFoeu<=<ic3kg%T_4Hci(lWnNQRcJvCNKh$F8zme*wsOj;=f!*kvIXQ|IRO<o zT^YeV3x7jYheJCD7-nL+X?76hsgHKGO2-^9V+I(U*6&0*Fo|=yfL18z-tYld;a(6U z$#{@~8QZ=98@^DM2L0s8?@6mVXrboZp@Ym#B?6?2^0^{&?TbzXpM^%^=8sF3Y<6mx zA(d`O6~Xz*l^kZYjD-RHFM|65(XC;Mo{s+TgMUuE5Ivou(GO}-RrVr#UD7UB+4Co7 zC;q!9BZu6As0siBJxe4-hyQ*Ij^^@Can4Ko$OM7%fdQ$MD7L)jdUP$eMJ43UD@xA% z*eFnZehwv^zp}~Xx%HjeD_{|`=}J`XnUKivcfq1S4mg(-WBXOC3H&WfI+N3F)0uSP z1%K}3u-+rg2fYq2Do$M~TZeOkxrRY1IpYQF>b_`ewL6RF4%eHIfZvdI?b5_FwUiuO zcAca1>>UW%;@VxJ4E3lMh?MMf1U^_nI)7N2L@>AAf3a7T8If6DgGx9*!Rt?OXr6=B zXImuaQKWLANNRkNJ{Nxp$IeFTh-1P!1Am*P?(->%-w-B1SCGPnbr+rdcT$K<$o~zr z3K$z0|BKnaY5VSb#2Gx47HvXx!@d`__9-Q-V2C$)tc6(MN{%r?Ij5PcaN!-iY1M4{ z@~X~oNV+Wdt)P#;;LB8lMUX85zW8SE3QyGQdU<gzd%~4x!^l@9jW=KzHxt<igMSeO z$e^rLL$?rv!gZ!9M&8et$(8`mIy>(WeG7l5fikocpC&ubr}j$RpT6#bW7vDy)I@AB zt7vMOS80!vlAUxr=3WNfq=8MBsWX2R<b}P^qjQi_&&C2Fz(*1D`9}u50>{RqbEP9) znqETI7^hs;1)h)mKIH<~fT1k`eScHD=dvy5^{zE(xUD&aN;V&Wk5KcC1{3+z6+}|9 z#xXIcfQgXPMSD(GBeP|LR%;{op)dHU;G(Ma1KCI})vnWT-o8PPH335~#{uKjLp6hZ zS+W#3<D{|I98tgW?TIAJt}}W5p~jK^PsR229z*Dk_XSzdE;ItkF@cX!Ie$Qq<lnz) z*seuKU(3|te0pX%J!uW4@<?Fv)($BIOe7|V;yBYhyKEhn{QO-9^-VCzBD@8!TEdZn z58(zP3L?bH`mbB<r-JAD?i~ulLM<G{_!#Ks@9#zu_0KDyGG?ShRMxITKY%V{#2;gj z^K6H_*2_cCY;3!zCJ+K#DSsv|pLrFyOTM+mlRuX2=D=Yhe9Fyr$Hlc)6HDszp-rk! zZ3K^27&-D)l`SNyh!m>>P84M5Xad!T!g<tn*tc{5l}2#n^j35)6ye&lVd~QhqoGeZ z-*!!pisqgNUpW;Pn_fhCbf@xNPNY@M&5iZ!G%aB2?f^fu^&4j<F@G5g_qmwM$>DR| z`S*_r{^j7?tA8H^zu)Pbf^+QSZke>EvIZi5t0F1q<oykVY}_j{mBh`lAe;{X0DZ|i zVN<%X`%kqY5z9XfR=O^ApjIFo0FYK<3RlSOjpQ7~49w&<Kd4ElhBey7-Y5wgr1vt# zrSldWO#IL1XtW$83x7$<pWbO5^r5)e@-UnL6f=W-7(AcJ!N?#g1Xrb|pppEPV*_HX z+_Nv<tMZJ$^GSD~!X90n3nw<#2rh&%$j29F=a^3rl+q@d3<}%40N%&a6&mf&$;kVH zC3oI@tibLbKx)9%{_6bxMf)4>P$FCKBSfB%iR(=7Q=U@hhJQNUx?|K@P>sHx*8Z^C zPMW6-&o#H+X__0FuoUxuGJ8G{ssPpZh>@x5C3Ftk-&p22xqoJ<7pjuWL#@Wz%gqO- z9afD17AV~DIcG$YZgFMC!3<G+Ia(P`lJfMy8vn_^nxTke<i{~O(tt$fMI29@ta1_# z2@Ag-`Awxd;eY5#H3X55G}K%ad({j~vxujJB)8;#=b^I_i+qS7r(H}wlw-{qjN)j` zZW7?v<AO6J^i@EDMde)u7SP_}o9*ODB|79BL8UD@#$9B47gJZ<NO^7oCI6RCcNkFb zW=}g!GJt}N!TwJvTL>-RJ5@Kwhhx;!>w5O+*xL(+E`LA#Ym4%q+pz=u@n#6^3FY1Q zr3+2Py5`}va~H}(_XIR85$KjgH;`yD5!xCX=vj9Qm5KCyLZ8;YSxEa|2G2pakD$9K zN`K*{RB5o(=+G)w%S=;$b9jt{7u5YvTfmyjMIyZeUox6In13ZF>ORjq3@!828W^V` zxeOc!dVe%<^_aG&io;$4{ZGJa3Q3Apn!S1ZlT7oK&T#_MiNw9R58H0BH1~WH>qzZ7 zlyc}$_lu(;p3&Hfbfh+e(p|aXD@ag65`3a<^Z!H{m+XNnz|eS`jd8_vU0?a=c3=EB z`Rq_{p8d<)jPQ#Hq+URjYM%$^7w~rK@w2+xb$^D6(1zg9{dU}IFj$sy<-hTG7Bp2? zOO)_x%KZ$I_Z(<xQ-HZhf(uSdyCY@3xG<L@j}W%-0DS4cT!^A;ZKHgFsnaOcXb~Ia z(O*rR{UHEI=3_kFaVD$yw*RR;_E3KyeCJI?bt`>Oe6g4`DV)$#FI%<Zqs3%$n?Y`$ z+kb*S@*iw(Cv`19H6SPS&Js=KdIq+c%LrE?H3^stCZ`3s_#Pt(%g=%aJ%eyl?8I#S zM8115UzP<|?}Y7{{|b8L2`;3LurZ-3QFu`l=Q;kCK(LB*BGz^WOYX9?2nL5#=;3og zLA)pYc=<@pytdR+x{mT?zJySUXa?)+tbcy5*2$&Yxwn<&QykH)9UQSJR!HNROZCO? zF$;%1owk`Y$C2#M>#7!h%zw)7jI^X3)P(s+<)L+FbDr6$o4)xE>SimC0h^TtATRH; zg^Oh7W|8u0TF^<XxxTgk64EAPB+bU4a?o&(;~xi54lexK;d8;nDE<7QqPx8H`+q>* zUU0`!EA%Q23&XUYrqM?#2C%0yalWzLSU?DZgfFbFzjyDrba*p0l~g_-?`!ji0B7&@ z*-l#y5Q$^Ro#U@t2Z1)W{jU&Yd1g3Zk%@G+5Y#McQ)D)Q_=P|>*&;<hKNF$JgCSZc z)CMXeMlEN?u%tV4AbnJLBH(Kxcz>c-oZ(GL6_U7>^-|wo)R449X~r}U>TLNt3%Vt~ z2(&F#t?rGsEzu98*<8SJqhNuK7H#{2BuNU%wL%pnq+bII91lt+A!<T1+X^2JHF0$2 zXSrE-KOSA|?8ZU^OY7IAn7840Rso}b9k<R}%p;dY-|@C4v7>N@KA?9PkAJ0?e+!y? zBZk&TxfeA1wQnm!R3-=4mvoDs{VH8^UDh}d@dGf`w4Q=^pxD>lR7-35u-2L)IzN!+ z=W)-Ogz$6QLg44}p9ST)K}NXQx_m**2j~X(_R3;No)Nw`Rq1ElUecNc#ahHs<lsSE z^0jSveG$Gtwz*m8*g0MFIe#$WQp*ySJ$PoE-&5C|xeFb<AXD-2J|^E3Y6KHbLI$*u zRddh3kH$3)NG5%a+kge`@qIHbm)QnO?D9?3d8vA*9E4o^HwoYTL9Y(*0;VZ8HOo&n zW*}fk(0lEKnRR(_8HNmR43>$N#^BcTq>Au%lM*Ys*%zuG%iIdolYbw#sv#|~kV}<o zlSl}5HS)f16k9gfLdXkne_<>XoFCBvFBxLVL<*TT+KCGbAO8*+PAZ)}kj+xaDG$Fg z`vtMat_;AiXde`4+%2y%e_TkFMX;<h4RUxLc{hULat_o>j|z(Q;?2&79aCqh%D&-k zCcP*Bw4obba|6!6bbqd3%_43&Q0Sd)`S_cMmYV5DQ)^6ppqiOk_%yOkZ9EX*NxuGh znG9ua?Eq^?aiMq@jEbHSvB}zS6J&%MRa-F-0A6{7NNmASe(X3xwN?f3VuyxODu1al z*lrW82A#{*Xp2X@QYI=!?iyIPdEtPPqT<>Y!+L{l8fa7x0)K4neCNp|MyJsP{}EFN zT?gHZ+OJ@P8Q|&Du&e`vn?80!Uu<|qxt^FAJ^!u9C%1+DUUkv&vfUXv+;Iz_03`<4 zOq{PxV!9uH951M(kG^gU%qQ{7Fk_AuQFet?^BCJji`k$k4ms(h9vgHS)LFUoS=#em z;g)z14vu&XWPb?AsA;p-$XvAGjKcUKm4YFthA?vCGU*Tp|2&#cFr}EqXJS;t@w?b< zi9AhX&b-slHEv-;EWthA50pkb#Z%xeT;69*uB5xe82`@HtNPsdmc-%+B0+R_g;Yb! zw&m;1?iyxI-!Dwj@5Ax`FR$}hU#gLAom$(z7M2gbUw^o>(*D3UXG{N(z6zbF<NtR} z?%$YP{f2K}X2sAGl8gkWgA18<_$1mtvL;pv(>WeULt9N~xp%=J`2vFD))u*ri(pUW z8CaRK>~t-1L7O^lvnX7!_v&*>OneUaw3DFHp|Cgu+H++lev-4&PqW#$6PPf#^5r)4 z`*}9iJb(Mhc^MchZ%I#E0iT|Pg?-loidCXd&iFYf%M4qWaXHnQ;S@}K%juOfud2(1 zIO|s2T<bA_ciwr0Yc7Q#e(MMr9Ek|h!l9fV{U#zF8*kje{@K*bVD%sr#SQ3bmeSin zryGe2F5F`yJZq(Z8bt;1r$*(i@7lpd0`#@M>3=PNp7jQGPN`A3IFpL{d;rFj(a~|v z=2v;k*Y3QbCVJ>fWcd(m9TmAC&p6q<2euYurz`PDf!!b~nq5ckk)+&uT;i5K#HV6G zmkl%Pk>!S;5dH)Po<JJifO=p{Dn8Kr>bCQS@98L(>JAGP8hSASzJu6*DN*U83mxcd ze}AAGxmn+r{^jE00h2GU$Z*3G4xPwrL3~t1Z+e{nrkhn~-ViOgQu$AhhL0qq$3ISs zLws%7b7KHV;L46DDLwGV!l-wg`8<kC(opT<-R}K|6RE|CLD7Z|L}3ipZ1*LAV86{a z;KTL!q^0k-ViZXY@3JJ+DV2$7{0L+08Gk};bmS!m*tdaPl4qt9+!D^NI)9i(m}7UJ zS=mp(>%$m^QJ9SE&W%AS7mY+6vEeOJ=>Cg-WM+o&wky71<)@2t-dI``mLjPc=pS!) zEJy={&iuLIKSy6Z)_n$hZ|nZ2r9ZyPEI>6I9N6Bat}koyjsNE4g6dCgUcVvF>VGfy zgA>0B{UWpSQf}Wh9Lx2jWC6QF*0Bqd%WOuMzqG>ugkB@w<+bEoVNwS}Pc5Oj$=>#f zTe3tYq+XV&Yai$AK-$Go*3_lK0R^UwZR^m%Q*36x1im)(lP$KUw7>&yAO~pI&*CQB z0$d#hKM)CCt8_lMozROoiJ41TkbfTws4r+)emP#0<1uqII)64Z8=iN?VQmAD5;tql z`FkV@vo9+I+7_|K_>p%b>?PpM_-RDjTC7ajGo>Vv)WDn_b3#28)0T(hhFkTwTy~+~ zDWGN3YM@=7LDQzwBftljBosZ1muoyRD;|LJd-JcS*#b6vc`GW*7xt4~@P7zUUeZOn zgb?OtU_hCXgsI6&$)B2)Mr5Amp-!1<t$V${Ds7M5t;9BuX+_wPfb&9Mr41FMv7I=Z zOLrkX*3O77mt5Y9gZV2R7pRrK9HOJ{U92p^%L$?QkuDu*E!UtQZ#fx{yftj-i#;3= zf;C>+nr2~R(G{Ex;JV7B;D69TgZ_WDF(~mA7dX0hWXGOT+uxvg4tt;$@?Q-H-b+Fs zdEuNKc>J2zd);rq$EYyudj|8}l<mA)bY9sfiDcp{LA|4d1%no)b*DKUQBgsJDXGaJ z2KDbOVp_9j_%~7{7z_PM6{usY^|Ue-TT-&%4SdkRx-0kYMI13}2!EPmqPdgRMI+^( z1DXx;%ovX~5W|z%Rn1vk&2LOa1rwn6j5w{}j7~cpLwZ&JdMz>`7u={k%%Pj^<@=n) z$BRnKeJF)7vpsgmm=p+=3n!!t8SmY<X$<=$Cor7#Melpc$;i&gn02+%vp_OLl=w;G z-ZxD3aC;tp=%tOKo_}FtN$vQks$EDtND`Tme*7qo`K4Lb2iq(IwKbEcZy23vWb(=- zT%;x1fwaz#a6ey?+3;<{`+%gCkUHpIs%C_wmJpAK0QZVTgh!aTKI&^|(MHmn)*?>) zX5U_H>wb7cr1_ttgw)!eCDdIl$Q2F&F5fUw|2aDuk}*-(6MvAb3j0$<lbfm&{Gcof zsm!@=wI<&CUJRBcb}lq+tNi{kofxD3$|lHufbX+5v_jE_E+Emg*GMGOw>7>8NVl0a zBn7OuS9~lSF|@@l8CP$m5`aSc5_IjX<WNIMmP+jj9gT_3*AJxBOe)-nwShUfE$iCB zI?8aY$xBs2FMlUWQ3zQJU69c~CQ*Ty7m;eAUNsg^?|A;}KOg2a;YLqzGvKXv?hA0& z`(smWHJc!Yb5wx<!dh-u>boiOp8A0omz<sQBB{IMpAlyI3Asq07vk_1V$2JFBjj<y z=EAD|Rfc#h)p>snf<Mc5*&&jF6o(x8C?01cODl1lUVo2P%&A6FwPn%xh86S<PwwJ& zh_>H3F~P+>e-^ca9d9a45xTM6u+^|HAq42%J^r=@c2A72H+O-<0&%^f=`v(6Uo2|t zYCchDO~HAE_p4wy3^Ox-3}tG|ko3jvI9G3;XE@&|Ds%TKK8W_8t;3C$HqiH(as=>X zu@~q16Mw;Kg57PST9MZwb|tw%3!CgLTC`C{7)Kf(&GVq4rZx#*idw!nSgS~)OEz`M za7TneI+nW&?7<;|_f%=9a$Vsb!og`T<Z6o>GCC>^F<2@M{rSpn(lgo><*Em^FiyJy z2d|t-h8~(p*3IbIjp>#%TWZ=v0001e$vR<Ex_`11(<M5$Sbf5R7mFyxi->qaz>2Oz z;%K_<L|pXWjI0ml5dE-gm&R;=2`Aw(g;t<_Z5aboC~|(eB!IsN_J#f#?_ZK(-k{yE znf96U4{q8o{Z(q<h)MIKxVC5$3YRh;Z*^YPqy_t;;s|7#yc;hAZNW0@u%>(}_;Lq{ z%YU$aFnV<0r}%{geAZFr^#Rv?o8_wdcBy|@ZbWfeMrHFl(?FLZQP6=^@fJR4ZGs#O z#m#>hMiVH`H)2SmrXtre=QOPVy+COPHGxe6j=+$=jD`IpKWZU5`PVeixR(#!Yy@)( zA6Z6<%)@7@)3Xr=FQ*UAK=Ka(%ggS;r+=oeT$Zb8_5_UMIl>9h{7#Dt$mKxkeQl{y z@g5l;!mR&J*R^i`QdK)TR!Cu@J5O<tDQX>)_zrg`$C_>Vj2*dkq%m0S5^w1a95x#a z9|`{`ls3Z;$oynqO`8_`b@F>Z;zXZ%&S6b~G#RAT*z>aGif>lgT*scYjyAd?{(mes z3&T*nO8L+PqM|H77h#<k{thm4yw4tUz6N8-wd^RoUYd`r*+0G0-|3nig{Vi-lmIww zpnRY^8|<%JY=mHPWK^iS$phxh+|Irv@}&ey=h9Aah{xYwZ-u8a)*wGVJk}>LkGqiA zAkAv<YiJaioQKd99YN9#X*EyHV1F4Sb4hA%=KuD3SJ1j4T75Y``tBPvlL)+Tkpn^L zUS{~}abhyVX6qnQTG~X$u=NQ-Kc#*>NL}KbAvJ?62=p#!LTZ7(B;yhl*h$-<zI67D z;@Xvd0KnoX-<wF(TJJ&ygy#s2#r;0LAF54BySui<US^89?#~+dRQI3++<&HiL@pUe zsRePYWW|iY2|QT{ZS|=<)Tc6X_A@{V`xLBLH=Bs$L!KiiTuwWQ!5%`M%palDI!PzZ z#6XL}&Ec3I)xFso{9gJ`RE}{*PV~n*2{Qvr6{&v)eIa6p<NibGMY%GRv5c9<Ga5Xp z1I*9$;e_!a1)Uh*Bs95y7Jmcz-A~?HUW5xAT!Asd!6#0YXdy*$Y*rqx=8ae>Va-J( zl{!5|@a}PdDJ&cKPW$>RJ8~Fzl@Lzk^1qKnoeB!`Bc$zvb*t3X*AFH09;NHt&aFMI z)8yquabD%$xDYV}VI(h)GZN4!Av9<~KHg#vKozx*+Jq(vD1-CB4}VQ~-clXOL;%6> z;x#}oPxi;hs6!LaFBR}{rx<Hv+BAc*M(h&&3$sO8su9OK0#`uCZ;7f%7CWuyLF8&a zXvJ0;X(c@kfV*KKXu8K*Xa|KcA50}caLDncMI{YtA{+2t=AeE<ojiA0wV>na8Un(G z1*T*3AW^Wah6W8)uYcqyPR{2BB{JXgP5Rb8%wMO7#~XFHhE6PnB(=2(K88*>3qKmM zKGev@tCVpEDYkWqg(p}E!G<H5DL=Ol(V_e5vs3grMA%MGC;xGAcId|3YD&v!LRg9& z%{2Pb#G6kbaTf!X5gdjRss#9x?&j>BUL_<9gFRQeZ=dss0DrjpMxxExwNchjI3;m4 zZ3I!zx`^jUTwC(y{>9_LUA}taBiisdG5KrQ>i9-qNIBd1rwBWdD9g}cIrhB6uA*{O z*m7v>OSCv22&NH@=XX*wU7uC6aL^;x92t3>U^`ddcEADz``trP2~!6piFN*OLKPCV zha0=t1VFBaNPlvm#VCQn#IU-l@1lJDuMAk0VpY$#v*tn#;ka-h6ProKzp1T6>a%zT z_|+L@LH3$NSIZ`*EU+;_yeHm8x0uoG029Hrt9Gqr-EypEf`^XHQ5-p6C{zz3z&Pof zjV|lrFpQeB@bFnZrUSF1xe!6nDI~dIHu-3vK3HAXk$)J4d{k{1l!9Yxs_tR=AKk)x zaXP+u0L7a4e~uzZ^lHgFqIvN@4bmlqPRfdI;+k509|zH->G<Q~<+K9^*IirZd-`l; z@uo*UO8OoU&h-keIt3n_;x2x3Q}c#Qw3g5Ff4Yf%m`gm)Ud3v=9Q^|*s*QEo-zZd7 zD7oT*d4GNSz#=<(qw-+Hr?ahHItWAy<wXCs$%dAu=dc#k*@gU;AKoRBx&jHHePO1h zI~g5aY*lSN)|?TgULFvv-7ZR(O*%4RJ~bv_iJ4hN%)2w{Yx-FKC0>^G1IMr7Y=v!| z4R_*#8n5&Sm^A5f=&h_yypyuz7X256;$L{OAAfk2VB#TCoBK3YJZY$_mzM-pghNsn zuGH5w>c0>qGSb`8#9xe-_(l=T|3?7~d+ZPQn_Lrlls22X-g4;>xrmNeigHy;_Ue)g zY6)YkF73o^LEjXMHPdw!#BHEM;yV57#sJY25KrsUTGWfw9byDrvq(_k5Ie;AoDqJY z5Puudc{Z`ec<hpDZ&b#|<X8Ns1b{2SEYITXt6x8h-dR|}vA2F<`MFUcVV`==#&QX) z#^?`E0Wy8Pl>RZ=DFNTY9_Ny%`CbqbPsURlEqu|TQW7c+p2Q6Kgs7K7?S}pa$;u1C zLPP+lyU!A5a^)rXa6Avc*WMij07y~D^MB?lXeHo=!X)#Yt{s%v$*c3O1w0AX3TffR zg-skJ3J|tT=C_zF-Ol6>b++g>{aX_+3-_l3)<@LcoP&Bv>8-e*nSS*P;nfOw_zax2 z;eIB<Sr^R%p0vyjs@k#jjrR%UOaVjjo|*K(!vEb?8~Ne$YT+aQ?gt?lH|f)Av45I( zOU%z!;{xuqEqhmthul_!eHMA=E7g8jQdDdMcEcK&x=;870khJwqRI*d$Y}&w4`;nO zq4fHRD%CoFXyio<JU?mJK!)clL6MrqFU!Fedukufh|Flx^*G+Y&3@VU=$ynR_giEt z%f#$rkm&DRg5CaZGLfls#zhy{qJJ&u0}zmro}1gy05t5Phn{i*L?jTBrShi~l!rX$ z({fIFke?y${1pN$N{{i9@&DZDn_Vu(Z%PZob2pbV%s*_#@)d8A9=^&Xqy0NlH3yOg z6$m;M*pJ1~i=sd8vuc+0KAgYFG8s+5tnnG27W+%k>DvOA&l%(^`~@uHd4JEg*zV-w zx%)hhgA5vwNBzMU_%95pkK)kPGWXsJKN8+ThWpmkAmljO-);}RhOo?Qd!YVo$62Wd zYC^>$MKCj!!6JVn>d^kT{w~}M>m--jZ@5J(<}IbY1(7o^TRGBXy^;dI@(noC3D=-b zc)aq@gAq4j8ekL$UUs;!z<;Y2g=K&T4~8EM1D>=vv`|3DVr6=1X!5Ca1X&$fRcEhL z`i|S!1ArwHC~x)+0oYK@9325mSP^Y%wogYI>n7XC94zm48)s2Z)q?%voL{t)P<q~L zHo`0WFi|?1tBxxw`YTBXIAOT-q-~T9e{->NwUOAy1Jsv)(ap<=zkgvy=}~)U%qd35 zsol2q`rIjiFCk8*%wTT&iwP%-=V$+$=+ifYFADV;=C>5rkehCR?H_y-J5eMRoLffj zk#Oi(A9L!{!Z$rbUA?^)!asjIbzCR?5dh0{3v~Sltnt6_Y-$9e>Ak5{rH~?iG8+d6 zrrpcKQmXm6N*@+7Eq_81yfamF67^kI9kcnmL@a89&5MOT<GE-T#zVuJ7M+8a+YoW9 zrp{wsUpK?5nNd_>GSGlvGp&WPOJZ1RLqgyW3KaSO;C|8okXi?Nx-M4){(v=;_7<<( z+WjE;2mt!_GFjeJ^LzY>pLJ@;RKybmn++mu3OC<M1P2j~I)APrv%ay+_y}mGrX>ut z#J+y<z9Yt&iK~~qwHY@|=jkja{^T>v*$+}Gm69!Ky0UU8Op6k19Ak9!Vc!DkIxY&} zy_*NPhK<pNmpBiGpja87=*37TcGc{cUiKw_SM1B_qox+SU9)MOVgf9*es?2akYfx4 z<tHgECv8DuSAQ;cOZaKEgbO>LU4IZIdK?xUo8=B~#O3=)GHGHelJhEi=B=*#51&Sh zn&0U74pefPfKgiAl%#_`Q5Hqf*dGv7^U7AwlU8ow)_BO0JIo$hEqFbTv>w++(${j0 z%W&&NNo8HLfN{*zs@3FlZxyT^xR=fwBJE>NLqe0mIe(a)qV(>tk`Bx3nAu)%c@XHk zr~{ePi!Uz_o%iMdmAi~Q%JvJdi#%%>8#%_QiUC<At<|4r(P>UvJKz#P^EQ)*!G>Wf zr2fvxG_N+9q6B4e3U!*F)v<pip~i&FP;7mb=vNnD^ccgV42@@nRy^;|%h`#-XmvbB z-vF&fCx2n)mny3U>r)g9zwfYqcx+%Ys*2yZY|_{yQoDe)x()e}e;j1d^Ct|skL2eW z^6uK5$~iPx?;-f!_y@J&$4~GK(HbsT5?h}G_STHFcL7=YZq~IxD=2@JxC?ye94PY$ zATwpGY4-;L(W(*;?|h*{8<k(*9RnmdiBzIh<$rZWJKm<rpw{pg0J>7kMXZJ&n0Wd! zyraRP9(A0Qo+lGL4z0R4V-xdO-w^P2i_4rd=}elM2a?lQgUC+b#7*TQ_`ebanBoKd zh>8yVZ2sB35%Drs7mV(H7$OZc?nhsYtGkZ<L(u2!gWGIh>dN@wSfMU&Px4PMA|6Um zHh&x#b~3)OvzP^y7K65=NN6}OkS~%eJdC)8?qkX(KBBIu<yy6M93#1o^NvLiQ=*-3 z=U>3ice;nnfbND2;{Qs1E&}HuI$NGUIW-H;A*x$Ij>}C_L~|%RFv?l>wj6i%pOsBu zzf|3y?qEforS&k8(z~&fNFPL2$F*k)SAWD^kw!~{zO(V{3qIUxeXxnJjH#oI$@hx6 z25*&|17F?^1BJ77XW!ZOvg^*a?Y5Tn&stbqShiiuwicIb**4bue1-R0oO6EHb)?@J zLI0>WPsMl|)nA<`1a&M-=Yr?Rhc$>9=O5kqtC-nd{eNO#^QdQR4J4fN6cg;MZ+L~K zrnc;+zojS@89OI)h=*^?vq2lkiPFedF?-l*Z;N0MlldO^g+mkA2yx%y1Gd^!#08l| zi9>3n*9$s_Q@}XfnWOZ|j1F32+VvKkb-U5Y{K-cZa`wW3Fk*IePMp$~v>Hnj?7yGI zfBW^03?sd{e<?nnaK1q*4hUeS`S{-I##h}B72OT_ciy$bIUmbPo*6PV!f(`xTYsN+ z{ug;I4CHF9#=hma5Laq?1C{4lY2BTR{ODT3JGQ@;lB)Rb+2`C_=2rxq^EXI-vm>Hc zu`fZ)2sAImGe~Lw-R-H4#Fz*Fz7%Ka#7UP@l1VAeTo9#+rN5VPv$ib;*W#xk@>vOd z;{>;$&M>6-3Mh|rgGzt8tL0aP$hcx5lb!Ea=JqLCRk*Q{GYsu30>~$?9RieNx<|t+ zk4@(W_?(z=p>3C}O@DHx19b7@6V7}Hy<mrD+yiG=g%6zINIxyd{<L-LXh3g(qV4FY zl|ejWQz)7rwS8LTY4p4}FwziCFd5Gy>lgM$DI@2<Y&rKy-$$tU86;3v^82uMi`$vH zR_pgvJ4Z{^P95k?4~YAMICUSI)FlRQDZ1wRRUgTC_1nKBm4?6Sq+!~-TM*h@-GT|5 zM?*(>R^x)&pkMMi+J6Kok9}<Si#4Wi;w2*odfExFS16e9IerQEVJWs6bn)dS5D0D~ zL|OhIv}%66y?VG{O}&#~*;;`~D7{3w)yjVT`og1=WVs&GzzN*oaV;3*&rJ@^bJv&( z9}s;YXO6lh`E+(ltqQuskJ8N4fjm-f?>aOSp?MnJwtkKg_ep|Ihb=>tlPJgiJ;N}a z&oW&~G&s_xa^!V{wKhO4eT^mTT(K^-vMtD5dluv*Nna<myZ#gp`s>;MfOfkOQE8qL zY)1+f+nTWI<O4ptkxp-tmAF7UnF@c#{C;Tu#v=qT<X9oLP{W5!P8dW7J?Hd*<My$j zw-SS3Yh|ks7LqPmVAMZZVe(dxL3dqRcGstdEQzv0>TX>=;o}?Ry5e^!mEr}%Z(5~a zc)75<emAt$|EdKoRm>S*o2e)>#;o2AK%gp2`JNJM>j6^a`!VI{a2(yRDcarqG}Jf& zhpi7vDSxL1{&5DwZu7!h(izF2$@07vDz8|pOq27~x*pa^CeiRMtY}QcOOYeQ^ABId z9<QrOyMZh&!jaHjgpl#xPn&<13cu6bF>CiYt_<9(8?V3qG5Od`>}TmYs~uBWJER(I zXwLUQmIH(oAD(YhuA3ba-o(1a5!UtJB-9nr9mr4K_3fEd{BH(L;>Kj!f;~aDpIXkb zB~8)zuH<Hrv{HmSMDoRH164AdxGLhzr==lp27K^4TjZA7X%IysH1LV5Xd4WQBIc#s z10gGWO$F-lweY{>@AJC)MHWB0)Bh@I><Vyc*8`vabEX2cG5)O{>ZR&f_k{N>EcoBH zFmA7X(Vg|B@yJLs=)-E1LoBl6()UNY%uJ@0U2CL+v+gm%mKe`l4vQXLXDe%D!dEMM zoGW-rlR!4zr)1kCNG~lK*N-P~VhuD7<Ox*}lY1bI{ZFTFmS}*1;N>ksrqQIpu(NQi zn1EfWz9Bxj${hav{=<fK1gmX;d%_*OpeT?_Z!lw&tWHllPBli(j_qtSA%tV}qT-UG zM&P6=<U)C1$}2r%;=)?>XL%i$e+{a?*~(kNU3jBei7KF*hSWZUKdQtw-7tM(aRF(M zLDvO*W?(bA4BB0qm}j*@gT|g?!~GI(1RUALbT11g3`ApA>$)rQ)NqE5`{}#ohu7qW zl4O_^XS1jBj4F0G1Za|0(Lbcq8}yID%?S-_I@C7sxuHi+n#idi2xR?sIwnV0_<9jd z@I{z|18?qi>4VYOJE{>)6QmPuw|BsU1D;P9fIWhka<w#W-#={c_%-eP7C;%f1iY|6 z!YBd;M|Ggv%<vEfXx^vG=GYUeh$Hd!-?xEtLxCx%C=RT^{LN30c&s^3FX5k6s{ib8 z3y70wn`*FF!x_8x#mUfme~(@2WXoR@Dz^&o&-UA^?Iw<FHo`7Z!rhw#>*levC(svF zNh}y)-6gTQt-ilx4nx6xUcKmo!1&po-!oii?R6N8?_omxT1?oC*$96OSWE~pceoIv z!3R&&#_n1`QeV$os8eq?LvpQ6w&4XMkH$Aozgo@qa>@WEj=B9&0SC6~$8%A&S)?JG zvfH;%GbdQEMo_M8A&4fTt?<f`W^bDxj_O7qyG0ROGrHcPgC^+PoXc4dP^eW&vg(Kc zDf~h78^c8)(A}Aneb#-s4y&wB4ss{7hMPPV+$5~cA3&261M==F(<yu4HzVnC!usev zXXe#x4Uezb<@OGzWW^FK%;etATbM>8_TG@uV?<4p7Ac3}lZL^(v(}gsSrM65{)xu$ zn`Q!SxsSK#NeboQRoS`)kVMX>Jl@3B>>I*2F+Y_rW9td5<cFTm_P#_KJPxC|m9@C{ zvK`pObJ6_uS~(pWU`~T;RhTSbj~0YEGQDAlR5!Wq7X4R|)9pA!afju@3#Z7&+L73V z15wkJBN8SIw{*xQR|fGrbJft@{=h!y=xEac((SPC!WhN1{Gyu(BzY9AMVAHlm<Cr` zE7xhF>KN&LCfE=Q9g%nF%1QB}c~08>CIc-16}KejcSAqL*p-%^wx{Ncn<BFjm$sNF zd%(?;bEAHr`Vun(_B)TP;0j;d7Qx*#LW8nMTu{X>*S>N-D@NoceGJh3xAExj4W$vQ zEUo+ZV!ASRhN9&KxJ31zcy+^cg_f1ifqn}rrwAswqqe2WQQ9?I{uvd1oD8*+*xBsl zbHK%$=j^#krc)>Yl4Rvb+&bLx%ArlIB28oq8Vgg^#5`9+zE+q!BN+#ipP?(@n!cGT zY$y&xqguX(emXzSG8VZ#6u3wyIElaM{JSa}CDFWZu#X}QJi7ew*)TotUTFW|`QASk z#FMF?rbJJKBYnunF+Y~`3KIP*x&UQpelJBA?u>~fxr$d&r*z)QP@i$5JNQYS*avg0 zr-0ON+x;P1Z##@Wm_vM><azGMf3<{n&*AfU-OgE5;CN?|2{nZoJJTAJL%oTC;*GGj z<!OwrrcM$waHHir9_`Llp?;(e6+2gLAuAFx7Gu%+>Gt~HgVb3c`&ATfCtiFlvrHQM zd>+#hInm6~x^c?1Als8NukmwwiHn_ngr$PqYE$nx7O}c}VH(^*TyV4qq!otiT)~0R zuN7xS7kgR@ypD-9f^u8E-?LlMG5%|5L2lh%`9SalP(LbN@+n59*#Wg6DYPsb%b5mx zJHNymky&l?>xbk#2Gl6Q{(B9^GLJ0i#HSJoollA<^n=f1R%Ckk5$z`5Cej04k-2@f z&KbenLAC$OskZ#INas7rwh!H(>syEn%fdWK`9lr#%q(oB6lk3Tx_Tw*SkIqPLssCH z|6rpMfF9^nZ-S#Z?48f9te}b(C^+rW<4~{eecyT;?L#vrvum;HGHSiLIEr5>oJa_z zQJh6vFLIN^8^5B3TPv&BsjZGNlF6^>PwbW2HX(6NVY)pE<XkdC66c8UUAop*ALX<x zyjG{yp|0S$YRtH#YLz;L!XnvZRP$qVv^NKUt<~76eo^GI4)q_6)e)AMqsuL2OOqJ3 z`*wJnZ4s1iKUeh}o6Zi8qxqjB`BxFC7P^S<!G1l>$G2XbA(L~m`11<4Z68M!{&|U7 z18f#U4jV{c6t$eYlAp!JcP}?nvi9mIT@Vp|iW7C8N(F2yaYY$A;VXt|RCi|_oV{fO zUgmo#_Nkclbcoa|zth=!*!@Ix)Kmyg%QXplqI%UWFq-;DKvB3==9;%X(@oT7CiqOc zQh|RS)bUlnq>7-I_xOuhoPQ9A_QVtkeC1w4i0CaP+xQUNGuw8Cfil2H_ZbN*=QtQR zW%zx)luI>@DwRw^Pk_o}*uu$5IVEHYxEERf4CKHT6dA<~aAlWdA4-tFO)9#yDt4hX zQPeb*^&|i6P7H09)oR|L77aD2Br-p8AM>yj{+Rl*51S*ld?SC{6UE|&M0hQ8WpIfY z9A{sp>?92ZMSs|=dl>KXIhoj34~@uG+Z4_xLHx(aqNBIr4ccQa+^~1HRxUawu(;8J zg=#HD5RIKeq4))!cIhcosvGN22capN|9xdPzzq)Xv>iq$3zm>OYy=fs*^^w)@n*-n zXe}6p2Uh{^4|dic3p=>ZMbA`SXeg^HO{TR~ArdPzKUNN?{EY9+K+)h6<S^mKwtUF| z%^Xf{B_U2~1yt!tJ}nQ+V&O_SFoGjD;$B=CD*|fwd7xX@v)QT1E4c|$JKdmzRgPwL zvK2ASt*7E*=n#CFE*(@w8g+mr`Vl8{{X0LW-f)4aP=z-bSsJX|)&z|Ia-4G1L%L5| zXka5~Ii+sjh*Y?lfDLOWv&ks(aCS48*0hWCtZbUks)cZF_VHDj@^bnCfwyy_Iagl6 zZb|$#$EUUL3+2c3GRF79Qch~ShRJ7sjXf0~d+fd6U@QjsUc^v`2HggWHeuTub0Mec z-a(mnkUaQDI`Y@NeO@EI)&Iz3)pOq2CDJ_+Mt~d3*K#v>?q4aE)7iLCP8LO6cipd+ zWY^MP4K2fDGu_S}qEMUwBdNTYWzrRIzF5Kg4T<v4SN@kLiy>%Fq1MkWYZ=036;Zo~ zmE)G|l<ehdc;SdjW0FfSgn8cx->S8a8dc0Xs|45|Eo~H%HK$H4;JZ5BDM<QsCn|}) z_^I(O`|Qs#_f3zI?F8%ZVttR!vOdb$Smn?&aErmszGj+%ll<?0D)QWdpoOKRsD`Pj z7|k*QG6=L#Ail9VBLU{3_I`wQ3%)MAj`Z7?gfo8Onw|s8I{n!!M=Z?SetF+3=`%L; zrZS@yM@1Ij-*FDSm%{t0S{ji_Q!1|Ro>n>}OU(Q!nuEn=F|_WuG4dowz$B+JT$jYk zW^PiuD-B>T+FDqEb-FPbiXhiIAb9)x>a9X=Ly&g{FN%>&T|YrMx5;g6Fn0vq+0isL z>o|FzQ67_I=hBIBOKHvT+ihmG&4gYrK5fW8&WXRbl$2!dxAkF891_a4f~z7rUI!y@ z&5Gn^pT=@njw0;_YG`mQg-2#s)O;VTU^qC&98FxU3tb18m<<*3_>Q}-97Pl+c2STU z?&C&#mYuHW6*i07Y*^a8ij3k})(v+}WZAEBQx9W^O=ES*vJe?kDHYH{ZXStt^_C@Z z1LCWH`8@4cVn<ZsfUi=o*D)fR%|6%3$oExvZle-rhTtUqHQe&>Xs~$lfMFJ_CRC1Z z{HrKLXV3@8s8%g3!$=45AK4E3dF#&^amp+heb$V-n3Ddx9VK>6qZ(e3k5uX7p^D%G zYS4l|(ms#K{`6KcGOM$EJM<XbJXwDhsQFwmgcWJ46XM-zLA}Pp$-3szf!~~h!iKjc zqt+INGgz1&HrqY5t>45T@iy2wT2hg_*3fX6K|uzvc95x4rxQ|ew%hD$Z#gjUui^YM z31`cdAtwc8o?#b@*Pq?21GjJY3zbhrp2+$~UY$uNz$g_op8F1Gz)1?!&R3<s@tC5N zRAxc0yh*3{B;Ud)$c%qn2!4OQO{^k-Ch6sESR%FOmo@h9N(`x#9BK8iPT7o2$O`qe zz7GRz%t=(~-MY)*tZWYD;T+lhUStA-8BTDoCHTW-NcoArgm`znWlz&_ZZArnu#+gD zxibXS(;hBF&A_t=sg+Q3BbHemQwnX=z9s;%yD6BXMPC|R%5;@TX&2w7rbE=bnOVfw zg+(|j6qAP7unHf-a@$eHd$<}T6{1`c)W`wz>(`D*m}6eCyBxQoNcN)wvU%x^h_QCA z8np*^X*JHn&Te<s3srb6)Ggw_sZn8R6HMeQ*ur<*=sB`YxG|s|(q*--4(A+#(scCO z`|^usPIQyVdIfB+%R>jD+M&sPzXZb=5N4@@?1m>QS8(ClZ07P-G$lRtF@uUN6C2<c z9QccG?8ogvY<l-j$KB_U7~i@v<Qjf&sIUV~P(wa8w9RLC__)g9mX*H1GLH?*JQ;t^ z1r4#cPZzf>+67y6lVf!F00j}0={h$B(_on8!=V-^SmFLEXrYfiR6+v2cK<Jr>7R%@ zLd87+FC&cdpXGthRu1wQALKB*xQYPQa3=Y>7<6K*6#Uqj20Ud!s5o=KXw1C$OEP|E zP<l*fz!E(4vm-R(GW<cl-~BuvR+f*Nep~`CcZd&WU#bZPE<f-2IiQnJ`}K&^C3E#F zBw3EF{the`Q>0W`_%er_)W;CjK{iSLG|^Cw(IGumNYxeI#F6oxH5xjrD*?c3{AXp0 z{C{o!EW<2$W=>yAn>Ms*Lr5ilB4Ja^-a)U1q4qkoAIfk_febI4R~JE$R1eXUz>yxi zvri|{%^q6O#4xy=nM3#LlSdY=N@#h8_8(nWfX||}v0lguG7Sn8kU-=QVZq0$*h=&B zF*V>CP`i;Xulpu|T=P$qma+G$g}N`=cf0RBW?$*dy4WUn+?=!0=;L8*APLgn#lZuO z?;c^8#H!|hs^PqYV<ana5v*S_d1DN7sKq)3{bIpe3GItjuhx+o16O8=1bp#4Y+dC9 z5RAs56Ju1@PQwH3Oo*rply#8c%f5>I4LCfEkoa(IMdMlB=_9M}N49@1CPZ$M-C6ho zcf=5{{&kPKfVe}ud>xK&+6!jTjCz^K1SEpag^?`{o*i65<!4vd64EgX0p9c$R7+q9 z7$zq@k7&loMm=q#P1+={_DfJ$&0^pI-Ki_}rKd`N>damIY?}zhvo$X#D@P9p04-G} zj-LLX^)*VnVxYzh*UHuuK%i_gxidEvpd3u;@$Z;$Jeij+5EgNS<Y{nMhUPmiqw!eV zQU={oV2WamF)pTuMa_y?USa}GDz~WmZNHo9_5kT`y$`eJuBNb5QNw`Ws~>fMW!s8Z zGWs@dI8RkI+ab6CZ<UVDZA-*zUgzT$N_G#dMo2&AHpmvrH~Ic>`y4QLC<=B6F3AsR zubzQhGMzEm5J0!UGkh>MJukf(Ge#fJX1B`~>q}M^W)9v>h#K>P+8F+j!EtjNU10Z; zI(Jbk8B1NnKdPlZYR7oVvbzE(oR1Hw{uM}>gd<N1aN1dSw)SBuv>J&V_gOnn>_5kK znvs4ngs2qp9W*xz1g*wUNoK^p)K*sR8Sx`nF&$N&li73HgY_9qcn9;Pb>Ivqiiq}b z*fqGYJqw%s?sEJodjAs%v$W<)k*->c`{fqDAE*COsU{cOHmJ3Eb9w^soKPr4XSQOm z%UdKE!ZxxfqayM~%PFzyqxMz#TLsM*v%wn>YdI!92DTi`09eSkeXCeKp(w)>nat|U zMLXhC@%~Vm#}#k@RBb0f+N$|2by~Y)>Bo54=t;Rzo!+w&)0q8_b!F8rXPOHdF{}nv z$+Ms`r1$bhsi0Z=1%H5nwuc|fgf1_H)8eH59aO*?Pdt%Bh93%wNaU`$iHW8}yQ~g8 z0&{?k$EetDZQYIR4Sl!O>gqgI_S+Q=$GN=oVwlA}q#8CO(X$ILE5v(v24V*=+T%JS z5hdswx5~a~VVY%pYhh;e`#ln_?u9g=mR3AbaSFk;h=1@=Uj*h#r0J{n93Aoi+feeu zXejTCSI!Z6;Q;f0)=LL0$sE24H1Q|jysia5Q*iZ?ywbO31@XqEs@#FT3CwP5OwyKw zSi@F6RadQSHcUUSj<wB#N#{E5COc=W&79k_|5ZKgMUo|zSTZROM$rrU{oSCN!vIE` zyqLOM8}W@`ZUDI4qvxd2yXO;6!7a}hdpb+(p6}?!vrrVlAvRw>lPcMRiC2rdsRK(G zpk(uyQ^AmMUH1AvX*{$P5=I5#h_SYEN>|Xka9L-r;exXh1x8!aFlmfO#u;OGj!5U{ z|MfL=(4@Cdxs<kSQ>)LvPKcx0R3hxjfl-_{oYrRTH()7a(3;kFs_z6XvetwOUJYgO z(2q9e&Slj7fUJaq?(#rYqn1$Qi`IdM4ny2st*!HdYn?Gu3FzrNd0vO7tFp%Konh=! zMF`xYJ+xs|aAS}j<M2lx%Gu0xctUW;J~D}p$i1s9Cf^d@a^&4--FP|Fy=|nC;Ww2a z>@acEUI3%4L-w`tcs397P2XoaynDx+Jqx@$rj!wMr}^JCF3kCH=G6y$XUb_`va2#i zuvPrMdus#o(YA8h=zAS^8H3lQGSZXf!crP2#jPYR`248Sw~^*9J*kY!5wQjpM7<U) zOMoLFp;A#sETqm37b)E60Iov8V9dRO6l%FZ14PaA+KRtOreEIkhA5hggm+J=3KWX7 zlNqq|dSzXq5!ZZ=V}BPT;Dxx|`EjXk7L6}gtA~}4GY_w5lcp#O9oH)uq`?HrK2Y#( zL|7qd;nt5oAE{j$3f=q~%j16`$6?w=V2b*!%*-pqHaWy8UJO$j_jm~ove~E9|Jsm3 z2S6;8I|R(pa~Bfl=0Pyg7{4@fZo86B;?{TASnW@Qq+B2K)`p-#Gmzqgldv+mEEdIG z^YU$Jka!n~t6|=?nKZ6|^qm2<i-E(GPiAgAxlPU#5zecI?e=UBF=_xxJ;MNNm~uRt zPvH5me1+pvaH(MSh8`U?^2#>)V@y&kfLGuCISQWHa6+W4yVUgbGkf=}+A<oLgcrt4 zfo-C7a_^Q`vC&Y{i+QT;0?F=`ZI?c32aMstoG};3vf{K0?q}oqS<q_5ghMLgw{sK- zYd}%><?k02Y#kix+wtUx%pwuFP*8Hzhgj~=@>tQRGt-()5Hp&R=&8aVY?}s6AUy_* z#iZuvgbqG@kkbwIX<MIv*uQW4JCdSo+a@)ry}ILx*Mv(HI#d*xY)F~7A*<Es^Fv?+ zNB{R)^V;_;-i{Gvj+-X?&g&!r+!@4IjI>A>2vNshu)zkGsajg(csmq_UMz$(M^LlP zQB}y9bDU0=@k&u_zE?ynhMe6F=xVV3RpJYSYuupM>x(?ilZTY&n2T0$C!^h+kJ6@c zaKScIlY@i*v}Rya8w<o#nd!B7B5c>(!F?$^xTUBj6jgegDs}Wl4g0v7i%{2NqeytR z8R`#X>?ytX8~K4!A(fjq|K660v<u!&?_GDZkW)9SX^5^vC!|%1Z@{_+ijXQi5*M0} zC!U<tp}nfHFh3j91dAtY$`}81c$Lytad7-ooE#*MXl^V)%QL5CYome-m_GJ$&+OSf zd$Tr8Fy|%5wZ=JmtX&|kR>#P@nP_=^)*v(ZV$23p_JbqjKd{YDgX^AXyiAYY@o%x^ zojUE@5)YHgQoy^U*Cy^VK>ziAhS#`7sv-`Qaq=aApX#!p5}|^B!g<*^XFQSA>TBIA zjsTh|ce^fH8@i5A9e+uOLJKpfjIM)IZQGg#!amq;g&kjZa;HAr!9OC+XBZ;eq@c32 znlw660PFZE@O>~p74u#;hj@L8qfS@X2R>qq{xjEd9$}M$lor`OK>S>#QI>pP<vt0( z;^tHmtDDP&PM}fU`CIitvZ5&_mML)>1mweUgwM=;N7hrC9{I2|K&sf!WbYxf3;vDV z!UW0t6jr^#hIJ~!l)gq&=OkgbW77Xl8c`%ahK<N}{UAB@-$5>u1?LC{fU1W5**f{Z zLFG2F@O!N*n$JW4ppUt(?&Ij4I&13??9$VNK7zbaEg4zUU)Qut45jOj8Fd5<;4AzR zKp#lx%$1H=+<!u5<J>YF93pL3$NO0(%3yFK<tUvTSvyLl0+K&}MYw<bi~fBVceqCW z9Atl4cfPdl>K_aYNx<oQN}3WCr^^YubbI(^Ijg3h>BRa<3jLKBYz`W*9mTq4t|L5H z&%p(etiW+gs0b-4KokBQ*Kl*mk{Q$*brR}B=y&`iq{{FL&*76i(e!>|%5Qqb#i2mB z1(C!?8eqPr#Yf^B6VLHbev92J*L1>>Ggw&q$~A8#k6iNvPJxp}Io+4dSUk<Y7jh;Z G-~JyN^sli1 delta 25028 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 diff --git a/static/images/docs/oauth-server/diagram-authorization.avif b/static/images/docs/oauth-server/diagram-authorization.avif index 6991f58ba54af0cd0d75e2b3d94a9988c56e8f51..4182e5406633be98ce4c90ab2acf6bfaae93772c 100644 GIT binary patch delta 20913 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 YK!#hmVwgcR65q!0y?jIg+XoKS{`L3ztpET3 literal 26408 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 Q_q0sA+rR?)Q^T*afH6Pm%>V!Z diff --git a/static/images/docs/oauth-server/diagram-authorization.png b/static/images/docs/oauth-server/diagram-authorization.png new file mode 100644 index 0000000000000000000000000000000000000000..e5ba1628a9ad70321241ad39bd2e8113d80a66d6 GIT binary patch literal 92712 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 T#aCm6kJi;%u_R&9#y|cSog`M- literal 0 HcmV?d00001 diff --git a/static/images/docs/oauth-server/diagram-clients.avif b/static/images/docs/oauth-server/diagram-clients.avif index 430c22c882c01b9e8e6e7b849881932afefc1524..06854af3cadfd590f0139d0b19e6b4a10e8fd968 100644 GIT binary patch delta 19940 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 delta 12845 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 L*TP%B!sQO2>gxO+ diff --git a/static/images/docs/oauth-server/diagram-device-flow.avif b/static/images/docs/oauth-server/diagram-device-flow.avif index 7f3517e54555e139df2f588b5fd774d684245ffe..ced67950ce6bef01b6fb8337ed3ceed70056f996 100644 GIT binary patch delta 25185 zcmV(!K;^&HvjKv|0g!hBVTh4=dw*e&ZDe6|5&#McIcjJ9p~3<h4Inc1!T}vrumHmV z0YCuv2@F`>j~&tUh2mTE@H1eUc<Mp-FppAX4G*X2I{<RS!AtvsTL{h>dyfGlb&U4< zKs-t#eSSoipsu^U=zC@Cc*>4~;>Hu_v4_$z=nMEItJs*1CYia0qW#a^y?+opB`Ypm zS;HcDUAqT!%J2h83Cze>WW(^ZxG{^yie}Wx+nhuPPcrNmCv~ea{mMjyvGW9WW5&@J z4D&Q<&sT{PA=g+$lMvg$(*B9*P_(t=kxM5w!dN#A<)i<54w~CiD9Lt^hUt@GfyuFB zcAL7~jXX%<8(Wv@T}&uC`+v}PP|UHQuk=HRZxu>`n%D~*bsz9z!m$V#2qu_2sTa&g zx<ixzWa3;&K=WDqN@M`cph*Pw+z4F+Po7tcF<pdFGU$@FW2d_Ty9c~^qE#d2=me{E zIrnc<D(IoN6im7owAK*vYRayh5fQzH933{)kKn?ZpBa=I<4|q`et+xvEfm$=qDhOt zGHlWdFPGZtQYxIRVPrK4B(VEn5TA(uI~_rNcmC3=Vsl%YY#>JF%%}SyT8$~|G}n7w z-o=V&Ao*BmyrPzf`;O@#!B7Y+21TOzfS2V6(MQ;k<az!@`M%x@O&vTWEOUdY92V#_ zBs=z-sZ_HwLP!D9P=AlIf$7q$xmt3MswD1q^oIX{@-L*qnje95R?zoqREy$oDITBF zEE)FXYT(f0I`r>xiN}?Do=4Ws7m?mPxhjB<G^Ryik5pt&1g(|5tv^j!{lnodL#DS2 zO`a4gxj+6DP~((9ekFdxdSy3tKkz9G!WXXH3ury#d_a&KYJXO9w^JN8D$ul$OMCE6 z246W_?vpZOue*4vK5$MDH7ENV7|*1NsmoX%y)Yz1bIO7mKH?blfwzdkj5EdVe}xIM zZMT;3J9)x&|3EJP*|gLOJ0C>z*+D*fNw1a>jHUhz-%&$+_Z~z2Q{*D@;5eTCjy4nd zd8g;l&TFU>@_#BgU5O>?;Tx86#V;EJ5c!Ho=pE-DOsY$?{-mhga$uXV{)dufRs8FD z+M1*nrIVUbi|^%{Q-UKbwCE92=FG#QyXDo%vx|98eSe|^AEVZqg13gob?;6cy}*q< z$gBoZi5Y=dyw5l`DYkG-g*uFR)8ql)#|S0Dnt=s{Dt|z?9UBY=k8Y%XJs;o<4{^O6 zq8XzL)TDI)Jc{T5jQ=^Y63YpfbK7p)$jNA+7HAFw;}}*Kam*|1k=-yt@K_-ltz#Vj zU>DdsBbKDo8t<yZnLag83ESndBjimNTt-Z$yY!Gz+X(^Rgnm04zeZBeP&Q}z{xca$ z;(mOG2!A(p6$s$x_Co25eP)eIqop(uW5u@^b~Ih8-~#G1IjYwt>d;@eTE0j^31|K# zWcnEg_kY1%3CZPT6>5FAdro)4NHuh0Me{_ep5I&P)Q!m0`VlLgUL8PMkFE7^b#@7f zh`xmVeh0N#Q`_BXkx<rpW?U${){T<?uIWDZj(<E?nH2>jY}~h`hdjT9N>X7HZmC=` z*sI>3%Ff$D$;o^YtBI<H5vA<29WCQ~u3!DEUyvsu0h7J64U<{BDC9u7MqLo1*iEPH zm%mWqIqp7A->8CSn~-9_xJr>sxt>$=Z|!)Qo_VpOZZgNb6px83*2!zjt2~=!JG56L z0e^TFgijcL!gRLm&Oy9YR-)%>5n+s_BS2gh36)SHb;*AYX<3}2JRd`SZNk2G&K7{P zxD%<i!Hu0|))0!W-L9#zh-;Tzr?}D!v4RXd9-GH0Qy#%+;z`M^&5HYDOC3&|+u1E| z)Hkb@m9gEp_5P&MK)#sG1TA%(>6vZMeSh7*@FH$$CR^!&QydPMB8;KN0jkJQKMkHD zMxx64guNuL>Ze8ZL1L3MXeRnLoyt7@=xWkz3eiGjb(Df1jhd9YPgy4WE8c6MQ2bQC z>jxFS^OEi`X<uaLt(*L(EC%`Xjm;TRDVd^U9Nip5BRBQY!|=jhNi@f*Bi=two`1)y zwwmCkbE)Gd7~HPDPg3wP?}YCdfAiHCnzp<rE|Xt(m&IY2kyuplyA<WGv@F7k;Bo(d zWyc0+JS=fjN6^>x5%1%Qcm+aQ#cuxdPc|80)1Lr4O`tt_oJ*NkBcS7#i^bjyox&pb zBI(ny(EJJxCK^$Qqui#`9(XF^&3^&p3XH{SB=!1~E8@kYHt+KdAfy<JiOak0Zqcwb zQk*j}{4KIMVoxb{h%~^tS3L%~#1VWC5l)3wO`CL3k2|#y$Z^aVTuM2y+tgUB4ujA0 zyQWt74eNafFzM0qX4h|ezoUu@(1D#oeOzQ-meOi_yhogP5-hWCA#clyR)3|7#bE9$ z+~?TUo~hqPZ}KJ@6@!XXBxhf~L#Y^3{Af<4RYdxg)vDw#&;NYm5VNqH1>MS}zM?ZI zkI0g@kp(H&7!%xQIw2ZnAjU~LArF}$bcPzG8Y8U9=yZa-1zUzl>J+mQHDARfY&@*C zgRGt5cTnr{mC_}yIWJx)jDNc(RgLJP9EN$R_82vlUJjSP+Y%7Epw@y_0|Fm?UQYso zjWra$9*Hi01xycbQ1hry=r}}b=NU$+CnE?v_JpBDfZ21U@Vn72=lF!%^F>Vu#H~@< zqvX0-<l{DKgahAyWKtuxm<^w-2I}&!IEF~5o&v{x*tF0L#QkI*5r5QGiSeiDFUl*{ zraaY$q!lJrymgm2i6`EC=&tZ>?P-@DIsy5oSH(t$Uy%OA!(RO@lfk7fOiMl&4SY3A zhF&JioFA7$H>)=&<9G`mWRp^RK3m^TrLOlSr@6;vIJB#iEYr{|WEg^Yy%vN@kmL$A zS1L0;HNq-lwbSw%9)GCd><A#)G@(C{DU455I9{U0e$2$EwAsJzjow3NS$3vgTH9rr zV|`Ihm!qLw7e$hYZMu_FeO+2+TQJp_4B+LBf?s;?e>9NkpqgrYx1<A~a!BLN!ae0t z#PSng@{&U)g5V3Hl&yiP$+0jg8~UjZ=+n*jf9PP2j}8ES0DlwyTdqu>n*>x=J_md| z(j)));#fS^#=m&-uWl>vQp8->08ukZ7>d0QZaXI&&WOaWEt?hNe^Ol(@-TR8%@@fL z9MQCIz9h&|%>=Tw4r&zn+(`lDlZ5%2dq?jJVEcx2#ZTN-w<_8Q-oQ*65pu~v<svYn zXtoN|UF8pD1Aisa303R7a2o5ir)(HuwM>O)0urkR2V$K-7qh3~0O3Tp8P#S7$rP5N zo9YaRh-G(i#vd1<q9Rb@@bray($>smklVmGzLa*xBdo6wuB^8PBd6h4w%UpJ^eKWD zRMF(YXFU?_Dzls9)Tb$TbiSn-%%uq79pgp);$<Y?bARl$;4I^bHXZWrqng^yT*~_p zdixt#?+d3>40&)SWuDLMCFLUY=>%y54yT;pdSe<4Sly2u(gFYLgwTX~NhWXWU(1S8 z9@)#C2=duCD-_QoBibh`x&>Z(m=+|C-k18LjJoG+BDz@PE^Vnr`w`lCu*0iE)g_ZA zA=ZHH^nV8?CfdmtJ`(_f>W-GR*8(%&TH4HB-1t$<XvnrvjJLLwn7fYp*e5C|*$N6& z+XI`CsTYdf&94oT*T8CG`&ho-95skSSeZ>}09j*Rv;R$UH=7BE7pbBb4<R$-nX5M* zMZAgcoJ}uSI;P>97BgcTFeS4z>s_E9M-Mi&Zh!yq(pc{A21sC$w~4aZUy3uyNkY{M zIvA@cal`pvIeP{uYOhyQszMF@S$JUXvKrhxUAJ-O!aL_&Yy>5L^16c+Y*Vl0(eR6l zI3j#|+zQzTwR}n`i|&y>w{TJ|w_A@g-Is0v0@c<0e*}=XLzR2obBhyz7<5OpKBghj z#DAoyj43fD_c~A4)Z}|$3c$XPVt8+(g)?Z)9K_j!Qc~pG&A3RYWhW-HF?|3<Srih! zpvu4%5o*E_7-xuwyo#e<!bD`NpaYMH^B3=>CN+@5C-F)5#2>_6lqP61os9ypQj}C8 zk%bw<(^tq3R>YL;H_y!;P7Jz>7khCw1b>J+RC(V(;zan9t785%3dnamt+VTfwMO`D zXEyGUu*t;*>n8|bESptKGuom{ykkU+HEQ~;f7->70G7>$x_&wo6ImXgpmubXSp|7z zXPT@CU!_h64r!`{{zK!Jw)e-Qk<Cp3-XCjuH2vQ)`^gFqB+vrMoC12i2OMopIe%d3 zgkx-|_=Qez#sChMCUf;kdQn%*!JP){GE6k;y7a?7>LM++EBa*icKF}q0;Fr(pY|XW zO<k`|+EhqC5#E_g&_+_`)uIsnBk_TijB&U<tBYZq{jxZ^USXMBV~e9K<d?f09;QV~ ze1=!;6r$^~0<J~xRNKIq)@(F6sDBjj`W7Z&x^<dbo^Gn^K~{;cJNi-Eo`j>^9=L)( zLp0ta4PHBg<)wqL0r}#{`_Ffu+E-*Dv|$FtmVB2BSPh9Hfe3SfypH{hqc{K0KcT)c zL>1vjR$9Mgb&~mRd{#-*V^ew-o_f!YevrJDL?USviPlH2&R)>GJ<Ydq?SH!_Qj&-Q z?EOBcuZ!&IN6&U<`|QBMtx7>;EfG@F-z@N3RoR?CI*Uxfq^US3eNZrSwG1@ZWc~|- znJ{zDkvn1toCx9N?TW86lW5*BmUsrbUv^Yy+^ZnLGz~(c#HEvy!&@zVBRl^92ZMzQ zFQ%<Ajy@pu!Rd|P<RO}vn}2uMMNOx08BOUN&~Jy|;3-2`X>e%}vP#FMvIcZYG}=is zEJTPpq=KIQwS1?^C%eKUmNITPQ<k4wQDy|Cp#GU*9#`)BaI0zwZ?3Q}liRNaBGi)> z;ba{HQBn7Y0??<c-;xa1A29HUS{syWCm`nuDKe1}`%mCty!yKfXn)NC-|4l!K-|+S zkyvOqS=F)q2*6LYKVrb)O!p8Arx@eKvFQ0t<2dM;yoYog3`ybBsrUu3Rs0qWiJ2Wy z0IOu&Gi+6ln-awrsSa|<c2#RgZo-c}7;7g1CJls-7kC{hamV2y86^K_LXBoUzC&+D zzB|jAD8oE9*)$ab)PHKiRcM18x5zNOs^cwPz7O3x-IX3tm_cG5E^_yAzWBUcxR)O0 z7E_)$c%Ude38K-uo`6qUY3*P)(e}QnEK*3AN(yv7qq5I|iUhn~rzKRxz@6O)O6ZW2 z`cIdj1%_)MXCQk8guTc`_wvR8WJQm4#@1k<MZq5<t(;26p?|iDHnMcg)sycK<(!yx z8!)|3a<iT}$)0bM7Fd$ZWld%?au*e+9agJKYFb$?xHjs7Brcr!d%oSPzCi|#c8Q-j z`{05L{eX^0O-Pwgt8~7i>4JJ|!GaUj)=?J+a1UtgOS8%b>XbPaP4)N69bs=WY2eB7 zGdHT>bfx0xHh)GLYo`J2S@87(XJJ=83IPq(_iB_nfp~QFJLf36Ja>M4ST6chmJbiV zh2m44XP~iXRVbvwArB!louOh5!}wi#-Ui!{Q;IHBtH4c6iNA*!Uyi&bJ0)Rt069~* zWgu#twCEoBk-s-R!gxb_E+4JmODW^<)iNbhMgE<&xPNGI-amK{mD?M5<N7>zCDGG_ zy?9To`tyjQugIISTjlutQc~+dmxYy@H+1Pq!8nQKQG<5=vqO+L*Xx)`zuf=zkl#XU z@rCYi5kZ9F!9<?GGBwikR*!$NbS~ejsQWv{5Q81W(Mb<U4~aBTAC41(^uA*9!wK@@ z&}luHTYvc*LKe;uf@)7RH}tdz{cZ>dQSx%+SOc7!)1_c{ln1w|OFB=S>goY&yI=#< zE+vxhl!4O(Q|K!4LZ?|)5CUMGwJ5PJyr}0`p5Xx<(BZm~#QX5Q(^Fu$f=sA~J|R-Y zj34<0;8mzPML$6>$?0u3s$iKlN)9HN^xT*OLw^YkmkbN!=N!yjh5Eny4Oi9jg1r5O zOQmKTC|~g1Jl*AYTC{e0g&FEdz&eHpUI}<&%(t=(_){$S-gg1FUz&!Z(mh5gI)ZY6 z73znI6OSC8SCH*=22Ww3qBtL|_B(f8xzvrBO3?g*r(RE+apW=<m&HX}k$TTEn=K1X zXMYcG7hGoE0z2lT5!VlTfSYNPa{f`Da+iN~-NnlwN50Xrv|x2sSw<TtG%fAaR5!V( z?6M6{K5MldTwX!(gf1M>)xbQjaAp%<AS^*Hg;e7NIF&KkOgFctKMT6R>4ebPYt&|t zF_3vy#wzY*qj0%xzG;2xGZO(q<c;h7@qeX3tdbk;rMu@`e`ToHuG|v6Vpn^F(;Pxd z6H0rENWW!An~G}D06~PJnlu%2HE7IdHxh}<6um(w2+jG;v=j}$RIoP~drNS~`vr-H zR+nXBk`8q-C?aYIY~HWm^ni9!=(}Cfc5XuSWA<w&z}Pwn(asr*b5ljB7@=8*FMj}C zt=3-7i^b9#dHQC?%^7VR`VZl`JaKv+9jnb;(;k&%7PYHxEO%bs5N6zdPfOKM60$NP zXX&`<JG6pW1U{-ZR|lC5UpJGYB=noT2GEq1gsZciHsd(Ny#l>^Yx4;x{S~t@a-4*_ zBb2i&bajApZxzT6v$o7OAAFBs_<w|4hn}(KUR>aiGrDFt2xa^*nGDGNUnlL5_4%_Y z#fM|ZBg7zf=L};ZVgm;8#cb~p%T;e;V9hipiLz`Y=O6$=F*)m0ZUkbf0jXB=XDaS1 zmu$&4Gkv*`Blm5(ef#LFk>*yn`0JPBeF)F>-yV1KH@A%+e3>ph;D9=Q<A3W#r@=?D zoJN_22bp37@by5ZcE%S$&fy686<>thEoWNP9Z&{{zUFS%h3%GRm}GvqNm?W^>&r!5 z7nVC;F`uvBGBV|`GVqp^-n3Wx#1{&JGxH6Y;3?cUaO&^su4<0<h{|qLelBK&_9IJ| zLLu2P>phFdxtrPX9{^J4r+-VdL9~AtS4H^AQOIm5EpDbN<eqo}#U!%;n@AXB??IWu zFdmluQS5)MsS5PB_`yf=5T*wQOkc4utmuO<n1#w9XZU@w`xxS3E9$G`FzGkBz?$1q zo*U~5`$?VEmmzSUcAmXts0Cl06`C_mS)x?==gp)J$nNmB-ZX2e0e?jwgRhdJGyGwV zvKCJIcR_`kr)l=5k4CbJc7`}L|InuzyDrNq)_YegDhixdPXc(_dpdG`O)sX-1iWyg zGknN8U_oO&wTtG+DYP19PhPz~D*UE)fwzwh;HX2Yb=g3R@mJ~fWoz=F`!y4rsjDze zZ%;cFsZ**P^Na+U3V&!$ZO{VX4l1(18YjE5gjDO_i4!`BJvBN+bYUU1lT^^l%Xu&d z#*r^!VD)mxC-W8UDp#=#_pf>HL$p^+iF`E$@yibr0=k2@Su-Wo5vCKaD$cAHY20!1 zVX*Scch|V3fW=AuyR*B$G5|J6$W}cT5O%y-f>2aI>zWBpW`FbXT?kF}FGA&BtZvN2 zilgwZ>e6YjV_4oxLeh(7%5=!bfeNo=JrzEemMUV&ky~`n4-TkE(IVlzWaK5RMZEtI zgmpv8gNP*%iy?b6I54%wh$ohaa-ru!5f%wJ<^Th~7%Gv%?ID_f1lJ4SNIGwG+U_f^ z$y8)oi35LYk$>a3FXnWBe9L*mobU;b*H~j?v`kq(ht%qb^JWBa$z)p)ruBw2gPUg1 z>2vk3G)9ia_Zjdp5k05m=!)4RlrwT9I~=Ka@iZ{}uasd7ht8ry=lRd5xD;qE`gaXy z&^!JbV#Z-9<Q_@nv?N|%)z(j^Ae-EUaKJr7&$v!cSAUMHf<1STj`us7Wi*83(oa}R z*CJaT?{c5jNWw;tQJIFx2o2S&$L4UP*zY_3n+B$T2v@FCtfSFh#erdD*5MU~Z&bm~ zJ-f~4rIilY9aT>bcgax-W9Xv*#*gHN*tWg>qyPOX6+jJ9&B@rgk*Ol)l#3UA0hJ=J z?Vt}2$$$GqZ?rTf4P0(laJCFB8n90RciF|$%-CF;@@s8*9^5?$+<GmgVx)=Hc%cPQ z0PeS~Sjn|Q-#hhl>zfOMc9J-o@9bNFY`R7-Wt6(P7U?Oi^#THg6J4V2-B)8rK&?YC zh}bl%#X7abY6wMQUSh^HnmAF7fFEr(TZh~~1b=fb$``l6Mka?T8vC0p7Krj697i}6 zmr%He?}3c_iyY2ZGlxt;oUDtex^UTr>!G7s+{Z7Lh0?FP?%SM+&;srXMr5jLak!9Q z(q=;IgqRsP!pzo%2o0Vzx}y_=8-XGC8%EWTb6EA}{@}-HxbXEzD?M(I*Oa;w3*p62 zx_?I9Awlk)HKq#K4WMZ(cLx^VK`h{i(K}aXd1VOW%lG*ncTTJ5v)g?hQ`S<hQC!es z-U&dCHKa7$!)IpWE$DaDF^3C#zj}Irt{<H-78@7xVgnQL5OD3zilQS&{#g$G0}8$z z<^XlyaT@v}>L&zvwQOY^xEmKY%3fUEcYpQnMO11K#IXS^P5eztev@$(ULD&dupF;w zmPUDWR4dPA{OHgS@2{3o+Z2Vn&+;i)T`hDn=l^e25sMVC;*nkoRv$>Zy<9Y2uAwlR zoQCe>$dN_*!fTH<*IyLS0JsM#|A+zS+No6E52>{XxJ|2n3y}4t(c!jj`gJqZ3xCUZ zW^WtN3r9Y81BXStB<U8C57)Ktdf;iZJ~K((<Ov)_ULfU2U_e$hd&3%;^a$iyt3chL z3m_J6?=2~0?8R_B{p#O|6t<1wC$fF1#3{<Ri)+6jR9>^&nb-)gjEL)Fo&`aqy~GIP z5ebmQ!vd#Uf0#t*XA8QS(5t8o)PLGG`>=6!-dLp`#XL;`Xh(Yj#%PPd(Y{J}MTD$c zEm={<H^=TL2%^2+XRT~D4l?WlUS{EPDJxZoXNJr6^mpw4b8sS0(!qh|RASFdg;*k* z=(w=0A5b0#)SOxdW3aRBYU!)PAK69lsJ?68HlL$w+T^t;AyxfGH!_{NUVo%KhiHDO zKQW)3$%+Q`TXDgYm=1`-qfEV&7+<hF;ANxL+8_0-Hp~7A9&g97$EzP+{U``%3JOQq zLtC<v8cXBx9U8l?5Vt_Z8yMQC97=5I=x;7R(3_M}2%FoiXNcB{D~s5E#hcvyGWc#| zJvUtjhjg9Y%o4444j}@tRev+)7q~)LM>w<AO!{?B93P9m(LzD}f0HY+b!EULQ~S4i z(Jb9f*GcWXNXgHM!0%1Z)AR9Jml#s96D_wfIW!zMYT|$4z}p`@lYmr>s;|txOwdXB zs`i;J@a_Azi1~{P?x_ArnfSr467IUHg0C3xl-KGc59V?|^j!E@*ndeY^|ClUtTuK+ z_12N1cln^gFf63sm|Q)Q(0sdLL&&=@3OnIzLrlZhkD>}p#V0BGlMLoBlMnL$;sOaN zc~vxmg`TDp-m!zAsWo~QO$q;r8}Eo$e=hnOO7%;{HPD=x!mbue9A`qlw<QQycjh4* zmXY*RMt8alH?A^|0)OIT6cP<;y#;;qjca7&*}Jn30lqJ)smA7V?$%(OH+v;h2tivV zI0J^eIZ%J$mfwf+t5v#OU~{NS$2S@WyNCsLyH{u4G?<i#TJ#4>chLF4A%D0}i4B=U zBH?W!3peQ8=W){Rg$wTaj&+Vl#HA$9fGmX=Zl9B^shckCEq~0tX|b7E`#`7mZ!r^V zj3*(cyd;vrx2wQ=Cz-m*^_59wuAVe%ggbzz@x#NC+dY7o51VTrpB<iYi^7wA&cn*D zNO?-!hT&&UWZyvFmFTG~16Knt;LykULnOaas4jk}9-*I%_2|;EC+sTAXg9)lC0rl+ z$1#HE_)~b)5r082zw?A3OcocyrH`tr*iu~&Xe<@<q2z`SPSM|)!cYl53`|_Bd}3dT zSFxoH;_x>S^ak#Xl?miuoq*rMVZKxC;-5A&e*T|6oTy%%gc&7AMT?Gl0}GEoQ&@W+ zE;&tidU@ySFonB~Hx+`t>PuOyt73>sNQmTkK6`(A>VF`U#+jk(I+-um#&}oK$Go#2 z#o6mPXwalmJ^DyV)0$MZ**TA=-H7ZYGIP#APu1k6NLV~OPNK)w)t-rDkq5(qdkl#H z9SfTQewdf`E2>$#_^CQ^z2r8xiV&(vVOpFbwWypwgyv4w-OSlbj&3N9R35tj{uXPc z0Wku*iGNBQyJe{(y)!2{{I4Det;u9wo9b4ShhBI4)7cwSHo`n1-!O1UKe(BnMunbP zl|NVW67NY8MpQ?8$0Xy&LEl>z$3Z9<$h#&}z<>TCtrqbd;t@)V<{yb<dnX(F717Rd z53m*s>?$0nxvvG8G;}l|QIA+sNHNE_I>9B@B7d5|+yMskSsjjGne$;wf$bxPymWo$ ziU}L;>_9L;BhJZES_KBIPC*%>O`tgaujQ37AcZ?^`-+di4Q?@Ems9k5=TPj&MI#Pc zH`hZDq$GaDnY82{H|o4R2Wo0pR8U^?J9Z~-5}Xn0<c&g-C{H&AwZ@vDXZ37c00igJ z^nd5DyPdVL0f<48>0->SA^g27618KG2>%7)S|AN|33u&WvuFQYFma(oV`?;2AuZH; z&SP+J3ZR2F$wa8SM~!F=I88(5ij)n3X|6P2#g8L`$;pwqK3qzf_1eI#v7eaY1!gSE z2+f4L%v#ua<}HI*mYUeXee9{lG~XqE+JA@bHz6+_P<y6*no$%rh)i-E{>o8%^dS2} zogF)c;E(Wn{>l|84Y%K{x)Cpxnwh$nVe<dlH)bBy1Lk)*H%!|vqi1*|u3DJrd8;WT z<^QGOv{bvm%G%x*qyQqli?K=vB=q`;w^-Z0YFLn-Z3=VAa=(EkV&(_tc}Nj<eSf%1 zKus(ov#;u2244X9c7!=2!N6}<S0W3b>Wgp^Jr&)w6p6+^jv8@K%4{CqJ57f1z}@o` zBF|DspCdXZC&M(}dG^o6q7GxJ-N>i{fylrxDwspxy`VD_`7yUF?Q^bW>g_t9ku*g5 z#xR*&erMWU*#zU68CSfXYgH!R(tp4hO=FxQt$!_df9yfa#^%??&qE$_7r%IWbfgZ# z=IIQ2aa)#uC4o|m8n`w&zBdrjBf1$%GG8qw#J*XvMxuz}cBv(n2}zIvdS3ea9LZkc zI}0M4M>2J@_Oh~Pm@84mNnSiWg$JmVbElhZE%FdKlf%<}FZUGZDh35~`hQ)sWj9On z#8*dC==X+zYz?IF-ZfyUTB)+P^W2D3Kcq~xd8)_{@}++~EVB0mn&DyJNM-4&I#4fm zbsT<hJL_foi&ayu!}c60NDV+{tR?So91zgwXqH-KsIH#qkQ)9ATIy&(qIekN_8ZiO zlckfc=7;+a(BNCQP!nWAV}Gw+;FZZRp@Tr^htVc1lM80Q`eix)3tpvOt_B=4&baJz zq{>!ANREqM#<J6g)f0?eN$ib_aKc)1jz^>g024}97C)*}t#q&FE2X-=mkn1K^8V<4 zl)!GvZk#D{9CKOI8ZZ6yXTvf=NR9*;Lzy(;8pyCcEecqC(v2HykAKWryKC7ki_T<& zrYd;aUyfoFFfWQcdd}DLZxG{p5ie>=ks`fv{%Dc7BNRPbYB$U_=LQ*eB9MLL`)@Zc zh0~`+Oy$*MuWSM_KSq1Dz&>V|IaVJVGa;7H0}u+GSIOgTEc?*dlu@pY^+*!3$kG}5 z9kB@Yz!`4)1*>*0*?*6Jzl6xj275k+vwNn|z7*Ey5@k?gJ=;YOCR=3}=ezlT-btN= zTDBSwO4Wrz!MQlJYxx|iKN85E{DKDXHig9L#e#PjF8u6^5jjmCV!ott=38~X!8odh z^tSF%H{e2CF<dHa#CcsUI2xxEDf$2YRe_OmQjtfAKA#L#FMp4Ngkdu#ul|%RZPy!R zq%1;8OL?#tsU4VoB}hg3NK5~YzNG!~*Dyxt_hSuoinZK!eNNtAK-6L*>=p=UyoNGW zb0tVbHgeR5tdLq+yMd88JP~m=*sJWlO(s(cz{q~T6dA+!-!fB+=v06}L1-MP_#D>T zr8{@()dKJYzJFlnYE_uOBIR)sIKa@<SvGWu)oir0XCu(;Y@gWblltO6vr%b?G<NNo zp`y$10Z3x8l^oN}!#|yn%&5awGmFE+;a@%n$!&?n@VH<5JbUvo`?0f`4}OT)9CH`P zNT5;W?en`Ob_&bpj*9&rK1#nk_%&o_WDae;*rUk<cz?%B7NIX8{??|aqn~?M`+u{n zk{chh$?}sB`UVa^r6?m#>G}R_#z!9-Th3#BWT3&nPF*K23yZ=Kb+vlyCu!4$B4wc~ znyo-T%kRKwQ(hwP-REdV4{Yz;Fy<R&!@{I!^#IwpRK6wE677eWU;j{fWwdc)<Q2@s z98#S~0)K*r9uRyt&90*h8VazmgqL7!b6E)%P*UU4pY=4>{RrO55J>x0p_(CZa4OBs zmGTmr9W$LLYM&B;^lof5+BY`2k_%F^IX|3k3=j-h-H#p80srgn^AeY>FZ($mj=HOz zz9jo+LGneV3CL26(kmN%dt|RQ^I!gpZytUCynn9@QnfjDYC~fv<DI7@RL6w{Pk+O3 zk!SEURIoo$k*g~CjL<YlIRVv4oooyd*Y$8$h<5AMkr^c0sOhRW#`BDbQL!D4;|-a4 zT9$;rb2JciiA!y+nj4u-HtbC)tSKX}p17Fj-T1Pe7b1LLPbNsnM<Irxwf_ES@D}3$ zHGeo~{PbDb*9~h^;6(}=Y-!eueU3U9^i?@D_GSD^0s<7Vw#>z=WbpLh?YZAD;+%|s z?W}y%`T1lWUfy~HtwCV8i!rh%1;Pgb68wjI?4*t6YL2pVEOrW7+j`!ZId5N+R`Dp8 z9AYV{Vt9c&?be<!h*BR~>^WKP{Ndokt$%~(?O??hbT_{W_)iIyU<+e{-Z@l%Doj?Y zAYqP-3SvzrG@gN)#wtu%=DXb813nA>;G?Ij<eS`|Ig;oLYI<D#ZQ>H>h|hOE*shlh z@XW~83sq4Em9(qz&g*sbr`}yyF-fI^;z*lZm~!1-y}xd9Btq_caw*6kFf4usK7T;p zCmM@d9IDvjQJ%;H0v5zZl{s96AoZ$Q#PM$dUN%aIeZHqw|D)80%<0$^)*q?ypiaO2 z9$TUrzg^^))nZ)h6?dk^Lp4pXG6+1qW==3WD$}?549!@3%;M1Wd3a@a<Ob)K(tjG& zywc>e;%F#MHO}amBCXR7T`NMB(tmGnC@9K@w^}H@E=(&{n@mars9gPMrITYzNyyoy zOKF3+KmZ6+9;akq8RU%)pWpkzzY={Ji%YQp4PNX0aDA`zHj+STysWjdv01O2$wctG z$&P4`sXjK6UcTeK5i5FZcfDd1(@GZxFq&FZ_3^fCx)^{_4k@44N*=ab%YP{3T)G{* z`v2(@13bgDVo*cZjskT%D*%<w)E>R4W97C5oPJIPWeCdVXhR??RB7XZz{c+p^h>!d z_=+-17^`(?gMjqmB95A6I^eT9iK`}ff%MSvHZkf81$fM;IkGXM79RoCHY!cMx~2W> zSj#zgrIKBxhWq00{x|t8t$)~8oHCVbQdzdI;}6r`zo{{ub3R%#oN{WowrF<`+DraU zt<#ndKq2^8)nq2AC>wdun#YTJTW@<GD=OA6YVg|3M+@dANn$b-CPB%X)JFgW2aMNP zZ6h|A78j`LZ+bEk<4t%M=h>P1BU$<%77=-L;lSwg`D@Ut&=5qO(tk3Q@;)RhO<U(+ z@bAvrEt+&xG?b2#_Tqxpw@fByX2;Gh-q#j;Np!Coau*UdR8e$(Jtv4tlK9|WYelvc z-st2Dex-0=`w)Sem18|`3^`s&D=7fB=T4PgyuX1+t)O4aa>gr{B+G(IXXxF72$$2+ zf=p$!z!HSET|}U<Mt^^GWMe6kXxUwsaS$Lch#|5BNf(F|5ZO~)*3B76M{$rtH(X)& zI8;$@w|LS4Gt&xaf-6<vcKrIX`gzMUQq#w>sHJXnt4q}Kf{>8k`1k7PEQpidw?%HN zd+PjVbRWtHSCVpq%&aM8Yx(<Q5<B5d8q<M++(h_y2md{afq%B}5N0vFz3`%tb`n5b zyK=jio*M$r9@{c}P-y??YrIy>J3PS5@HfFLj^TFBrW=Kk-Riw@R7F;AG5xbjW9|j> z`xs?jM=O9-?TS$S8JWXXV44t3s;m&v-KFoq?<9lV*onxO-5d!6K~A+WW<QzPRZBvA z+_Sm-*gma~oqy~iF{F_!+zW=nYwL1H2mrn+J_M=CPauMNRu(bACC=(H!9Uf9aPDj` zM#&p524QYZ)F0Rq!w%bS{o1=MR-?;#-HHR&@~INN1fq-M=$YdIMcp4vR~H(5kZ9)v zUXhOR%^m~H>FickGZ;3zOxlc+OMrD~wz-4pZY+UO$$!HC_z%+hPzHXs8`Fa;hUbFS ze<3@=9gj-E)Swi-tl1Y|I7JA-;G~9YQDeJZ0Byxh3#CPYSDs;s)Rm-pw2B!^?2z8W zCWwv}#K!Wu_dB_v?n&V#-g=578uTX)?D#;-K!+#_l7t1wUAh|9??R8kY#CHuF8>16 z^$zNI0DmOEqXr)M9+apwYsM+IBEnD@qaeniV_}bE?9X8gNck4ga2<SZYV4-sYS$(O zzG6Iwf-z#0g%ORfnbhEZ$A=PW657eWt}3s8dV9&{kIDDgfxmp%L4B!JhuMIdr3YMY z?qVqYsu(B&OcrbalR&Sd3k)J#{hIW<Geu)o(|_2W$w0```qFuazer;D+G3<C$^hth z($}c01i4}baT1ok%@Z+73uAy&qa}59#?51YpS>_cd{mVDk!@+Hy(7yG7_KOBb&8mk zaF>KR3|1Ce9tg{Zr+m3%a4Q1Zi5XUsRdGi~NQ$wjqDp@IS6`k(3H-lSx;9gP1*${B z#D7Q4D5X2Vc@KypvGrJ!agY+E^{py6x@~ot-wlt-t@!IjQhl`<lEqqnLWDYz`E)v) z|2K;M|F1hB9~YIOxHzvPL~(+(y(t7gR7-Be_s5Z2<jz+Sk0+CN$N1Y{=k4*3G;@FG zNyu0wZn#Z8JtvcU(|kwVGRlu^Mv^x!v40oLmmbkLzkvh&*{r1-1A*;l)1wIR=|~8h z8bKicLMW2<<4!k{zAE(ZXN~`IGx%#JFboUJ6)2)vlr-S!w81vW+hfa%f+CqmKN0gp z=QO>XMDW+JYHiZ<Gcw69Tt70qe*eL`^oBd5xcfx*_|Pw?c>@1u5s9Q*!)5T~Mt`JA zfHlw(3RRYRHgW#r{$LiBctk-$%^@nqxSE7k8IudvJf%m2T@M&okvBWFCeeb;#&ueL z<jv_XxH0n9(315Sc`goON!PKzXOU3iC?wvz9;~MPg&<271x@E$ytRGGVY0do!&%UC z54?fbYSeJXOk)IAf`v?Yj-yDf3xA9%)>dWUPPq@qn_h7PZpyU^7Rdx%elrJ8R=6t8 zZQyD1<VR|4r%#zy6x4=ezzMhnWRyxCwWLU&V0s)BqHH%AedcTYc1N*bGv5d*M=?9| z=dp4-hBFNh?t|RW>?S*f0UDWEC*{9)ZBK;hm2f9=#z7mph6A3<y*6?4cz;WxP7q-) z0Uvq*q^M67l~X5eHO~u|e3+k=LlKF|BuaOBt$Nfe*kaN~pVkdd&)DD;EV(km=5RnO zcb8oVKdoI;j%4ynARcobyrN93dQXKQsy2S;gKFL?;cS1viv-<EWf273`yZF<70`s` zM;PJ|%D2<|A++f>WOCh*fqxU4JIg9f@K04H#B07bXsWyB-GIo!K^JrlcW61}GfbJv zn@9zhA<Tm9;3TI;pXcTr(&n70@+h|mAJ{xvR95sPA?xX6&J{pL7+W6t$8clljFuBr zUe`tILbS$C79UaPI_OQIhU)1;BUnh6ZQcYE<cxjxS!01<2}Z##Hh=xf0096-wHQ(p zy)L+ASF}yg8&PdQvds-u*6vWz)4!OUNkV~W;Upju$owJ_D=gmJh92-1YBTPzQjRQ^ zc^V+yIOwx&?bw*r%be3^S+y~yJ;`#RAQ3%IfDu0QGRys2lp@G6XF%QKMDen}_}6^q z{BR$&H%sAv*c(T@NPjK8taf-ItAzV;0^I8RO88_sxgJ{+^c|-lkXw4skR)mkKS;7e z47g#qTJ>1;P>-~X&Gy!?a8h(Yv4KqOAtgLsQ~6S3hl4f7@z19Q52Ix^+jT23B?~RQ zDIQPqa(Tu~9Dbrb*i2@xFleeGP6OiW>{x|JSRtCFRJCumaDSfx*!~*|iWfp4QUS&y zrmSAn$XyCTWR>~9UfO!!zTI4YO&5-2!8@1ua~IIdY#Akn0L6d%6%X0TgbX&3LeCZr z=P-<H1a8i*a$^=I!*0rot8FbRGsFpB@V8Jrsl0wQv(B{@S#P^RlET|PC3xDC@ekTt zzg?uEb4eZ}s(%H`a;{ymev}qahr|nwi}n2d&@PLXy-HK=H(w6YeXzzV#ruT$Z7u4A zP0?08<Q7+FtUIk4v!_qPBZRVV$Lf4{Q{^Jqw>P6+;v<)K1-3KMt@%t(hD{Rw&ylJ| z)t@hJ6*N?^ayx&xiDE-nsM^wkSEuVR8UM;3GgYJ3RDbl8I{Vdi^VETbv*_r+txrzC zzLRwDz98niIo2=;gt(~g5!|B`L<p!2IZ5{RS_;+K>%+ID$wAD{zNZ9{liqOD|C_Nb z6uE2=^W{H!7pzKH3lAUvs_`+w1A;)k7D{Ly8sOx$Bp3wA9%J0+i%!Seo!gqS2TjX0 z5~s;ggMXzG0H)d_(rR^l>_G*)0eS!M;B<eP^Fb)PB<L1={>n9SHTE`I4}LPdo!Kv1 zwC~v5mve9Pht<;ZD|F_#Vi9aTMqy#5YrfBY=Pg2g=S+jCS6^i#3!yxrvh~_ATjBq( z@x|b3*Ej^9-;vafyUIpQ<dc+-F7!rz6nJk`Vt<rUAkcn}9u77Ns7y!6jpLMNPAbM% zX?C}#?SPEKo}?=)zoB0M7+>b|z=suF+`%rwv-FL7uespb;4qMNRvJs`{UVsb<l3>R zky&PgEoS<TbBqlUb>J8<sJG0rrrVBv4sCeCRM!(sUyH3k67Qw4!o){TYfuPy>A55< z9)IvSLauTnk~U9^fb^*=?S?2PT4_*k*-ryH%j%yj_h9tg_X=Oa<()>{c)*%}Fhh`0 z6?>QaLMl%#n>JQLMC{76A5@0b0u&@WBThJAukKS6B@DW!>U&e+5<WB8kIA=k?Y2Wq z%uB2144ef)SQ-6oJ!|yIIcYWGkmJhd3V-Yc8G(_=xE|WwXaEoxJg2Pzx*4iL>~VnA zv^v%16p?<_bzOzHo+rv_xG#%jet2OV5igim{+d6Uzs+WJ$=T&4`4y~w;zX8(@|05` zc=J}g`M~tnF6Z%S%{MpRskwM3hf*KNwr~n}X#hEBu|qUTlvSVjwE3Rk!^^<N6MqV# zq<<jkK2xhJ<$0yGlT}6{c2L282=dQEMqj5o8Y$z0zVNhHOUQ=C(2{RIi^~WEo4eq3 zEEjaz%F9hN{$PfvNO#Xyk$64>9+sQG>hfi)S9JuzsQ$<-Neo$OfTDaO9`p41kn8ir z=Os+e@q2=f^4E%QDsviLqE7>IFMnHnXLemn0`FU4Qbc@(Ru>J~N-jkKp??x@I}(~X zPXEjdI*B>y;~r7&Y;N<lR2f><m)?v_5=3r&!WE<rg>-{Cl4t#;F-qkA$sN(#G_NtK zA;5t+6v>Bc)f{^S@6^^<SxpW0h;>G9D%%{1f#9bJ`vH|IqMqq_C^IHQbAJ;i;MLZ3 z!T>VRN}1oHa##(z_T28t*W<JB`ef#GV2ge$?N0YGbHI!6OOhj4sQ&K?{Fzn9nqd)_ z47xI}+lJ&fmjXx10zYypGTPGjwBDbAR;YoQEJyt7wTDfV-NEJ3S5C?L8M)}Hi);lR zb^S#!b-qoup*ff|01Q~&kAEH01y-j-P^?F2mJo3Gpfn7IiQzS^G*9`M{9KM&<iTEC zxj~_T&h-)3=S6L14lw>32=us<Pq4YVMn8^qVcA99v!>hFs)le!xC6!_c1;BAg|gGC zSgD{E>cwBB<{T{yFZRFVq7FeVy_;r&xk$T3OQ^s~iw^q}&|Ly%_<yHjfpv*c>s4&i zIe)#06#h$Os{8qMAx$KJgG+-3UB`-0=6=1f)Lxi;-I)r9BY=^V_t_{4B{-hJ+1B~( z@Jt9^^Mmz!eSe+Z<Nn2gDYTe07`1P*7~r&Yz{1c<Xo%IG*>W9`uRhtLV)`>U+ikn( z;*E!aB!%0ySiHGXEq^becI!aLAjtLYFlMBMLP2Q6n5ZrRKW%7GKH<e;pxx$Y_Zmkn zo{6313kA#{LZ8FwU*qM5X)c_%lrT{u3ZB_0B}*AYQZiU-K&nPg<2FOJg{_=2pg(%| zEp*(04+y0I54?NGbWz(Wbv(q?0)Cev@%??n5&DIMwq~w`r++wi%11f=k-PS#>v&1Z z&KXZgn8`^pBA|4f*rAV&++_=wB-^q60<pKG9=KC-@iD}l#%vglAX=W2BJX}9mf2@X zQ{uc@(rF5xqutfU5HYW2S`)oK%2^wg1=7w8zoz}9?VyMsmQ}w6BBdI%=DW9<uEQTn ze$r<$3Uzu@s(*{6a*)IQy9D7`Y~IDz<JK3_$i3KhSv~DcRY!t+1N5`Y)twO4LG51j z5&a%Dp%ZGKsNPwu23Pw%<P0hw8Tu$>4QaV=o-KjMHt9Zdj93zsLyMd}^zgDTO0SnB zQ9BwcHk56-466MSvVtx&pAki1vl?eqW(-f2Ovg(1U4P%!MQPK4eE;?8<yQK^6eRm; z6*$)cOoM6wi=wP*1lqzBp0eM^ue`%UQ;%0o8DhG~n2C~S;^a{!l*_o}Nr1pBq@ph? zH)O!??W#XZDQ7(m%yR$sV|PCr3_4}&4WTq%k}`(%+uWlExh=-ev2TBiAma^~q?cQF zX(YKS<$n$n3gBHK62OE$TE|3DT_-fh#amE134=_(HAvxB*|v;i|4RrGA1IuNo8erm z%VhMP!FwT~KlVp#ik;<R8j&Tr6t<KEB;D6EW&<I_MF1s|e>m=3#pTJiZKmwN!@6~5 zw|c|4_`_Qyz~LK@=U93cICfc?4;}$=+C6Aq*niT}--slycG^=ibzT}+@8(%+F~n=a zY-%cI$lQOPCn~t00RV$s(UZ&nqK%;Yo%4EB*_CFM7OhPR^IcT+Omaoz=x2w+dY7|( zhH#xOU9ISd=v^_^WPR!}6v(un2<D6gmLH5sJ}y8e6zAmD$;0!JPVv%d;tfa8Go^?3 z`+tFE#i17tlhBoH^(gdjq{Q+?6kXwGYHsp#?VPij&|-aobQ|%=NCSH+Xv9oFGc=!9 zX(UJx8SUcrkp$L(zcfptS^ihLZnDEG9njMjEw7NLIR@@4OED;4k8vXZC0Aw!v{9>7 z%u7-;EXnWO+Qdj7n3>IAJz%oS@vd>aDt{;M)Vj(ufmS8IIu((?U#x2R;&#s#+!h53 zF#;AZkWnwNR5gv6EH-opr}W!mr?vId-9>80)_&>vO37Q|rG5cbT80ILgZ_{dCbC$9 z_IYW>0QjC@+|B3x=PpSTWf}k6AXAxkNvN)cnof`X=vU9Q*py%WEq@x@Q&mtN>wir1 z;{2In(EtrOLkI#4A@<N4Ad!gd2ey3A=~$Un2H49ZDc^bl+{#{b3y@$M*(+5a`kGMn zbD&qcr9zGzlB$5<LemrJ+V)~Y=ed5K$Q;ZH<6bjd@dXR-$lJeSR{yHl0xBBA%!(PH zE2^m2)2YW~qo_^jUCZ(9<mq(PJ%50Sf~q_BL$^1P$dg5tiRhyoWYQygHMo^=dU6(* zDkvK=g^UxRxG|hY%xV0Z1Ec>IKS2ippf_vC2ru@)nnfR;7Gjq_KQU909B#S!vLYN< zDGVc2U&56!<3gN@8Ne2GO$w>CcZ?!wyl;6jE(;NQ2CDjj?TO3!s;UQjKYs|mp$^8o z6BVeD>yE%5szhK*%IvPuluhyY+7tqXf<$0wA(e3OW9j(oIV^YC(g>!gK!^7G&+j9i zN=@aOuQM~x(C>r&%|aZsfq^m(cnKgTSNr;+glgGPsCQ)@3jB9BtKv!4w->LF2q2j- zX#LsGrQJ7_yGE}NudH`@bALWwlg-d%(+0@)AC`p!G|i`TG()G_+G)Uar+_;~P`J{d zm+LyEg&dpwF!38*hVvKg9^OmXhXet*<alE99XplsE%fP)jOEw#n5F(8FEGtaR7daX zJYXiH#T`k^M}f9&TC=N+;a?Vcuib{|PvbJQAGZe&kf(-Nw!z<vEq^(_s$5J5s8X=d z0Eq{f`eOXW^4Oz^%ehK>Y^xFhO@mcH9rM7YBIOLM8305kOumzRPcOWm>!PvM*C1b* zt<eSe)!%0QMWuMbL^@{-x%nzt%;(%PjxvoUVz-1`vTj4HPwok3il@X>;Q|$MH}4n- zd-hj_jcSvFy%z=xOn;Bs$5A|4W<My)ktN$q_8otw&Jid)OQsHKvTQANBuAXp#!U$z zb=PvF47?W0eJ(1TXp2uOW5mpEXTQ)kpFuG-i8<yP{j}>HY`XK?AB0|a9W#=S#;MMW zOo4wvSa`u~<*_un!c8NU63;pF_bz%l%A=QQ{OlY+v^68oCx4lll<e`Z=mQ}78&hJ4 zxG7e%_=k9i2guEzom7UKOP8E^Q%^{P^P|d9IO7a;5Uv>>wN8i~q&B^j!cv00qP$_e z;v>Z=Hu^K4k+=oo#5QqfUAPE4WkeUDz9%0dkdPYrta8c-9ZI<AZ0oN|q4}<W;ae6y zq7|g900h0CPJiU5f$`$Mp?k7P?EmgMMSBsUybmgO5AHh0Kr9oM=yXu-G3IDm#`TfE z()`nV9f4&@-W*)|%VAvue7sZwZpW9DQIs{oDj~72LQU4r=0m+r>L(6ua_Jjy>1jM$ zMB)*0@Xh~_G6PnFj>=g*s|xF`6?g^6EN$S-s#4lw$A4_u=hq=Hu6m|I7~(xBFl&Z{ z(1WZYI4U?e7PwWI(n6|N_4FMN0*u&x2tA#WYYip?6$<~DYar#VeI=XDKrXgPBsXN6 z`(WLG)o2`}>pFr{Cc7alZTT4U5UKwa?bKSW5@rJ0VbN1%#>nP^nqLv9Nf#yXZv7Mq z+J2zE_<s@^&GhUMDdS$gkPzpE_pSU$YPQ{x;B+7SvVG4Igha%_8jxH6y4BQ#`$d1R zh}eHYtH%fY&49{~*B`9W>zLYT<VZ|WkQ_oZm%jV9fKok31Zo~|Iw5KC_(A-}ADB(M zw?XU9yh#VWr7vS(iB>|5ATsLQ1IpavsbK=_z<*^C^5dSj$AW=m0gOc@2y&A|@g-kd zQ8N5|_OH6&t~p|>$%HA0ZHMb|Z31GgtJ9%jgO%l=J#kz%1REQw6C4Pj34Ye28stz? zQH89a%eXr{4ue4$0G#WzmfKb@f<+^msb~IVkQZuz;e-?1l~)owuDM!88FVfTt6am( znSU4!Ko3Unjz+lfsY&mK%gfZsv57;;_|7M8(B4zwu@F<=|C}4KvqR6$MK|kl1DL1T zTQ8xowYCxMYrHBTqjlildSzB!G?d7Fe;=>RbyL^#<c4X*N8h@jZUH5iUl88O&a$%w z5(m|X!J7Y9kh<nWO;_3VRMVp{%m2b-xqpdoc~L1?e9|jIhXF?-xZSv+@XJDZZi)h8 zkF86H{;DOs`G%X?HqSx8J!o6r@t=Jm`h?A7M34xlZ*T55I*{Opy>1BUorxr%uDA({ zH37kUKA@RpXn;unlB~glF$8Q5S8kC+uIzU~O)UGbO^o+&=#{=t+u(y$-Mw4CP)0PU zgBpJ|zQ14pV{M@t0?ni7k44k^0dNb`qDq)%4#(cIfW6st20NZo@S?_*Qj`svb6M9r zUui1KIZ`cJ&R2^PZUt~XFm9-mT-K&X?>t@h!jXKOF;CXGsyjhQ_t3qBo(vv`aySmT zTRyB2;Ho9-3|f_DJ7#zduk}GK<<0j)n6rOfm4zOWS(_R(1%n83+`3vp_vDbray3OY z)J|1zNZh69vsj&N#wr=-ou|5_B$${pyFag+M~5E&pvbt*cGzrMhOGoKWH4L(Ws&Oa zilQFPz`%b^Y3F#8FIg=uC;K`Glv(jZhkGFRx+VfEhpt`5bTt7$NY5SRh&4v6>1BWE zKCFdK{5QE?@<!@0RM>j-1+FCnHtVXNix8gdKivfT;yld64NAWg)b&f$Czep|v01Nf zQ%;gT)biqZ!=n1^I-ObhkWhn2CGD5*$SE0bKkChg4Ew8V>6SN?frc|HR2b=Q#CgT$ zMt3QSOMTQO52FXA4_XZ#!V$T9NlAZ-Roa7NP48@`6dz5EM!;e)PFQr#4(gEcSTLlr zB{6Q#_(nWx+P~5<fvv=L+al$a*-ArzC2R|*o&pCJAE@P9hVR&u{__gXe8~KH!eM;9 zYWZ$x;$m^RNpw3AwaW*o8C;IDd|D<rQ?<cbQNofW%Ip9&TB>ShS8zcD@6ms=`h3E$ znzKiv6y!ayAC+eErJV_%m`6BLjmWmaG=4@tzKO-ZnhtS#?U7-^QL6?+fN}uhMT(^A z`mvk#x?A-%B_62V*QIxKYz>TaC(j|@4nO6Ltyuc-%i94Wg192D7!Ys(H%D3SrW+%D zA2(aIX5vJemmy1Nt-(n^)1`km>7*ItdHVX-VLq>^3nfipppAb3i}wl@%-v&-@CI4% zM8>4ZEtGo<)4L?8I+_wrC{Z@*>#NJ6foN6yqQm8O;(PjGW(fU5w;ZKp_3SbbI1g$e z63UCHAtKjK_slF+D^NNZc8#_F`uku~W~*!yl-stc$cV<bF%YV`@C<(-kZ4>hh$t^K zk#`>PQNMa1VNqIrL`u{tawB|`ORlmK*SozzNJ3T{JtV#9_~*_3t*PWHh)Q3-&l@Pc z?qV`Z!--gRwhiQU*>u6K;P=qs`T6;kk5QG@InK6_V9fBW?1Ia1xns&BE7jl=wL~;! zA56vdZRl-Wn&o_r9}RyWXv34u<&FUhasrzfcNh!JgGjkm{YowEBm<p<nS3C?%99HU z7z9g=>47HVd=~+_2Ia<=P00XFS6tv$V|gAT$M7Hc77o0XbyicFXBI$Y0WSERM%=-s z$}5xB?nQEavNoIjod;x?C|_4CZ|0*>kAmTHc))BQJ^Nrj>JoqZ7oc%}i5Gci^=U40 zYX&;kCL}XeR!yGI=mB)HbPBsq6#f@znJgm(Tr&7|Lu2N_ypu2HJH|%ZPnch_T-{w7 zcC1Xgh*EMKnrJ2`MP6?$UAK($+x3)4Tt3ipv~CYcS{pMxF~Mp!H^F=UYTTkQQ`aD% zu?D!#_FC)#h2ej~huKc&#REk7wKH`9j@AlqMzdI@&47)1_ZO<RGOf2|#B=x1$XMY= z<HEVO!`$ICszk>zeuGd#F|V)59ENasQl~moQU>{ugT7!d&Q3ILd#zC-j1!ehlNefB z+&hSKB8|~7^Qqmc6u>-2_{ScK&+ylnS$-7M*$OU5-qL?p+<j9KI6G*Dy!%PcKa1Zq z>I7k&=VO@L)v_R)j&Hq`AYA4wo)GmX!Tt-Aj!~Bee>n*dRF)TSPG~jRwFc^0C`}To zdUS3YjC@wFPG+=|%8FBrP**j^0xP?{=B(-Z?obIUpW!^8bg<*RdSAMboRqFnDY!JT z1P%bk49$Nbz7h2Qd%Sba#PxVD2MswHlnvv2;_gI#U#yWeLV9I(?lYU;TxY<JkocGS zXi2a{WV36IIoWI!`Xu<~6aIVEEj5Mcg&l+TX_!B;Ji3;2*0BN99Ftp|dKl8&e1+>p zM_8zBGaf`VxMR$g%qV#18=EDH4GlxLBL0McE53hA9CU03_!4|0>0_c}x*ZD<GfDD% zisKA}d0s7q=w194T0ezG5@oQvj8A1VCG=Rl3qIe(eny6+^v~))HNapJGI?)orR`pg zXq$o6&v%F;6;<G&1wA#EIr3b#9CU&>NAuijyJmvkhhgcwS|1Q6EOV~H3Or^GY(GLA z@(h3A)&S(l?FE^2s@Y~%dBR`fT@RI?l#$|;4mEd)RyU`@G4y!6!d7&|>f}#20q<vk ziUtq2UFz7Sd*li8D`&?ET^<JsmiU~h{|gnLy<AGfzzHpWSDzYiW|#4=y9a@Z)v(WN zedrzyI5%t0CQ-K_mYt{`{#N9|aDXdjY)XHu<+LQ@vzq$?Zw}AN)K+r8O~-uigiGwR zWd8YC#XVxyZAN#LWbib~R7b{1egi8iOvRzhsq-i)hGT=y5&qVSCy(Es8z|Zt2E5t! zu>Xqz#qAseM2*zPLcCnRC<OG9l0m+-iOL^=lBrFp7V~nx(609Q&DwR+`5~SY9O{3> zlBYrR<pkQ`Im@DH#1mSyhH}zE3a(X-VM7KuoePrT7kzHfJ65JeKC(W9V_;Qr(z!Y1 zKb^mT+{3#PT0ecFozHWBtL_XJlpnQ5>CBYQ4siHBo$@qd%N<H97Rx>Fu?<N}R1zVr zTv*kX@7W;5jX?Y}y^5xc*~pLWK>~lu$S=#-P3zS9F#zxcKr*+F1H^>aNK1|Wyx^&r z`@o6m!=sRPKk$50PJZzw`YK4f%c1A}$vPh717=Ua+CZjzAALeH9Crcu|FYCy!DY*V z{g`GP+v)P(jD^0DIG}-aWd1jUUMkRA|2i1ZZtpTt{5QNoesm*R%K!OTTYP_C_KjIp zk?`utn-W*lX&7f1rvO*ocd@^&mgF^Vl(zYPo8_75IXUV5xH)>xMM{55H^KvY4fXGS zvf)?R<!Kyi)hXjjoPm4eN;NjksIkO%l_KB-0tM{pqvX(0JEGL<fmC(KwonP|n~3sy z0XEohDHna=5P)uA0~tTl-d}%MfY$&;^zAiE`D}}bP9_UpQr%1p`CqTTAZ+vv$Q2wL zS%&h!4I@^-u_RSEWaT)TEWrnR8h_ZR`MDI98B0I<8ZU<m;)3yd4f%=KO<G%^**+oW z2Tv`TpDH3lqd~Wy(mJmf1x7T_AdU&>&;J+CD*4{Q%5|O$A1lvkQ38J#0~--Jkx7_f z@j)e67~fYF7_|y8n5L#upti$D>j(T99mPABc*7OFe}Kx#&WK!eu3~hZV-w=FiwWuz z8lmqN5l1_rj&#jhM3;;Na?32z#wus%O)K$QEtJo%nx&X+FCITs+nAa_oZ1~A8kosq zz4G9tVJK3a0skI4HR*r5Pnt}OEUk-POQ8+mYLAUK0XuwRcP28)Lz=OU)5`(La3Y`m zW1j#8dJV0hH^+_$qPsSK%fc`cm=DgC!8dUzM$m=RQF180V{$_CNA?m1@2Z&l<)-3| zw#pV^BsV?GKHw9Gh;)19Y6*m5QLyku2X64Iv*^J(Waw<zYu10(ZR~rm%;)pHFv=Dd z!lXY7gmf%>Mp$8#wZ@mCkJ>n;$n9dWT%o$BbI5laUd2iTN|W0o*tW<cy$+ps?xMY) zH8)w=istsY5T;|peZ|@?P`w}o$<J#xRe>6-1r2A%lSF%}=7C9sP>|bsW~jQD3Y;Z$ z)-3y)C8&{fvGjlM+2yc%27oC6m>Ba%f!ZW7#`4M)DbG^i5C#$GagC;X36g?yg+JnQ zzrraRa%WcX_Cnpy>xc~jMM(YOGQ|E0F>~P%F&0%zOOUd7qgA-{TDB`xUhxcIO$dkP z094gZbKY3G!ivX*b@eM+epsxbgHrmTas{Q3nk40FS?Yi0ooS*=Y9ss;F;Z?2Elxl| zIt+64q8~u+nL{;rJ~!{wlpx_2E^vh^=pYwCJsHo$<Y1!#UnN{GtFZPdX6P4jVNzin znY`}`?97*1y^CzFSceLd>Tc~DU-$)>G;bk?@%rWUiq@Jr9lh_an~V3rHFBrUA8y!v z8NFza)!=_U*I+o1eMSO@t09-}<FWPD(&~yrJ>6KMRW$i~ZUUNaai{&&&Y>C@NCB)w zloD732IF>lMrZsYnU(>ah!Ent;>w>opcogs^A>HPiGmzEn@ejJ^Xf+&)O51;H$J;- zA<^T3N^C0!q3!_kegESIjQjX&*;VQOAgOfm$moB8vsc?orX|L@L6HFt&LdwYzU}{O zGl@A{O0vD5*19?Xy6l@=$1eHxQ+O~*d#}u?Dp!>b($7vn#zzdaK;9w=hb_{7y~i~P zo_7ujd07K6xj}iIqR|umK`f%!^MF3K9>3<!cn}osgD@wLARqltZ<@sNRT)I$Tj5Zh z@#ueM5=xb@YcbE*$B5~M6-$xB#hS>ewwIC?Q}u`)S!@8Lr~Q&}eBi(6SCRB3M(WjK z+KFVxp}(6P$Pjdpfpt@9E}#USKTvpE^|pKR5?$l4Hz@t<J=V}lk9qt$V?e~44ga-s zPQopk<{(GS2NUMEb$y5hHT!W0nZhF$n)!dyH7kF*<19xJmW;@}ed4BDKVf!0`bXNp zR5wpEz`+ha72e|9ZULk6RGBh}fUTbRxk5q<+5*Q_!1RAUc>Fz;Lf^e|zg04(nQ$rZ zOs1^qL_f-!bk?lyNj)}0_!lC<dxEr+kocW>pyc#Nx8&i(__}AwRh&jKQp`u{;6Z=7 zN6)j^HrHZ6+V_M7?BOn<%^RSj->hDe$VM&1bS6;0ak==$O^2Ftt*AE~&_m^$&4oGe z<OimV$c+obVnaRzkvcZpbV|?~Kab*~_9%&CMKt<VKk5yeZ&2eA>j2nBP(D&PS2^R9 zEHawG)kXojmkI5Yi*sD60L^D0Gg*IG?bp^920$zX*SeBae`5rL4sYlc!tk0lg6$Gq z6qd`!r)6*h&eV{J(y<8_b%~2x=K#2XcKdPcQLpqZ6~5M=h-C}j5Epf7h)E|wYzwIM z8S~1iiDkkVG5!Lq{Hx`wNHZVzd5P7DdT)_v2HN&)C^fa)-ZRz0>0uK<@XLQqe2=l0 zZf3p0y!450XkMiw?u(MCQwLm!S5)+eZEk!Ujj_c3>ZW9_=4SD1KbRP2oQ5`IF4gb@ zvfiE5aj)v5p7=xlb&Vl;I%x_mY)^FfCn<o=HzeA|OCYSww#-s*S7AW880;-n!JoV4 z5YJ$LMkyEvb(AvnDz&Z35juaR)S1f=!})f*5+O1;-83Hesb-FWdQS|k17Rm&IY(RS zJTeM|x}5s%0w+)!CnQkKtI<U)q2=W!yIiG=wii8|kvZzH8ZB|lg81`(YR4Zhv7a3^ z`DMz_G&-(>xp5B0W9%2DKC9K3`E#Ag)dHVue>phg{X9`Ne;YK43<-asOyrm}b1a3( zUztT2f`*NnEPQ4;iJGSdbxTMz<J|njZ9>y+3cf$Ioe^aj`tp%*dmn#0qKMZw<$B5v zuooHcHljWHA=)@TBA(1;?LEui1H4d7aYmZ$tFOc&fQ?xX`r`xboRDRa)MSIJDU%8b zzj!1gL}p`PjSO^D>iU1anmb9}CKLKlWC#g}s?#{m2lNB*`cZF6C&od*{@BzT1Tmf7 zD^7TVlst>^(O|X41O*-fk#-B<Wu&F$gJfpGUJpGv-VIXWJ@hUD1vwP%XqW`2fCQEh zS<7t}pB4NK!y`gSe@h8u->~*0GS&(PWsh)?&V>YbYNtTX8*zWHMejHiQ@TScH;*d* zg60xkpWeQdW0WwnFCYYSs@>ZLutn9UkHXIbr0heMUwz+FRr*XPobiYTdGt6fJK(x$ z6nlnS)Z~OJliIe>+*V3TLV&P+y-&(dtInK|5a9mpp3or8Cqa(pb%B&zIK?US4A|`a z+u&=s`$=+m^dEo4P5kRfXkxPnYV!FLM+x3tx|0bF=MSGg-q!|`em>8d7!i2Eo=o2W zN-#!<#P*H?9ldC$X;N#zC4+wr*RUe#sB}S2tynp!15$$hvf%K^4N8CMi;lxvQVK|L z_&|5qK0#3b+g<R9zJ;uGl&j;Kcb^eYf7XV&LLg}49Cv?>n7DVnQ|B+tt!O*#v|ABL z;{KI?yk%aUC1m4Pyo(*d*5Q9WN6F>x0&HmuN0H%FJjI%_5l7Q?+~%C}0d3Z?hk^{& z4R8KdH7E>Wjg!lPdxYLX&EsBDGKwMsMbMm$j8(-IMAy=wHTR-aP|vg!qmbXY!}l`_ z4{=&7vwVO0W!17GvN;<%0GT+np<8*Voz=!n*<BIJ$$gKcRsl(B<^A81aM&^K@Zd{8 zn8z_AzPjX>h=|xx1v%2fS6<h-RD3@3I&#sT9%Ze+nWzs=G`JNWkyTPF(}dK{+itpJ zqrVx>o*>@$GRzNO9%SH5A#QJeqAL$q?rib->F<Aa@LvQs<bGQ@=3tgtp7|n)f@PDB zze9;~crCkI+T0G_BoSUC80dvO@aG)`tKwnLET{F-RX7qCJ|;O{(l4G4nx9ZX*8jn4 zRjezezrr!(KW~Ds23$E*jm&;AFQiiCzXjb9k?Mj%QnoC`0ljz{fp=Plj}ss8JV$&w zhgyGHI&x2b1b>-I5J0E~1p%M^Dtl2JLyrK2%M`HFU(5n^(SU><?P`;%*~I6k-7J$M zSaWmn)5x=xH-v%qCq#Gx=X0!4msW`(A-1<J<+V-X<`OR?<_t_T;+G)CE3ES}epzO@ zo=~n@eC6CSDF@|v#K(RD9yJCmoQ9P1r{aIF1~~1NCtyJ!$dVccR}J#Guqns8xW8@5 z1sNsFUqarAN9226<5dO7AD=8SPFHiv6|Q90D;~y$-0=Qucx1l{r%K`IO?|_Sz<9DC zS2QNZ%P>hB-Dsf?s|zujj^4Cu!$fWi=@(ieO{b?h#^-rGE7zb%dNos!kBHYIDrkRd zQuQ@$9_>#N_`M5stZ;Ap#YY6eDr?|s=p3>12)47N8U`Cq3D%6TsJ=@!qFEKr1GGg5 z^s_^OI9dblVvcO(5XhGYn@&f6Inq{DaBXOo_Uq8U3;jJVMOdP558@072^90RGDW5a z1T5B4i6Qk_%r*!UBJdIvP;|Y-e{z3L;p{tmyjo4+ut!9MOyg>59qVX(K~#1w;Aiab zte?+MY*OhMoM*eoDvsT7mLj`~;pWXFpDLb%ljcvz+0?L&#&4lpDYix3iHdE&W;kO+ z)OGYv#sv>@G%j{JTKMMKX2xh}mWEY^IK45|t>yTXqUZFJ8;BRUVwILW5%z!JDmcJJ zOpQvM!&auWTF7PYwzK-$c&)B*-33yT?Hp2yT6c|@cLPKkdm6`jPnHuA*Lc`2Dn0s} z32{CR^@Ui3Z7%lzKsKCdtTX++Zuk#MO76?~!D>hfQ=nN<%GO8g&XJBH=8)%Gk0TGR z%mDi*Pn(Fx`bQnC4~|cXSxSG_(1Aqc%|yfPRDm1(;0%f>F2pfY5f9Rh_;xfnEu#6u zh!q6xaYP_<8H@U#Vdgg;ztLs_dR;p|)LME13A{D<vfLBfV<1`>C9`)P3osR$J{WAl z38-w_LmhXxkNZa(qZM6K<;!`@n%uUsFO|r!x>!8)eaCp5P|WtaOx1tHSV$`7sy?|3 zZeUE1m{4!aQnqjw=3z9_b%o{d))GuYKc9+>ow(*D`sF(CwVd>))zlMIVRh(%nq&-z z-p;Bug#eclKd%SgQU=R-a<IhkA_HnyKI~nM(x16fkWxb9uIM9=Ef31w4Z4Js85U%; zp`-kLAVzjbMwqe&D71fMzS^Cg%+RP=FVaX0zE{#$>J6a*SS$+MR$emT>o5Vo%-X8C zk`!c+mJK~3m7ql-W=UIGD-_yy)gS8xUcS^;OrJGpOV2f^Hl8a~5}!LW(G{9xrPI(J z&wM|;EJolW9JDUj+Q;}J499Zp1s+-nicOG=*}PlTC$ltRG6;Wi4?W+oSYW2Dk&^&G z<o5o!7Ij9rheFyf{KM7?|G<_4Gf(;>@Fl>M2>GmX$_O1wxan-`uS%i$u7KfN7CxdC zq^tl0y`N6xr-AX}zn_Z@4XVJlANp|H5k2pwKGLNq5ZFc+&e1eSq;`oN+PExkD~y!z zMa<rQf3YM7Ho<?%q3HIu(5aXez@XzZ2Z?P{okYLR+jy*ukf|e!j<fG3_fGIj!E=MO z=5)*$QtLPqQ!TUXnWnH0xsT53{d=<2^NRKnmp94;u^j<_7;n_7;2a18FM@vq2N+|? zl@as0KxYcG0~Bk%O(Pl+e{57wHYEW4sZP6Wueo^ep>cm0b~6#N4<{SK=ln&4gTnDV zOGp)Qk2ll5(;G|yUEPgr*wdD<S>$B8k7q8UBH>R##<}bt_9c3l>K2P<ttp<KBf%JD z6C)n6$6z2t^d?`ODO~~v>%X@rGB>PUn7k%A*!s%~dd47c)`rXD-HT?BNE%Gsu?mQH zIJFyP5ek1Hg9R`Ko#y^#ym?mQ2~wGCo^FN!oN|$0?^v+Ru)O!=gTpA*sU=nXnw^HS z*!25@Orae8&x;bGP?aFf{IvEOv4%m%hY=1=x6Z1<{SSCuVpwNoefU>A5Gmj|rs<Ds zrm(o-@9BAD?hva(M>%f3#ehcM5pw^{f<6zrI`)6<lZHj$OJPHwiNugDEZB@aLoLr{ zP#XxEV;2x-5EBnBOMcUwG(aNUaU<dOB>c&b^5uS{=Ae<Am9Vo)&Q?wK$p&vKiL7k( zs6vIcT{m>OC`aWaT~o8WKU@?rY$m&(DDOC;Jm{m!DNhDKNOgj(cS*7+fke1k3kR}O z$C-b=W6f9=JtD=BfZK=3;s!3?V(yKjIeF=1q}HQ2#ick-2~^cDjb3&I>CWqZhzo`5 zj2QX;spC{Ygg81}xS=A@<}SL?G9XJzTol~0HJa7JmLPVNi%@ajBgW-P!E4C%0$q7) znj}AFD2#NPGfIq0N|5XF-DMpMR|G$sj!J(m&;-MwAt5g=DB1kyaz}LXj^*A1Wy>Gc z&<>u44KsZ3Yj5(KhN!XW;r3j#%bNvYNG8Wg=&O=NTeI(QCdqV$%p>%cStv;vvkp<W zA-^gJZvj0X&vSP!qdG7FQ<nj6-c8oWYk<xmBP2GQ43Ess>M+6)8>H=Yt{Z#R5*>e6 z_)Ow;{@=@Pw!C7{BD4!6Nj)QFTy2C@MFRcF^u?-NKIM?65}7ate?&r2;YN~DlJ+*P z$+D+7jEtvii{WN#R1pYewH*swbXid>7o=i6@c^gwvZVj0OW<kCsOQJd!489#V#9xJ z!2k?i&!YrWBOY4S#=?UpLVAfx;mLm^gjK0eBgoCo06Cl@Y^)|SJL4m+xfcWnwOFnP zm}S+_SQOPj7KO2vhR{gex+7O!E<h}ziD|;3rd(~-w%mA;$THqE__g8_wlE=ZEw4di z4SBNl1jtw#3^VF<yFqG<9tFHJv?S6>;DkEGxj(%$;7*AQi@U{4v>Dlb>&<@@Vt@px z-!45M`KqU4NFYx*l5Ay8PauZ~Z!$y5rXZ1`wxN5^I#vNwzIP828Ql98R<=XntG9Ex zUm!E5l>iHnb1+PA%^Kmw)iF79OTR*!dj(dTdWewrnh0nmHOkM|nELcGFuY9%kDaVE zd#exH(}rhVzN=TlG@mK>X)J$p3;BuUvg12}76ZSuQVSi3&Y-Txpo|WnmZKDKt-qce zy$}Ff``mOrmvciG6@JAflWNti|DsWPyiDa;&Klt_e*x@^3*@m&w=NSYVx%OvjaHFv zWOr0%ts=dg@Y>>w?2MlTy|zX(jx$ZqerXP9BKK2m{HS+-6Pz#ThlhU;3sWrw#nXj$ zbrBk3Zz20QBSp<XWL$h(CDDxH^t>APIT1N9h>Q3bA2mtF@;JID9S{o`r#JBok7u%7 zJ>E4;p>xq)i7KxZT=_t9JBW;EBx`hEGR%OunniaFp@)1XVx6Z5>_RsPnS`dBP?9rB z9k_~Jn;!y0l!|gQg|dGdD=uB}MWO?VS@N2Einm}#&*j&Ze$@k2Sbqd(wj8%5XVe`# z?^;|W360p8L)NmEMT~kRr5(p)&(dK^g9oDEE1F#RbwbZW2U2PF<*4dUmT<$(V~V8f z1XzZ2jMCW+q~>vGTKbVLZHy{FB41k|a>dwK5frYR)FmLIt;K%|&zjXiq5?WZvEVJg za}KRDPRCdBzmbdf;_v!#&8<4@UUSfGl~5J<@L`%r`d3im<C-=+iJ^T%{#oXPOH?U6 ziK40Sby3~%R$66!;!aO%Urr(0*Y&|Sd`qpO<_#C9v?}dUuyBst-QvxHh2ZX)oEU4W zw5Cf;t;v8j9BzO7d>PJosy>n_lwsv;7SUi`PU_$L|Cc>SN*uPELk5LKFf5s~Z{e}= zmosRMxQW#~TW}20#<zvolBj@H@uPQlf57n(PB6=nhba;M2mcDkG#e*nbGm7!30EF6 z8^3k7^YEo}zD6+XDGhfhYbl#Bcqyicyl2H$Ldi;NGbw+^p2N>(4<r-q!K)X_-^sMY zzN1sI0aW29$3g<)DQG=Q{@VoF8Cs*GzkmKj<}IMq>AxZi>`dt^eosJ6+AT}gIk?(@ zVh(SWJ7XCCvVDi5)$m3yc{UnX=Fp~s#b}SM1mgk%ul-VrVp_VRBpwRolM(|bizS<& zmHG7@l8S#;0x@1Tf24_B5+xb)+UQxZkyhu2B4gtJMc|AAEwZ3<=C<&caP~IOES$q% zucWpP`t$e#i?&mo4;#=1Ur+-_dnO6J%s217#viD6zGx`fdP#8CEPNMT5X}i$Yz;<P zyS;K_IjHa6Fs(m|7(vA9E_pmdj_0bxdF87OM(=+SoZW4X)NI9oA*La*b6N-ujh+MQ z+Rz9Gq+uBlnplRxS?+`^<=Ti+;1z^Y34T$-Nz2?I6W>pKWcF{V9IdHPyJxl>{2oxV zjg<Zs0#N4pte2w(`mW%GDmygiPlQTdGj;7OM^z60h52CP9vUi8Vpe%oJz%hk+%%Gf zQ{I0{p_7#j%F7w4(E8RH!^Q}#29DUPaSK8l{g=+WaZd((SbzmO?o5B*_Z80`hAMIE zT4dtj6F&yD&Xwy}%+y~zd%)An)LTAGCa=V^0cW7<e7;7R+R<==L2wPgJ|5DCp8;K! zq{)JGd;`{Rwgqdo)4Wi-ctbO6$`>q8CdhyNDC?>ZaR3XtzgbXR*EYkTk_l4eRqz); z9DW1_k=>s?u<W0?BZX*W?kG{TXHmE#9~c@gqZA=D3(lR5JJRZ&skkm=^7JtG?`FT8 zo2|buLn8~H8?B~L-V~>ck0goMjtRI&Hzw{Md9|t5pwQzJYXMsU#Hl}o+L8|b?4MEu zIRc5XI<#C<iao|17@!BaRo<^pC1RIht&k|+9rPpvQBaZo89w*3#Y{uX$c7|bxUw)$ g5Wi)cet${253$z1N|leb95P);j9=ZB<SQImm`|ChA^-pY delta 22947 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 From 948c056ba1c445d9a49a70cd23f80270b992538e Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 16 Jul 2026 12:40:51 +0530 Subject: [PATCH 24/38] docs(oauth-server): remove stray diagram PNGs --- .../dark/diagram-authorization.png | Bin 101140 -> 0 bytes .../oauth-server/diagram-authorization.png | Bin 92712 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 static/images/docs/oauth-server/dark/diagram-authorization.png delete mode 100644 static/images/docs/oauth-server/diagram-authorization.png diff --git a/static/images/docs/oauth-server/dark/diagram-authorization.png b/static/images/docs/oauth-server/dark/diagram-authorization.png deleted file mode 100644 index 97496408331238c998b8ef46574e5094f679478b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101140 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 EpM0h`KL7v# diff --git a/static/images/docs/oauth-server/diagram-authorization.png b/static/images/docs/oauth-server/diagram-authorization.png deleted file mode 100644 index e5ba1628a9ad70321241ad39bd2e8113d80a66d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92712 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 T#aCm6kJi;%u_R&9#y|cSog`M- From ba4b83801bd0f2a8bc788c0fbd983110c26c01c3 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 16 Jul 2026 16:05:05 +0530 Subject: [PATCH 25/38] Add database concepts docs for PostgreSQL and MySQL Seven concept pages per engine (tables, queries, joins, indexes, transactions, data modeling, access control) with a new Concepts sidebar group. All SQL verified against live databases; index lookup diagram in light and dark variants. --- .optimize-cache.json | 2 + .../products/databases/mysql/+layout.svelte | 33 +++ .../concepts/access-control/+page.markdoc | 105 ++++++++ .../concepts/data-modeling/+page.markdoc | 175 +++++++++++++ .../mysql/concepts/indexes/+page.markdoc | 201 ++++++++++++++ .../mysql/concepts/joins/+page.markdoc | 239 +++++++++++++++++ .../mysql/concepts/queries/+page.markdoc | 243 +++++++++++++++++ .../mysql/concepts/tables/+page.markdoc | 223 ++++++++++++++++ .../mysql/concepts/transactions/+page.markdoc | 175 +++++++++++++ .../databases/postgresql/+layout.svelte | 33 +++ .../concepts/access-control/+page.markdoc | 138 ++++++++++ .../concepts/data-modeling/+page.markdoc | 170 ++++++++++++ .../postgresql/concepts/indexes/+page.markdoc | 202 ++++++++++++++ .../postgresql/concepts/joins/+page.markdoc | 228 ++++++++++++++++ .../postgresql/concepts/queries/+page.markdoc | 247 ++++++++++++++++++ .../postgresql/concepts/tables/+page.markdoc | 220 ++++++++++++++++ .../concepts/transactions/+page.markdoc | 182 +++++++++++++ .../databases/concepts/dark/index-lookup.avif | Bin 0 -> 12264 bytes .../databases/concepts/index-lookup.avif | Bin 0 -> 12964 bytes 19 files changed, 2816 insertions(+) create mode 100644 src/routes/docs/products/databases/mysql/concepts/access-control/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/data-modeling/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/indexes/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/joins/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/queries/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/tables/+page.markdoc create mode 100644 src/routes/docs/products/databases/mysql/concepts/transactions/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/access-control/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/data-modeling/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/indexes/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/joins/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/queries/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/tables/+page.markdoc create mode 100644 src/routes/docs/products/databases/postgresql/concepts/transactions/+page.markdoc create mode 100644 static/images/docs/products/databases/concepts/dark/index-lookup.avif create mode 100644 static/images/docs/products/databases/concepts/index-lookup.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 3e777a08a2..d1536f6ae1 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1601,6 +1601,8 @@ "static/images/docs/platform/dark/execution-details.png": "c0481ddc206447460f9d317ba8d421615066f67a50bc9ef41a8f71766ecffb14", "static/images/docs/platform/env-variables.png": "16f95151e4f6ee9fb8056f075b9f5027fd91f0c2a28586c5624c3ffe9b7a1ee8", "static/images/docs/platform/execution-details.png": "ece1364b8b00254bbd982421b6eed6d7f519d34c4e80377fcaaa4cb5d5dd3f89", + "static/images/docs/products/databases/concepts/dark/index-lookup.png": "2866b226af8235d58ee2d6e42fe941cc6648db77210a995cd11b668e43cae477", + "static/images/docs/products/databases/concepts/index-lookup.png": "530acb39218dccdad6388986119b04446fa0769719c120c5c3aa69552ca75cfb", "static/images/docs/products/databases/mysql/create-database-specs.png": "623282bddd45eb245adb20166fd336089718a91bb7207a4f22b9811e13b96ba7", "static/images/docs/products/databases/mysql/create-database-type.png": "0ff2c521f3f40f467587954120339572bcac0c6d6f76f0f2e6935e640d7adba3", "static/images/docs/products/databases/mysql/dark/create-database-specs.png": "41bcda64b5cfac906639e077549c1429ec3701f8af9f49c4d1548e4716a23028", diff --git a/src/routes/docs/products/databases/mysql/+layout.svelte b/src/routes/docs/products/databases/mysql/+layout.svelte index 6db5d3b4c4..a5afd4647c 100644 --- a/src/routes/docs/products/databases/mysql/+layout.svelte +++ b/src/routes/docs/products/databases/mysql/+layout.svelte @@ -23,6 +23,39 @@ } ] }, + { + label: 'Concepts', + items: [ + { + label: 'Tables and data types', + href: '/docs/products/databases/mysql/concepts/tables' + }, + { + label: 'Querying rows', + href: '/docs/products/databases/mysql/concepts/queries' + }, + { + label: 'Joins and relationships', + href: '/docs/products/databases/mysql/concepts/joins' + }, + { + label: 'Indexes', + href: '/docs/products/databases/mysql/concepts/indexes' + }, + { + label: 'Transactions', + href: '/docs/products/databases/mysql/concepts/transactions' + }, + { + label: 'Data modeling', + href: '/docs/products/databases/mysql/concepts/data-modeling' + }, + { + label: 'Security and access control', + href: '/docs/products/databases/mysql/concepts/access-control' + } + ] + }, { label: 'Connecting', items: [ diff --git a/src/routes/docs/products/databases/mysql/concepts/access-control/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/access-control/+page.markdoc new file mode 100644 index 0000000000..b2d5c89dfa --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/access-control/+page.markdoc @@ -0,0 +1,105 @@ +--- +layout: article +title: Security and access control +description: How MySQL privileges work, what the admin account on your database can do, and patterns for restricting access to data. +--- + +MySQL controls access in two layers: + +- An **account** is an identity that can connect. +- **Privileges** decide what an account may do to each schema, table, or column. + +This page covers how that model works, what your Appwrite database's `admin` account can and cannot do, and the patterns that restrict access to data in practice. + +# The privilege model {% #model %} + +A MySQL account is a user name plus a host pattern, such as `'reporting'@'%'`. Privileges attach to accounts at four scopes: global, schema, table, and column. `GRANT` gives them and `REVOKE` takes them away: + +| Privilege | Allows | +| --- | --- | +| `SELECT` | Read rows | +| `INSERT` / `UPDATE` / `DELETE` | Write rows | +| `CREATE` / `ALTER` / `DROP` | Change schema objects | +| `INDEX` | Create and drop indexes | +| `EXECUTE` | Run stored procedures | +| `ALL PRIVILEGES` | Everything at the granted scope | + +Inspect any account's effective privileges with `SHOW GRANTS`. + +# Your database's admin account {% #admin %} + +Your Appwrite database provides one account, `admin`, with full privileges scoped to your schema: + +```sql +SHOW GRANTS FOR CURRENT_USER(); +``` + +```text +GRANT USAGE ON *.* TO `admin`@`%` +GRANT ALL PRIVILEGES ON `your-database`.* TO `admin`@`%` +``` + +`admin` owns your data completely: all reads, writes, schema changes, and index management. It does not hold global privileges, so instance-level operations stay with the platform, and it cannot create additional MySQL accounts: + +```sql +CREATE USER 'reporting'@'%' IDENTIFIED BY 'a-strong-password'; +``` + +```text +ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s) for this operation +``` + +This means access control below the `admin` account happens in your application and schema design rather than in MySQL's account system. The sections below cover the tools that work within that model. + +# Restrict what queries can see with views {% #views %} + +A view exposes a controlled subset of a table: fewer columns, fewer rows, or both. Give your application's read paths a view instead of the raw table, and sensitive columns never leave the database: + +```sql +CREATE TABLE users ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL, + display_name VARCHAR(100) NOT NULL, + password_hash VARBINARY(255) NOT NULL, + is_deleted BOOLEAN NOT NULL DEFAULT FALSE +); + +INSERT INTO users (email, display_name, password_hash) VALUES + ('ada@example.com', 'Ada', 0x01), ('grace@example.com', 'Grace', 0x02); +UPDATE users SET is_deleted = TRUE WHERE display_name = 'Grace'; + +CREATE VIEW visible_users AS +SELECT id, display_name +FROM users +WHERE is_deleted = FALSE; + +SELECT * FROM visible_users; +``` + +```text +id display_name +1 Ada +``` + +The view hides `email` and `password_hash` entirely and filters out soft-deleted rows. Queries against `visible_users` cannot reach what the view doesn't select. + +# Enforce integrity in the schema {% #integrity %} + +Constraints are a security layer too: they hold no matter which code path performs the write. `CHECK` constraints, `NOT NULL`, foreign keys, and `ENUM` types stop invalid states at the database boundary; see [Tables and data types](/docs/products/databases/mysql/concepts/tables#constraints). For multi-step changes that must not interleave with other writers, use transactions and row locks; see [Transactions](/docs/products/databases/mysql/concepts/transactions). + +# Scope tenants in the application {% #multi-tenant %} + +MySQL has no row-level security policies, so multi-tenant isolation lives in your queries. Keep it reliable by centralizing it: + +- Put a `tenant_id` column on every tenant-owned table, indexed and `NOT NULL`, with a foreign key to the tenants table. +- Route all data access through one layer (a repository module or ORM scope) that always applies `WHERE tenant_id = ?`, rather than trusting every call site to remember. +- For read paths, per-tenant views or parameterized views over `tenant_id` make the scoping visible and testable. + +# Protect the connection itself {% #connection %} + +Since the `admin` credentials are the whole story, treat them accordingly: + +- Rotate the password when a person or system that held it should lose access. See [Connections](/docs/products/databases/mysql/connections#rotate). +- Restrict which networks can reach the database with an IP allowlist. See [Network security](/docs/products/databases/mysql/network-security). +- All connections require TLS; never disable certificate verification in production drivers. +- Use parameterized queries everywhere. SQL injection against an account with `ALL PRIVILEGES` on the schema is a full compromise of your data. diff --git a/src/routes/docs/products/databases/mysql/concepts/data-modeling/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/data-modeling/+page.markdoc new file mode 100644 index 0000000000..4f4893e37d --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/data-modeling/+page.markdoc @@ -0,0 +1,175 @@ +--- +layout: article +title: Data modeling and normalization +description: Design MySQL schemas with normalization, decide when to denormalize, and use views to shape data for readers. +--- + +Data modeling decides where each fact lives. Normalization is the discipline of storing every fact exactly once, so it can't contradict itself. This page walks a flat spreadsheet-style table through the normal forms, then covers when to deliberately break the rules, and how views let you reshape data without duplicating it. + +# The problem with one big table {% #problem %} + +Start with an orders table designed the way a spreadsheet would be: + +```sql +CREATE TABLE orders_flat ( + order_id BIGINT, + customer_name VARCHAR(100), + customer_email VARCHAR(255), + product_names TEXT, -- 'Keyboard, Mouse' + product_prices TEXT -- '79.00, 29.50' +); + +INSERT INTO orders_flat VALUES + (1, 'Ada', 'ada@example.com', 'Keyboard, Mouse', '79.00, 29.50'), + (2, 'Ada', 'ada@example.com', 'Monitor', '349.99'), + (3, 'Grace', 'grace@example.com', 'Mouse', '29.50'); +``` + +Every design flaw here causes a concrete failure: + +- Ada's email is stored twice. Update one row and not the other, and the database now disagrees with itself. This is an **update anomaly**. +- Products only exist inside order rows. Delete order 2 and the Monitor, its price, everything, vanishes. A **delete anomaly**. +- A product has no row of its own, so recording one before anyone orders it means a row with empty order fields. An **insert anomaly**. +- "Which orders contain a Mouse?" requires string parsing instead of a `WHERE` clause. + +# First normal form: one value per cell {% #first-nf %} + +First normal form (1NF) requires each column to hold a single atomic value, no comma-separated lists. Split the line items into rows: + +```sql +CREATE TABLE order_lines_1nf ( + order_id BIGINT, + customer_name VARCHAR(100), + customer_email VARCHAR(255), + product_name VARCHAR(200), + product_price DECIMAL(10, 2) +); + +INSERT INTO order_lines_1nf VALUES + (1, 'Ada', 'ada@example.com', 'Keyboard', 79.00), + (1, 'Ada', 'ada@example.com', 'Mouse', 29.50), + (2, 'Ada', 'ada@example.com', 'Monitor', 349.99), + (3, 'Grace', 'grace@example.com', 'Mouse', 29.50); +``` + +Now `WHERE product_name = 'Mouse'` works. But the duplication got worse: Ada's email appears three times, and the Mouse's price twice. + +# Second and third normal form: facts move to their owners {% #second-third-nf %} + +Second normal form (2NF) says every column must depend on the whole key, which here is implicitly `(order_id, product_name)`: `product_price` depends only on the product, not on which order it's in, so it belongs in a products table. Third normal form (3NF) says no column may depend on a non-key column: `customer_email` depends on the customer, not the order, so it belongs in a customers table. + +Applying both produces the standard shape, where every fact has exactly one home: + +```sql +CREATE TABLE customers ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE +); + +CREATE TABLE products ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL, + price DECIMAL(10, 2) NOT NULL +); + +CREATE TABLE orders ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + customer_id BIGINT NOT NULL, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (customer_id) REFERENCES customers (id) +); + +CREATE TABLE order_items ( + order_id BIGINT NOT NULL, + product_id BIGINT NOT NULL, + quantity INT NOT NULL DEFAULT 1, + unit_price DECIMAL(10, 2) NOT NULL, -- price at time of order, see below + PRIMARY KEY (order_id, product_id), + FOREIGN KEY (order_id) REFERENCES orders (id), + FOREIGN KEY (product_id) REFERENCES products (id) +); + +INSERT INTO customers (name, email) VALUES + ('Ada', 'ada@example.com'), ('Grace', 'grace@example.com'); +INSERT INTO products (name, price) VALUES + ('Keyboard', 79.00), ('Mouse', 29.50), ('Monitor', 349.99); +INSERT INTO orders (customer_id) VALUES (1), (1), (2); +INSERT INTO order_items (order_id, product_id, quantity, unit_price) VALUES + (1, 1, 1, 79.00), (1, 2, 1, 29.50), (2, 3, 1, 349.99), (3, 2, 1, 29.50); +``` + +Changing Ada's email is now a one-row `UPDATE` that cannot leave a stale copy anywhere. The anomalies are gone because duplication is gone. + +Notice `unit_price` in `order_items` looks like duplication but isn't: the price *at the time of the order* is a different fact from the product's *current* price, and both deserve a home. Normalization is about one home per fact, not zero copies of anything that looks similar. + +# Reading a normalized schema {% #querying %} + +Normalized data comes back together with joins: + +```sql +SELECT o.id AS order_id, c.name, SUM(oi.quantity * oi.unit_price) AS total +FROM orders o +JOIN customers c ON c.id = o.customer_id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY o.id, c.name +ORDER BY o.id; +``` + +```text +order_id name total +1 Ada 108.50 +2 Ada 349.99 +3 Grace 29.50 +``` + +If the joins feel verbose, that's what views are for, not denormalization. + +# Views: stored queries, not stored data {% #views %} + +A view names a query so readers get the convenient shape without the data being duplicated: + +```sql +CREATE VIEW order_summaries AS +SELECT o.id AS order_id, c.name AS customer, o.created_at, + SUM(oi.quantity * oi.unit_price) AS total +FROM orders o +JOIN customers c ON c.id = o.customer_id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY o.id, c.name, o.created_at; + +SELECT customer, total FROM order_summaries WHERE order_id = 1; +``` + +The view runs its query on every read, so it is always current. MySQL has no materialized views. When an aggregation is too expensive to compute on every read, maintain a summary table yourself: recompute it on a schedule, or update it transactionally alongside the source data: + +```sql +CREATE TABLE customer_totals ( + name VARCHAR(100) PRIMARY KEY, + lifetime_value DECIMAL(12, 2) NOT NULL +); + +-- refresh on your schedule: +REPLACE INTO customer_totals +SELECT c.name, SUM(oi.quantity * oi.unit_price) +FROM customers c +JOIN orders o ON o.customer_id = c.id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY c.name; + +SELECT * FROM customer_totals ORDER BY lifetime_value DESC; +``` + +# When to denormalize {% #denormalize %} + +Denormalization deliberately duplicates a fact to make reads cheaper, accepting that your code must now keep the copies in sync. It's a real tool with a real cost, so it should be a measured response to a demonstrated problem, not a default: + +- **A hot aggregate**, such as showing order totals on every page: store `orders.total` and update it when items change, rather than summing on every read. +- **An access-pattern mismatch**, such as a search page filtering on a joined column at scale. +- **Snapshot semantics**, like `unit_price` above, which isn't really denormalization: the historical value is its own fact. + +Before duplicating data, check whether an index or a view solves the read problem, since neither can ever disagree with the source data; a summary table lags until its next refresh but needs no synchronization logic beyond the refresh itself. When you do denormalize, keep the copies consistent inside one transaction, so a crash between the write and the sync can't leave them disagreeing. See [Transactions](/docs/products/databases/mysql/concepts/transactions). + +# JSON columns in a relational model {% #json %} + +A `JSON` column is controlled denormalization for attributes that vary per row, such as per-event metadata. The rule of thumb: anything you filter on, join on, or aggregate regularly deserves a real column with a real type and real constraints; the long tail can live in `JSON`. See [Tables and data types](/docs/products/databases/mysql/concepts/tables#json). diff --git a/src/routes/docs/products/databases/mysql/concepts/indexes/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/indexes/+page.markdoc new file mode 100644 index 0000000000..9ecb08ff7e --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/indexes/+page.markdoc @@ -0,0 +1,201 @@ +--- +layout: article +title: Indexes +description: Speed up MySQL queries with B-tree, composite, prefix, functional, and invisible indexes, and read EXPLAIN ANALYZE output. +--- + +An index is a sorted data structure the database maintains next to a table so it can find rows without scanning everything. Reads get faster; writes pay a small tax to keep each index current. Knowing when an index helps, and how to confirm it's being used, is the highest-leverage performance skill in SQL. + +# Setup {% #setup %} + +Index behavior only shows up with enough data on the table, so the setup seeds 100,000 users to give the query optimizer a real choice to make: + +```sql +CREATE TABLE users ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(255) NOT NULL, + country CHAR(2) NOT NULL, + created_at DATETIME NOT NULL +); + +SET SESSION cte_max_recursion_depth = 100000; + +INSERT INTO users (email, country, created_at) +WITH RECURSIVE seq (n) AS ( + SELECT 1 UNION ALL SELECT n + 1 FROM seq WHERE n < 100000 +) +SELECT CONCAT('user', n, '@example.com'), + ELT(1 + n % 4, 'DE', 'US', 'IN', 'BR'), + NOW() - INTERVAL n MINUTE +FROM seq; + +ANALYZE TABLE users; +``` + +`ANALYZE TABLE` refreshes the statistics the optimizer uses to estimate row counts. InnoDB updates them automatically in the background; running it manually after a bulk load just avoids waiting. + +# How an index works {% #how-it-works %} + +{% only_dark %} +![Index lookup: binary search over the sorted index, entry pointing to the table row](/images/docs/products/databases/concepts/dark/index-lookup.avif) +{% /only_dark %} +{% only_light %} +![Index lookup: binary search over the sorted index, entry pointing to the table row](/images/docs/products/databases/concepts/index-lookup.avif) +{% /only_light %} + +Table rows are stored in no order useful for searching an arbitrary column, so answering `WHERE email = '...'` without an index means reading every row and checking each one. The work grows with the table: ten times the rows, ten times the reads. + +A **B-tree** (balanced tree) is the data structure indexes use to fix this. It keeps every value of the indexed column in **sorted order**, stored as a tree of small pages: the top page holds a few boundary values that direct the search into one of its child pages, each child narrows the range further, and the bottom layer, the leaves, holds the actual values with pointers back to their rows. Sorted order is what makes searching cheap: + +- The database starts in the middle of the index, checks whether the target value sorts before or after that point, and discards the half that cannot contain it. Repeating this takes a handful of steps even on millions of rows. +- Equal values sit next to each other, so one descent lands on every matching entry at once. +- The same sorted order answers range conditions (`<`, `BETWEEN`) and returns rows already sorted for `ORDER BY`. + +Indexes have a price: each one is a second copy of the column that must be kept correct, so every insert, update, and delete on the table also rewrites part of every index. They trade write work and disk space for read speed, which is why you add them for the queries you actually run rather than on every column. + +# Reading EXPLAIN ANALYZE {% #explain %} + +Before adding indexes, you need to see what the database is currently doing. Prefix any query with `EXPLAIN ANALYZE` and instead of returning its result, the database runs it and reports the plan it used: + +```sql +EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user4242@example.com'; +``` + +```text +-> Filter: (users.email = 'user4242@example.com') (cost=10092 rows=9988) (actual time=0.589..13.2 rows=1 loops=1) + -> Table scan on users (cost=10092 rows=99882) (actual time=0.0314..8.87 rows=100000 loops=1) +``` + +The tree reads bottom-up: + +- **Table scan on users** is the chosen strategy: read the table start to finish. Its `actual ... rows=100000` shows all 100,000 rows were produced. +- **Filter** receives those rows and checks the condition against each one; its `rows=1` shows only one survived. +- **actual time=0.589..13.2** is when the first and last row were produced, in milliseconds. The `cost` and estimated `rows` numbers are the optimizer's internal estimates, not measurements. + +Exact numbers will differ on your database; the plan shape is what matters, and this shape, an entire table read to return one row, is the signal that an index would help. Plain `EXPLAIN` without `ANALYZE` shows the plan without executing the query, which is safer for slow queries and writes. + +# Create an index {% #create %} + +`CREATE INDEX` builds the structure from the table's existing rows and keeps it maintained on every future write. Rerunning the earlier query shows the optimizer picking it up immediately: + +```sql +CREATE INDEX idx_users_email ON users (email); + +EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user4242@example.com'; +``` + +```text +-> Index lookup on users using idx_users_email (email='user4242@example.com') (cost=0.35 rows=1) (actual time=0.011..0.0116 rows=1 loops=1) +``` + +The plan flipped to an `Index lookup`, and execution time dropped from milliseconds to microseconds. + +One B-tree index serves several kinds of conditions on its column: + +- equality: `=` and `IN` +- ranges: `<`, `>`, `BETWEEN` +- sorting: `ORDER BY` +- prefix patterns like `LIKE 'user42%'` + +Primary keys and `UNIQUE` constraints create indexes automatically, so don't add duplicates for those columns. In InnoDB the primary key is special: the table's rows are physically stored in primary-key order (the clustered index), and every secondary index entry carries the primary key to locate the row. + +# Composite indexes and column order {% #composite %} + +An index on multiple columns is sorted by the first column, then the second within it, like a phone book sorted by last name, then first name. Column order decides which queries it serves: + +```sql +CREATE INDEX idx_users_email_created ON users (email, created_at); +``` + +This index answers `WHERE email = ...`, and `WHERE email = ... AND created_at > ...`, but a filter on `created_at` alone can't use the sorted order because entries for every email are interleaved: + +```sql +EXPLAIN FORMAT=TREE SELECT * FROM users WHERE created_at > NOW() - INTERVAL 1 DAY; +``` + +```text +-> Filter: (users.created_at > <cache>((now() - interval 1 day))) (cost=3433 rows=33291) + -> Table scan on users (cost=3433 rows=99882) +``` + +Rule of thumb: put equality-filtered columns first and range-filtered columns last. If you also query `created_at` on its own, that's a separate index. + +# Covering indexes {% #covering %} + +A normal index lookup is two steps: find the matching entries in the index, then fetch each matching row from the table to read the other columns. That second step is the expensive part, and it's unnecessary when the query only asks for columns the index already stores. + +This query selects only `email`, and the index contains `email`, so the answer comes straight out of the index: + +```sql +EXPLAIN ANALYZE SELECT email FROM users WHERE email = 'user4242@example.com'; +``` + +```text +-> Covering index lookup on users using idx_users_email (email='user4242@example.com') (cost=1.1 rows=1) (actual time=0.00846..0.01 rows=1 loops=1) +``` + +**Covering index lookup** in the plan confirms the table was read zero times; an index that satisfies a query this way is called a covering index. Because every secondary index in InnoDB already includes the primary key, a query selecting only `id` and indexed columns is covered for free. + +# Prefix indexes {% #prefix %} + +Long string columns make large indexes. A prefix index stores only the first n characters, trading a little selectivity for a much smaller structure: + +```sql +CREATE INDEX idx_users_email_prefix ON users (email(12)); +``` + +Pick a prefix length long enough to stay selective; check with `SELECT COUNT(DISTINCT LEFT(email, 12)) / COUNT(*) FROM users;`, aiming close to 1. Prefix indexes can't serve covering lookups or `ORDER BY`, since the index doesn't hold the full value. + +# Functional indexes {% #functional %} + +Indexing an expression makes queries on that expression fast: + +```sql +CREATE INDEX idx_users_email_lower ON users ((LOWER(email))); + +EXPLAIN FORMAT=TREE SELECT * FROM users WHERE LOWER(email) = 'user4242@example.com'; +``` + +```text +-> Index lookup on users using idx_users_email_lower (lower(email)='user4242@example.com') (cost=0.35 rows=1) +``` + +The query's expression must match the indexed expression exactly. Note the double parentheses in the `CREATE INDEX` syntax; they mark the key part as an expression. + +# Invisible indexes {% #invisible %} + +An invisible index is maintained on writes but ignored by the optimizer. It's the safe way to test dropping an index: make it invisible, watch your query performance, then drop it for real or flip it back: + +```sql +ALTER TABLE users ALTER INDEX idx_users_email_lower INVISIBLE; +-- observe workload ... +ALTER TABLE users ALTER INDEX idx_users_email_lower VISIBLE; +``` + +Creating a new index as `INVISIBLE` first also lets you verify plans with targeted queries before exposing it to the whole workload. + +# Beyond B-tree {% #other-types %} + +| Type | Use for | +| --- | --- | +| B-tree | Equality and ranges on scalar values (default, InnoDB) | +| `FULLTEXT` | Natural-language search over text columns | +| `SPATIAL` | Geometric data in spatial columns | +| Multi-valued | Entries inside JSON arrays, via `CAST(... AS ... ARRAY)` | + +A `FULLTEXT` index enables `MATCH ... AGAINST` relevance search, which behaves very differently from `LIKE '%word%'` and deserves its own evaluation before you rely on it. + +# The cost of indexes {% #cost %} + +Every index consumes disk and slows every `INSERT`, `UPDATE`, and `DELETE` on the table, because each write updates each index. Check what your indexes weigh: + +```sql +ANALYZE TABLE users; -- refresh stats so the sizes are current + +SELECT ROUND(data_length / 1024 / 1024, 1) AS table_mb, + ROUND(index_length / 1024 / 1024, 1) AS indexes_mb +FROM information_schema.TABLES +WHERE table_schema = DATABASE() AND table_name = 'users'; +``` + +Index the queries you actually run, verify each index earns its keep with `EXPLAIN`, and drop (or first hide) the ones that don't. To find slow queries worth indexing in the first place, see [Monitoring](/docs/products/databases/mysql/monitoring). diff --git a/src/routes/docs/products/databases/mysql/concepts/joins/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/joins/+page.markdoc new file mode 100644 index 0000000000..3329be3eaf --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/joins/+page.markdoc @@ -0,0 +1,239 @@ +--- +layout: article +title: Joins and relationships +description: Model relationships with foreign keys and combine MySQL tables with INNER, LEFT, RIGHT, and CROSS joins. +--- + +Relational databases keep each entity in its own table and connect them through **keys**. A join combines rows from two tables by matching values, usually a **foreign key** on one side against a **primary key** on the other. This page covers how to model the two relationship shapes you'll meet constantly, and the join types you'll use in practice. + +# Setup {% #setup %} + +The examples below use two tables, customers and orders, where every order records which customer placed it. Create and seed them first: + +```sql +CREATE TABLE customers ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100) NOT NULL +); + +CREATE TABLE orders ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + customer_id BIGINT NOT NULL, + total DECIMAL(10, 2) NOT NULL, + FOREIGN KEY (customer_id) REFERENCES customers (id) +); + +INSERT INTO customers (name) VALUES ('Ada'), ('Grace'), ('Linus'); +INSERT INTO orders (customer_id, total) VALUES + (1, 120.00), (1, 80.00), (2, 45.50); +``` + +Ada has two orders, Grace has one, and Linus has none. + +# What a join actually does {% #what-a-join-does %} + +A join takes two tables and produces a new, temporary table built from them in three steps: + +1. Pair rows from one side with rows from the other. +2. Evaluate the **join condition** on each pair, here `o.customer_id = c.id`. +3. Keep the pairs where it's true; each one becomes a result row carrying the columns of both sides. + +```text +customers orders result of the join +id | name id | customer_id | total name | total + 1 | Ada ←──┬── 1 | 1 | 120.00 Ada | 120.00 + └── 2 | 1 | 80.00 Ada | 80.00 + 2 | Grace ←───── 3 | 2 | 45.50 Grace | 45.50 + 3 | Linus (no order matches) +``` + +Two things fall out of this model: + +- A row that matches several rows on the other side appears several times in the result: Ada shows up twice because two orders point at her. +- A row that matches nothing, like Linus, produces no pair at all, and what happens to such unmatched rows is exactly what distinguishes the join types below. + +The database doesn't literally build every combination; indexes let it jump straight to matching rows, but the result is always as if it had. + +# One-to-many relationships {% #one-to-many %} + +One customer has many orders, so `orders` carries a `customer_id` column referencing `customers`. The `FOREIGN KEY` clause makes the database reject any `customer_id` that doesn't exist in `customers`: + +```sql +INSERT INTO orders (customer_id, total) VALUES (99, 10.00); +``` + +```text +ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails +(`your_db`.`orders`, CONSTRAINT `orders_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`id`)) +``` + +A foreign key also decides what happens when the parent row is deleted. Declare it with the behavior you want: + +- The default blocks deleting a customer who still has orders. +- `ON DELETE CASCADE` deletes the customer's orders along with the customer. +- `ON DELETE SET NULL` keeps the orders but clears their `customer_id` (the column must be nullable). + +# Inner joins {% #inner %} + +An inner join returns only rows that match on both sides: + +```sql +SELECT c.name, o.total +FROM customers c +JOIN orders o ON o.customer_id = c.id +ORDER BY c.name, o.total; +``` + +```text +name total +Ada 80.00 +Ada 120.00 +Grace 45.50 +``` + +Linus disappears from the result because he has no matching order. `JOIN` and `INNER JOIN` are the same thing. + +# Left joins {% #left %} + +A left join keeps every row from the left table and fills the right side with `NULL` where nothing matches: + +```sql +SELECT c.name, o.total +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +ORDER BY c.name, o.total; +``` + +```text +name total +Ada 80.00 +Ada 120.00 +Grace 45.50 +Linus NULL +``` + +This is the join for "all X, with their Y if any". Combined with aggregation it answers questions like order counts per customer, including zero: + +```sql +SELECT c.name, COUNT(o.id) AS orders +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +GROUP BY c.name +ORDER BY orders DESC; +``` + +Note `COUNT(o.id)`, not `COUNT(*)`: counting a column from the right table skips the `NULL` produced for Linus, yielding 0 instead of 1. + +`RIGHT JOIN` mirrors `LEFT JOIN` in the other direction. In practice, most people reorder the tables and use `LEFT JOIN` for consistency. + +# No full joins {% #full %} + +MySQL does not support `FULL OUTER JOIN`. When you need unmatched rows from both sides, such as reconciling two datasets, combine a left and a right join with `UNION`: + +```sql +CREATE TABLE imported_customers (id BIGINT, name VARCHAR(100)); +INSERT INTO imported_customers VALUES (1, 'Ada'), (4, 'Margaret'); + +SELECT c.name AS in_database, i.name AS in_import +FROM customers c +LEFT JOIN imported_customers i ON i.id = c.id +UNION +SELECT c.name, i.name +FROM customers c +RIGHT JOIN imported_customers i ON i.id = c.id; +``` + +```text +in_database in_import +Ada Ada +Grace NULL +Linus NULL +NULL Margaret +``` + +Note that `UNION` removes duplicate result rows. If your data can legitimately contain rows that project to identical values, use `UNION ALL` and restrict the second branch to right-side-only rows (`WHERE c.id IS NULL`) so nothing is collapsed. + +{% info title="FULL parses as an alias" %} +`SELECT * FROM a FULL JOIN b ...` is not a syntax error in MySQL: `FULL` is parsed as a table alias named `FULL`, silently giving you an inner join. If you port a query from another database, this fails quietly rather than loudly. +{% /info %} + +# Cross joins {% #cross %} + +A cross join written without any join condition produces every combination of rows from both tables. (In MySQL the `CROSS JOIN` keyword also accepts an `ON` clause, which turns it into an ordinary inner join; it's the absence of a condition that makes it Cartesian.) Use it to generate combinations, such as every product in every size: + +```sql +CREATE TABLE sizes (size CHAR(1)); +INSERT INTO sizes VALUES ('S'), ('M'), ('L'); + +SELECT c.name, s.size +FROM customers c +CROSS JOIN sizes s +ORDER BY c.name, s.size; +``` + +Three customers times three sizes returns nine rows. Be careful with large tables: the result size is the product of both row counts. + +# Anti-joins: rows without a match {% #anti-join %} + +"Customers with no orders" is an anti-join. Two equivalent spellings: + +```sql +SELECT name FROM customers c +WHERE NOT EXISTS ( + SELECT 1 FROM orders o WHERE o.customer_id = c.id +); + +SELECT c.name +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +WHERE o.id IS NULL; +``` + +Both return only Linus. Prefer `NOT EXISTS` over `NOT IN (SELECT ...)`: if the subquery ever returns a `NULL`, `NOT IN` returns no rows at all, and nothing reports an error. + +# Many-to-many relationships {% #many-to-many %} + +When both sides can have many of the other, such as orders and products, neither table can hold the foreign key. A junction table holds one row per connection: + +```sql +CREATE TABLE products ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL +); + +CREATE TABLE order_items ( + order_id BIGINT NOT NULL, + product_id BIGINT NOT NULL, + quantity INT NOT NULL DEFAULT 1, + PRIMARY KEY (order_id, product_id), + FOREIGN KEY (order_id) REFERENCES orders (id), + FOREIGN KEY (product_id) REFERENCES products (id) +); + +INSERT INTO products (name) VALUES ('Keyboard'), ('Mouse'); +INSERT INTO order_items (order_id, product_id, quantity) VALUES + (1, 1, 1), (1, 2, 2), (2, 2, 1); +``` + +The composite primary key `(order_id, product_id)` prevents duplicate connections, and the junction table is the natural home for relationship attributes like `quantity`. Traversing the relationship is two joins: + +```sql +SELECT o.id AS order_id, p.name, oi.quantity +FROM orders o +JOIN order_items oi ON oi.order_id = o.id +JOIN products p ON p.id = oi.product_id +ORDER BY o.id, p.name; +``` + +```text +order_id name quantity +1 Keyboard 1 +1 Mouse 2 +2 Mouse 1 +``` + +Each result row is one line item: the first join finds the connections belonging to each order, and the second swaps each `product_id` for the product's actual name. The Mouse appears under both orders because two junction rows point at it, one connection per row. + +# Join or separate queries? {% #vs-n-plus-1 %} + +Fetching a list and then querying once per row (the N+1 pattern) multiplies round trips and usually loses badly to a single join, even a large one. Let the database combine the data; that is what it is optimized for. If a join's result set explodes because one row matches thousands, paginate or aggregate on the many side instead of splitting into per-row queries. diff --git a/src/routes/docs/products/databases/mysql/concepts/queries/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/queries/+page.markdoc new file mode 100644 index 0000000000..2ec7bd82a2 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/queries/+page.markdoc @@ -0,0 +1,243 @@ +--- +layout: article +title: Querying rows +description: Read and write MySQL rows with SELECT, INSERT, UPDATE, and DELETE. Covers filtering, aggregation, pagination, and upserts. +--- + +Four statements do almost all the work in a relational database: + +- **SELECT** reads rows +- **INSERT** adds new rows +- **UPDATE** changes existing rows +- **DELETE** removes rows + +SQL is declarative: a query describes the result you want, and the database's optimizer decides how to produce it, choosing between indexes, scans, and join strategies on its own. That's why the same query keeps working as data grows and indexes change. + +This page walks through each statement, plus the querying patterns you reach for daily: filtering, aggregation, pagination, and upserts. + +# Setup {% #setup %} + +The examples below work against a small product catalog. Create and seed it first: + +```sql +CREATE TABLE products ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL, + price DECIMAL(10, 2) NOT NULL, + stock INT NOT NULL DEFAULT 0 +); + +INSERT INTO products (name, price, stock) VALUES + ('Keyboard', 79.00, 120), + ('Mouse', 29.50, 200), + ('Monitor', 349.99, 14), + ('Webcam', 59.00, 0), + ('Desk mat', 19.90, 45); +``` + +# Read rows {% #select %} + +A `SELECT` statement has three jobs, each handled by its own clause: choose which columns to return, decide which rows qualify, and put them in order: + +```sql +SELECT name, price +FROM products +WHERE stock > 0 +ORDER BY price DESC; +``` + +```text +name price +Monitor 349.99 +Keyboard 79.00 +Mouse 29.50 +Desk mat 19.90 +``` + +Four of the five products come back: the Webcam is filtered out because its stock is 0, and the rest arrive sorted by price, highest first. The other columns still exist on those rows; the query just didn't ask for them. Without an `ORDER BY`, row order is arbitrary and can change between runs, so always order results the user will see. + +`WHERE` accepts any boolean expression, built from a handful of operators: + +- **Comparisons** (`=`, `<`, `>`, `<=`, `>=`, `<>`) work on numbers, text, and dates alike. +- **BETWEEN** matches a range, bounds included. +- **LIKE** matches string patterns, where `%` stands for any sequence of characters; under the default `utf8mb4` collation it compares case-insensitively, so `'%mo%'` matches both Mouse and Monitor. +- **IN** matches any value in a list. +- **AND** and **OR** combine conditions, with parentheses to group them. + +```sql +SELECT name FROM products WHERE price BETWEEN 20 AND 100; -- range +SELECT name FROM products WHERE name LIKE '%mo%'; -- pattern match +SELECT name FROM products WHERE stock IN (0, 14); -- membership +SELECT name FROM products WHERE stock = 0 OR price < 25; -- combined conditions +``` + +Avoid `SELECT *` in application code. Naming columns keeps results stable when the table gains columns later and avoids transferring data you don't use. + +# Insert rows {% #insert %} + +`INSERT` names the columns it provides and gives a value for each; omitted columns fall back to their defaults, like the auto-generated `id` here: + +```sql +INSERT INTO products (name, price, stock) +VALUES ('USB hub', 24.00, 80); + +SELECT LAST_INSERT_ID(); +``` + +`LAST_INSERT_ID()` returns the `AUTO_INCREMENT` value generated by the most recent insert on this connection. It is connection-scoped, so concurrent clients never see each other's IDs. Most drivers surface it directly on the statement result, no extra query needed. + +# Update rows {% #update %} + +`UPDATE` changes the columns you name on every row matching the `WHERE` clause: + +```sql +UPDATE products +SET price = price * 0.90 +WHERE stock > 100; +``` + +The `SET` expression can reference the row's current values, as the discount above does. Without a `WHERE` clause, `UPDATE` rewrites the entire table, so check the target set first with a `SELECT` using the same `WHERE` when running one by hand. + +# Delete rows {% #delete %} + +`DELETE` removes every row matching the `WHERE` clause: + +```sql +DELETE FROM products +WHERE stock = 0; +``` + +Without a `WHERE` clause, `DELETE FROM products` removes every row in the table. For hand-run maintenance, wrap the statement in a transaction so you can inspect the result and roll it back. See [Transactions](/docs/products/databases/mysql/concepts/transactions). + +# Aggregate {% #aggregate %} + +An aggregate function computes a single value over a set of rows, such as a *count of orders* or a *total spend per customer*: + +- **COUNT(*)** counts rows +- **SUM** and **AVG** total and average a numeric column +- **MIN** and **MAX** find the extremes + +The demonstration needs a table where several rows belong to each customer: + +```sql +CREATE TABLE orders ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + customer VARCHAR(100) NOT NULL, + total DECIMAL(10, 2) NOT NULL +); + +INSERT INTO orders (customer, total) VALUES + ('ada', 120.00), ('ada', 80.00), ('grace', 45.50), + ('grace', 30.00), ('grace', 25.00), ('linus', 999.99); +``` + +By default an aggregate covers every row in the table: `SELECT SUM(total) FROM orders` returns one number, the total across all six orders. `GROUP BY customer` changes that. The database first gathers rows with the same customer value together, Ada's two orders, Grace's three, Linus's one, then runs the aggregate functions once for each of those groups. The result has one row per customer instead of one row for the whole table: + +```sql +SELECT customer, + COUNT(*) AS orders, + SUM(total) AS lifetime_value +FROM orders +GROUP BY customer +HAVING SUM(total) > 100 +ORDER BY lifetime_value DESC; +``` + +```text +customer orders lifetime_value +linus 1 999.99 +ada 2 200.00 +grace 3 100.50 +``` + +Six order rows became three result rows, one per customer: + +- Ada's two orders were summed into 200.00 +- Grace's three orders were summed into 100.50 +- Linus's single order stands alone at 999.99 + +In a grouped query, every selected column must be either grouped on (like `customer`) or aggregated (like `SUM(total)`), because each result row now represents many source rows. + +`WHERE` and `HAVING` both filter, but at different stages: + +- **WHERE** filters individual rows, before grouping. It cannot use aggregate results, because they haven't been computed yet. +- **HAVING** filters the groups, after the aggregates are computed. + +Here `HAVING SUM(total) > 100` keeps only customers whose orders total more than 100. Grace passes at 100.50; a threshold of 150 would exclude her. + +# Paginate {% #pagination %} + +Pagination splits a large result into pages. There are two ways to do it: + +- **Offset pagination** asks for "skip the first 20 rows, return the next 10". Simple, but the database still reads and discards every skipped row, so deep pages get slower and slower. +- **Keyset pagination** asks for "return the 10 rows after the last one I saw". The database jumps straight to that position, so every page costs the same as the first. + +`LIMIT` and `OFFSET` are the offset approach: + +```sql +SELECT id, name FROM products ORDER BY id LIMIT 2 OFFSET 2; +``` + +Keyset pagination filters on the last value seen instead: + +```sql +SELECT id, name +FROM products +WHERE id > 2 -- last id from the previous page +ORDER BY id +LIMIT 2; +``` + +Keyset pagination stays fast at any depth because the index seeks straight to the boundary, provided the ordering columns are indexed. It requires a deterministic, unique ordering (a single column like `id`, or a composite) and can't jump to an arbitrary page number. + +# Upsert {% #upsert %} + +An upsert writes a row without knowing whether it already exists: insert it if it's new, update it if it's not. Stock counts, settings, and sync jobs all need this. + +The obvious approach, `SELECT` to check and then `INSERT` or `UPDATE` accordingly, has a race condition: another connection can insert the same key between your check and your write, and your insert fails. + +`INSERT ... ON DUPLICATE KEY UPDATE` performs the check and the write as one atomic statement, so the race cannot happen: + +```sql +CREATE TABLE inventory ( + sku VARCHAR(20) PRIMARY KEY, + quantity INT NOT NULL +); + +INSERT INTO inventory (sku, quantity) VALUES ('KB-01', 10); + +-- Second write for the same key updates instead of failing +INSERT INTO inventory (sku, quantity) VALUES ('KB-01', 5) AS new +ON DUPLICATE KEY UPDATE quantity = inventory.quantity + new.quantity; + +SELECT * FROM inventory; +``` + +```text +sku quantity +KB-01 15 +``` + +What happened: + +- The first insert creates KB-01 with quantity 10. +- The second insert collides with it on the primary key, so instead of failing, it runs the `ON DUPLICATE KEY UPDATE` clause: existing 10 plus incoming 5 gives 15. +- The `AS new` alias names the row that would have been inserted, which is how the update reaches the incoming values. + +To silently ignore duplicates instead, use `INSERT IGNORE`, but note it downgrades other errors to warnings too, so prefer `ON DUPLICATE KEY UPDATE` when in doubt. + +# Subqueries and CTEs {% #ctes %} + +A common table expression (CTE) names an intermediate result so a complex query reads top to bottom: + +```sql +WITH big_spenders AS ( + SELECT customer + FROM orders + GROUP BY customer + HAVING SUM(total) > 150 +) +SELECT customer FROM big_spenders ORDER BY customer; +``` + +CTEs and subqueries are interchangeable in most positions; prefer whichever keeps the query readable. MySQL also supports `WITH RECURSIVE` for hierarchical data such as category trees. diff --git a/src/routes/docs/products/databases/mysql/concepts/tables/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/tables/+page.markdoc new file mode 100644 index 0000000000..67970c29d6 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/tables/+page.markdoc @@ -0,0 +1,223 @@ +--- +layout: article +title: Tables and data types +description: Create MySQL tables with the right column types and constraints. Covers numeric, string, date and time, JSON, ENUM, and generated columns. +--- + +A table is the unit of storage in a relational database, a named grid where: + +- each **row** is one record: one customer, one order +- each **column** is one attribute every record shares: name, price, creation time +- each column has a **type** that determines what values it accepts and how they compare, sort, and calculate + +Unlike a spreadsheet, the set of columns is declared up front and enforced; every row has exactly those columns. This fixed shape is what lets the database enforce correctness: precise types and constraints reject bad data before it ever reaches your application. + +The examples on this page build up pieces of a small store schema: customers, products, and orders. + +# Create a table {% #create %} + +`CREATE TABLE` names the table and declares each column with its type and the rules it must obey: + +```sql +CREATE TABLE customers ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL, + email VARCHAR(255) NOT NULL UNIQUE, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP +); +``` + +This declaration packs in the most common column features: + +- `AUTO_INCREMENT` makes the database assign an ascending value. `SERIAL` is shorthand for `BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE`. +- `PRIMARY KEY` uniquely identifies each row; in InnoDB it also physically orders the table (the clustered index). +- `NOT NULL` rejects missing values, and `UNIQUE` rejects duplicates. +- `DEFAULT CURRENT_TIMESTAMP` fills the column when an insert doesn't provide a value. + +Tables default to the InnoDB storage engine and `utf8mb4` character set, which is what you want: full transaction support and full Unicode, including emoji. + +# Numeric types {% #numeric %} + +| Type | Range (signed) | Use for | +| --- | --- | --- | +| `TINYINT` | −128 to 127 | Flags, small codes | +| `SMALLINT` | −32,768 to 32,767 | Small counters | +| `MEDIUMINT` | −8,388,608 to 8,388,607 | Mid-range counters | +| `INT` | about ±2.1 billion | General whole numbers | +| `BIGINT` | about ±9.2 quintillion | IDs, anything that may grow | +| `DECIMAL(p, s)` | Exact, up to 65 digits | Money, quantities that must not round | +| `FLOAT` / `DOUBLE` | Approximate floating point | Measurements, scientific data | + +Each integer type also has an `UNSIGNED` variant that trades negative range for double the positive range. + +The critical distinction is exact versus approximate: + +- **DECIMAL** stores decimal values exactly: 0.1 + 0.2 is 0.3. +- **DOUBLE** stores binary approximations: the same sum comes back as 0.30000000000000004. + +Always use `DECIMAL` for money. A price column like `DECIMAL(10, 2)` holds up to 8 digits before the decimal point and exactly 2 after. + +# String types {% #strings %} + +| Type | Holds | Use for | +| --- | --- | --- | +| `VARCHAR(n)` | Up to n characters | Names, emails, most strings | +| `TEXT` | Up to 64 KB | Long free-form text | +| `MEDIUMTEXT` / `LONGTEXT` | Up to 16 MB / 4 GB | Documents, logs | +| `CHAR(n)` | Exactly n characters, space-padded in storage (trailing spaces stripped on read) | Fixed-length codes only | +| `ENUM(...)` | One value from a fixed list | Status columns | +| `BINARY` / `VARBINARY` / `BLOB` | Raw bytes | Hashes, encrypted data | + +`VARCHAR` needs an explicit maximum length, and unlike some databases the limit is enforced, so pick one with headroom: + +```sql +CREATE TABLE products ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(200) NOT NULL, + sku VARCHAR(20) NOT NULL UNIQUE, + price DECIMAL(10, 2) NOT NULL CHECK (price >= 0) +); +``` + +An `ENUM` column stores one value from a list declared in the schema and rejects everything else: + +```sql +CREATE TABLE tickets ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + status ENUM('open', 'in_progress', 'closed') NOT NULL DEFAULT 'open' +); +``` + +Changing the allowed values later requires an `ALTER TABLE`. If the list changes often, a lookup table with a foreign key is more flexible. + +By default, string comparison in `utf8mb4` is case-insensitive and accent-insensitive (`utf8mb4_0900_ai_ci` collation), so `WHERE email = 'ADA@EXAMPLE.COM'` matches `ada@example.com`. Use a `_bin` or `_as_cs` collation on columns where case must matter. + +# Date and time types {% #datetime %} + +| Type | Stores | Use for | +| --- | --- | --- | +| `TIMESTAMP` | Point in time, stored as UTC | Created/updated timestamps, events | +| `DATETIME` | Wall-clock time, no zone conversion | Scheduled local times | +| `DATE` | Calendar date | Birthdays, due dates | +| `TIME` | Time of day or duration | Opening hours | +| `YEAR` | Year | Rarely needed | + +`TIMESTAMP` converts input to UTC on write and back to the session time zone on read, so clients in different time zones agree on the moment an event happened. Its range ends in January 2038; use `DATETIME`, which stores the literal wall-clock value with no conversion, for dates beyond that. + +Both accept fractional seconds up to microseconds with an explicit precision, such as `DATETIME(6)`. A common pair of bookkeeping columns: + +```sql +CREATE TABLE notes ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + body TEXT, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); +``` + +`ON UPDATE CURRENT_TIMESTAMP` refreshes the column automatically whenever an update actually changes the row's data; an update that writes identical values leaves it untouched. + +# Boolean, UUID, and binary {% #other %} + +Flags, identifiers, and raw bytes each have an idiomatic home: + +- **BOOLEAN** is an alias for `TINYINT(1)`, with `TRUE` and `FALSE` as literals for 1 and 0; there is no separate boolean storage type. +- **UUIDs** have no dedicated column type: generate them with `UUID()` and store them either readably in `CHAR(36)` or compactly in `BINARY(16)`, converting with `UUID_TO_BIN` and `BIN_TO_UUID`. +- **VARBINARY** and the `BLOB` family hold raw bytes, such as hashes or encrypted data. + +```sql +CREATE TABLE api_tokens ( + token_id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())), + active BOOLEAN NOT NULL DEFAULT TRUE, + secret VARBINARY(255) NOT NULL +); + +INSERT INTO api_tokens (secret) VALUES (0xDEADBEEF); + +SELECT BIN_TO_UUID(token_id) AS token_id, active FROM api_tokens; +``` + +# JSON columns {% #json %} + +Use `JSON` for schemaless data attached to structured rows. Values are validated and stored in a binary format that supports path extraction: + +```sql +CREATE TABLE events ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + kind VARCHAR(50) NOT NULL, + payload JSON NOT NULL +); + +INSERT INTO events (kind, payload) +VALUES ('signup', '{"plan": "pro", "referrer": "newsletter"}'); + +SELECT payload->>'$.plan' AS plan +FROM events +WHERE payload->>'$.referrer' = 'newsletter'; +``` + +`->>` extracts a value at a JSON path as unquoted text. Reach for `JSON` when attributes vary per row; keep anything you filter or join on regularly as a real column. MySQL has no array column type, so a JSON array is also the idiomatic home for small value lists, or model them as a separate table; see [Data modeling](/docs/products/databases/mysql/concepts/data-modeling). + +# Constraints {% #constraints %} + +Constraints are rules the database enforces on every write, no matter which application or migration performs it: + +| Constraint | Enforces | +| --- | --- | +| `PRIMARY KEY` | Unique, non-null row identifier | +| `UNIQUE` | No duplicate values in a column or column group (multiple `NULL`s are allowed) | +| `NOT NULL` | Value must be present | +| `CHECK` | Boolean expression per row (deterministic functions only) | +| `FOREIGN KEY` | Value must exist in the referenced table | + +```sql +CREATE TABLE orders ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + customer_id BIGINT NOT NULL, + status ENUM('pending', 'paid', 'shipped', 'cancelled') NOT NULL DEFAULT 'pending', + total DECIMAL(10, 2) NOT NULL CHECK (total >= 0), + FOREIGN KEY (customer_id) REFERENCES customers (id) +); +``` + +A foreign key also controls what happens when the referenced row disappears: `ON DELETE CASCADE` removes dependent rows, `ON DELETE SET NULL` orphans them explicitly, and the default blocks the delete. Foreign keys are covered in depth in [Joins and relationships](/docs/products/databases/mysql/concepts/joins). + +# Generated columns {% #generated %} + +A generated column is one the database computes for you from the row's other columns, instead of accepting a value from the application. You declare the formula once in the schema; every write runs it automatically. This removes a whole class of bugs where a derived value, like a line total, is computed in application code and drifts out of sync with the columns it came from. Two variants exist: `VIRTUAL` computes the value on every read and stores nothing, while `STORED` computes on write and saves the result on disk like a normal column. + +```sql +CREATE TABLE line_items ( + quantity INT NOT NULL, + unit_price DECIMAL(10, 2) NOT NULL, + line_total DECIMAL(12, 2) GENERATED ALWAYS AS (quantity * unit_price) STORED +); + +INSERT INTO line_items (quantity, unit_price) VALUES (3, 19.99); + +SELECT line_total FROM line_items; +``` + +```text +line_total +59.97 +``` + +The insert supplies only `quantity` and `unit_price`; the database fills in `line_total` as 3 × 19.99. Writing to the column directly is an error, and if a later `UPDATE` changes the quantity, the total is recomputed in the same statement, so it can never disagree with its inputs. + +# Change a table {% #alter %} + +`ALTER TABLE` evolves a schema in place: + +```sql +ALTER TABLE customers ADD COLUMN phone VARCHAR(30); +ALTER TABLE customers MODIFY COLUMN phone VARCHAR(30) NOT NULL; +ALTER TABLE customers RENAME COLUMN phone TO phone_number; +ALTER TABLE customers DROP COLUMN phone_number; +``` + +MySQL 8 performs many alterations, including adding a column, as instant metadata changes. Others, such as changing a column's type, rebuild the table, so on large tables schedule those during a quiet period. + +{% info title="Full type catalog" %} +MySQL also ships spatial types (`GEOMETRY`, `POINT`, `LINESTRING`, `POLYGON`, and their `MULTI*` and `GEOMETRYCOLLECTION` variants), `SET` for multi-valued flags, and `BIT` for bit fields. Query `information_schema.COLUMNS` to see the exact type of every column in your schema. +{% /info %} diff --git a/src/routes/docs/products/databases/mysql/concepts/transactions/+page.markdoc b/src/routes/docs/products/databases/mysql/concepts/transactions/+page.markdoc new file mode 100644 index 0000000000..a16dfd9ec6 --- /dev/null +++ b/src/routes/docs/products/databases/mysql/concepts/transactions/+page.markdoc @@ -0,0 +1,175 @@ +--- +layout: article +title: Transactions +description: Group MySQL statements into atomic transactions. Covers COMMIT, ROLLBACK, savepoints, isolation levels, locking, and deadlocks. +--- + +A transaction groups statements into a single all-or-nothing unit. Either every statement takes effect, or none do, and no other connection ever sees a half-finished state. + +Two distinct things go wrong without that: + +- **Partial failure**: a crash or dropped connection after the debit but before the credit leaves data in a state that was never supposed to exist. +- **Interleaving**: two concurrent processes both read a balance of 100, both compute a new value, both write, and one update silently vanishes. + +Transactions address both, which is why they exist: statements apply atomically, and the database isolates transactions from each other's unfinished work. InnoDB, the default storage engine, provides full transaction support. + +# How a transaction works {% #how-it-works %} + +Think of a transaction as a private draft of the database that only your connection can see: + +- `START TRANSACTION` opens the draft. From here, your changes apply to the draft, not the shared database. +- Reads inside the transaction see the draft, so your own changes look real to you. Everyone else still sees the database as it was. +- `COMMIT` publishes the whole draft at once. Other connections go from seeing none of your changes to seeing all of them; there is no in-between state. +- `ROLLBACK` throws the draft away, and the database is as if the transaction never started. +- If your connection drops mid-transaction, the database rolls the draft back automatically. + +Everything else on this page, isolation levels, locks, deadlocks, is about what happens when several connections work on their drafts at the same time. + +# Setup {% #setup %} + +The examples below move money between two accounts, an operation where a half-applied change must be impossible. Create and seed the table first: + +```sql +CREATE TABLE accounts ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + owner VARCHAR(100) NOT NULL, + balance DECIMAL(10, 2) NOT NULL CHECK (balance >= 0) +); + +INSERT INTO accounts (owner, balance) VALUES ('ada', 100.00), ('grace', 50.00); +``` + +# Commit and roll back {% #basics %} + +By default MySQL runs in autocommit mode: every statement commits on its own. `START TRANSACTION` suspends that so several statements commit together: + +```sql +START TRANSACTION; +UPDATE accounts SET balance = balance - 30 WHERE owner = 'ada'; +UPDATE accounts SET balance = balance + 30 WHERE owner = 'grace'; +COMMIT; +``` + +If the connection drops between the two updates, the whole transaction rolls back and the money never left Ada's account. You can also abandon a transaction deliberately: + +```sql +START TRANSACTION; +DELETE FROM accounts; -- oops +SELECT COUNT(*) FROM accounts; -- returns 0 inside this transaction +ROLLBACK; +SELECT COUNT(*) FROM accounts; -- returns 2, nothing happened +``` + +Inside the transaction the delete looks real, but only to that connection. `ROLLBACK` discards it. This makes `START TRANSACTION` an effective safety net for hand-run maintenance SQL. + +The ACID properties describe what transactions guarantee: **atomicity** (all or nothing), **consistency** (constraints hold before and after), **isolation** (concurrent transactions don't see each other's partial work), and **durability** (committed data survives a crash). + +{% info title="DDL commits implicitly" %} +Statements like `CREATE TABLE`, `ALTER TABLE`, and `DROP TABLE` commit the current transaction immediately. Don't mix schema changes into a transaction and expect them to roll back. +{% /info %} + +# A failed statement does not abort the transaction {% #errors %} + +Unlike some databases, an error rolls back only the statement that failed. The transaction stays open and earlier work stays intact: + +```sql +START TRANSACTION; +UPDATE accounts SET balance = balance + 5 WHERE owner = 'grace'; +UPDATE accounts SET balance = balance - 200 WHERE owner = 'ada'; -- fails +``` + +```text +ERROR 3819 (HY000): Check constraint 'accounts_chk_1' is violated. +``` + +Despite the error, the transaction is still open and healthy, and committing keeps the update that succeeded: + +```sql +COMMIT; -- commits the first update; the failed one never happened +``` + +This is convenient, but it means your application must check errors per statement: blindly running a script and committing at the end can commit a half-applied change. When any statement in a unit fails and the unit must be all-or-nothing, issue `ROLLBACK` yourself. + +# Savepoints {% #savepoints %} + +A savepoint marks a spot you can roll back to without abandoning the whole transaction: + +```sql +START TRANSACTION; +UPDATE accounts SET balance = balance - 10 WHERE owner = 'ada'; + +SAVEPOINT before_bonus; +UPDATE accounts SET balance = balance - 200 WHERE owner = 'ada'; -- fails +ROLLBACK TO SAVEPOINT before_bonus; + +UPDATE accounts SET balance = balance + 10 WHERE owner = 'grace'; +COMMIT; +``` + +Everything before the savepoint and after the rollback commits. Drivers and ORMs use savepoints to implement nested transactions. + +# Isolation levels {% #isolation %} + +Isolation levels trade strictness for concurrency. They answer one question: what may this transaction see of other transactions' concurrent work? + +| Level | Prevents | Notes | +| --- | --- | --- | +| `READ UNCOMMITTED` | Nothing | Can read uncommitted (dirty) data; avoid | +| `READ COMMITTED` | Dirty reads | Each statement sees the latest committed data | +| `REPEATABLE READ` | + non-repeatable reads | Default. The whole transaction reads one consistent snapshot | +| `SERIALIZABLE` | + all anomalies | Reads take shared locks; conflicts can deadlock or wait | + +MySQL's default is `REPEATABLE READ`, stricter than many other databases' default. Set the level for the next transaction: + +```sql +SET TRANSACTION ISOLATION LEVEL READ COMMITTED; +START TRANSACTION; +SELECT SUM(balance) FROM accounts; +COMMIT; +``` + +Under `REPEATABLE READ`, InnoDB serves the whole transaction from a snapshot taken at its first read, so two reads of the same data always agree even while other transactions commit changes. Plain reads never block writers; InnoDB's multi-version concurrency control keeps old row versions around for readers. + +# Row locking {% #locking %} + +Writers automatically lock the rows they modify until commit; a second transaction updating the same row waits. When you read a value in order to update it, that implicit protection isn't enough, because two transactions can read the same balance concurrently and both write results based on stale data. `SELECT ... FOR UPDATE` locks rows on read: + +```sql +START TRANSACTION; +SELECT balance FROM accounts WHERE owner = 'ada' FOR UPDATE; +-- other transactions now wait to read-for-update or modify this row +UPDATE accounts SET balance = balance - 30 WHERE owner = 'ada'; +COMMIT; +``` + +Locks follow the rows InnoDB *scans*, not just the rows that match: an `UPDATE` whose `WHERE` clause has no usable index scans the whole table and locks every row in it until commit, serializing all concurrent writers. Indexing the columns your write paths filter on is a concurrency fix, not only a speed fix. See [Indexes](/docs/products/databases/mysql/concepts/indexes). + +For queue-like workloads where workers grab rows, add `SKIP LOCKED` so each worker takes the next unclaimed row instead of waiting. The claim only holds while the transaction is open, so the grab and the work's final update must share one transaction: + +```sql +START TRANSACTION; +SELECT id FROM accounts ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; +-- process the claimed row, then mark it done in the same transaction +COMMIT; +``` + +A concurrent worker running the same statement while the first transaction is open skips the claimed row and returns the next one. + +# Deadlocks {% #deadlocks %} + +A deadlock occurs when two transactions each hold a lock the other needs. Session A locks Ada's row and wants Grace's; session B holds Grace's and wants Ada's. Neither can proceed, so InnoDB detects the cycle immediately and kills one: + +```text +ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction +``` + +The aborted transaction rolls back; the survivor continues. Two habits prevent most deadlocks: + +- Lock rows in a consistent order across your codebase, for example always by ascending `id`. +- Keep transactions short. Don't hold one open across network calls or user input. + +The error message says it directly: the application should retry the aborted transaction. `SHOW ENGINE INNODB STATUS` includes a `LATEST DETECTED DEADLOCK` section with both queries when you need to diagnose one. + +# Transactions and pooling {% #pooling %} + +Transaction state lives on the connection, which matters when connecting through a pooler in transaction mode: session-level settings such as `SET SESSION TRANSACTION ISOLATION LEVEL` won't stick between statements, and every multi-statement unit must be wrapped in an explicit `START TRANSACTION`/`COMMIT` so it lands on one server connection. See [Connection pooling](/docs/products/databases/mysql/connection-pooling) for how this applies to your Appwrite database. diff --git a/src/routes/docs/products/databases/postgresql/+layout.svelte b/src/routes/docs/products/databases/postgresql/+layout.svelte index 1ae57a78eb..253d26dd24 100644 --- a/src/routes/docs/products/databases/postgresql/+layout.svelte +++ b/src/routes/docs/products/databases/postgresql/+layout.svelte @@ -23,6 +23,39 @@ } ] }, + { + label: 'Concepts', + items: [ + { + label: 'Tables and data types', + href: '/docs/products/databases/postgresql/concepts/tables' + }, + { + label: 'Querying rows', + href: '/docs/products/databases/postgresql/concepts/queries' + }, + { + label: 'Joins and relationships', + href: '/docs/products/databases/postgresql/concepts/joins' + }, + { + label: 'Indexes', + href: '/docs/products/databases/postgresql/concepts/indexes' + }, + { + label: 'Transactions', + href: '/docs/products/databases/postgresql/concepts/transactions' + }, + { + label: 'Data modeling', + href: '/docs/products/databases/postgresql/concepts/data-modeling' + }, + { + label: 'Security and access control', + href: '/docs/products/databases/postgresql/concepts/access-control' + } + ] + }, { label: 'Connecting', items: [ diff --git a/src/routes/docs/products/databases/postgresql/concepts/access-control/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/access-control/+page.markdoc new file mode 100644 index 0000000000..f423320155 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/access-control/+page.markdoc @@ -0,0 +1,138 @@ +--- +layout: article +title: Security and access control +description: Control access to PostgreSQL with roles, GRANT and REVOKE, and row-level security policies for multi-tenant data. +--- + +PostgreSQL controls access in three layers: + +- A **role** is an identity that can connect. +- **Privileges** decide what a role may do to each table. +- **Row-level security** narrows that further, to which rows. + +Your database's primary `admin` role can create additional roles, so you can give every service and teammate exactly the access it needs instead of sharing one all-powerful login. + +# Setup {% #setup %} + +The examples below protect a documents table whose rows belong to different owners. Create and seed it as `admin`, the role your database comes with: + +```sql +CREATE TABLE documents ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + owner text NOT NULL DEFAULT current_user, + title text NOT NULL +); + +INSERT INTO documents (owner, title) +VALUES ('app_ada', 'Ada plan'), ('app_grace', 'Grace notes'); +``` + +# Create roles {% #roles %} + +A role with `LOGIN` and a password is what other databases call a user: + +```sql +CREATE ROLE reporting LOGIN PASSWORD 'a-strong-password'; +CREATE ROLE app_ada LOGIN PASSWORD 'pw-ada'; +CREATE ROLE app_grace LOGIN PASSWORD 'pw-grace'; +``` + +New roles can connect but hold no privileges on your tables until granted some. You can also create and manage roles from the **Roles** tab of your database in the Appwrite Console; see [Database roles](/docs/products/databases/postgresql/connections#roles). + +# Grant privileges {% #grants %} + +Privileges are per table (or view, sequence, schema) and per action: + +```sql +GRANT SELECT ON documents TO reporting; +GRANT SELECT, INSERT, UPDATE, DELETE ON documents TO app_ada, app_grace; +``` + +| Privilege | Allows | +| --- | --- | +| `SELECT` | Read rows | +| `INSERT` / `UPDATE` / `DELETE` | Write rows | +| `USAGE` (on schema) | Access objects inside a schema | +| `CREATE` (on schema) | Create tables in a schema | +| `ALL` | Everything applicable to the object | + +`REVOKE` reverses any grant: `REVOKE INSERT ON documents FROM app_ada;`. To cover tables that don't exist yet, set default privileges once: `ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO reporting;`. + +Connecting as `reporting` now allows reads but rejects writes: + +```sql +INSERT INTO documents (title) VALUES ('nope'); +``` + +```text +ERROR: permission denied for table documents +``` + +This is the pattern for a dashboard, BI tool, or analyst account: a dedicated role that physically cannot modify data. + +# Row-level security {% #rls %} + +Privileges gate whole tables. Row-level security (RLS) filters individual rows through policies, enforced by the database no matter how the query is written. Enable it and define who sees what: + +```sql +ALTER TABLE documents ENABLE ROW LEVEL SECURITY; + +CREATE POLICY tenant_isolation ON documents + USING (owner = current_user) -- which rows are visible + WITH CHECK (owner = current_user); -- which rows may be written +``` + +`USING` filters reads, updates, and deletes; `WITH CHECK` validates new or modified rows. With the policy in place, connect as `app_ada` and the table simply appears to contain only Ada's rows: + +```sql +SELECT owner, title FROM documents; +``` + +```text + owner | title +---------+---------- + app_ada | Ada plan +``` + +The `DEFAULT current_user` on the `owner` column stamps new rows automatically, and the policy blocks writing rows for anyone else: + +```sql +INSERT INTO documents (title) VALUES ('Ada draft'); -- works, owner = app_ada +INSERT INTO documents (owner, title) VALUES ('app_grace', 'forged'); +``` + +```text +ERROR: new row violates row-level security policy for table "documents" +``` + +A cross-tenant `UPDATE ... WHERE owner = 'app_grace'` doesn't error; it matches zero visible rows and does nothing. The application can't leak what it can't see. + +{% info title="Table owners bypass RLS" %} +RLS does not apply to the table's owner, so queries as `admin` still see every row. That's usually what you want for migrations and support tooling. To subject the owner to policies too, run `ALTER TABLE documents FORCE ROW LEVEL SECURITY;`. +{% /info %} + +RLS also composes with privileges rather than replacing them: `reporting` can still `SELECT`, but sees zero rows because no row matches `owner = 'reporting'`. Add a second, permissive policy for roles that legitimately need everything: + +```sql +CREATE POLICY reporting_reads_all ON documents + FOR SELECT TO reporting + USING (true); +``` + +# Multi-tenant patterns {% #multi-tenant %} + +One role per end user only scales so far. The common production pattern uses one application role plus a session variable the app sets per request. Permissive policies on a table combine with `OR`, so replace the per-role policy instead of stacking the two: + +```sql +DROP POLICY tenant_isolation ON documents; + +CREATE POLICY tenant_by_setting ON documents + USING (owner = current_setting('app.current_tenant', true)) + WITH CHECK (owner = current_setting('app.current_tenant', true)); +``` + +The application runs `SET app.current_tenant = '...'` after taking a connection from the pool, and every query in that session is automatically scoped. Whichever variant you choose, the isolation lives in the database: a forgotten `WHERE` clause in application code returns no one else's data instead of everyone's. + +# What the primary role can do {% #admin-role %} + +The `admin` role you receive with the database owns your schema and can create roles (`CREATEROLE`), but it is not a superuser: instance-level settings, replication, and other managed responsibilities stay with the platform. Network-level restrictions such as IP allowlists are configured separately; see [Network security](/docs/products/databases/postgresql/network-security). diff --git a/src/routes/docs/products/databases/postgresql/concepts/data-modeling/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/data-modeling/+page.markdoc new file mode 100644 index 0000000000..763c7cb1cd --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/data-modeling/+page.markdoc @@ -0,0 +1,170 @@ +--- +layout: article +title: Data modeling and normalization +description: Design PostgreSQL schemas with normalization, decide when to denormalize, and use views to shape data for readers. +--- + +Data modeling decides where each fact lives. Normalization is the discipline of storing every fact exactly once, so it can't contradict itself. This page walks a flat spreadsheet-style table through the normal forms, then covers when to deliberately break the rules, and how views let you reshape data without duplicating it. + +# The problem with one big table {% #problem %} + +Start with an orders table designed the way a spreadsheet would be: + +```sql +CREATE TABLE orders_flat ( + order_id bigint, + customer_name text, + customer_email text, + product_names text, -- 'Keyboard, Mouse' + product_prices text -- '79.00, 29.50' +); + +INSERT INTO orders_flat VALUES + (1, 'Ada', 'ada@example.com', 'Keyboard, Mouse', '79.00, 29.50'), + (2, 'Ada', 'ada@example.com', 'Monitor', '349.99'), + (3, 'Grace', 'grace@example.com', 'Mouse', '29.50'); +``` + +Every design flaw here causes a concrete failure: + +- Ada's email is stored twice. Update one row and not the other, and the database now disagrees with itself. This is an **update anomaly**. +- Products only exist inside order rows. Delete order 2 and the Monitor, its price, everything, vanishes. A **delete anomaly**. +- A product has no row of its own, so recording one before anyone orders it means a row with empty order fields. An **insert anomaly**. +- "Which orders contain a Mouse?" requires string parsing instead of a `WHERE` clause. + +# First normal form: one value per cell {% #first-nf %} + +First normal form (1NF) requires each column to hold a single atomic value, no comma-separated lists. Split the line items into rows: + +```sql +CREATE TABLE order_lines_1nf ( + order_id bigint, + customer_name text, + customer_email text, + product_name text, + product_price numeric(10, 2) +); + +INSERT INTO order_lines_1nf VALUES + (1, 'Ada', 'ada@example.com', 'Keyboard', 79.00), + (1, 'Ada', 'ada@example.com', 'Mouse', 29.50), + (2, 'Ada', 'ada@example.com', 'Monitor', 349.99), + (3, 'Grace', 'grace@example.com', 'Mouse', 29.50); +``` + +Now `WHERE product_name = 'Mouse'` works. But the duplication got worse: Ada's email appears three times, and the Mouse's price twice. + +# Second and third normal form: facts move to their owners {% #second-third-nf %} + +Second normal form (2NF) says every column must depend on the whole key, which here is implicitly `(order_id, product_name)`: `product_price` depends only on the product, not on which order it's in, so it belongs in a products table. Third normal form (3NF) says no column may depend on a non-key column: `customer_email` depends on the customer, not the order, so it belongs in a customers table. + +Applying both produces the standard shape, where every fact has exactly one home: + +```sql +CREATE TABLE customers ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL, + email text NOT NULL UNIQUE +); + +CREATE TABLE products ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL, + price numeric(10, 2) NOT NULL +); + +CREATE TABLE orders ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + customer_id bigint NOT NULL REFERENCES customers (id), + created_at timestamptz NOT NULL DEFAULT now() +); + +CREATE TABLE order_items ( + order_id bigint NOT NULL REFERENCES orders (id), + product_id bigint NOT NULL REFERENCES products (id), + quantity integer NOT NULL DEFAULT 1, + unit_price numeric(10, 2) NOT NULL, -- price at time of order, see below + PRIMARY KEY (order_id, product_id) +); + +INSERT INTO customers (name, email) VALUES + ('Ada', 'ada@example.com'), ('Grace', 'grace@example.com'); +INSERT INTO products (name, price) VALUES + ('Keyboard', 79.00), ('Mouse', 29.50), ('Monitor', 349.99); +INSERT INTO orders (customer_id) VALUES (1), (1), (2); +INSERT INTO order_items (order_id, product_id, quantity, unit_price) VALUES + (1, 1, 1, 79.00), (1, 2, 1, 29.50), (2, 3, 1, 349.99), (3, 2, 1, 29.50); +``` + +Changing Ada's email is now a one-row `UPDATE` that cannot leave a stale copy anywhere. The anomalies are gone because duplication is gone. + +Notice `unit_price` in `order_items` looks like duplication but isn't: the price *at the time of the order* is a different fact from the product's *current* price, and both deserve a home. Normalization is about one home per fact, not zero copies of anything that looks similar. + +# Reading a normalized schema {% #querying %} + +Normalized data comes back together with joins: + +```sql +SELECT o.id AS order_id, c.name, sum(oi.quantity * oi.unit_price) AS total +FROM orders o +JOIN customers c ON c.id = o.customer_id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY o.id, c.name +ORDER BY o.id; +``` + +```text + order_id | name | total +----------+-------+-------- + 1 | Ada | 108.50 + 2 | Ada | 349.99 + 3 | Grace | 29.50 +``` + +If the joins feel verbose, that's what views are for, not denormalization. + +# Views: stored queries, not stored data {% #views %} + +A view names a query so readers get the convenient shape without the data being duplicated: + +```sql +CREATE VIEW order_summaries AS +SELECT o.id AS order_id, c.name AS customer, o.created_at, + sum(oi.quantity * oi.unit_price) AS total +FROM orders o +JOIN customers c ON c.id = o.customer_id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY o.id, c.name, o.created_at; + +SELECT customer, total FROM order_summaries WHERE order_id = 1; +``` + +The view runs its query on every read, so it is always current. A **materialized view** stores the result physically and serves reads from the stored copy, trading freshness for speed on expensive aggregations: + +```sql +CREATE MATERIALIZED VIEW customer_totals AS +SELECT c.name, sum(oi.quantity * oi.unit_price) AS lifetime_value +FROM customers c +JOIN orders o ON o.customer_id = c.id +JOIN order_items oi ON oi.order_id = o.id +GROUP BY c.name; + +SELECT * FROM customer_totals ORDER BY lifetime_value DESC; + +-- data changed? refresh on your schedule: +REFRESH MATERIALIZED VIEW customer_totals; +``` + +# When to denormalize {% #denormalize %} + +Denormalization deliberately duplicates a fact to make reads cheaper, accepting that your code must now keep the copies in sync. It's a real tool with a real cost, so it should be a measured response to a demonstrated problem, not a default: + +- **A hot aggregate**, such as showing order totals on every page: store `orders.total` and update it when items change, rather than summing on every read. +- **An access-pattern mismatch**, such as a search page filtering on a joined column at scale. +- **Snapshot semantics**, like `unit_price` above, which isn't really denormalization: the historical value is its own fact. + +Before duplicating data, check whether an index, a view, or a materialized view solves the read problem: indexes and views can never disagree with the source data, and a materialized view only lags until its next refresh, without needing any synchronization code of your own. When you do denormalize, keep the copies consistent inside one transaction, or with triggers, so a crash between the write and the sync can't leave them disagreeing. See [Transactions](/docs/products/databases/postgresql/concepts/transactions). + +# JSON columns in a relational model {% #jsonb %} + +A `jsonb` column is controlled denormalization for attributes that vary per row, such as per-event metadata. The rule of thumb: anything you filter on, join on, or aggregate regularly deserves a real column with a real type and real constraints; the long tail can live in `jsonb`. See [Tables and data types](/docs/products/databases/postgresql/concepts/tables#json). diff --git a/src/routes/docs/products/databases/postgresql/concepts/indexes/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/indexes/+page.markdoc new file mode 100644 index 0000000000..def046a614 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/indexes/+page.markdoc @@ -0,0 +1,202 @@ +--- +layout: article +title: Indexes +description: Speed up PostgreSQL queries with B-tree, composite, partial, and expression indexes, and read EXPLAIN ANALYZE output. +--- + +An index is a lookup structure the database maintains next to a table so it can find rows without scanning everything; the default B-tree kind keeps its entries sorted. Reads get faster; writes pay a small tax to keep each index current. Knowing when an index helps, and how to confirm it's being used, is the highest-leverage performance skill in SQL. + +# Setup {% #setup %} + +Index behavior only shows up with enough data on the table, so the setup seeds 100,000 users to give the query planner a real choice to make: + +```sql +CREATE TABLE users ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + email text NOT NULL, + country text NOT NULL, + created_at timestamptz NOT NULL +); + +INSERT INTO users (email, country, created_at) +SELECT 'user' || n || '@example.com', + (ARRAY['DE','US','IN','BR'])[1 + n % 4], + now() - (n || ' minutes')::interval +FROM generate_series(1, 100000) AS n; + +ANALYZE users; +``` + +`ANALYZE` refreshes the statistics the planner uses to estimate row counts. PostgreSQL runs it automatically in the background; running it manually after a bulk load just avoids waiting. + +# How an index works {% #how-it-works %} + +{% only_dark %} +![Index lookup: binary search over the sorted index, entry pointing to the table row](/images/docs/products/databases/concepts/dark/index-lookup.avif) +{% /only_dark %} +{% only_light %} +![Index lookup: binary search over the sorted index, entry pointing to the table row](/images/docs/products/databases/concepts/index-lookup.avif) +{% /only_light %} + +Table rows are stored in no order useful for searching an arbitrary column, so answering `WHERE email = '...'` without an index means reading every row and checking each one. The work grows with the table: ten times the rows, ten times the reads. + +A **B-tree** (balanced tree) is the data structure indexes use to fix this. It keeps every value of the indexed column in **sorted order**, stored as a tree of small pages: the top page holds a few boundary values that direct the search into one of its child pages, each child narrows the range further, and the bottom layer, the leaves, holds the actual values with pointers back to their rows. Sorted order is what makes searching cheap: + +- The database starts in the middle of the index, checks whether the target value sorts before or after that point, and discards the half that cannot contain it. Repeating this takes a handful of steps even on millions of rows. +- Equal values sit next to each other, so one descent lands on every matching entry at once. +- The same sorted order answers range conditions (`<`, `BETWEEN`) and returns rows already sorted for `ORDER BY`. + +Indexes have a price: each one is a second copy of the column that must be kept correct, so every insert, update, and delete on the table also rewrites part of every index. They trade write work and disk space for read speed, which is why you add them for the queries you actually run rather than on every column. + +# Reading EXPLAIN ANALYZE {% #explain %} + +Before adding indexes, you need to see what the database is currently doing. Prefix any query with `EXPLAIN ANALYZE` and instead of returning its result, the database runs it and reports the plan it used: + +```sql +EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user4242@example.com'; +``` + +```text + Seq Scan on users (cost=0.00..2175.00 rows=1 width=40) (actual time=0.141..2.565 rows=1.00 loops=1) + Filter: (email = 'user4242@example.com'::text) + Rows Removed by Filter: 99999 +``` + +Reading it line by line: + +- **Seq Scan on users** is the chosen strategy: a sequential scan, reading the table start to finish. +- **Filter** is the condition checked against every row as it's read. +- **Rows Removed by Filter: 99999** is the waste: 100,000 rows read, 99,999 discarded, 1 returned. +- **actual time=0.141..2.565** is when the first and last row were produced, in milliseconds. The `cost` numbers are the planner's internal estimates for comparing candidate plans, not milliseconds. + +Exact numbers will differ on your database; the plan shape is what matters, and this shape, an entire table read to return one row, is the signal that an index would help. Plain `EXPLAIN` without `ANALYZE` shows the plan without executing the query, which is safer for slow queries and writes. + +# Create an index {% #create %} + +`CREATE INDEX` builds the structure from the table's existing rows and keeps it maintained on every future write. Rerunning the earlier query shows the planner picking it up immediately: + +```sql +CREATE INDEX idx_users_email ON users (email); + +EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user4242@example.com'; +``` + +```text + Index Scan using idx_users_email on users (cost=0.42..8.44 rows=1 width=40) (actual time=0.019..0.019 rows=1.00 loops=1) + Index Cond: (email = 'user4242@example.com'::text) +``` + +The plan flipped to an `Index Scan`, and execution time dropped from milliseconds to microseconds. + +One B-tree index serves several kinds of conditions on its column: + +- equality: `=` and `IN` +- ranges: `<`, `>`, `BETWEEN` +- sorting: `ORDER BY` +- prefix patterns like `LIKE 'user42%'`, with a caveat: a normal index sorts text by human-language rules, which don't match how `LIKE` compares characters, so prefix searches ignore it. Adding the `text_pattern_ops` option when creating the index makes them work. + +Primary keys and `UNIQUE` constraints create B-tree indexes automatically, so don't add duplicates for those columns. + +# Composite indexes and column order {% #composite %} + +An index on multiple columns is sorted by the first column, then the second within it, like a phone book sorted by last name, then first name. Column order decides which queries it serves: + +```sql +CREATE INDEX idx_users_email_created ON users (email, created_at); +``` + +This index answers `WHERE email = ...`, and `WHERE email = ... AND created_at > ...`, but a filter on `created_at` alone can't use the sorted order because entries for every email are interleaved: + +```sql +EXPLAIN SELECT * FROM users WHERE created_at > now() - interval '1 day'; +``` + +```text + Seq Scan on users (cost=0.00..2675.00 rows=1428 width=40) + Filter: (created_at > (now() - '1 day'::interval)) +``` + +Rule of thumb: put equality-filtered columns first and range-filtered columns last. If you also query `created_at` on its own, that's a separate index. + +{% info title="Skip scan in PostgreSQL 18" %} +When the leading column has very few distinct values, PostgreSQL 18 can "skip scan" a composite index even if the query doesn't filter on the leading column. It helps in that narrow case, but designing column order for your queries remains the right approach. +{% /info %} + +# Covering indexes {% #covering %} + +A normal index lookup is two steps: find the matching entries in the index, then fetch each matching row from the table to read the other columns. That second step is the expensive part, and it's unnecessary when the query only asks for columns the index already stores. + +This query selects only `email`, and the index contains `email`, so the answer comes straight out of the index: + +```sql +EXPLAIN ANALYZE SELECT email FROM users WHERE email = 'user4242@example.com'; +``` + +```text + Index Only Scan using idx_users_email_created on users (cost=0.42..4.44 rows=1 width=21) (actual time=0.041..0.041 rows=1.00 loops=1) + Index Cond: (email = 'user4242@example.com'::text) + Heap Fetches: 0 +``` + +- **Index Only Scan** is the plan node for answering from the index alone. +- **Heap Fetches: 0** confirms the table was read zero times. + +An index that satisfies a query this way is called a covering index. If a query also reads one extra column, you can add that column to the index with the `INCLUDE` option, which stores it alongside the entries without making it searchable. + +# Partial indexes {% #partial %} + +A partial index covers only rows matching a condition. It's smaller and cheaper to maintain than a full index, ideal when queries always target the same slice: + +```sql +CREATE INDEX idx_users_recent_de ON users (created_at) WHERE country = 'DE'; +``` + +The planner considers this index only for queries whose `WHERE` clause implies the index's condition, so include the `country = 'DE'` filter in queries that should use it. Common uses: unshipped orders, active sessions, rows where a nullable column is set. + +# Expression indexes {% #expression %} + +Indexing an expression makes queries on that expression fast, such as case-insensitive lookups: + +```sql +CREATE INDEX idx_users_email_lower ON users (lower(email)); + +EXPLAIN SELECT * FROM users WHERE lower(email) = 'user4242@example.com'; +``` + +```text + Bitmap Heap Scan on users (cost=16.29..828.37 rows=500 width=40) + Recheck Cond: (lower(email) = 'user4242@example.com'::text) + -> Bitmap Index Scan on idx_users_email_lower (cost=0.00..16.17 rows=500 width=0) +``` + +The query's expression must match the indexed expression exactly. A `Bitmap Index Scan` is another index-driven strategy: PostgreSQL collects matching row locations from the index first, then fetches them from the table in physical order. + +# Beyond B-tree {% #other-types %} + +PostgreSQL ships six index access methods. B-tree is the default and right for most columns; the others serve specific data shapes: + +| Type | Use for | +| --- | --- | +| `btree` | Equality and ranges on scalar values (default) | +| `gin` | `jsonb` containment, arrays, full-text search | +| `gist` | Geometric data, ranges, exclusion constraints | +| `brin` | Huge append-only tables with naturally ordered data | +| `hash` | Equality only; rarely better than B-tree | +| `spgist` | Space-partitioned data such as prefixes | + +# The cost of indexes {% #cost %} + +Every index consumes disk and slows every `INSERT`, `UPDATE`, and `DELETE` on the table, because each write updates each index. They add up quickly: + +```sql +SELECT pg_size_pretty(pg_relation_size('users')) AS table_size, + pg_size_pretty(pg_relation_size('idx_users_email')) AS index_size; +``` + +```text + table_size | index_size +------------+------------ + 7400 kB | 3992 kB +``` + +One index here costs more than half the table's size again. Index the queries you actually run, verify each index earns its keep with `EXPLAIN`, and drop the ones that don't. To find slow queries worth indexing in the first place, see [Monitoring](/docs/products/databases/postgresql/monitoring). diff --git a/src/routes/docs/products/databases/postgresql/concepts/joins/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/joins/+page.markdoc new file mode 100644 index 0000000000..f1ff9721b0 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/joins/+page.markdoc @@ -0,0 +1,228 @@ +--- +layout: article +title: Joins and relationships +description: Model relationships with foreign keys and combine PostgreSQL tables with INNER, LEFT, FULL, and CROSS joins. +--- + +Relational databases keep each entity in its own table and connect them through **keys**. A join combines rows from two tables by matching values, usually a **foreign key** on one side against a **primary key** on the other. This page covers how to model the two relationship shapes you'll meet constantly, and the join types you'll use in practice. + +# Setup {% #setup %} + +The examples below use two tables, customers and orders, where every order records which customer placed it. Create and seed them first: + +```sql +CREATE TABLE customers ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL +); + +CREATE TABLE orders ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + customer_id bigint NOT NULL REFERENCES customers (id), + total numeric(10, 2) NOT NULL +); + +INSERT INTO customers (name) VALUES ('Ada'), ('Grace'), ('Linus'); +INSERT INTO orders (customer_id, total) VALUES + (1, 120.00), (1, 80.00), (2, 45.50); +``` + +Ada has two orders, Grace has one, and Linus has none. + +# What a join actually does {% #what-a-join-does %} + +A join takes two tables and produces a new, temporary table built from them in three steps: + +1. Pair rows from one side with rows from the other. +2. Evaluate the **join condition** on each pair, here `o.customer_id = c.id`. +3. Keep the pairs where it's true; each one becomes a result row carrying the columns of both sides. + +```text +customers orders result of the join +id | name id | customer_id | total name | total + 1 | Ada ←──┬── 1 | 1 | 120.00 Ada | 120.00 + └── 2 | 1 | 80.00 Ada | 80.00 + 2 | Grace ←───── 3 | 2 | 45.50 Grace | 45.50 + 3 | Linus (no order matches) +``` + +Two things fall out of this model: + +- A row that matches several rows on the other side appears several times in the result: Ada shows up twice because two orders point at her. +- A row that matches nothing, like Linus, produces no pair at all, and what happens to such unmatched rows is exactly what distinguishes the join types below. + +The database doesn't literally build every combination; indexes let it jump straight to matching rows, but the result is always as if it had. + +# One-to-many relationships {% #one-to-many %} + +One customer has many orders, so `orders` carries a `customer_id` column referencing `customers`. The `REFERENCES` clause creates a foreign key: the database rejects any `customer_id` that doesn't exist in `customers`: + +```sql +INSERT INTO orders (customer_id, total) VALUES (99, 10.00); +``` + +```text +ERROR: insert or update on table "orders" violates foreign key constraint "orders_customer_id_fkey" +DETAIL: Key (customer_id)=(99) is not present in table "customers". +``` + +A foreign key also decides what happens when the parent row is deleted. Declare it with the behavior you want: + +- `ON DELETE NO ACTION` (the default) blocks deleting a customer who still has orders. +- `ON DELETE CASCADE` deletes the customer's orders along with the customer. +- `ON DELETE SET NULL` keeps the orders but clears their `customer_id` (the column must be nullable). + +# Inner joins {% #inner %} + +An inner join returns only rows that match on both sides: + +```sql +SELECT c.name, o.total +FROM customers c +JOIN orders o ON o.customer_id = c.id +ORDER BY c.name, o.total; +``` + +```text + name | total +-------+-------- + Ada | 80.00 + Ada | 120.00 + Grace | 45.50 +``` + +Linus disappears from the result because he has no matching order. `JOIN` and `INNER JOIN` are the same thing. + +# Left joins {% #left %} + +A left join keeps every row from the left table and fills the right side with `NULL` where nothing matches: + +```sql +SELECT c.name, o.total +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +ORDER BY c.name, o.total; +``` + +```text + name | total +-------+-------- + Ada | 80.00 + Ada | 120.00 + Grace | 45.50 + Linus | +``` + +This is the join for "all X, with their Y if any". Combined with aggregation it answers questions like order counts per customer, including zero: + +```sql +SELECT c.name, count(o.id) AS orders +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +GROUP BY c.name +ORDER BY orders DESC; +``` + +Note `count(o.id)`, not `count(*)`: counting a column from the right table skips the `NULL` produced for Linus, yielding 0 instead of 1. + +`RIGHT JOIN` mirrors `LEFT JOIN` in the other direction. In practice, most people reorder the tables and use `LEFT JOIN` for consistency. + +# Full joins {% #full %} + +A full join keeps unmatched rows from both sides. It's useful for reconciliation, such as comparing two datasets that should agree: + +```sql +CREATE TABLE imported_customers (id bigint, name text); +INSERT INTO imported_customers VALUES (1, 'Ada'), (4, 'Margaret'); + +SELECT c.name AS in_database, i.name AS in_import +FROM customers c +FULL JOIN imported_customers i ON i.id = c.id +ORDER BY c.name; +``` + +```text + in_database | in_import +-------------+----------- + Ada | Ada + Grace | + Linus | + | Margaret +``` + +# Cross joins {% #cross %} + +A cross join produces every combination of rows from both tables, with no matching condition. Use it to generate combinations, such as every product in every size: + +```sql +SELECT c.name, s.size +FROM customers c +CROSS JOIN (VALUES ('S'), ('M'), ('L')) AS s (size) +ORDER BY c.name, s.size; +``` + +Three customers times three sizes returns nine rows. Be careful with large tables: the result size is the product of both row counts. + +# Anti-joins: rows without a match {% #anti-join %} + +"Customers with no orders" is an anti-join. Two equivalent spellings: + +```sql +SELECT name FROM customers c +WHERE NOT EXISTS ( + SELECT 1 FROM orders o WHERE o.customer_id = c.id +); + +SELECT c.name +FROM customers c +LEFT JOIN orders o ON o.customer_id = c.id +WHERE o.id IS NULL; +``` + +Both return only Linus. Prefer `NOT EXISTS` over `NOT IN (SELECT ...)`: if the subquery ever returns a `NULL`, `NOT IN` returns no rows at all, and nothing reports an error. + +# Many-to-many relationships {% #many-to-many %} + +When both sides can have many of the other, such as orders and products, neither table can hold the foreign key. A junction table holds one row per connection: + +```sql +CREATE TABLE products ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL +); + +CREATE TABLE order_items ( + order_id bigint NOT NULL REFERENCES orders (id), + product_id bigint NOT NULL REFERENCES products (id), + quantity integer NOT NULL DEFAULT 1, + PRIMARY KEY (order_id, product_id) +); + +INSERT INTO products (name) VALUES ('Keyboard'), ('Mouse'); +INSERT INTO order_items (order_id, product_id, quantity) VALUES + (1, 1, 1), (1, 2, 2), (2, 2, 1); +``` + +The composite primary key `(order_id, product_id)` prevents duplicate connections, and the junction table is the natural home for relationship attributes like `quantity`. Traversing the relationship is two joins: + +```sql +SELECT o.id AS order_id, p.name, oi.quantity +FROM orders o +JOIN order_items oi ON oi.order_id = o.id +JOIN products p ON p.id = oi.product_id +ORDER BY o.id, p.name; +``` + +```text + order_id | name | quantity +----------+----------+---------- + 1 | Keyboard | 1 + 1 | Mouse | 2 + 2 | Mouse | 1 +``` + +Each result row is one line item: the first join finds the connections belonging to each order, and the second swaps each `product_id` for the product's actual name. The Mouse appears under both orders because two junction rows point at it, one connection per row. + +# Join or separate queries? {% #vs-n-plus-1 %} + +Fetching a list and then querying once per row (the N+1 pattern) multiplies round trips and usually loses badly to a single join, even a large one. Let the database combine the data; that is what it is optimized for. If a join's result set explodes because one row matches thousands, paginate or aggregate on the many side instead of splitting into per-row queries. diff --git a/src/routes/docs/products/databases/postgresql/concepts/queries/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/queries/+page.markdoc new file mode 100644 index 0000000000..eda4d6a252 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/queries/+page.markdoc @@ -0,0 +1,247 @@ +--- +layout: article +title: Querying rows +description: Read and write PostgreSQL rows with SELECT, INSERT, UPDATE, and DELETE. Covers filtering, aggregation, pagination, and upserts. +--- + +Four statements do almost all the work in a relational database: + +- **SELECT** reads rows +- **INSERT** adds new rows +- **UPDATE** changes existing rows +- **DELETE** removes rows + +SQL is declarative: a query describes the result you want, and the database's planner decides how to produce it, choosing between indexes, scans, and join strategies on its own. That's why the same query keeps working as data grows and indexes change. + +This page walks through each statement, plus the querying patterns you reach for daily: filtering, aggregation, pagination, and upserts. + +# Setup {% #setup %} + +The examples below work against a small product catalog. Create and seed it first: + +```sql +CREATE TABLE products ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL, + price numeric(10, 2) NOT NULL, + stock integer NOT NULL DEFAULT 0 +); + +INSERT INTO products (name, price, stock) VALUES + ('Keyboard', 79.00, 120), + ('Mouse', 29.50, 200), + ('Monitor', 349.99, 14), + ('Webcam', 59.00, 0), + ('Desk mat', 19.90, 45); +``` + +# Read rows {% #select %} + +A `SELECT` statement has three jobs, each handled by its own clause: choose which columns to return, decide which rows qualify, and put them in order: + +```sql +SELECT name, price +FROM products +WHERE stock > 0 +ORDER BY price DESC; +``` + +```text + name | price +----------+-------- + Monitor | 349.99 + Keyboard | 79.00 + Mouse | 29.50 + Desk mat | 19.90 +``` + +Four of the five products come back: the Webcam is filtered out because its stock is 0, and the rest arrive sorted by price, highest first. The other columns still exist on those rows; the query just didn't ask for them. Without an `ORDER BY`, row order is arbitrary and can change between runs, so always order results the user will see. + +`WHERE` accepts any boolean expression, built from a handful of operators: + +- **Comparisons** (`=`, `<`, `>`, `<=`, `>=`, `<>`) work on numbers, text, and dates alike. +- **BETWEEN** matches a range, bounds included. +- **ILIKE** matches string patterns case-insensitively, where `%` stands for any sequence of characters (`LIKE` is the case-sensitive variant). +- **IN** matches any value in a list. +- **AND** and **OR** combine conditions, with parentheses to group them. + +```sql +SELECT name FROM products WHERE price BETWEEN 20 AND 100; -- range +SELECT name FROM products WHERE name ILIKE '%mo%'; -- case-insensitive match +SELECT name FROM products WHERE stock IN (0, 14); -- membership +SELECT name FROM products WHERE stock = 0 OR price < 25; -- combined conditions +``` + +Avoid `SELECT *` in application code. Naming columns keeps results stable when the table gains columns later and avoids transferring data you don't use. + +# Insert rows {% #insert %} + +`INSERT` names the columns it provides and gives a value for each; omitted columns fall back to their defaults, like the auto-generated `id` here: + +```sql +INSERT INTO products (name, price, stock) +VALUES ('USB hub', 24.00, 80) +RETURNING id, name; +``` + +`RETURNING` gives back any columns of the rows just written, so you get the generated `id` without a second query. It works on `UPDATE` and `DELETE` too. + +# Update rows {% #update %} + +`UPDATE` changes the columns you name on every row matching the `WHERE` clause: + +```sql +UPDATE products +SET price = price * 0.90 +WHERE stock > 100 +RETURNING name, price; +``` + +The `SET` expression can reference the row's current values, as the discount above does. Without a `WHERE` clause, `UPDATE` rewrites the entire table, so check the target set first with a `SELECT` using the same `WHERE` when running one by hand. + +# Delete rows {% #delete %} + +`DELETE` removes every row matching the `WHERE` clause: + +```sql +DELETE FROM products +WHERE stock = 0 +RETURNING name; +``` + +Without a `WHERE` clause, `DELETE FROM products` removes every row in the table. For hand-run maintenance, wrap the statement in a transaction so you can inspect the result and roll it back. See [Transactions](/docs/products/databases/postgresql/concepts/transactions). + +# Aggregate {% #aggregate %} + +An aggregate function computes a single value over a set of rows, such as a *count of orders* or a *total spend per customer*: + +- **count(*)** counts rows +- **sum** and **avg** total and average a numeric column +- **min** and **max** find the extremes + +The demonstration needs a table where several rows belong to each customer: + +```sql +CREATE TABLE orders ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + customer text NOT NULL, + total numeric(10, 2) NOT NULL +); + +INSERT INTO orders (customer, total) VALUES + ('ada', 120.00), ('ada', 80.00), ('grace', 45.50), + ('grace', 30.00), ('grace', 25.00), ('linus', 999.99); +``` + +By default an aggregate covers every row in the table: `SELECT sum(total) FROM orders` returns one number, the total across all six orders. `GROUP BY customer` changes that. The database first gathers rows with the same customer value together, Ada's two orders, Grace's three, Linus's one, then runs the aggregate functions once for each of those groups. The result has one row per customer instead of one row for the whole table: + +```sql +SELECT customer, + count(*) AS orders, + sum(total) AS lifetime_value +FROM orders +GROUP BY customer +HAVING sum(total) > 100 +ORDER BY lifetime_value DESC; +``` + +```text + customer | orders | lifetime_value +----------+--------+---------------- + linus | 1 | 999.99 + ada | 2 | 200.00 + grace | 3 | 100.50 +``` + +Six order rows became three result rows, one per customer: + +- Ada's two orders were summed into 200.00 +- Grace's three orders were summed into 100.50 +- Linus's single order stands alone at 999.99 + +In a grouped query, every selected column must be either grouped on (like `customer`) or aggregated (like `sum(total)`), because each result row now represents many source rows. + +`WHERE` and `HAVING` both filter, but at different stages: + +- **WHERE** filters individual rows, before grouping. It cannot use aggregate results, because they haven't been computed yet. +- **HAVING** filters the groups, after the aggregates are computed. + +Here `HAVING sum(total) > 100` keeps only customers whose orders total more than 100. Grace passes at 100.50; a threshold of 150 would exclude her. + +# Paginate {% #pagination %} + +Pagination splits a large result into pages. There are two ways to do it: + +- **Offset pagination** asks for "skip the first 20 rows, return the next 10". Simple, but the database still reads and discards every skipped row, so deep pages get slower and slower. +- **Keyset pagination** asks for "return the 10 rows after the last one I saw". The database jumps straight to that position, so every page costs the same as the first. + +`LIMIT` and `OFFSET` are the offset approach: + +```sql +SELECT id, name FROM products ORDER BY id LIMIT 2 OFFSET 2; +``` + +Keyset pagination filters on the last value seen instead: + +```sql +SELECT id, name +FROM products +WHERE id > 2 -- last id from the previous page +ORDER BY id +LIMIT 2; +``` + +Keyset pagination stays fast at any depth because the index seeks straight to the boundary, provided the ordering columns are indexed. It requires a deterministic, unique ordering (a single column like `id`, or a composite) and can't jump to an arbitrary page number. + +# Upsert {% #upsert %} + +An upsert writes a row without knowing whether it already exists: insert it if it's new, update it if it's not. Stock counts, settings, and sync jobs all need this. + +The obvious approach, `SELECT` to check and then `INSERT` or `UPDATE` accordingly, has a race condition: another connection can insert the same key between your check and your write, and your insert fails. + +`INSERT ... ON CONFLICT` performs the check and the write as one atomic statement, so the race cannot happen: + +```sql +CREATE TABLE inventory ( + sku text PRIMARY KEY, + quantity integer NOT NULL +); + +INSERT INTO inventory (sku, quantity) VALUES ('KB-01', 10); + +-- Second write for the same key updates instead of failing +INSERT INTO inventory (sku, quantity) VALUES ('KB-01', 5) +ON CONFLICT (sku) DO UPDATE +SET quantity = inventory.quantity + EXCLUDED.quantity +RETURNING sku, quantity; +``` + +```text + sku | quantity +-------+---------- + KB-01 | 15 +``` + +What happened: + +- The first insert creates KB-01 with quantity 10. +- The second insert collides with it on the primary key, so instead of failing, it runs the `DO UPDATE` clause: existing 10 plus incoming 5 gives 15. +- `EXCLUDED` refers to the row that would have been inserted, which is how the update reaches the incoming values. + +Use `ON CONFLICT DO NOTHING` when duplicates should be silently ignored instead. + +# Subqueries and CTEs {% #ctes %} + +A common table expression (CTE) names an intermediate result so a complex query reads top to bottom: + +```sql +WITH big_spenders AS ( + SELECT customer + FROM orders + GROUP BY customer + HAVING sum(total) > 150 +) +SELECT customer FROM big_spenders ORDER BY customer; +``` + +CTEs and subqueries are interchangeable in most positions. Prefer whichever keeps the query readable; PostgreSQL inlines CTEs into the surrounding query plan where possible, so there is normally no performance penalty. diff --git a/src/routes/docs/products/databases/postgresql/concepts/tables/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/tables/+page.markdoc new file mode 100644 index 0000000000..12876fdc1e --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/tables/+page.markdoc @@ -0,0 +1,220 @@ +--- +layout: article +title: Tables and data types +description: Create PostgreSQL tables with the right column types and constraints. Covers numeric, text, date and time, JSON, and array types. +--- + +A table is the unit of storage in a relational database, a named grid where: + +- each **row** is one record: one customer, one order +- each **column** is one attribute every record shares: name, price, creation time +- each column has a **type** that determines what values it accepts and how they compare, sort, and calculate + +Unlike a spreadsheet, the set of columns is declared up front and enforced; every row has exactly those columns. This fixed shape is what lets the database enforce correctness: precise types and constraints reject bad data before it ever reaches your application. + +The examples on this page build up pieces of a small store schema: customers, products, and orders. + +# Create a table {% #create %} + +`CREATE TABLE` names the table and declares each column with its type and the rules it must obey: + +```sql +CREATE TABLE customers ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL, + email text NOT NULL UNIQUE, + created_at timestamptz NOT NULL DEFAULT now() +); +``` + +This declaration packs in the most common column features: + +- `GENERATED ALWAYS AS IDENTITY` makes the database assign an auto-incrementing value. Prefer it over the older `serial` shorthand, which creates a separate sequence with looser ownership semantics. +- `PRIMARY KEY` uniquely identifies each row and creates an index automatically. +- `NOT NULL` rejects missing values, and `UNIQUE` rejects duplicates. +- `DEFAULT now()` fills the column when an insert doesn't provide a value. + +# Numeric types {% #numeric %} + +| Type | Range | Use for | +| --- | --- | --- | +| `smallint` | −32,768 to 32,767 | Small counters, enum-like codes | +| `integer` | about ±2.1 billion | General whole numbers | +| `bigint` | about ±9.2 quintillion | IDs, anything that may grow | +| `numeric(p, s)` | Exact decimal, up to `p` digits | Money, quantities that must not round | +| `real` / `double precision` | Approximate floating point | Measurements, scientific data | + +The critical distinction is exact versus approximate: + +- **numeric** stores decimal values exactly: 0.1 + 0.2 is 0.3. +- **double precision** stores binary approximations: the same sum comes back as 0.30000000000000004. + +Always use `numeric` for money. A price column like `numeric(10, 2)` holds up to 8 digits before the decimal point and exactly 2 after; plain `numeric` with no qualifiers accepts values of any precision. + +# Text types {% #text %} + +PostgreSQL has exactly three character types, and they all share the same storage underneath: + +| Type | Holds | Use for | +| --- | --- | --- | +| `text` | Strings of any length, up to about 1 GB | All strings (the default choice) | +| `varchar(n)` | Up to n characters | Same as `text`, plus an enforced length limit | +| `char(n)` | Exactly n characters, space-padded | Fixed-length codes only | + +There is no tiered family like other databases' TINYTEXT or LONGTEXT; one `text` type covers everything. Use `text` for all strings. PostgreSQL does not treat `varchar` differently from `text` in storage or performance, so a length limit is purely a business rule: + +```sql +CREATE TABLE products ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + name text NOT NULL, + sku varchar(20) NOT NULL UNIQUE, -- length limit as a business rule + price numeric(10, 2) NOT NULL CHECK (price >= 0) +); +``` + +# Date and time types {% #datetime %} + +| Type | Stores | Use for | +| --- | --- | --- | +| `timestamptz` | Point in time, UTC internally | Created/updated timestamps, events | +| `timestamp` | Wall-clock time, no zone | Rarely the right choice | +| `date` | Calendar date | Birthdays, due dates | +| `time` | Time of day | Opening hours | +| `interval` | Duration | Timeouts, subscription lengths | + +Default to `timestamptz`. It converts input to UTC on write and renders it in the session's time zone on read, so two clients in different time zones always agree on the moment an event happened: + +```sql +CREATE TABLE deployments ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + version text NOT NULL, + deployed_at timestamptz NOT NULL DEFAULT now() +); + +INSERT INTO deployments (version, deployed_at) VALUES + ('1.4.0', '2026-07-15 09:00:00+02'), -- written from Berlin + ('1.4.1', '2026-07-15 07:30:00+00'); -- written from London + +SELECT version, deployed_at FROM deployments ORDER BY deployed_at; +``` + +Both rows are stored in UTC, so the ordering is correct regardless of the time zone each writer used: 07:00 UTC (1.4.0) sorts before 07:30 UTC (1.4.1). + +# Boolean, UUID, and binary {% #other %} + +Three more types cover flags, identifiers, and raw bytes: + +- **boolean** accepts `true`/`false` and the literals `'yes'`, `'no'`, `'1'`, `'0'`. +- **uuid** stores 128-bit identifiers natively in 16 bytes, and `gen_random_uuid()` generates them without any extension. +- **bytea** holds raw bytes, such as hashes or encrypted blobs. + +```sql +CREATE TABLE api_tokens ( + token_id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + active boolean NOT NULL DEFAULT true, + secret bytea NOT NULL +); +``` + +# JSON columns {% #json %} + +Use `jsonb` for schemaless data attached to structured rows. It stores a parsed binary representation that supports indexing and containment queries; plain `json` keeps the original text and is only useful when you must preserve key order or duplicates: + +```sql +CREATE TABLE events ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + kind text NOT NULL, + payload jsonb NOT NULL DEFAULT '{}' +); + +INSERT INTO events (kind, payload) +VALUES ('signup', '{"plan": "pro", "referrer": "newsletter"}'); + +SELECT payload->>'plan' AS plan +FROM events +WHERE payload @> '{"referrer": "newsletter"}'; +``` + +`->>` extracts a field as text, and `@>` tests containment. Reach for `jsonb` when attributes vary per row; keep anything you filter or join on regularly as a real column. + +# Array types {% #arrays %} + +Any type can be stored as an array by appending `[]`: + +```sql +CREATE TABLE articles ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + tags text[] NOT NULL DEFAULT '{}' +); + +INSERT INTO articles (tags) VALUES (ARRAY['sql', 'tutorial']); + +SELECT * FROM articles WHERE 'sql' = ANY (tags); +``` + +Arrays suit small, ordered value lists owned by one row. When the values need their own attributes or are shared across rows, model them as a separate table instead. See [Data modeling](/docs/products/databases/postgresql/concepts/data-modeling). + +# Constraints {% #constraints %} + +Constraints are rules the database enforces on every write, no matter which application or migration performs it: + +| Constraint | Enforces | +| --- | --- | +| `PRIMARY KEY` | Unique, non-null row identifier | +| `UNIQUE` | No duplicate values in a column or column group (multiple `NULL`s are allowed unless declared `NULLS NOT DISTINCT`) | +| `NOT NULL` | Value must be present | +| `CHECK` | Arbitrary boolean expression per row | +| `REFERENCES` (foreign key) | Value must exist in the referenced table | + +```sql +CREATE TABLE orders ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + customer_id bigint NOT NULL REFERENCES customers (id), + status text NOT NULL DEFAULT 'pending' + CHECK (status IN ('pending', 'paid', 'shipped', 'cancelled')), + total numeric(10, 2) NOT NULL CHECK (total >= 0) +); +``` + +A foreign key also controls what happens when the referenced row disappears. `ON DELETE CASCADE` removes dependent rows, `ON DELETE SET NULL` orphans them explicitly, and the default `NO ACTION` blocks the delete. Foreign keys are covered in depth in [Joins and relationships](/docs/products/databases/postgresql/concepts/joins). + +# Generated columns {% #generated %} + +A generated column is one the database computes for you from the row's other columns, instead of accepting a value from the application. You declare the formula once in the schema; every write runs it automatically. This removes a whole class of bugs where a derived value, like a line total, is computed in application code and drifts out of sync with the columns it came from. + +```sql +CREATE TABLE line_items ( + quantity integer NOT NULL, + unit_price numeric(10, 2) NOT NULL, + line_total numeric(12, 2) GENERATED ALWAYS AS (quantity * unit_price) STORED +); + +INSERT INTO line_items (quantity, unit_price) VALUES (3, 19.99); + +SELECT line_total FROM line_items; +``` + +```text + line_total +------------ + 59.97 +``` + +The insert supplies only `quantity` and `unit_price`; the database fills in `line_total` as 3 × 19.99. Writing to the column directly is an error, and if a later `UPDATE` changes the quantity, the total is recomputed in the same statement, so it can never disagree with its inputs. `STORED` means the result is computed on write and saved on disk like a normal column, making reads free. + +# Change a table {% #alter %} + +`ALTER TABLE` evolves a schema in place: + +```sql +ALTER TABLE customers ADD COLUMN phone text; +ALTER TABLE customers ALTER COLUMN phone SET NOT NULL; +ALTER TABLE customers RENAME COLUMN phone TO phone_number; +ALTER TABLE customers DROP COLUMN phone_number; +``` + +Adding a nullable column or one with a constant default doesn't rewrite the table, so it's fast at any size, though it still takes a brief exclusive lock and waits for in-flight queries. Adding `NOT NULL` to an existing column scans the table to validate existing rows, so on large tables do it during a quiet period. + +{% info title="Full type catalog" %} +PostgreSQL ships many more specialized types: network addresses (`inet`, `cidr`, `macaddr`), geometric types (`point`, `polygon`, `circle`), bit strings, ranges, and full-text search types (`tsvector`, `tsquery`). Run `\dTS` in `psql` or query `pg_type` to list what your database supports, and see the [extensions page](/docs/products/databases/postgresql/extensions) for types added by extensions such as `vector`. +{% /info %} diff --git a/src/routes/docs/products/databases/postgresql/concepts/transactions/+page.markdoc b/src/routes/docs/products/databases/postgresql/concepts/transactions/+page.markdoc new file mode 100644 index 0000000000..4bddc19369 --- /dev/null +++ b/src/routes/docs/products/databases/postgresql/concepts/transactions/+page.markdoc @@ -0,0 +1,182 @@ +--- +layout: article +title: Transactions +description: Group PostgreSQL statements into atomic transactions. Covers COMMIT, ROLLBACK, savepoints, isolation levels, locking, and deadlocks. +--- + +A transaction groups statements into a single all-or-nothing unit. Either every statement takes effect, or none do, and no other connection ever sees a half-finished state. + +Two distinct things go wrong without that: + +- **Partial failure**: a crash or dropped connection after the debit but before the credit leaves data in a state that was never supposed to exist. +- **Interleaving**: two concurrent processes both read a balance of 100, both compute a new value, both write, and one update silently vanishes. + +Transactions address both, which is why they exist: statements apply atomically, and the database isolates transactions from each other's unfinished work. + +# How a transaction works {% #how-it-works %} + +Think of a transaction as a private draft of the database that only your connection can see: + +- `BEGIN` opens the draft. From here, your changes apply to the draft, not the shared database. +- Reads inside the transaction see the draft, so your own changes look real to you. Everyone else still sees the database as it was. +- `COMMIT` publishes the whole draft at once. Other connections go from seeing none of your changes to seeing all of them; there is no in-between state. +- `ROLLBACK` throws the draft away, and the database is as if the transaction never started. +- If your connection drops mid-transaction, the database rolls the draft back automatically. + +Everything else on this page, isolation levels, locks, deadlocks, is about what happens when several connections work on their drafts at the same time. + +# Setup {% #setup %} + +The examples below move money between two accounts, an operation where a half-applied change must be impossible. Create and seed the table first: + +```sql +CREATE TABLE accounts ( + id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, + owner text NOT NULL, + balance numeric(10, 2) NOT NULL CHECK (balance >= 0) +); + +INSERT INTO accounts (owner, balance) VALUES ('ada', 100.00), ('grace', 50.00); +``` + +# Commit and roll back {% #basics %} + +Outside an explicit transaction, every statement commits on its own. `BEGIN` opens a transaction so several statements commit together: + +```sql +BEGIN; +UPDATE accounts SET balance = balance - 30 WHERE owner = 'ada'; +UPDATE accounts SET balance = balance + 30 WHERE owner = 'grace'; +COMMIT; +``` + +If the connection drops between the two updates, or anything fails, the whole transaction rolls back and the money never left Ada's account. You can also abandon a transaction deliberately: + +```sql +BEGIN; +DELETE FROM accounts; -- oops +SELECT count(*) FROM accounts; -- returns 0 inside this transaction +ROLLBACK; +SELECT count(*) FROM accounts; -- returns 2, nothing happened +``` + +Inside the transaction the delete looks real, but only to that connection. `ROLLBACK` discards it. This makes `BEGIN` an effective safety net for hand-run maintenance SQL. + +The ACID properties describe what transactions guarantee: **atomicity** (all or nothing), **consistency** (constraints hold before and after), **isolation** (concurrent transactions don't see each other's partial work), and **durability** (committed data survives a crash). + +# Errors abort the transaction {% #errors %} + +If a statement fails inside a transaction, PostgreSQL aborts the whole transaction. Further statements are rejected until you `ROLLBACK`: + +```sql +BEGIN; +UPDATE accounts SET balance = balance - 200 WHERE owner = 'ada'; +``` + +```text +ERROR: new row for relation "accounts" violates check constraint "accounts_balance_check" +``` + +The transaction is now in an aborted state. Even a statement that has nothing wrong with it is refused: + +```sql +SELECT 1; +``` + +```text +ERROR: current transaction is aborted, commands ignored until end of transaction block +``` + +The only way out is to end the transaction: + +```sql +ROLLBACK; +``` + +The failed update tripped the balance check, and from that point PostgreSQL refuses everything, even a harmless `SELECT 1`, until the transaction ends. `ROLLBACK` clears the aborted state and discards the transaction's work; the connection is then ready for a fresh transaction. To recover from a failure without losing the statements that already succeeded, use a savepoint. + +# Savepoints {% #savepoints %} + +A savepoint marks a spot you can roll back to without abandoning the whole transaction: + +```sql +BEGIN; +UPDATE accounts SET balance = balance - 10 WHERE owner = 'ada'; + +SAVEPOINT before_bonus; +UPDATE accounts SET balance = balance - 200 WHERE owner = 'ada'; -- fails +ROLLBACK TO SAVEPOINT before_bonus; + +UPDATE accounts SET balance = balance + 10 WHERE owner = 'grace'; +COMMIT; +``` + +The failed update is undone, but the first update and everything after the rollback still commit. Drivers and ORMs use savepoints to implement nested transactions. + +# Isolation levels {% #isolation %} + +Isolation levels trade strictness for concurrency. They answer one question: what may this transaction see of other transactions' concurrent work? + +| Level | Prevents | Behavior in PostgreSQL | +| --- | --- | --- | +| `READ COMMITTED` | Dirty reads | Default. Each statement sees data committed before that statement began | +| `REPEATABLE READ` | + non-repeatable reads, phantom reads | The whole transaction sees one snapshot, taken at its first query | +| `SERIALIZABLE` | + serialization anomalies | Transactions behave as if run one at a time; conflicts abort with an error | + +PostgreSQL accepts `READ UNCOMMITTED` syntax and reports it back, but behaves as `READ COMMITTED`; dirty reads are never possible. Set the level per transaction: + +```sql +BEGIN; +SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; +SELECT sum(balance) FROM accounts; +-- every query in this transaction sees the same snapshot +COMMIT; +``` + +Under the default `READ COMMITTED`, two reads inside one transaction can return different results if another transaction commits in between. That's usually fine for OLTP work. Use `REPEATABLE READ` for multi-query reports that must be internally consistent, and `SERIALIZABLE` when correctness depends on invariants across rows. Serializable transactions can abort with serialization failures (error code `40001`), so the application must be prepared to retry them. + +# Row locking {% #locking %} + +Writers automatically lock the rows they modify until commit; a second transaction updating the same row waits. When you read a value in order to update it, that implicit protection isn't enough, because two transactions can read the same balance concurrently and both write results based on stale data. `SELECT ... FOR UPDATE` locks rows on read: + +```sql +BEGIN; +SELECT balance FROM accounts WHERE owner = 'ada' FOR UPDATE; +-- other transactions now wait to read-for-update or modify this row +UPDATE accounts SET balance = balance - 30 WHERE owner = 'ada'; +COMMIT; +``` + +For queue-like workloads where workers grab rows, add `SKIP LOCKED` so each worker takes the next unclaimed row instead of waiting. The claim only holds while the transaction is open, so the grab and the work's final update must share one transaction: + +```sql +BEGIN; +SELECT id FROM accounts ORDER BY id LIMIT 1 FOR UPDATE SKIP LOCKED; +-- process the claimed row, then mark it done in the same transaction +COMMIT; +``` + +A concurrent worker running the same statement while the first transaction is open skips the claimed row and returns the next one. + +# Deadlocks {% #deadlocks %} + +A deadlock occurs when two transactions each hold a lock the other needs. Session A locks Ada's row and wants Grace's; session B holds Grace's and wants Ada's. Neither can proceed, so PostgreSQL detects the cycle after a second and kills one: + +```text +ERROR: deadlock detected +DETAIL: Process 2412 waits for ShareLock on transaction 870; blocked by process 2421. +Process 2421 waits for ShareLock on transaction 869; blocked by process 2412. +HINT: See server log for query details. +CONTEXT: while updating tuple (0,6) in relation "accounts" +``` + +The aborted transaction rolls back; the survivor continues. Two habits prevent most deadlocks: + +- Lock rows in a consistent order across your codebase, for example always by ascending `id`. +- Keep transactions short. Don't hold one open across network calls or user input. + +The application should treat a deadlock like a serialization failure: retry the aborted transaction. + +# Transactions and pooling {% #pooling %} + +Transaction state lives on the connection, which matters when connecting through a pooler in transaction mode: session-level settings such as `SET default_transaction_isolation` won't stick between statements, and every multi-statement unit must be wrapped in an explicit `BEGIN`/`COMMIT` so it lands on one server connection. See [Connection pooling](/docs/products/databases/postgresql/connection-pooling) for how this applies to your Appwrite database. diff --git a/static/images/docs/products/databases/concepts/dark/index-lookup.avif b/static/images/docs/products/databases/concepts/dark/index-lookup.avif new file mode 100644 index 0000000000000000000000000000000000000000..a50135e539ef8e10bd45da85398c5e51d7b5f331 GIT binary patch literal 12264 zcmZvCV{|56v-Ta^n%K5&+s?$gW81bdF($U{iS3DPPwag2JnwnG^XJrBy{qcFs#bUH z)%!<v7XSdjGk5WHFmeN$1OAFF(46@n+ZJf_*9UR1HFGig2mdR?mZmmN|1kjo2cU_| zf9?NjL<gXY?Y|Dl-<1t$V{h`0Cnf{{1^j~mKvMpr0RZ}kzt~@4jQlSGF!<|o0fBb^ zKE}T+#$U(m->|>gMs7^Z|783x_?P)FSPOJ;a`;O|0Ub>2|7v(6H)hd5@_%#DfzA$Q z|6~FH5PvVwxxWjt1JDEb4*~`a4gFXBCmsUtALwrt|KULXVYrN3Jw*S3U7hTBY#q!j z{#`_POn@d1JkFlZE@rmQJbz<=Hb5gMPaY#12g`r=3m@oU`>*jg^>6iHfuLXjQ1B2? zh_Jr^4$#T$KV|;C-QQ%Je>doFkqmmarbaHP09aUVD~peU0Z<$SB9;SPeDpd%5WrCg z@EsBW@EzkZQthaJWeyd0GyFUOSlwJei-#|2yo+qlHZ3?#VgXWao<AIp<{~j+DAq6U z?jV!{nBGL?rZQEHg|?0Qj0lIsJXpDIF5*fvQ*@q$iBoI$5){`cY>(?^JH^55-JiH% zIw8G?=m32kuKdc@ro<eugE@xRkb36HEn<%gP_=7&GqU0%r3plpUE|R%r!1CQP8iyP zqs!!zP8H=$Q3bTQSYkuJCqv*IaADub<s@F}VeTSsc_x-KRZ#vQwo-toNjtaHMjqVt zU-)+nU^CP_i#oRVrxk?2p+ji0C%t&6Ri|p9i5Wjs{0RHAW{uZet*1e}sARNNS3A!= zS&~|2cO@npRglRyiPeL8?8+TkdK*gn4mYfc7Qp&oriSBrHeFVGSG1EKRd9Q+V_Mi* zA&o(vyuQ~#jO#LXcYZs+SI_)IOV~ll@8=wDg$Df>q$x~!58-B8lF{*tTXO-jK6#do zV5E<%O9<pTp&g#l<S?4tYTZ$OO?BrDv2TXxx6<s~MyyV1#=sIbJsDcAwzeNiKk*Ve zyq&a!)yABbKLTt*o_}3`F?Rauv^pa-#JNX~*?ELw)}>(Fd;VE<@;waTwG_FRQd%f` z>~gZC#FfTYNTb??T_vo}^0+&#R8bR6GY#m)nOTc~w<QnHM;~|<vfVP#Lzj5+4zgXM zI6;0oK_@_sff+9qmmvc?kdRy7@cKHF;^$SRIMv9m<$(Auy9r+;c3$tqWqCD~$Pwz> zt04?W5%C#xrrcKeDyAB!eR79C;+t{+i3jOxnsE`-69$@;YdR~fx;PuY9C>}A<I2gs z<&jqCP-EwEa+eJuav447+jfoI=_zHY&%^Am;9JTv-^ri;A_R>!t4KByI^0c35r--o zOnwPgb}zb`wtDGR(X9YvcV>=iDw>cPL*A4jUKx&n+BZ_i8g1IqK!EhUT-z^&pf2vm zPJ`}dzIY8HXIc9-p)w{CHIM|Cv8=;8p=5zs#oH~&sp{Bjo=;^7?zpQbLc|5nqbch) z$=cX8!-&z0^?Xn51oi+GwPOX)gBgYBtb<EOeHogxalwhCD73iVc|7_Ov1-KBe;-T! z!qa?0hccutAu_u)nVlhkSil+#H3$n5?YstJv>)+}5q+L|r?4mRa!e%?mzI}GH70m0 z(I`Ch*j3#a_4{bOLviIh2+OMy;@KsUsriFP^Uv?$*|imaot!>jNV~V-<1jvh4dDAm zIg+d1C1!~>Px_YM;g&oxWt_6MUIBU3x6Asu1b%H-b+ntgi5`oz-Qw_Fs%aN87_qtA z(6*$eUe;rCR$Rksgk*kNWy+`pE^SzfhwPq^j$8DdD~N&RqsXkmg%V#9iTqBT7vo*3 z8->F+F#18rfYlG;H$;?6jZ=TN3zjCH+TALX=ZFEBw*`{tz?Qr1rnuE$4%SLCQkz)I zy0@z3J{}2;ssxcyu_%|pfm*NpW_Q_s^H9kyXHE@Q1%4Mc48y;QJWKtD<j<P)c#Mz- zqLt*bPk0M>=onL8^;b+F*6#1}9XKBgofi8<Hn9HpIoHOwY{igDtiGymdmU*Q(<x?k zu1fyIqfyF{%r_|#g#<mI3k-i8h}2yXlsrhyO$wwr-BV|%6xT&54B-2M#kwiA9yl(Z z6*~*NO4nY0wj}R6mwvCNoyUI0V%s@T=4ut}7?KrB*Z+pASVysAEG(=0OY>xGUoKHD z1{zChf{~vL=<WUCs84NC$I*XRE;%F^W%kXX>SxQDgf^2{@VLa!v$QNqMs&|ZanPzV zsCod4@EoiJM2wV?BZv?3z-vb|Q}hDa7Y=>roJVTrbL{ElITARVt3aZ6GQFZ;@$xk6 zbOEk2eSmQD;O0h`fScib%kawF@1@yGq}-k7ma_Of%-d-tHl$<4J0I4;gAMyg#ae1o zFBmcd07}g`yZ1mSr|(Q=(~FKY=GAwy1XC$WK-%xoTeIwUVt!k{EGoj7OCTV|WqI!B z*~TM*3S1|B@sCpYOO&_p=#DUOEGCGSB)(QRI!8>3EZj;AsdEij9VfoZ8Ay60iFyj1 zw7@U-BA2Q46Hr5<ngy@BtAd28s6S4hBG;1>DVzA#=&=fYW>KHV30UHhM=I{E&B&KC zEXKh{@T!-Y<*WFDG-wAJCiaqzEp!1&7+V`#Nxb6&%xy1xo=C*`F=Nz-E6lK=*bh_( z^q+mtu?Z69C0Bk{ur>U7-EQ@;kqC5BuXIiW2SRA_1#!Xa;tAwuTL!OPT!SV3%9#!M zi|Ld<(YM|k%fH1K33JKz#t&B<6hL5My$yuWHg6xWt>j?n{rYVYh)j0!__jJ|H=!tV zyDhRJAG0;xyj~R`$`^f}ef918*7=bq?YMHRY&Y6@I<j(sGujJ+nLe+WcY}O7E6s+S zdv=3Kd$iTs&4pv@M4G*4mZI4U?p#_Bj7a7$gFw<Wbm%I44jS2+>5U+a&#FxNQljX$ zu-4e7NL!L_a=u952I5f9>2{ml4l3MOvyd&z_8fFCMTDxClZ-TLsz$-U3l0$re%CSj zW+46@2o65c(Yp6~91W%&<om<dURn~liXm&Whm-MEW=R|$n}8IpthDu8?j?7rc`L6E zdB7LaVl<Skj=X475W;U{R3W(u4tKyBGqWg%n>>&NY9q>y8uXjY)e@^yJLu(b_FxnA z?>Y6vFtkVjeo5)6HpY2bAvKOW34Ya&N<1DJ7lhh8ZxK_fJ+hQBhQ3C`>q5@tLe}9S zB!Ox;5<~(QS-da$pQ4NUkkmp*!1}5^pqpbA0aRYOzUp{g^~5B&U^}$fDCJ9=y}JPd zhKLU*Bjq?;$8YhoNP@Sh64#;KR-$Iipn>mp&!xhQeol&rapaibt+C$KVdTd&yEv%E z^n~grgci}BMLKGA^O4-}J3WrmeQb-z3~BG*z=qlTBEDJF#?>`9BU&*>XK3Sg8e086 zgAY^wF}J>EhKiH5zKD5CY4>5i5;0!eEr!_<Z_$WyH3hlI>1?DU9kXGsW6j})7dWtL zKLS-2BOI_6?nX{+@q)Q?0<^QiSI>20n+u8{`qo|;4+~ZLyBZXA=Qg<YV&`N?KMo?e zI^4p+naAnN<H6Y&<AiOpU)CQmNE0ZADJbmYd&VA6)6!o)%$NkCI_)R!teO}#9mbNE zgIxf=Xj3}PQ5!v8CeMs)0?N`BAh3J~>S)G`cQu>Mv`PCcRpf4hRh6SQwo2RAf)uag zC<xhSV~ttd6G^OKIgehLMZ#_=ueZX!QJ+aRYpu-bNzlZ8ZK;?E?fjEce||(Ppcw|D z<$3Z#l=X~J;`XAkQuxD9Hc&l_gPNS5_7J+mzPE~MB4p@UE|vmA%FM1{$lue~xD<v4 zGP8U!6Yj<;=z^-*!xzI2K^UO88meNe*wk?Vullv$^=H6!;f58lBNXRt6^GLE&~e2o zXd<GE_~R2sBX6uTO?aI<mtiSQPXxZ4B7cO|qiKnzucvsSOZnEJBE%ai$VZGHW2S82 z@%~*;PY>A6W(^V`CPi=Fk@J-hO{f+of_zmy3U_?P+miQ+?%d@9<VJQ<ICrpsv1cW7 zCCxKk-JXru4*{WDl8(fhn};X-HaTvN=&9<b68R>sp7NzMzATnoaM(KgAdLHS+N*8s zvPiXGM11T>eX=+-`>omX^d+dn{nkE@zQGxG)y=VN1gYTHmjrZzr(QFd)={APsNOI) zX3JFfk<9kcYfzswdMG^Vu8)gigsEZ-MapkM{DQ9H8gnpSWTvgl`O-3ByVGZEP+M7! z-w~P_4Te<x0VHY^)3RjW4ueu1)6;eeseB}xgN1ab!NQ)JyR1NB`PG!Tn1y)baQpZC z=kQ(O==^_mOnwe6A3}yr*DAswfWo1DNEL^+83uSGHl1iL-)8=*D~yT+KM;;<cDAfY zKe0PS<%2*XwP->A8cggzDv*EYliyMTS|NHgYstreERaASYg=~rP?N5)9?+cz_<{&F zAixeT+cpVLDGlS<OZ%hrn2<oy#FDs;K!elfrm;;CT~w4qP$l<X)1wug=8_gitsB%i z;LDj3W^6O?5J-3G*8eOZCd9vfM?XMZJqaAO`@mu{Px)NSesKdSNVsT-6U@<2*&N3* z4Ndq|cL`gVTN&FD`eGFbXm9alMAjhSb#2%g6=>d3{iETIx#=Ad)#5R#cq}j-6Tt$> z#}g(5Pof}+l%%*;vxLq*yC#KoZ^A-65&E}-Gkh-QmPWkSRVmL*#*HoRZmSbYKoE!K z*qkS|I)^rE;T+8J1}|Y1N#&?a^Jd@CH?<5!7}?B`f^Q{hz84X3bev`?>PgOmf=)9? z2*H#Ok)ad6Ee)Qu*-l|Ejx))tR`2lL^pKeO9Zc*APQtV`k>hI6gK>3c;>e%o=vSn1 z6@4UR(!=`pMJ}g8L$hcYcvY92H6FbAjbMOXe-xkt?-x5%o42V5s!!@FCRDJrjpV%R zlC0cu?4K6~s?TW7LrY|}NlTd3#s32~on=Lxpg7+5kyo-mxq--Kt3mR}#=hCNqFrOQ z)TQ-m-OxdYrLp|(xCo9rDZ*T3XV2?$E1<l>%27VR5}bTWg(tzGd5DZX-(rm_ZFtL? z8OGtzqk4t=AVDT{qxd9l0OVV-T*)E4lG<xpMjW4?k>1JY6e=}y1Sg7DRaK-#?`Z79 zq3#Ylmh%pOveh7WL)T^xR+}kt5w-EX$H6(++h^y4SXs(XAW`vw3_+mi%XcVA8{68N zF3osDrBpeE+F3>M9&;xos*^bto(4+6NM3YUzZbVH4r&0P5X+dv<(Xjq1(Ubn?TQkM zT!SF2K@jY;%uPAE-*{-%_yS(i^uSC`O)L1|VSz0dGzwKLAG-}v^^d$DhNXN1sI8>> z-70wW5~=;6lCbwfB5A>Q37k|nh`nHeKuo_B0J*;?huqbMB9GH+s<5O~eR3ThIQ5I| zSF3L2y_e6c8y&=Lejo`stOI~(+-n$6b`;jEeDKNA*w_6^o2-sZ^hZY`f8ip8v6M5g zk>6fY6vN*ddu((R7gDA=5Zha0M$oPyc77?G#j($Dh|jpbUDUZ-fiMUnp`~#1kFQnr z?6yuuV>GHrdRtPgFy5YjD;0IHnJYu7tkV7p9cxoUgBdaKqU{7{Q7fk?3LMJw!vrLg zJ+_&H;h;L~TctJdA<+nMSUkNjTZTDWzowMX*8HP}+&N7TXIA;@GX0|!Et;Xy-=kI9 z7)a6h(wBm;Sw^Rf`(Sw~eDocR_qt%KH`Rh<c*n-gBJwj5EzG}IH_QgSH+}EABC27_ zj?!b`A;jt?ifZkNGLbR++3zPUmlS0p=V;Be0Bp&7(@sZTjYU}IOkt8J{RgSX$P+1J zw)9}AO}rA<Es#fO`x~2#fXV?!gs9(BtFb1#NI9jVdi1QIofjNZj{S+p?;?~fj%4mn z<{$TMs@$%%Wc{&e4L32*(c$8AqRS;%CwQOCH_N$ckI>6e#gh1}hF=mE(|Rf)beoiB zS!$%d%rg0sDUs7ciEmG2QYZN9nki4%%$~`g;&yBJ3v&C^i`!oCJ>m4tR2C6$M6FY0 zfot#C)`n<skf2-2nOqfQ7C%sUiMzdYBChb|FAi~rzQ`w`GVIcyZ1<!;RG+lFe$ikW zTRvdc(~S(u)mG&Qg=u*ljE#@c+gNXMDv~&1(JkAvlXB8FL$i~@T0*Z<ZzOTQvo3Rz zAZsgEqp|K?Q0q-vc~TxO?5@eTbMZZ-G8_~N$wWA>`?y;SOST!`8yu3eElsn0ipa=& zQ@LATs*8z<5m9g^v1PaF|JE6o8j-+;{4yV?tK+mqKHNO<w{9cLLR%ZZhH;BGXC7P0 zu4~AS%OcLtnZdgU>6J9;Wm<-p)ocX09SOj2fS?ml-}ldanw)2wFknG$Po|YytvtM$ zdIzFfr440~(KOCjL@2t*#3vPVSVeo@r1?TB<nHAG1J1!rpb3!T6`r?%OYkHmWYS{P zz1v6|r&NL&J*aia$iL4K?3oP2^EG!58)sb7mIEUi1H-6|vkd#yLK}lV9D|~Ur*aIC zOs5qSZy$Oz_GWyaHDC>uj&Bi57Vya;?eQV=bf9pR3D(Thx((VF8YT*K=6osSy0*L1 z0SmrZGRF0e50gL4VVRk5tcLs=TKevJ8T~pFW4~1o`Pr<s$w}$E8$DJ=R=pa?w|=U% zA595I11p8bj>8iO%m<UjaqYMFOR50{;i&)u?ai#x4caG&*N7do28JAr?`--Q*dqtO znYtq+td_m`D_vnYlr9-T_-&(k{-~T^$2YX@u)Tghz_As<QPUzE|A6IXV=_HN6!!2> zBKw-21-DkdCn4$7<o6<25}0T<Mu`9e)s8Pj35{AbDSRk)&dF&z^nU&&-Xpp=NvWh7 zWnm|#O424|N~c;06JQ5JIc&UIXS|te^CTQn&2HO9CYypW(oVFVc&;BxpqbRa)O+Dh z$xqnF_xSiJol>14iA<I{;hFkjdZ(-1w{(?qb`V!hgY)4OOP=1#fZ^J@vIRxItQjwR z65T@vHY~v<`jSZmc8OeC4gukp&@%9`oF<4D#gdFjGal%ojyTJ-?w<#u^&5Mp`bJ_i zEkV0TbQ5R%R6556QxpG=74!Vryg=R_nRU9)u<D(Y$F^DX)a_YgTg&TSCvvqE#lWlk zxc9rz_<qFR3SFv{=S9F<NukNzIe4y5zM;`qD34c%z00xB6usyMN5;=PIxZe)sflIc zQ(+5aDYs+&&7;?y=IoKhOFmz$fd1S)yM0LI0}~i)KCU)Dm!jV<w;K+OF(K#a8|Wpd zV$9gr$CwFC-_0Nd<#)!+U3MCmtmvI12*>~<C1P!D$#l!){=_;wX}>#d{YiYyK?#y- z@g`9o9_bNIRBsQjjy0x#kfH6rKiPDa2JfF0XBDhawq@0~nuUuTC#Yd{k5d1Z%`+I^ zD2*PQbh)PR6?zmUq}<fqKuJaHfu|k00(sc|Fa&FNEFpkFb%YkR)Z|u|Vx1DxAejS= z{#kZa#1Q8HQaJ?fJw-5?iP-)?p0{u8^{Xios=n(I{H3Y%bw16wZDhbEk@nM=k|(w0 zO_Aa3*=}jjFK7kYd@qm+Y&f*F@MNW1yjm~I$k`xl2^mM=Kun0Ck?+mfVUJ-Mc^+r7 zdnj7RWUrWmU_0bA8;wmvn@(q@z>xL_N^(|~4IfCp170XYGW|*6fe-_7!#$nKu@8jH z^!CP6=7#16kKsM4UTE`I-91uDR^YTC^LWmi<R9@0weO!+oazGFYS*W2JhF#z%mZ=x zQA{4P1Hsb!7Xp!fUhi?lFcv1lEokT1bHUM1@MtgD3ugfCp3WqsI(oTT^2iMsW2Id$ zL$2NGOyQ;`qk5`k1$hW<;kSSV4=HX#?$d~a>WO|*T9Yq_2DiDqkWHyeN;yk2T$15o zyOkY3=pA~%{70>k)}e!MGLDgWBNw`wQ^wm>UDjJTV{OH#Lt72ew|)LNSvGF0eKh_~ zLmR6DpQYV&=;@Oq5la1*;G2qu%_63_A{0KT)e~8@P{?!@Jd0@1MoR}4^L^WkAwrGt zyg)9Z{qyUJnDvfW51!7z6U^(`l_j<np7F~7dFF9<=ZUQu+ko_y4|ecquZa2U#!9on ztr<A28>jgKsdS+7{N|siuJ9x*FDNzX79*4v)v%S2brr&;MSTybnoa#fuj3NirNq%x zvUNt4Ah?E$-Urov$3-b2c4*zs>-$#y7a{)ZxZ@i?Fyc~MxH=c59RLMKSkT^{RUHPR z-Em(R70;BTgTD1>9B2wzL2prCIFVw1mTlH!tPI#$V0r!SnSWe%*6go2+TCdvQ>e*n zNoHwS!!+?+++2MlaM-a_aeMF#=WA}8?Wr0t>KwTF>R>LuOjhM-@fr6HGiFi;2z2>= z%ikkHvLb#tMaXol(Y7GKfF$GCc8ZlT_AwSI^_;CNIlko2g)ZHG79sA~at8cVm$@{Z zA+I=86;56CXfGDB%qTD&*grgmpo2B5{QI+84M=V|D9E4)aN-kcaV>Msj5kQ*@7jpj z>mY@ARh)B^8IWy|dlL!z_7wL`sB6Kv_qmNRh3>3`k~DX)Sc@p|@j)tP9gmaT1VR!& z@(ST87<NAE%~GDQa8BGerN)oMS}*X`{As?gJ>;ADWWNN`QX;Fre}^2TJIy^$%NMXk z?D%fhYh60K5`m%YRvyVOd6?3G8sc1+^_zAoJ#u*tN|@|%xO=XaImmKdsiQ6hHQ8Ka z#$7-GEo|_6htVTUAC-UIPN2_-x;o&Gs|||{VSP?!4eRv9@ba9C)?V-g?z|zXqS9Hf zx0Z*X9?x&rKd^~$Wp5|z&bFP|gJ`+V*!D=89U@$6l0yLa{yjK}BBBXW){9-Rxx>R0 zM*1NF%&6$Zu$*;b+AJq$9{AS{N7vS|+0iVrM$nQ_fNeNc5mDZyg4hIz1YC0?1droh zYjCmM0a1~B)k@7pkBi@ew}f!f6yCjV&#Sph#9L5T%%X^8o>r4r<%Rv6=%cn(Z`2iD z>L!z$Gxv!0*DInR!8LvfedlPVLPO1y@?(52EzN-^4zVpKv>ty{0Ntox=m?Lf8rjDh z$AWK3k0-M5w2KltW=yu1Xx>R#@O{PLYn&_Cg%~RzEvv2ry9*0M9VA9++Hl>_r)$wD zwRvpWyGEg1%-5UH*YYtUR_zB;Th}QGBL&Ws>Z4Hr2a(Lci-Rc>A3gosm9_t?LGnT9 z0T@Fl*l0D^P*wZwir2aI+c+G4Y*tWGg2RsrQuMc9mrkq^moBEb^!uEeV+>*Q2o1qR zbp6oHBd~BrnLKOgti6*wIE--Tu)`gUmbFos4GQLqVjQ&@%?hJ@znFZ}N0QT-D7(g` zj|3_@D-1b@2!ttAtREHN2PmiA7HgF9PgZECzkwTqB2%}=IKkGqkA#Dv>9d}Bs}mF5 z>fH-~dOrUgjxdv8&70a=rr0T_u>SKS{iYzPQ@dItfN1cV%sd0)dc@e}!X_aOp7xkI z2J1fLWI~d=?2`obT}g3o-(U|bicAA{tJt$z0?%Y@^e3Sh!W6h>SR-*v&uA6XZ);dy zB?tUU>wZdWsE`)2kka6YA3`1(ImWb$Vhcnh(mPx^Ew0dDWE)Tn*vU^RjS8lU+?(7J zl>OSqwcdS3NQ7gwX1yW&SIv+!hVShh#(e#7Wnq}LYR6Rs9>7<M6UD7*<8{fQ<p#ut z$~&m1{LQJG?;^uPrC(Oq@_`<V+O@HXGIFef`-ncx>J%={yj}%Mzp4hjVcGKDuX(D> zaRS`8G`^7$Q=ShI6s?a6=<lxRDD@BO9{#eTP`}I9Jfp5cP<{!9QAb+-aIg|KnEh1* zt)d&pop4#RCrkX<RXL~;HWKeTJ5@D}w}5m!SjPeX-(PmEr1eQ|>XAdC)^tc{dhkH@ zsXav|2#v2VPkp~ckRYZG1RV^$ZIeiq!;!?4+Q+51sGi;M>*DT`JE)U@k2Dh!P_K5? zhRQd2c3}?zBao9NWI<jcBF{X+fRZ2U7c(D4BNeb`lbGA{<Z_DK);EQ9cJVp3u*Glm zP-)D428S(2@xX!bo^cCdF@`{HnJG=R$x{0~TAAQ{CQaegUgUhIs4<iW&}O$>n~d7l z3sj~G3?mP$TnI)E?9#qTHAJ=_!{X|BMLUA>NL^JM{1pWr7BmyDsyG;U9t?AjVM3Z~ z$ropdl)%BL&!-~J4;c1RC4m>U{m|*pLTHv?Sd!k5aOg_KRz<$$%t)@Ap9#}|LNq5x z$8d@-wwqr+_Ok7&t+Ptdo+b}TlCEkqH^$wGk%&P4@NIO71{v8z%kXE9ht&LxaV*9R zSIO2PP2!es<S=uZBBPa6zbsJFlvRp&*&w2O7b|x|xZhL@fx5`H20A8WN6fCS*jG#~ zYiZk%`n5y0Gek>70<6K9(h^|`4hzlLPx+^C6d@yc{Xm{~H8t!YNISqKdc_MtD#cc5 zU=1pX9=(+1P@}D+T;RVv;&(XVN#Z;TjWGfVVgrI;s*MQahWGp!^&`ygITv>nw*yd5 z2kKk}s9ua9(j;T@dcg^$_VAT>1ds9`!{=t6i<|U8p($i(KMHTbgFxExzzQUOWX<RO zsznzRcaNYvo#bUmD<$l$*HbRC-@+eoBKds2YPvB`DHE;G@gRl4ek3^n!_>urh4C(3 zScl`sM^U?QupX@cOjdz+6C-ZLws_O3waWIvhW@5+s1cbuyxs15Zo&!K-cFg}nKTgi z023v8!;U2FtYBh_CrqcP0xup{BN|WUHBRWBD_9%SWM5E20@rsB(uABlok-^rRc(iK zbmUxyL&O&G>YQX<l`HmKV)E?&C`?t2t0xspL;Ymn8}rcHOKfP${DQb-VrBf*U@$sv z(v?E_yLpn4NaYY=JWsmmdLB<mL+tchny>9(wYIKog--@gUW$>?&!77sA!yB<{s`S_ z+YP{<v-M(5jY`NiO{oee7M@)5Rl0_PBUfDxJ}==PkFAv*VhDSwE$)Nbm)q{o>4BJq z8xIp*W>jyZMP=9(5b_*Ld=}y6B|=TC^#m8IdO;fiZ?VUO`FUyk4J-vc#JgVzTfkMF zk}6GWL!INY7KJ^}Vipx~@%;v-ZMA_LMJ%Re%#P^5j|EAYX)CyzXzNPnfnnUv2_s!6 z%}-TisQXxy4Y&J^><#)lutSi*%ErD6zFb4Q&yd%85JFjWb@ss^3j`M{kkeb?QXp!U z-&~G?3A2tdpGI@Gx;>iAOEc5B){iy8>QGK#MVrvC@9t$OpfPLKMk@IY#Og8bZso!g z9pCXC<<teiI<4h`gsJ}cO0;rYK;9R$XS@dB;vYw$9m4pvDm2*1Ex_0lL*y%M#Vb_H z<l}}8uRBjPVN0#Kp1Q!^@3eua+|qg96?}ELv}tFd!G<0ceBoH>Lrx@nqzF`9LO$Ak zEObAP&+{8pq(A-;bAiRMt$IvGXvWZ3><07j4J6iVu#qQ@q(%9qe<1>zO|>%xrmxnc z@>wuXVo|~FC9-;AyzDtny+$+9s!VYp<~8(`o!*6;61IxGELVKgH(}P$j-zegAP<y9 z5RPSYlT%7cF_;{X*%Wtog<qV6#jN=JP$6le@Qr`3avzwwT!XAPgFEpavCkOWDXJ4? zCMKF2A_+Vmy`RtWI4k*1z$rh^@{`>^!*L53vl<4vWXA1RWP2U+RG%L>SjJx<ST)wT zzh~gE0~Auwy+NRqa{)_CYL_yIMF{WfO#~+Fpk@|7834Sq8f2%tZT2E6!@e(_hs>;p zXe^5gzUD-_B^Kli*DhEPMwOn$whQ%K82ds@O7QyHhLVdRd9P}4ee_Sznw~8hRSJgn z3RkIuCY*Jms7^yeL64!3JLX{!jp#dI!8At!Liv4gqm|4W?69>DPtN!EDb73fS+7{o zT|}SO;p;J6zF{eS-DoJHI($(2yx2V^+FVLltdA1tdW8}COYXHSD}JTu;khxSx`r&> zfp;V`H<W7b?Zpo2kl%_nV&4Dg%2`|?W|Me;3b9FejY7DHT-j^L2tSF@G){V#R1QCP zbzWx{v{teVeP3_jj1SYHxM_%2qEqO$P6GM89XH^BJN*U1@dM6TY6I+qW<@75Ssz|X zkmb9RP27!UZmRz#<I9l8N4YKeFgF;lt3A9I?;q>ft698VhUUYdxpV3EV0eDfiS$nI zKl-qH2xbp|h79RnHE;#ndR$TtG1~%PH?r7nlkMEyrA=XRs9uhuQ3}}DYsx9M;x~>r zUMdI?2jN>5D<!DT13U8Ct=z1$rx#ydkmV}*yXGHN{8H>SwG!!)$E%_QcH>Q&0uz3C zeIkYRm)wWx@FPz=9&@JLwNFq(fKvq#%)wp|*JPsUVKUEeOvLhrZ!q!8r)afzWfa6{ zdG$K68{n-7I8&a<2M5#$)QEnPTKA~a%=JiQU69>7Eu}`bjLrM#fH0CeQcS>AyAss9 z#Cb2Xk(03&lwnZxIcAILqQ<p5Rz-}V<cKfP+VmUpM4R=6(=~Qyb_+_qfxP3Upd~<j z5<OQGdBF}%Nv%b<a)jzC$)inM%HxIcMu4I*dTq5&n7wz?Gpm`Q7Gx8i_pHfkGlD5p z%;q1Pe12w9Lacg@$3CUU!>Mu#wvCtD*EJNu#Wsd(wBwvNmS0OVfV~W2diI^NpH<l{ zC5S+KUN8KJUA$kbRv%{C?py5gHm5^(vdu@F9mKFD3nWMI@C|Ar)<c8O-Zz-ePzt7D z;vpprP8<wlg<mJcbWPoeqiuAE>GP+mWTxbT1==-&lS+!$Z_Gl@A0RG3XVH_p|1jW{ zaW+Dnh{gt=`=qYPcTmo0Tp1%@QdNO`#yE#EQ}7ROBAwmgugrq*sIq*}bUTQ^NW1$1 zT_@K464Jor<{^?G-lGG3@MLw+WB&5ff{;I++fz&Cpfmd2Y{Q{BAUhs$ZV|@`)_8oX zTwU)HAu8avpZmAwagbf29ytD(DcxDG303YP7quhz__P{I7-tEpqnOBrSDG!txFP(P z$}#nmj2qpu5fbc`lVG_#eYSl0dbN=?lUD{d<^Z<4Z0-wQ&1m@St&^N@%*EkymNWPc zN6Kj5W2=1ngvA{P)XrvpBKsRYFD$Mcy`!df&!MQ`hwrjwq~vD30yiV~Lbrp&L1KO0 z_?re9ldRHhG&EzqNYi7p*y-67!_Sf%jMXEKX?&peaFMs>j;@n-icyu{;a8BrKRYM+ zK`}>roSA)NJ$}U{mXH(2Vl-8U@b3c@jAwQ*LPS1nv+cd6Ej3{qLt^sOmPkvERo~L> z(i$%zaBV{+Y%T6^(ci|JYd4e7jbc}yC7KodP5Z<=YOc%_6*F4EsR`(pT2)>S{LsE@ z)5P%NP%|IkDFDrUE`4`<qwn;DhO$lK?kry>eg8mxOcAACl;l+eaC!`ZRqHnBRj-6t zGV+&}8nju%aDOC#s~!m><Xq@|HrI4olnN|p-92k36~l1akI(zHz1av7455*6?vt#a z=dpI#vBiUt_ckO;BfmP2yS0!|$kC{fc<q@r7>Lp!WB?(L{POEJh{WJkq8k8jkXqF5 z^*ndwo0=4{W(KC}b-C7Dbn2Qli8x*-MxhUmbxUAJ+%KY$w))G0V2GxnWSIgS#lgD~ zb!~HpaJinof^SkD(j6@G=S+yqJ$#bViOX{HyIBk!#AMV<Uji}JFwns+O9JbWhF4;P zSs*)Uzbz>okXPU8aX)crcq{SfY$P}PC3@mgRP5hh*=;&Ll)bFz6ttm~|Ikx)nutSF zPL!c8X2PpA=bLVO_6iGg9R)6OUV7@LBZpYQ69$OFwIz_u;A2JIs@&zpTL)=k3IaQ~ zk(0z0s!dM$3X@RDP2pHdV63mSB`(e5*y-Iy*KIV<jc_PeHn#$Wn9_xui=~tu-5C%r zD*RW*jeh5w2Pp0Y=3*KmOF3_&xEp)~IlQt7)WtuFAJS1VB;EcY^LPaL&LM5J>yR~H zA>FGVlgr7D`a1vl^ZS<=-`(~sr_wy&n?lgfpEL4LGXv&|ct@~*2L=B->lg61iTM8x zv%eBD*#FFFFnx!hwrY@ds+D1kb2Dm$^{QqT?B}m{W~JNe;SOvfR1~NVL;>&*$p?55 zq?h>{{z4}7;DIigL`pp4=uUtjG3Q{GKIYQXT8Z6?hr^PbdoC96N;um6&ZLIh_GFe* z)2$!Q(@6Mj`bCzGtm22Z)M3m8^7|o5ESl*y7a^$<e;@Pj17;%SnK6|ju1fto{N-#N z>mUY#-xD+1f7>#JD%Hh1<SrXS9jMbGl|XYPt@em`nFivR!US+!r%90kzjm}1)@0jf zPR=HOJwIME{{}-h_H3RlJVacg+u8=oKX?h&-RcLKEHw#wFpE;k`pf$jAb*^6Wxyb< zw7U=#nh41-_Ex%}tzx&GS?)~RRegG&d+oUwsynwKbuM+vCweVn0A4e5bgJs?f*iRm z>N?cPLI~l;Asg8d?-FMzs%B_5&&}!s<I9pQI{XHzvLE;AW3|uUzhSXmt+uB*pU;VX zr=#tJ5JsW1xk@hP`xR9gJ3apJLr{|WkJ1zWJG{-9|My6Y*i6g25^p3I?qL<jSnQa? z#PFp&#jv_~Rk;E_VakzlFYQ6?Wn4g1w2i-D^i5)f%l!oyE3iy#zWwiK3jNB;#`v?6 z*C<W2lF^|eC>@Y;hL-r>@oY=ANFKvLjaTNX%#Wx~7`aoj1ly-QDf=n%&LwVN(Yd_Y z1NHqsSVpN6lW??;NRAUI3!R<gn!<o2rXLtt6+d;uXC7UT+`VCD!hAb@`muCX(1n9x zjA9(zcC_7(MYwOCO#5qF9CO-tE;`?BKf_0@H1@X|Y2jWs=$IB5uo@&cM(BE0WsTm% z_D`%ojzU^V&*~GQt;t`x#98dVASfN5gzogCUZ*n`HvOD1_z6ic!aZQ4HVf<^4(Rc* z=Um=iRAN7q<TBtr5|@eKzFUA#nqz6bp2a|}=gdIK0x8Y+FFEGHn3$OuvSM2h1aWfj z7e51(*qh%td0bcRnQv@Ahh+s}Vs}yDA#i6`f4U^L%lA?h0<i&0#!zWfO>177cWjZD zu6)>jeBy%v4S$Dy|8rbgas9vp?U=Z8Q1tHNi#xL+cl)eT&94q*spE$&Sh0AGjX}>O zMGAxn?1_2MUC51p#(#TjJv3`ZMTBMBT=$TZ&@-Omj72%Y*0Q?4Y%}cKsP%c)B|zWJ z1i+aHtx1h(7`LFmwkjt2+i9h1>0QgIcq35El}F$=d9N<o3{=iNcDu=6LwCFs?kb@B zHvxYh%FazZ2EVI5-cLl!P@Xi&TJ?XllW&=V=CQl1)yss$j=K-+aY7QmrS)0M?MLWt zc+m{`8=llr$aPo}jSdI0SGE{G$^yIe4-^D&Rv84!@`fjN$JM7F=A}WOtFjk$IxE;s zj^Mgr8O@s7`jR38-`ne9rJVedWkVh9bO|)hi}*?6x@3$bT)T;{X%MgPu)5FMExWf< zN^niNgMgW;RfWNlhSi3<dOUE4zlK=JKCn~8UaveI5sF6L76AR=IpAqg^Fz$wdyK3t z+5sfw2Ov?+{4cGbWO9)LEmwpDyb95nX_<QM(8>y69L{fxLm#sW?bS0@Q<4RJ#4LQ} z7j3pd%k`<p<UVR2YXzWHHZMEOkQ-NMNOc^Cg4_0j=UD6*r>qawsz|K+3*rQ237cp# zrtYU7A5?{R;sQoBy(i<(nP3@-{Zs>9c=62+na|4}e^~6gJ#@&@9}Fzc3Iw=)CR162 zh$cG=HOsjf!0pss*Ve>u4WQs>#c6VN{gc<|pz$_{*PO7_og3h&O&EjX*`e(;N4p{_ zC^k^Ih~>Q0c~@JX)H$5Tx9cgAC)!5SziaRt&qf&3>!07ND|<)Z=hjs_YQz+Dd43pd zj%dw1Iq}=Z2UvrpFRhCJ%iZUQ>@xxgVk1)vR!=PL+E5jN+Q^?n3rw<JouR_JRHG+B z%rI+M26t6lw`wEDlOWEp4Puo)SBd`n%GSRI{2ls+!v1&YJD)`bA5aGXC;^~RxzXnC X;O74X{9hL2f7qS>i~C>fe}euW7IQ{P literal 0 HcmV?d00001 diff --git a/static/images/docs/products/databases/concepts/index-lookup.avif b/static/images/docs/products/databases/concepts/index-lookup.avif new file mode 100644 index 0000000000000000000000000000000000000000..e662c8292db38446bb42cb3c55df3aa80036d3f1 GIT binary patch literal 12964 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 literal 0 HcmV?d00001 From ae1637c0553e84ad0ca438cdef62e4488fe95195 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 16 Jul 2026 16:07:49 +0530 Subject: [PATCH 26/38] Add connective prose between adjacent code blocks in integrations --- .../databases/mysql/integrations/drizzle/+page.markdoc | 2 ++ .../databases/mysql/integrations/fastapi/+page.markdoc | 2 ++ .../databases/mysql/integrations/laravel/+page.markdoc | 2 ++ .../products/databases/mysql/integrations/rails/+page.markdoc | 4 ++++ .../databases/mysql/integrations/spring-boot/+page.markdoc | 2 ++ .../databases/postgresql/integrations/fastapi/+page.markdoc | 2 ++ .../databases/postgresql/integrations/laravel/+page.markdoc | 2 ++ .../databases/postgresql/integrations/rails/+page.markdoc | 4 ++++ .../postgresql/integrations/spring-boot/+page.markdoc | 2 ++ 9 files changed, 22 insertions(+) diff --git a/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc index 3f1caeb70d..45d08e43b5 100644 --- a/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/integrations/drizzle/+page.markdoc @@ -128,6 +128,8 @@ DATABASE_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:6033/< DIRECT_URL="mysql://admin:<password>@db-<hash>.<region>.appwrite.center:3306/<database>" ``` +The Drizzle Kit config then reads the direct URL: + ```ts import { defineConfig } from 'drizzle-kit'; diff --git a/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc index b5859571a3..f004035ea1 100644 --- a/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/integrations/fastapi/+page.markdoc @@ -151,6 +151,8 @@ DATABASE_URL="mysql+asyncmy://admin:<password>@db-<hash>.<region>.appwrite.cente DATABASE_SSL=true ``` +And in the engine setup: + ```python from sqlalchemy import NullPool diff --git a/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc index 944c397c74..fdc8d53edf 100644 --- a/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/integrations/laravel/+page.markdoc @@ -99,6 +99,8 @@ class Post extends Model } ``` +Create and query posts through the model: + ```php use App\Models\Post; diff --git a/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc index 325fd3228c..bf37baac2f 100644 --- a/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/integrations/rails/+page.markdoc @@ -110,6 +110,8 @@ class CreateRailsUsers < ActiveRecord::Migration[8.1] end ``` +Define the matching model: + ```ruby # app/models/rails_user.rb class RailsUser < ApplicationRecord @@ -117,6 +119,8 @@ class RailsUser < ApplicationRecord end ``` +Create and query records as usual: + ```ruby RailsUser.create!(email: 'ada@example.com') diff --git a/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc b/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc index 983119888a..4984ec5010 100644 --- a/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc +++ b/src/routes/docs/products/databases/mysql/integrations/spring-boot/+page.markdoc @@ -104,6 +104,8 @@ public class User { } ``` +Add a repository interface for it: + ```java package com.example.demo; diff --git a/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc index 78c582017e..8c2cb03d82 100644 --- a/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc +++ b/src/routes/docs/products/databases/postgresql/integrations/fastapi/+page.markdoc @@ -146,6 +146,8 @@ The pooler defaults to **transaction mode**, which does not keep a backend conne DATABASE_URL="postgresql+asyncpg://admin:<password>@db-<hash>.<region>.appwrite.center:6432/<database>?prepared_statement_cache_size=0" ``` +And in the engine setup: + ```python from sqlalchemy import NullPool diff --git a/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc index 7d3075b20a..1ccd80c2f7 100644 --- a/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc +++ b/src/routes/docs/products/databases/postgresql/integrations/laravel/+page.markdoc @@ -92,6 +92,8 @@ class Post extends Model } ``` +Create and query posts through the model: + ```php use App\Models\Post; diff --git a/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc index 125433ae83..c57b50c077 100644 --- a/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc +++ b/src/routes/docs/products/databases/postgresql/integrations/rails/+page.markdoc @@ -106,6 +106,8 @@ class CreateUsers < ActiveRecord::Migration[7.1] end ``` +Define the matching model: + ```ruby # app/models/user.rb class User < ApplicationRecord @@ -113,6 +115,8 @@ class User < ApplicationRecord end ``` +Create and query records as usual: + ```ruby User.create!(email: 'ada@example.com') diff --git a/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc b/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc index 773cf725f0..c29b5e2d57 100644 --- a/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc +++ b/src/routes/docs/products/databases/postgresql/integrations/spring-boot/+page.markdoc @@ -104,6 +104,8 @@ public class User { } ``` +Add a repository interface for it: + ```java package com.example.demo; From aab30997fdefcce9a80e14eae9c9a74fd04bdbe9 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Fri, 17 Jul 2026 16:14:46 +0530 Subject: [PATCH 27/38] docs(oauth-server): address second round of guide review feedback Session secret placeholder in cookie examples, four components on the overview, marketplace wording, approve/reject terminology, discovery URL purpose, HTTPS redirect URI rule with https example URLs, public client pointer, type param in create examples, full-parameter update examples verified live, state removed from the quick start, approve section restructured as prose with devtools cookie instructions, and a provider docs and developer platform note in next steps. --- .../announcing-oauth2-server/+page.markdoc | 18 +- .../products/auth/oauth-server/+page.markdoc | 7 +- .../auth/oauth-server/clients/+page.markdoc | 163 ++++++++++----- .../oauth-server/quick-start/+page.markdoc | 190 ++++++++++++------ .../auth/oauth-server/scopes/+page.markdoc | 2 +- .../step-1/+page.markdoc | 2 +- 6 files changed, 253 insertions(+), 129 deletions(-) diff --git a/src/routes/blog/post/announcing-oauth2-server/+page.markdoc b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc index d0059a64cb..ee86f4035f 100644 --- a/src/routes/blog/post/announcing-oauth2-server/+page.markdoc +++ b/src/routes/blog/post/announcing-oauth2-server/+page.markdoc @@ -73,7 +73,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], }); ``` ```client-flutter @@ -88,7 +88,7 @@ Apps apps = Apps(client); App app = await apps.create( appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], ); ``` ```client-apple @@ -103,7 +103,7 @@ let apps = Apps(client) let app = try await apps.create( appId: ID.unique(), name: "Vantage", - redirectUris: ["http://vantage.localhost/auth/redirect"] + redirectUris: ["https://vantage.localhost/auth/redirect"] ) ``` ```client-android-kotlin @@ -120,7 +120,7 @@ val apps = Apps(client) val app = apps.create( appId = ID.unique(), name = "Vantage", - redirectUris = listOf("http://vantage.localhost/auth/redirect") + redirectUris = listOf("https://vantage.localhost/auth/redirect") ) ``` ```client-android-java @@ -138,7 +138,7 @@ Apps apps = new Apps(client); apps.create( ID.unique(), // appId "Vantage", // name - List.of("http://vantage.localhost/auth/redirect"), // redirectUris + List.of("https://vantage.localhost/auth/redirect"), // redirectUris null, // description (optional) null, // clientUri (optional) null, // logoUri (optional) @@ -177,7 +177,7 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], }); ``` {% /multicode %} @@ -196,7 +196,7 @@ The default flow is the standard authorization code flow. When a user clicks **S ```text https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize ?client_id=<CLIENT_ID> - &redirect_uri=http://vantage.localhost/auth/redirect + &redirect_uri=https://vantage.localhost/auth/redirect &response_type=code &scope=openid profile email &state=<STATE> @@ -211,7 +211,7 @@ curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ -d '{ "grant_type": "authorization_code", "code": "<CODE>", - "redirect_uri": "http://vantage.localhost/auth/redirect", + "redirect_uri": "https://vantage.localhost/auth/redirect", "client_id": "<CLIENT_ID>", "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" @@ -223,7 +223,7 @@ Content-Type: application/json { "grant_type": "authorization_code", "code": "<CODE>", - "redirect_uri": "http://vantage.localhost/auth/redirect", + "redirect_uri": "https://vantage.localhost/auth/redirect", "client_id": "<CLIENT_ID>", "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" diff --git a/src/routes/docs/products/auth/oauth-server/+page.markdoc b/src/routes/docs/products/auth/oauth-server/+page.markdoc index d6422c6e57..9015dfbe56 100644 --- a/src/routes/docs/products/auth/oauth-server/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/+page.markdoc @@ -16,11 +16,12 @@ Your Appwrite project can act as an **OAuth 2.1 and OpenID Connect provider** (O ![A third-party app obtaining tokens from your project's OAuth2 server and calling your APIs](/images/docs/oauth-server/diagram-overview.avif) {% /only_light %} -The OAuth2 server has three moving parts. +The OAuth2 server has four components. -1. **The authorization server.** Enabling the server on your project exposes the full set of endpoints: discovery, JWKS, authorize, approve and reject, token, userinfo, introspect, logout, and revoke. More advanced integrations also get device authorization, pushed authorization, and dynamic client registration. -2. **Clients.** Each third-party app registers as a [client](/docs/products/auth/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). A client declares the redirect URIs it can return to and the post-logout redirect URIs it can end sessions at, chooses whether the device flow is available (off by default), and carries what your consent screen shows for it: a name, logo, tagline, and description, along with directory details like tags, images, and contact and privacy information. +1. **The authorization server.** Enabling the server on your project exposes the full set of endpoints: discovery, JWKS, authorize, approve and reject, token, userinfo, introspect, logout, and revoke. For more advanced integrations, device authorization, pushed authorization, and dynamic client registration are also available. +2. **Clients.** Each third-party app registers as a [client](/docs/products/auth/oauth-server/clients), either confidential (it has a backend that can hold a secret) or public (a browser or mobile app that cannot). A client declares the redirect URIs it can return to and the post-logout redirect URIs it can end sessions at, chooses whether the device flow is available (off by default), and carries what your consent screen shows for it: a name, logo, tagline, and description, along with marketplace details like tags, images, and contact and privacy information. 3. **The consent screen.** You host a consent screen at an authorization URL you configure. When a user authorizes a client, Appwrite redirects the user to your screen, your screen confirms the grant, and Appwrite issues an authorization code the client exchanges for tokens. +4. **Your APIs.** The resource servers that clients call with the issued access tokens. They verify each token against your project's public keys and check the granted [scopes](/docs/products/auth/oauth-server/scopes) before serving a request. The flow follows the OAuth 2.1 authorization code grant, including PKCE for public clients, plus the OpenID Connect layer for identity. Because the server is spec-compliant, integrators can point any OAuth or OIDC client library at your project's discovery URL and it works without Appwrite-specific code. The URL is the same for every project, with only the project ID changing: diff --git a/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc index 8df06a2fbb..3f35434766 100644 --- a/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/clients/+page.markdoc @@ -68,7 +68,8 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', }); ``` ```client-flutter @@ -83,7 +84,8 @@ Apps apps = Apps(client); App app = await apps.create( appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', ); ``` ```client-apple @@ -98,7 +100,8 @@ let apps = Apps(client) let app = try await apps.create( appId: ID.unique(), name: "Custom App", - redirectUris: ["http://vantage.localhost/auth/redirect"] + redirectUris: ["https://vantage.localhost/auth/redirect"], + type: "confidential" ) ``` ```client-android-kotlin @@ -115,7 +118,8 @@ val apps = Apps(client) val app = apps.create( appId = ID.unique(), name = "Custom App", - redirectUris = listOf("http://vantage.localhost/auth/redirect") + redirectUris = listOf("https://vantage.localhost/auth/redirect"), + type = "confidential" ) ``` ```client-android-java @@ -133,7 +137,7 @@ Apps apps = new Apps(client); apps.create( ID.unique(), // appId "Custom App", // name - List.of("http://vantage.localhost/auth/redirect"), // redirectUris + List.of("https://vantage.localhost/auth/redirect"), // redirectUris null, // description (optional) null, // clientUri (optional) null, // logoUri (optional) @@ -147,7 +151,7 @@ apps.create( null, // dataDeletionUrl (optional) null, // postLogoutRedirectUris (optional) null, // enabled (optional) - null, // type (optional) + "confidential", // type (optional) null, // deviceFlow (optional) null, // teamId (optional) new CoroutineCallback<>((result, error) -> { @@ -172,7 +176,8 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Custom App', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', }); ``` {% /multicode %} @@ -627,11 +632,23 @@ const apps = new Apps(client); const app = await apps.update({ appId: '<APP_ID>', - name: 'Custom App', - description: 'A third-party app that signs in with your product.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, }); ``` ```client-flutter @@ -645,11 +662,23 @@ Apps apps = Apps(client); App app = await apps.update( appId: '<APP_ID>', - name: 'Custom App', - description: 'A third-party app that signs in with your product.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, ); ``` ```client-apple @@ -663,11 +692,23 @@ let apps = Apps(client) let app = try await apps.update( appId: "<APP_ID>", - name: "Custom App", - description: "A third-party app that signs in with your product.", - logoUri: "https://example.com/logo.png", - redirectUris: ["http://vantage.localhost/auth/redirect"], - enabled: true + name: "Vantage", + description: "A dashboard that signs in with TaskFlow.", + clientUri: "https://vantage.localhost", + logoUri: "https://vantage.localhost/logo.png", + privacyPolicyUrl: "https://vantage.localhost/privacy", + termsUrl: "https://vantage.localhost/terms", + contacts: ["security@vantage.localhost"], + tagline: "Product analytics for modern teams", + tags: ["analytics", "productivity"], + images: ["https://vantage.localhost/screenshot.png"], + supportUrl: "https://vantage.localhost/support", + dataDeletionUrl: "https://vantage.localhost/data-deletion", + enabled: true, + redirectUris: ["https://vantage.localhost/auth/redirect"], + postLogoutRedirectUris: ["https://vantage.localhost/signed-out"], + type: "confidential", + deviceFlow: false ) ``` ```client-android-kotlin @@ -682,11 +723,23 @@ val apps = Apps(client) val app = apps.update( appId = "<APP_ID>", - name = "Custom App", - description = "A third-party app that signs in with your product.", - logoUri = "https://example.com/logo.png", - redirectUris = listOf("http://vantage.localhost/auth/redirect"), - enabled = true + name = "Vantage", + description = "A dashboard that signs in with TaskFlow.", + clientUri = "https://vantage.localhost", + logoUri = "https://vantage.localhost/logo.png", + privacyPolicyUrl = "https://vantage.localhost/privacy", + termsUrl = "https://vantage.localhost/terms", + contacts = listOf("security@vantage.localhost"), + tagline = "Product analytics for modern teams", + tags = listOf("analytics", "productivity"), + images = listOf("https://vantage.localhost/screenshot.png"), + supportUrl = "https://vantage.localhost/support", + dataDeletionUrl = "https://vantage.localhost/data-deletion", + enabled = true, + redirectUris = listOf("https://vantage.localhost/auth/redirect"), + postLogoutRedirectUris = listOf("https://vantage.localhost/signed-out"), + type = "confidential", + deviceFlow = false, ) ``` ```client-android-java @@ -702,23 +755,23 @@ Apps apps = new Apps(client); apps.update( "<APP_ID>", // appId - "Custom App", // name - "A third-party app that signs in with your product.", // description (optional) - null, // clientUri (optional) - "https://example.com/logo.png", // logoUri (optional) - null, // privacyPolicyUrl (optional) - null, // termsUrl (optional) - null, // contacts (optional) - null, // tagline (optional) - null, // tags (optional) - null, // images (optional) - null, // supportUrl (optional) - null, // dataDeletionUrl (optional) - true, // enabled (optional) - List.of("http://vantage.localhost/auth/redirect"), // redirectUris (optional) - null, // postLogoutRedirectUris (optional) - null, // type (optional) - null, // deviceFlow (optional) + "Vantage", // name + "A dashboard that signs in with TaskFlow.", // description + "https://vantage.localhost", // clientUri + "https://vantage.localhost/logo.png", // logoUri + "https://vantage.localhost/privacy", // privacyPolicyUrl + "https://vantage.localhost/terms", // termsUrl + List.of("security@vantage.localhost"), // contacts + "Product analytics for modern teams", // tagline + List.of("analytics", "productivity"), // tags + List.of("https://vantage.localhost/screenshot.png"), // images + "https://vantage.localhost/support", // supportUrl + "https://vantage.localhost/data-deletion", // dataDeletionUrl + true, // enabled + List.of("https://vantage.localhost/auth/redirect"), // redirectUris + List.of("https://vantage.localhost/signed-out"), // postLogoutRedirectUris + "confidential", // type + false, // deviceFlow new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); @@ -740,11 +793,23 @@ const apps = new Apps(client); const app = await apps.update({ appId: '<APP_ID>', - name: 'Custom App', - description: 'A third-party app that signs in with your product.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + name: 'Vantage', + description: 'A dashboard that signs in with TaskFlow.', + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, }); ``` {% /multicode %} @@ -1288,7 +1353,7 @@ curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/register -d '{ "client_name": "MCP Client", "redirect_uris": [ - "http://vantage.localhost/auth/redirect" + "https://vantage.localhost/auth/redirect" ], "token_endpoint_auth_method": "none" }' @@ -1299,7 +1364,7 @@ Content-Type: application/json { "client_name": "MCP Client", "redirect_uris": [ - "http://vantage.localhost/auth/redirect" + "https://vantage.localhost/auth/redirect" ], "token_endpoint_auth_method": "none" } @@ -1310,7 +1375,7 @@ Content-Type: application/json { "client_id": "6a56677caf736a2310a2", "client_id_issued_at": 1784047484, - "redirect_uris": ["http://vantage.localhost/auth/redirect"], + "redirect_uris": ["https://vantage.localhost/auth/redirect"], "token_endpoint_auth_method": "none", "grant_types": ["authorization_code"], "response_types": ["code"], diff --git a/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc index 76d28d3864..fcf5768311 100644 --- a/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc @@ -9,8 +9,8 @@ This guide turns your project into an OAuth2 provider and runs one sign-in throu The examples follow two apps, the same pair the [tutorials](/docs/products/auth/oauth-server/sign-in-with-your-product/step-1) build out in full: -- **TaskFlow** (`http://taskflow.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. -- **Vantage** (`http://vantage.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. +- **TaskFlow** (`https://taskflow.localhost`): your product and the **OAuth2 provider**, also called the authorization server. It authenticates users, presents the consent screen, and issues tokens. +- **Vantage** (`https://vantage.localhost`): the third-party **consumer**, called the client in OAuth2. It sends users to TaskFlow for authorization and receives tokens after they approve access. # Enable the server {% #enable %} @@ -23,7 +23,7 @@ In the Console, open **Auth**, select the **OAuth2 server** tab, and turn on **E ![Enabling the OAuth2 server in the Appwrite Console](/images/docs/oauth-server/oauth2-server-settings.avif) {% /only_light %} -Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization, and where you present them the details of the request so they can approve or cancel. Point it at `http://taskflow.localhost/consent`, where TaskFlow will host its consent screen. Nothing needs to run there yet. The `openid`, `profile`, and `email` scopes are always included; add any scopes your custom APIs will support. +Set the **Authorization URL** to the page you will host the consent screen on. This is where Appwrite redirects users during authorization, and where you present them the details of the request so they can approve or reject. Point it at `https://taskflow.localhost/consent`, where TaskFlow will host its consent screen. Nothing needs to run there yet. The `openid`, `profile`, and `email` scopes are always included; add any scopes your custom APIs will support. You can also enable and configure the server with a [Server SDK](/docs/sdks#server) using the `updateOAuth2Server` method. @@ -388,7 +388,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { # Copy the discovery URL {% #discovery %} -Once enabled, the server publishes an OpenID Connect discovery document. Integrators point their OAuth or OIDC library at this URL and it learns every endpoint automatically. +Once enabled, the server publishes an OpenID Connect discovery document. Integrators point their OAuth or OIDC library at this URL and it learns every endpoint automatically. If the integrating platform supports OIDC sign-in out of the box, this URL is all it needs: it can skip most of the steps below instead of building the flow from scratch. {% only_dark %} ![The OIDC discovery URL in the Appwrite Console](/images/docs/oauth-server/dark/oauth2-server-discovery.avif) @@ -401,9 +401,9 @@ Open it in a browser to confirm the server is live. It returns JSON describing t # Register a client {% #register %} -Each app that integrates with your project registers as a client. Here that is Vantage. The **redirect URI** it declares is a URL on Vantage, `http://vantage.localhost/auth/redirect`, where the OAuth2 server sends users back with the authorization code. Any HTTP or HTTPS URL works. +Each app that integrates with your project registers as a client. Here that is Vantage. The **redirect URI** it declares is a URL on Vantage, `https://vantage.localhost/auth/redirect`, where the OAuth2 server sends users back with the authorization code. For security, redirect URIs must use HTTPS. Loopback addresses like `localhost`, `127.0.0.1`, and `[::1]` are the exception and can use HTTP during development. -Open the **Apps** sub-tab and create a client. Name it `Vantage`, add the redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. +Open the **Apps** sub-tab and create a client. Name it `Vantage`, add the redirect URI, and choose a type. Pick **Confidential** for this walkthrough so you get a secret to authenticate the token exchange. Copy the secret when it is shown, because it appears only once. For a mobile or single-page app that cannot hold a secret, pick **Public** instead: the token exchange then uses [PKCE](/docs/products/auth/oauth-server/authorization#pkce) in place of the secret, and the [client types](/docs/products/auth/oauth-server/clients#client-types) comparison shows what else changes. {% only_dark %} ![Creating an OAuth2 client](/images/docs/oauth-server/dark/oauth2-server-create-app.avif) @@ -427,7 +427,8 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', }); ``` ```client-flutter @@ -442,7 +443,8 @@ Apps apps = Apps(client); App app = await apps.create( appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', ); ``` ```client-apple @@ -457,7 +459,8 @@ let apps = Apps(client) let app = try await apps.create( appId: ID.unique(), name: "Vantage", - redirectUris: ["http://vantage.localhost/auth/redirect"] + redirectUris: ["https://vantage.localhost/auth/redirect"], + type: "confidential" ) ``` ```client-android-kotlin @@ -474,7 +477,8 @@ val apps = Apps(client) val app = apps.create( appId = ID.unique(), name = "Vantage", - redirectUris = listOf("http://vantage.localhost/auth/redirect") + redirectUris = listOf("https://vantage.localhost/auth/redirect"), + type = "confidential" ) ``` ```client-android-java @@ -492,7 +496,7 @@ Apps apps = new Apps(client); apps.create( ID.unique(), // appId "Vantage", // name - List.of("http://vantage.localhost/auth/redirect"), // redirectUris + List.of("https://vantage.localhost/auth/redirect"), // redirectUris null, // description (optional) null, // clientUri (optional) null, // logoUri (optional) @@ -506,7 +510,7 @@ apps.create( null, // dataDeletionUrl (optional) null, // postLogoutRedirectUris (optional) null, // enabled (optional) - null, // type (optional) + "confidential", // type (optional) null, // deviceFlow (optional) null, // teamId (optional) new CoroutineCallback<>((result, error) -> { @@ -531,7 +535,8 @@ const apps = new Apps(client); const app = await apps.create({ appId: ID.unique(), name: 'Vantage', - redirectUris: ['http://vantage.localhost/auth/redirect'], + redirectUris: ['https://vantage.localhost/auth/redirect'], + type: 'confidential', }); ``` {% /multicode %} @@ -552,9 +557,21 @@ const app = await apps.update({ appId: '<APP_ID>', name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, }); ``` ```client-flutter @@ -570,9 +587,21 @@ App app = await apps.update( appId: '<APP_ID>', name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, ); ``` ```client-apple @@ -588,9 +617,21 @@ let app = try await apps.update( appId: "<APP_ID>", name: "Vantage", description: "A dashboard that signs in with TaskFlow.", - logoUri: "https://example.com/logo.png", - redirectUris: ["http://vantage.localhost/auth/redirect"], - enabled: true + clientUri: "https://vantage.localhost", + logoUri: "https://vantage.localhost/logo.png", + privacyPolicyUrl: "https://vantage.localhost/privacy", + termsUrl: "https://vantage.localhost/terms", + contacts: ["security@vantage.localhost"], + tagline: "Product analytics for modern teams", + tags: ["analytics", "productivity"], + images: ["https://vantage.localhost/screenshot.png"], + supportUrl: "https://vantage.localhost/support", + dataDeletionUrl: "https://vantage.localhost/data-deletion", + enabled: true, + redirectUris: ["https://vantage.localhost/auth/redirect"], + postLogoutRedirectUris: ["https://vantage.localhost/signed-out"], + type: "confidential", + deviceFlow: false ) ``` ```client-android-kotlin @@ -607,9 +648,21 @@ val app = apps.update( appId = "<APP_ID>", name = "Vantage", description = "A dashboard that signs in with TaskFlow.", - logoUri = "https://example.com/logo.png", - redirectUris = listOf("http://vantage.localhost/auth/redirect"), - enabled = true + clientUri = "https://vantage.localhost", + logoUri = "https://vantage.localhost/logo.png", + privacyPolicyUrl = "https://vantage.localhost/privacy", + termsUrl = "https://vantage.localhost/terms", + contacts = listOf("security@vantage.localhost"), + tagline = "Product analytics for modern teams", + tags = listOf("analytics", "productivity"), + images = listOf("https://vantage.localhost/screenshot.png"), + supportUrl = "https://vantage.localhost/support", + dataDeletionUrl = "https://vantage.localhost/data-deletion", + enabled = true, + redirectUris = listOf("https://vantage.localhost/auth/redirect"), + postLogoutRedirectUris = listOf("https://vantage.localhost/signed-out"), + type = "confidential", + deviceFlow = false, ) ``` ```client-android-java @@ -626,22 +679,22 @@ Apps apps = new Apps(client); apps.update( "<APP_ID>", // appId "Vantage", // name - "A dashboard that signs in with TaskFlow.", // description (optional) - null, // clientUri (optional) - "https://example.com/logo.png", // logoUri (optional) - null, // privacyPolicyUrl (optional) - null, // termsUrl (optional) - null, // contacts (optional) - null, // tagline (optional) - null, // tags (optional) - null, // images (optional) - null, // supportUrl (optional) - null, // dataDeletionUrl (optional) - true, // enabled (optional) - List.of("http://vantage.localhost/auth/redirect"), // redirectUris (optional) - null, // postLogoutRedirectUris (optional) - null, // type (optional) - null, // deviceFlow (optional) + "A dashboard that signs in with TaskFlow.", // description + "https://vantage.localhost", // clientUri + "https://vantage.localhost/logo.png", // logoUri + "https://vantage.localhost/privacy", // privacyPolicyUrl + "https://vantage.localhost/terms", // termsUrl + List.of("security@vantage.localhost"), // contacts + "Product analytics for modern teams", // tagline + List.of("analytics", "productivity"), // tags + List.of("https://vantage.localhost/screenshot.png"), // images + "https://vantage.localhost/support", // supportUrl + "https://vantage.localhost/data-deletion", // dataDeletionUrl + true, // enabled + List.of("https://vantage.localhost/auth/redirect"), // redirectUris + List.of("https://vantage.localhost/signed-out"), // postLogoutRedirectUris + "confidential", // type + false, // deviceFlow new CoroutineCallback<>((result, error) -> { if (error != null) { error.printStackTrace(); @@ -665,9 +718,21 @@ const app = await apps.update({ appId: '<APP_ID>', name: 'Vantage', description: 'A dashboard that signs in with TaskFlow.', - logoUri: 'https://example.com/logo.png', - redirectUris: ['http://vantage.localhost/auth/redirect'], + clientUri: 'https://vantage.localhost', + logoUri: 'https://vantage.localhost/logo.png', + privacyPolicyUrl: 'https://vantage.localhost/privacy', + termsUrl: 'https://vantage.localhost/terms', + contacts: ['security@vantage.localhost'], + tagline: 'Product analytics for modern teams', + tags: ['analytics', 'productivity'], + images: ['https://vantage.localhost/screenshot.png'], + supportUrl: 'https://vantage.localhost/support', + dataDeletionUrl: 'https://vantage.localhost/data-deletion', enabled: true, + redirectUris: ['https://vantage.localhost/auth/redirect'], + postLogoutRedirectUris: ['https://vantage.localhost/signed-out'], + type: 'confidential', + deviceFlow: false, }); ``` {% /multicode %} @@ -688,27 +753,24 @@ The URL uses TaskFlow's Appwrite API endpoint because its Appwrite project is ac ```text https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize ?client_id=<CLIENT_ID> - &redirect_uri=http://vantage.localhost/auth/redirect + &redirect_uri=https://vantage.localhost/auth/redirect &response_type=code &scope=openid profile email - &state=<STATE> ``` ```curl curl -G 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize' \ --data-urlencode 'client_id=<CLIENT_ID>' \ - --data-urlencode 'redirect_uri=http://vantage.localhost/auth/redirect' \ + --data-urlencode 'redirect_uri=https://vantage.localhost/auth/redirect' \ --data-urlencode 'response_type=code' \ - --data-urlencode 'scope=openid profile email' \ - --data-urlencode 'state=<STATE>' + --data-urlencode 'scope=openid profile email' ``` ```hurl GET https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/authorize [Query] client_id: <CLIENT_ID> -redirect_uri: http://vantage.localhost/auth/redirect +redirect_uri: https://vantage.localhost/auth/redirect response_type: code scope: openid profile email -state: <STATE> ``` {% /multicode %} @@ -717,34 +779,25 @@ Each query parameter tells TaskFlow how to handle the request: | Parameter | Meaning | | --- | --- | | `client_id` | Identifies Vantage as the client requesting access. | -| `redirect_uri` | Tells TaskFlow where to return the browser after the user approves or cancels. It must match a URI registered for Vantage. | +| `redirect_uri` | Tells TaskFlow where to return the browser after the user approves or rejects. It must match a URI registered for Vantage. | | `response_type=code` | Requests an authorization code. The browser receives this temporary code, then Vantage's server exchanges it for tokens in step 3. | | `scope` | Lists the access Vantage is requesting. `openid` starts an OpenID Connect sign-in, while `profile` and `email` request the user's basic profile and email claims. | -| `state` | Carries a random value created and stored by Vantage. Vantage compares it with the value returned after authorization to confirm the response belongs to the same sign-in request. | When you open this URL, Appwrite validates the request and checks for an active TaskFlow user session. ## 2. Review and approve Vantage's request {% #approve-grant %} -After Vantage opens the authorization endpoint: - -- **Appwrite creates a grant.** For a signed-in user, Appwrite creates a pending authorization request that connects the user, Vantage, the requested scopes, and Vantage's redirect URI. This pending request is called a grant. - -- **Appwrite redirects to TaskFlow.** The **authorization endpoint** is the Appwrite Cloud URL Vantage opens. The **authorization URL** is TaskFlow's consent page, where Appwrite sends the browser with a `grant_id`. +When Vantage opens the authorization endpoint for a signed-in user, Appwrite creates a pending authorization request called a **grant**. The grant connects the user, Vantage, the requested scopes, and Vantage's redirect URI. Appwrite then redirects the browser to TaskFlow's **authorization URL**, the consent page, with the `grant_id` in the query string. A complete consent screen uses that grant ID to show what Vantage is asking for and lets the user approve or reject; the [Authorization](/docs/products/auth/oauth-server/authorization#consent) guide shows how to build it. -- **TaskFlow presents the request.** A complete consent screen uses the grant ID to show that Vantage is asking for the user's profile and email, then lets the user approve or cancel. The [Authorization](/docs/products/auth/oauth-server/authorization#consent) guide shows how to build this screen. +This quick start does not build TaskFlow's consent screen, so the browser lands on `https://taskflow.localhost/consent` and finds nothing there. That is fine: copy the `grant_id` from the address bar and approve the request manually. If the URL has no `grant_id`, the user has no active TaskFlow session. Sign in a user on the project, then open Vantage's authorization URL again. -- **Copy the grant ID.** This quick start does not build TaskFlow's consent screen, so the browser lands on `http://taskflow.localhost/consent` and finds nothing there. Copy the `grant_id` from the address bar to continue manually. - -- **Sign in if the grant ID is missing.** A URL without a `grant_id` means the user does not have an active TaskFlow session. Sign in a user on the project, then open Vantage's authorization URL again. - -- **Approve Vantage's request.** Send the `grant_id` to the approval endpoint using the same TaskFlow user's session. A browser sends the session cookie automatically. From another environment, send the same cookie yourself: it is named `a_session_<PROJECT_ID>` and holds the session token. Use this request: +Approving needs the same TaskFlow user's session, sent as the `a_session_<PROJECT_ID>` cookie, which holds the session secret. To find its value, open your browser's developer tools on the Network tab, look at any request to Appwrite, such as `GET /v1/account`, and copy the cookie from the request headers. Then send this request: {% multicode %} ```curl curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ -H 'Content-Type: application/json' \ - -H 'Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN>' \ + -H 'Cookie: a_session_<PROJECT_ID>=<SESSION_SECRET>' \ -d '{ "grant_id": "<GRANT_ID>" }' @@ -752,14 +805,14 @@ curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' ```hurl POST https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve Content-Type: application/json -Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN> +Cookie: a_session_<PROJECT_ID>=<SESSION_SECRET> { "grant_id": "<GRANT_ID>" } ``` {% /multicode %} -- **Return to Vantage.** After approval, Appwrite redirects the browser to Vantage's registered redirect URI with an authorization `code` in the query string. Vantage uses this code in the next step. +After approval, Appwrite redirects the browser to Vantage's registered redirect URI with an authorization `code` in the query string. Vantage uses this code in the next step. ## 3. Exchange the code for tokens {% #exchange-code %} @@ -772,7 +825,7 @@ curl -X POST 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/token' \ -d '{ "grant_type": "authorization_code", "code": "<CODE>", - "redirect_uri": "http://vantage.localhost/auth/redirect", + "redirect_uri": "https://vantage.localhost/auth/redirect", "client_id": "<CLIENT_ID>", "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" @@ -784,7 +837,7 @@ Content-Type: application/json { "grant_type": "authorization_code", "code": "<CODE>", - "redirect_uri": "http://vantage.localhost/auth/redirect", + "redirect_uri": "https://vantage.localhost/auth/redirect", "client_id": "<CLIENT_ID>", "client_secret": "<SECRET_FOR_CONFIDENTIAL_CLIENTS>", "code_verifier": "<PKCE_VERIFIER_FOR_PUBLIC_CLIENTS>" @@ -834,6 +887,11 @@ See [Tokens](/docs/products/auth/oauth-server/tokens) for token structure, valid # Next steps {% #next-steps %} +Enabling the server is half of becoming a provider. Integrators like Vantage rely on TaskFlow for two more things: + +- **Documentation** that covers the discovery URL, the available scopes and what they grant, and how to register a client. +- **A developer platform** on TaskFlow's own website where integrators register and manage their clients with the `apps` service, which the [Clients](/docs/products/auth/oauth-server/clients) page walks through. + {% cards %} {% cards_item href="/docs/products/auth/oauth-server/authorization" title="Authorization" %} Host your consent screen and drive the authorize, grant, and approve steps. diff --git a/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc b/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc index 08c7323fa7..a944ef742f 100644 --- a/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/scopes/+page.markdoc @@ -329,7 +329,7 @@ For example, after a client requests `tasks.read`, the user might choose one pro curl --request POST \ 'https://<REGION>.cloud.appwrite.io/v1/oauth2/<PROJECT_ID>/approve' \ --header 'Accept: application/json' \ - --header 'Cookie: a_session_<PROJECT_ID>=<SESSION_TOKEN>' \ + --header 'Cookie: a_session_<PROJECT_ID>=<SESSION_SECRET>' \ --form 'grant_id=<GRANT_ID>' \ --form 'authorization_details=[ { diff --git a/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc index ad75a5973a..d2780b4b89 100644 --- a/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/sign-in-with-your-product/step-1/+page.markdoc @@ -10,7 +10,7 @@ category: OAuth2 server back: /docs/products/auth/oauth-server --- -Once your project's [OAuth2 server](/docs/products/auth/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every moving part. +Once your project's [OAuth2 server](/docs/products/auth/oauth-server) is enabled, other apps can offer "Sign in with your product". This tutorial builds that experience end to end with two small [TanStack Start](https://tanstack.com/start) apps, so you can see every part of the flow. # What you will build {% #what-you-will-build %} From de42dc64695da0c804267c3419916dc771147f78 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Fri, 17 Jul 2026 16:19:06 +0530 Subject: [PATCH 28/38] docs(oauth-server): enable the server in updateOAuth2Server examples --- .../oauth-server/quick-start/+page.markdoc | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc index fcf5768311..3835eb06be 100644 --- a/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc +++ b/src/routes/docs/products/auth/oauth-server/quick-start/+page.markdoc @@ -43,7 +43,7 @@ const client = new Client() const project = new Project(client); const result = await project.updateOAuth2Server({ - enabled: false, + enabled: true, authorizationUrl: 'https://example.com', scopes: [], // optional authorizationDetailsTypes: [], // optional @@ -69,7 +69,7 @@ const client = new Client() const project = new Project(client); const result = await project.updateOAuth2Server({ - enabled: false, + enabled: true, authorizationUrl: 'https://example.com', scopes: [], // optional authorizationDetailsTypes: [], // optional @@ -99,7 +99,7 @@ $client = (new Client()) $project = new Project($client); $result = $project->updateOAuth2Server( - enabled: false, + enabled: true, authorizationUrl: 'https://example.com', scopes: [], // optional authorizationDetailsTypes: [], // optional @@ -127,7 +127,7 @@ client.set_key('<YOUR_API_KEY>') # Your secret API key project = Project(client) result: ProjectModel = project.update_o_auth2_server( - enabled = False, + enabled = True, authorization_url = 'https://example.com', scopes = [], # optional authorization_details_types = [], # optional @@ -157,7 +157,7 @@ client = Client.new project = Project.new(client) result = project.update_o_auth2_server( - enabled: false, + enabled: true, authorization_url: 'https://example.com', scopes: [], # optional authorization_details_types: [], # optional @@ -183,7 +183,7 @@ Client client = Client() Project project = Project(client); Project result = await project.updateOAuth2Server( - enabled: false, + enabled: true, authorizationUrl: 'https://example.com', scopes: [], // (optional) authorizationDetailsTypes: [], // (optional) @@ -212,7 +212,7 @@ Client client = new Client() Project project = new Project(client); Project result = await project.UpdateOAuth2Server( - enabled: false, + enabled: true, authorizationUrl: "https://example.com", scopes: new List<string>(), // optional authorizationDetailsTypes: new List<string>(), // optional @@ -240,7 +240,7 @@ val client = Client() val project = Project(client) val response = project.updateOAuth2Server( - enabled = false, + enabled = true, authorizationUrl = "https://example.com", scopes = listOf(), // optional authorizationDetailsTypes = listOf(), // optional @@ -268,7 +268,7 @@ Client client = new Client() Project project = new Project(client); project.updateOAuth2Server( - false, // enabled + true, // enabled "https://example.com", // authorizationUrl List.of(), // scopes (optional) List.of(), // authorizationDetailsTypes (optional) @@ -302,7 +302,7 @@ let client = Client() let project = Project(client) let project = try await project.updateOAuth2Server( - enabled: false, + enabled: true, authorizationUrl: "https://example.com", scopes: [], // optional authorizationDetailsTypes: [], // optional @@ -335,7 +335,7 @@ client := client.New( service := project.New(client) response, error := service.UpdateOAuth2Server( - false, + true, "https://example.com", project.WithUpdateOAuth2ServerScopes([]string{}), project.WithUpdateOAuth2ServerAuthorizationDetailsTypes([]string{}), @@ -364,7 +364,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { let project = Project::new(&client); let result = project.update_o_auth2_server( - false, + true, "https://example.com", Some(vec![]), // optional Some(vec![]), // optional From 5023905519d70c84d46b9d9b74e9b685cc9aca88 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Tue, 21 Jul 2026 18:38:27 +0530 Subject: [PATCH 29/38] docs(partners): add Sign in with Appwrite section --- .optimize-cache.json | 16 + src/lib/utils/code.ts | 2 + src/lib/utils/references.ts | 2 + src/routes/docs/Sidebar.svelte | 18 + src/routes/docs/partners/apps/+layout.svelte | 51 + src/routes/docs/partners/apps/+page.markdoc | 72 + .../docs/partners/apps/consent/+page.markdoc | 46 + .../partners/apps/quick-start/+page.markdoc | 953 +++++ .../partners/apps/registration/+page.markdoc | 666 ++++ .../docs/partners/apps/scopes/+page.markdoc | 83 + .../docs/partners/apps/tokens/+page.markdoc | 107 + .../docs/partners/project/+layout.svelte | 96 + .../docs/partners/project/+page.markdoc | 463 +++ .../partners/project/api-keys/+page.markdoc | 1628 ++++++++ .../project/auth-methods/+page.markdoc | 287 ++ .../project/branded-emails/+page.markdoc | 900 +++++ .../project/email-templates/+page.markdoc | 872 +++++ .../environment-variables/+page.markdoc | 1222 ++++++ .../project/key-rotation/+page.markdoc | 811 ++++ .../partners/project/labels/+page.markdoc | 270 ++ .../project/mock-phones/+page.markdoc | 1098 ++++++ .../docs/partners/project/oauth/+page.markdoc | 1060 +++++ .../partners/project/platforms/+page.markdoc | 1206 ++++++ .../partners/project/policies/+page.markdoc | 3407 +++++++++++++++++ .../partners/project/protocols/+page.markdoc | 285 ++ .../project/provisioning/+page.markdoc | 757 ++++ .../partners/project/services/+page.markdoc | 296 ++ .../docs/partners/project/smtp/+page.markdoc | 605 +++ .../partners/apps/account-applications.avif | Bin 0 -> 19610 bytes .../docs/partners/apps/consent-screen.avif | Bin 0 -> 12013 bytes .../apps/dark/account-applications.avif | Bin 0 -> 21521 bytes .../partners/apps/dark/consent-screen.avif | Bin 0 -> 12018 bytes .../docs/partners/apps/dark/device-code.avif | Bin 0 -> 6291 bytes .../apps/dark/quick-start-consent.avif | Bin 0 -> 11545 bytes .../apps/dark/quick-start-provider-setup.avif | Bin 0 -> 22179 bytes .../apps/dark/registration-marketplace.avif | Bin 0 -> 27546 bytes .../apps/dark/registration-oauth-client.avif | Bin 0 -> 31961 bytes .../apps/dark/registration-secrets.avif | Bin 0 -> 24871 bytes .../docs/partners/apps/device-code.avif | Bin 0 -> 6250 bytes .../partners/apps/quick-start-consent.avif | Bin 0 -> 11628 bytes .../apps/quick-start-provider-setup.avif | Bin 0 -> 21072 bytes .../apps/registration-marketplace.avif | Bin 0 -> 25620 bytes .../apps/registration-oauth-client.avif | Bin 0 -> 30091 bytes .../partners/apps/registration-secrets.avif | Bin 0 -> 23251 bytes static/images/docs/project/auth-methods.avif | Bin 0 -> 30910 bytes .../images/docs/project/create-api-key.avif | Bin 0 -> 14966 bytes .../docs/project/dark/auth-methods.avif | Bin 0 -> 34406 bytes .../docs/project/dark/create-api-key.avif | Bin 0 -> 17537 bytes .../docs/project/dark/email-templates.avif | Bin 0 -> 30610 bytes static/images/docs/project/dark/labels.avif | Bin 0 -> 32758 bytes .../images/docs/project/dark/mock-phones.avif | Bin 0 -> 43735 bytes .../docs/project/dark/oauth-providers.avif | Bin 0 -> 36614 bytes .../images/docs/project/dark/platforms.avif | Bin 0 -> 28928 bytes static/images/docs/project/dark/policies.avif | Bin 0 -> 29586 bytes .../images/docs/project/dark/protocols.avif | Bin 0 -> 44395 bytes static/images/docs/project/dark/services.avif | Bin 0 -> 46978 bytes static/images/docs/project/dark/smtp.avif | Bin 0 -> 29672 bytes .../images/docs/project/email-templates.avif | Bin 0 -> 26600 bytes static/images/docs/project/labels.avif | Bin 0 -> 27825 bytes static/images/docs/project/mock-phones.avif | Bin 0 -> 36779 bytes .../images/docs/project/oauth-providers.avif | Bin 0 -> 33453 bytes static/images/docs/project/platforms.avif | Bin 0 -> 25120 bytes static/images/docs/project/policies.avif | Bin 0 -> 25371 bytes static/images/docs/project/protocols.avif | Bin 0 -> 37565 bytes static/images/docs/project/services.avif | Bin 0 -> 40047 bytes static/images/docs/project/smtp.avif | Bin 0 -> 24970 bytes 66 files changed, 17279 insertions(+) create mode 100644 src/routes/docs/partners/apps/+layout.svelte create mode 100644 src/routes/docs/partners/apps/+page.markdoc create mode 100644 src/routes/docs/partners/apps/consent/+page.markdoc create mode 100644 src/routes/docs/partners/apps/quick-start/+page.markdoc create mode 100644 src/routes/docs/partners/apps/registration/+page.markdoc create mode 100644 src/routes/docs/partners/apps/scopes/+page.markdoc create mode 100644 src/routes/docs/partners/apps/tokens/+page.markdoc create mode 100644 src/routes/docs/partners/project/+layout.svelte create mode 100644 src/routes/docs/partners/project/+page.markdoc create mode 100644 src/routes/docs/partners/project/api-keys/+page.markdoc create mode 100644 src/routes/docs/partners/project/auth-methods/+page.markdoc create mode 100644 src/routes/docs/partners/project/branded-emails/+page.markdoc create mode 100644 src/routes/docs/partners/project/email-templates/+page.markdoc create mode 100644 src/routes/docs/partners/project/environment-variables/+page.markdoc create mode 100644 src/routes/docs/partners/project/key-rotation/+page.markdoc create mode 100644 src/routes/docs/partners/project/labels/+page.markdoc create mode 100644 src/routes/docs/partners/project/mock-phones/+page.markdoc create mode 100644 src/routes/docs/partners/project/oauth/+page.markdoc create mode 100644 src/routes/docs/partners/project/platforms/+page.markdoc create mode 100644 src/routes/docs/partners/project/policies/+page.markdoc create mode 100644 src/routes/docs/partners/project/protocols/+page.markdoc create mode 100644 src/routes/docs/partners/project/provisioning/+page.markdoc create mode 100644 src/routes/docs/partners/project/services/+page.markdoc create mode 100644 src/routes/docs/partners/project/smtp/+page.markdoc create mode 100644 static/images/docs/partners/apps/account-applications.avif create mode 100644 static/images/docs/partners/apps/consent-screen.avif create mode 100644 static/images/docs/partners/apps/dark/account-applications.avif create mode 100644 static/images/docs/partners/apps/dark/consent-screen.avif create mode 100644 static/images/docs/partners/apps/dark/device-code.avif create mode 100644 static/images/docs/partners/apps/dark/quick-start-consent.avif create mode 100644 static/images/docs/partners/apps/dark/quick-start-provider-setup.avif create mode 100644 static/images/docs/partners/apps/dark/registration-marketplace.avif create mode 100644 static/images/docs/partners/apps/dark/registration-oauth-client.avif create mode 100644 static/images/docs/partners/apps/dark/registration-secrets.avif create mode 100644 static/images/docs/partners/apps/device-code.avif create mode 100644 static/images/docs/partners/apps/quick-start-consent.avif create mode 100644 static/images/docs/partners/apps/quick-start-provider-setup.avif create mode 100644 static/images/docs/partners/apps/registration-marketplace.avif create mode 100644 static/images/docs/partners/apps/registration-oauth-client.avif create mode 100644 static/images/docs/partners/apps/registration-secrets.avif create mode 100644 static/images/docs/project/auth-methods.avif create mode 100644 static/images/docs/project/create-api-key.avif create mode 100644 static/images/docs/project/dark/auth-methods.avif create mode 100644 static/images/docs/project/dark/create-api-key.avif create mode 100644 static/images/docs/project/dark/email-templates.avif create mode 100644 static/images/docs/project/dark/labels.avif create mode 100644 static/images/docs/project/dark/mock-phones.avif create mode 100644 static/images/docs/project/dark/oauth-providers.avif create mode 100644 static/images/docs/project/dark/platforms.avif create mode 100644 static/images/docs/project/dark/policies.avif create mode 100644 static/images/docs/project/dark/protocols.avif create mode 100644 static/images/docs/project/dark/services.avif create mode 100644 static/images/docs/project/dark/smtp.avif create mode 100644 static/images/docs/project/email-templates.avif create mode 100644 static/images/docs/project/labels.avif create mode 100644 static/images/docs/project/mock-phones.avif create mode 100644 static/images/docs/project/oauth-providers.avif create mode 100644 static/images/docs/project/platforms.avif create mode 100644 static/images/docs/project/policies.avif create mode 100644 static/images/docs/project/protocols.avif create mode 100644 static/images/docs/project/services.avif create mode 100644 static/images/docs/project/smtp.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 828a3aaef7..2d9b435507 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1593,6 +1593,22 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", + "static/images/docs/partners/apps/account-applications.png": "85b60bff922db940aafe30a3eb5c1646d66a30f6d7894df2f0c14c65bd79d7e6", + "static/images/docs/partners/apps/consent-screen.png": "5c6875f7d9af0180d0c5859bac2c57bb620a2243aac72530ca122a40f3758b50", + "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", + "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", + "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "2f94d24187e22f9391e86b5029b9b3cf47189b49ca6db8858eca2851b21bccec", + "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", + "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", + "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", + "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", + "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", + "static/images/docs/partners/apps/quick-start-consent.png": "4515e2c9bee7c0e269bc3878bf0a804942b9f39fba103a2feda5b71aedf3acbc", + "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", + "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", + "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", + "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/lib/utils/code.ts b/src/lib/utils/code.ts index 87503c1066..f58058218a 100644 --- a/src/lib/utils/code.ts +++ b/src/lib/utils/code.ts @@ -54,6 +54,8 @@ const languages = { java: java, cpp: cpp, bash: bash, + curl: bash, + hurl: http, powershell: powershell, cmd: dos, yaml: yaml, diff --git a/src/lib/utils/references.ts b/src/lib/utils/references.ts index ad3358eebf..bc2dda57f8 100644 --- a/src/lib/utils/references.ts +++ b/src/lib/utils/references.ts @@ -136,6 +136,8 @@ export const platformMap: Record<Language | string, string> = { csharp: 'C#', cpp: 'C++', bash: 'Bash', + curl: 'cURL', + hurl: 'Hurl', powershell: 'PowerShell', cmd: 'CMD', yaml: 'YAML', diff --git a/src/routes/docs/Sidebar.svelte b/src/routes/docs/Sidebar.svelte index a3334b9bdc..ba4e59c671 100644 --- a/src/routes/docs/Sidebar.svelte +++ b/src/routes/docs/Sidebar.svelte @@ -93,6 +93,24 @@ } ] }, + { + label: 'Partners', + items: [ + { + label: 'Project', + href: '/docs/partners/project', + icon: 'icon-briefcase', + isParent: true + }, + { + label: 'Apps', + href: '/docs/partners/apps', + icon: 'icon-key', + isParent: true, + new: isNewUntil('31 Aug 2026') + } + ] + }, { label: 'Utilities', collapsible: true, diff --git a/src/routes/docs/partners/apps/+layout.svelte b/src/routes/docs/partners/apps/+layout.svelte new file mode 100644 index 0000000000..807565ae27 --- /dev/null +++ b/src/routes/docs/partners/apps/+layout.svelte @@ -0,0 +1,51 @@ +<script lang="ts"> + import Docs from '$lib/layouts/Docs.svelte'; + import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; + + const parent: NavParent = { + href: '/docs', + label: 'Apps' + }; + + const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/partners/apps' + }, + { + label: 'Quick start', + href: '/docs/partners/apps/quick-start' + } + ] + }, + { + label: 'Concepts', + items: [ + { + label: 'Registration', + href: '/docs/partners/apps/registration' + }, + { + label: 'Scopes', + href: '/docs/partners/apps/scopes' + }, + { + label: 'Consent', + href: '/docs/partners/apps/consent' + }, + { + label: 'Tokens', + href: '/docs/partners/apps/tokens' + } + ] + } + ]; +</script> + +<Docs variant="two-side-navs"> + <Sidebar {navigation} {parent} /> + <slot /> +</Docs> diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc new file mode 100644 index 0000000000..6808f9f706 --- /dev/null +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -0,0 +1,72 @@ +--- +layout: article +title: Sign in with Appwrite +description: Build apps that access your users' Appwrite projects and organizations with consent-based, scoped OAuth2 tokens instead of pasted API keys. +back: /docs +--- + +Appwrite is an **OAuth 2.1 and OpenID Connect provider**. Your app can send any Appwrite user to a consent screen, ask for access to the projects and organizations they choose, and receive tokens that call their project APIs directly. This is **Sign in with Appwrite**: the same consent flow users know from "Sign in with Google", pointed at their Appwrite account and backend. + +Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. That key never expired unless they remembered it, carried whatever scopes they picked under pressure, and had to be repeated for every project. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. + +{% info title="Building your own provider?" %} +This section is for apps that build on top of Appwrite itself. To make your own product an OAuth provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. +{% /info %} + +# What you can build {% #what-you-can-build %} + +Your app authenticates the user once and then acts on their Appwrite resources with the scopes they granted. + +- **Dashboards and monitors** that read usage, logs, and data across the projects a user selects. +- **Deployment tools** that push functions and sites into a customer's project without holding a key. +- **CLIs and devices** that sign in with a short user code instead of a browser redirect. +- **AI agents and MCP clients** that operate under scopes the user can narrow to read-only. + +# How it works {% #how-it-works %} + +Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. + +1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. +2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can narrow the request, down to read-only. +3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. +4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. + +Because the provider is spec-compliant, any OAuth or OIDC library works against the discovery document without Appwrite-specific code: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration +``` + +Users stay in control after the redirect too. Every authorization appears on their account's applications page, where they see the scopes your app holds and the tokens issued under it, and can revoke a token family or the whole authorization at any time. + +# Explore {% #explore %} + +{% cards %} +{% cards_item href="/docs/partners/apps/quick-start" title="Quick start" %} +Register an app and run the full flow, from consent to your first authorized API call. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/registration" title="Registration" %} +Register your app in the Console or from code with the Apps API. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} +The scope catalog and how grants target specific projects and organizations. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/consent" title="Consent" %} +What users see, what they can change, and what your app receives. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/tokens" title="Tokens" %} +Use, refresh, and revoke the tokens Appwrite issues to your app. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/dashboards" title="Dashboards" %} +Build a read-only dashboard over the projects a user selects. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/deployments" title="Deployments" %} +Deploy functions and sites into a user's project with write scopes. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/device-flow" title="Device flow" %} +Sign in from CLIs and devices with a short user code. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/agents" title="Agents" %} +Connect AI agents and MCP clients to your users' projects. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc new file mode 100644 index 0000000000..92556f0442 --- /dev/null +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -0,0 +1,46 @@ +--- +layout: article +title: Consent +description: What users see on the Sign in with Appwrite consent screen, what they can change, and what your app receives. +back: /docs/partners/apps +--- + +Consent is where the user decides. Appwrite hosts the screen, renders what your app asked for, and gives the user the final say over scopes and targets. Your app never sees the screen; it sees the outcome. + +# The consent screen {% #consent-screen %} + +{% only_dark %} +![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/dark/consent-screen.avif) +{% /only_dark %} +{% only_light %} +![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/consent-screen.avif) +{% /only_light %} + +The screen leads with your app's identity: the name, logo, and tagline from [registration](/docs/partners/apps/registration), with the privacy policy and terms linked in the footer. Below it, each requested scope appears as a permission line in plain language, and a summary states the overall reach, from "view your identity" for a bare OIDC request up to full account access. + +When the request targets projects or organizations, the screen shows a picker. A wildcard request becomes a list of the user's resources to choose from; a request for named IDs shows those resources for confirmation. The user signs in first if no session exists, and can switch accounts from the screen itself. + +# Users can grant less {% #partial-grants %} + +The user approves the request as a whole, a subset of it, or nothing. They deselect projects, drop scopes, and for agent-style grants toggle whole categories to read-only. Only `openid` always survives approval, so an approved flow always identifies the user. + +Your app learns the outcome from the token response: `scope` holds the scopes that survived, `authorization_details` the targets. Build for partial grants from the start. A dashboard asked to read five projects but granted two should show two projects, not an error. + +# When the screen is skipped {% #consent-reuse %} + +Appwrite remembers approvals. A returning user is redirected straight back to your app, without seeing the screen, when the new request stays inside the stored consent: no new scopes, and `authorization_details` identical to what was approved. The screen reappears when anything differs, including a request that omits `authorization_details` after a consent that had them, so send the same authorization parameters on every sign-in. + +Two request parameters override this. `prompt=consent` forces the screen even when a matching consent exists, and `prompt=none` forbids it, returning `error=consent_required` or `error=login_required` instead of showing UI. Use `prompt=none` to probe for existing access silently. + +# Revocation {% #revocation %} + +{% only_dark %} +![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/dark/account-applications.avif) +{% /only_dark %} +{% only_light %} +![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/account-applications.avif) +{% /only_light %} + +Every consent appears on the user's account applications page, which lists each authorized app, the scopes it holds, and the tokens issued under it. The user revokes a single token or the whole consent; revoking the consent invalidates every token your app holds for that user. + +Your app sees revocation as failure, not as a message: token refreshes and API calls start returning `401`. Handle it by sending the user through authorization again. To leave cleanly, delete on your side too: revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation) when a user disconnects your app. diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc new file mode 100644 index 0000000000..86453b8101 --- /dev/null +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -0,0 +1,953 @@ +--- +layout: article +title: Start with Sign in with Appwrite +description: Register an app and run the full Sign in with Appwrite flow, from consent screen to your first authorized API call. +back: /docs/partners/apps +--- + +This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: a user clicks its sign-in button, approves access on the Appwrite consent screen, and Horizon reads their projects with the tokens it receives. By the end, you will have run the same journey with your own app. + +You need a server that can receive a redirect and keep a client secret. The examples use `http://localhost:7700/oauth/callback` as the redirect URI; replace it with your own. + +# Register your app {% #register %} + +{% only_dark %} +![Marketplace tab of an organization with the Add app action](/images/docs/partners/apps/dark/registration-marketplace.avif) +{% /only_dark %} +{% only_light %} +![Marketplace tab of an organization with the Add app action](/images/docs/partners/apps/registration-marketplace.avif) +{% /only_light %} + +Before Appwrite can show your app to anyone, it needs to know the app exists. In the Console, open your organization's **Marketplace** tab and click **Add app**. Give it a name, a slug, a category, and a short description; the slug becomes your client ID, so Horizon signs in as `horizon`. + +{% only_dark %} +![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/dark/registration-oauth-client.avif) +{% /only_dark %} +{% only_light %} +![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) +{% /only_light %} + +The new app opens on its settings pages. On **OAuth client**, keep the type **Confidential**, since your server will hold a secret, and add your redirect URI to the list. The authorization endpoint refuses to send users anywhere else, which is what makes the callback trustworthy. + +{% only_dark %} +![OAuth secrets page with active secrets](/images/docs/partners/apps/dark/registration-secrets.avif) +{% /only_dark %} +{% only_light %} +![OAuth secrets page with active secrets](/images/docs/partners/apps/registration-secrets.avif) +{% /only_light %} + +Last, your app needs a way to prove it is really Horizon when it exchanges codes for tokens. On **OAuth secrets**, select **Create secret** and copy the value; it is shown once. Store the client ID and the secret in your server's environment. + +The same registration works from code with the `apps` service, which is how you would script it in CI or offer it inside your own product: + +{% multicode %} +```server-nodejs +import { Client, Apps, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +}); + +const secret = await apps.createSecret({ appId: app.$id }); +``` + +```server-deno +import { Client, Apps, ID } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +}); + +const secret = await apps.createSecret({ appId: app.$id }); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +app = apps.create( + app_id = ID.unique(), + name = 'Horizon', + redirect_uris = ['http://localhost:7700/oauth/callback'], + type = 'confidential' +) + +secret = apps.create_secret(app_id = app.id) +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; +use Appwrite\ID; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$app = $apps->create( + appId: ID::unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +); + +$secret = $apps->createSecret(appId: $app['$id']); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +app = apps.create( + app_id: ID.unique(), + name: 'Horizon', + redirect_uris: ['http://localhost:7700/oauth/callback'], + type: 'confidential' +) + +secret = apps.create_secret(app_id: app.id) +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['http://localhost:7700/oauth/callback'], + type: 'confidential', +); + +AppSecretPlaintext secret = await apps.createSecret(appId: app.$id); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Horizon", + redirectUris = listOf("http://localhost:7700/oauth/callback"), + type = "confidential" +) + +val secret = apps.createSecret(appId = app.id) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Horizon", // name + List.of("http://localhost:7700/oauth/callback"), // redirectUris + null, // description + null, // clientUri + null, // logoUri + null, // privacyPolicyUrl + null, // termsUrl + null, // contacts + null, // tagline + null, // tags + null, // images + null, // supportUrl + null, // dataDeletionUrl + null, // postLogoutRedirectUris + null, // enabled + "confidential", // type + null, // deviceFlow + null, // teamId + new CoroutineCallback<>((app, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(app); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Horizon", + redirectUris: ["http://localhost:7700/oauth/callback"], + type: "confidential" +) + +let secret = try await apps.createSecret(appId: app.id) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +App app = await apps.Create( + appId: ID.Unique(), + name: "Horizon", + redirectUris: new List<string> { "http://localhost:7700/oauth/callback" }, + type: "confidential" +); + +AppSecretPlaintext secret = await apps.CreateSecret(appId: app.Id); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + app, err := service.Create( + id.Unique(), + "Horizon", + []string{"http://localhost:7700/oauth/callback"}, + apps.WithCreateType("confidential"), + ) + if err != nil { + panic(err) + } + + secret, err := service.CreateSecret(app.Id) + if err != nil { + panic(err) + } + + fmt.Println(secret) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let app = apps.create( + &ID::unique(), + "Horizon", + vec!["http://localhost:7700/oauth/callback"], + None, None, None, None, None, None, None, None, None, None, None, None, None, + Some("confidential"), + None, None, + ).await?; + + let secret = apps.create_secret(&app.id).await?; + println!("{}", secret.secret); // Shown only once + + Ok(()) +} +``` +{% /multicode %} + +[Registration](/docs/partners/apps/registration) covers both paths in detail. + +# Redirect the user {% #redirect %} + +With credentials in your environment, Horizon can offer its sign-in button. The button sends the user to the authorization endpoint, and the query string carries everything your app asks for: identity scopes, one project scope, and an `authorization_details` parameter that lets the user pick which projects the grant applies to. + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=http://localhost:7700/oauth/callback + &response_type=code + &scope=openid profile email project:databases.read + &state=<RANDOM_STATE> + &authorization_details=[{"type":"project","identifiers":["*"]}] +``` + +URL-encode the values. Generate a fresh random `state` per request and verify it on the way back; it is your protection against forged callbacks. The wildcard identifier asks for any project, which the consent screen turns into a picker the user controls. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). + +# User grants access {% #consent %} + +{% only_dark %} +![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/dark/quick-start-consent.avif) +{% /only_dark %} +{% only_light %} +![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/quick-start-consent.avif) +{% /only_light %} + +This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: + +```text +http://localhost:7700/oauth/callback?code=<CODE>&state=<RANDOM_STATE>&iss=https://cloud.appwrite.io/v1/oauth2/console +``` + +Verify that `state` matches what you sent, then use the code within five minutes. It is single-use. + +# Exchange the code {% #exchange %} + +From your server, exchange the code for tokens. Authenticate with your client credentials over HTTP basic auth. + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=authorization_code" \ + -d "code=<CODE>" \ + -d "redirect_uri=http://localhost:7700/oauth/callback" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +grant_type: authorization_code +code: <CODE> +redirect_uri: http://localhost:7700/oauth/callback +``` +{% /multicode %} + +The response carries the three tokens and echoes what the user actually granted: + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "id_token": "eyJhbGciOiJSUzI1NiJ9..." +} +``` + +Compare `scope` and `authorization_details` against what you requested; the user may have granted less. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. + +# List the user's projects {% #list-projects %} + +The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Pass the access token as a bearer token with any Appwrite Server SDK. + +{% multicode %} +```server-nodejs +import { Client, Oauth2 } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token + +const oauth2 = new Oauth2(client); + +const projects = await oauth2.listProjects(); +``` + +```server-deno +import { Client, Oauth2 } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token + +const oauth2 = new Oauth2(client); + +const projects = await oauth2.listProjects(); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.oauth2 import Oauth2 + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_bearer('Bearer <ACCESS_TOKEN>') # The user's access token + +oauth2 = Oauth2(client) + +projects = oauth2.list_projects() +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Oauth2; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token + +$oauth2 = new Oauth2($client); + +$projects = $oauth2->listProjects(); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_bearer('Bearer <ACCESS_TOKEN>') # The user's access token + +oauth2 = Oauth2.new(client) + +projects = oauth2.list_projects +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token + +Oauth2 oauth2 = Oauth2(client); + +Oauth2ProjectList projects = await oauth2.listProjects(); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Oauth2 + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer <ACCESS_TOKEN>") // The user's access token + +val oauth2 = Oauth2(client) + +val projects = oauth2.listProjects() +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Oauth2; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer <ACCESS_TOKEN>"); // The user's access token + +Oauth2 oauth2 = new Oauth2(client); + +oauth2.listProjects( + null, // limit (optional) + null, // offset (optional) + null, // search (optional) + new CoroutineCallback<>((projects, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(projects); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setBearer("Bearer <ACCESS_TOKEN>") // The user's access token + +let oauth2 = Oauth2(client) + +let projects = try await oauth2.listProjects() +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetBearer("Bearer <ACCESS_TOKEN>"); // The user's access token + +Oauth2 oauth2 = new Oauth2(client); + +Oauth2ProjectList projects = await oauth2.ListProjects(); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/oauth2" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithBearer("Bearer <ACCESS_TOKEN>"), // The user's access token + ) + + service := oauth2.New(c) + + projects, err := service.ListProjects() + if err != nil { + panic(err) + } + + fmt.Println(projects) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Oauth2; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_bearer("Bearer <ACCESS_TOKEN>"); // The user's access token + + let oauth2 = Oauth2::new(&client); + + let projects = oauth2.list_projects(None, None, None).await?; + println!("{:?}", projects.projects); + + Ok(()) +} +``` +{% /multicode %} + +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. + +# Call a project API {% #call-project-api %} + +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is the read side of Databases. + +{% multicode %} +```server-nodejs +import { Client, Databases } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('<PROJECT_ENDPOINT>') // From the project listing + .setProject('<PROJECT_ID>') + .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token + +const databases = new Databases(client); + +const result = await databases.list(); +``` + +```server-deno +import { Client, Databases } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('<PROJECT_ENDPOINT>') // From the project listing + .setProject('<PROJECT_ID>') + .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token + +const databases = new Databases(client); + +const result = await databases.list(); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.databases import Databases + +client = Client() +client.set_endpoint('<PROJECT_ENDPOINT>') # From the project listing +client.set_project('<PROJECT_ID>') +client.set_bearer('Bearer <ACCESS_TOKEN>') # The same access token + +databases = Databases(client) + +result = databases.list() +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Databases; + +$client = (new Client()) + ->setEndpoint('<PROJECT_ENDPOINT>') // From the project listing + ->setProject('<PROJECT_ID>') + ->setBearer('Bearer <ACCESS_TOKEN>'); // The same access token + +$databases = new Databases($client); + +$result = $databases->list(); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('<PROJECT_ENDPOINT>') # From the project listing + .set_project('<PROJECT_ID>') + .set_bearer('Bearer <ACCESS_TOKEN>') # The same access token + +databases = Databases.new(client) + +result = databases.list +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('<PROJECT_ENDPOINT>') // From the project listing + .setProject('<PROJECT_ID>') + .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token + +Databases databases = Databases(client); + +DatabaseList result = await databases.list(); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Databases + +val client = Client() + .setEndpoint("<PROJECT_ENDPOINT>") // From the project listing + .setProject("<PROJECT_ID>") + .setBearer("Bearer <ACCESS_TOKEN>") // The same access token + +val databases = Databases(client) + +val result = databases.list() +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Databases; + +Client client = new Client() + .setEndpoint("<PROJECT_ENDPOINT>") // From the project listing + .setProject("<PROJECT_ID>") + .setBearer("Bearer <ACCESS_TOKEN>"); // The same access token + +Databases databases = new Databases(client); + +databases.list( + null, // queries (optional) + null, // search (optional) + null, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("<PROJECT_ENDPOINT>") // From the project listing + .setProject("<PROJECT_ID>") + .setBearer("Bearer <ACCESS_TOKEN>") // The same access token + +let databases = Databases(client) + +let result = try await databases.list() +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("<PROJECT_ENDPOINT>") // From the project listing + .SetProject("<PROJECT_ID>") + .SetBearer("Bearer <ACCESS_TOKEN>"); // The same access token + +Databases databases = new Databases(client); + +DatabaseList result = await databases.List(); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/databases" +) + +func main() { + c := client.New( + client.WithEndpoint("<PROJECT_ENDPOINT>"), // From the project listing + client.WithProject("<PROJECT_ID>"), + client.WithBearer("Bearer <ACCESS_TOKEN>"), // The same access token + ) + + service := databases.New(c) + + result, err := service.List() + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Databases; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("<PROJECT_ENDPOINT>"); // From the project listing + client.set_project("<PROJECT_ID>"); + client.set_bearer("Bearer <ACCESS_TOKEN>"); // The same access token + + let databases = Databases::new(&client); + + let result = databases.list(None, None, None).await?; + println!("{:?}", result.total); + + Ok(()) +} +``` +{% /multicode %} + +A call outside the granted scopes or projects fails with a `401` error of type `general_unauthorized_scope`. The token works on every region, so your app never maps regions itself; use each project's `endpoint` value from the listing. + +# Sign in through Appwrite Auth {% #appwrite-provider %} + +{% only_dark %} +![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/dark/quick-start-provider-setup.avif) +{% /only_dark %} +{% only_light %} +![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/quick-start-provider-setup.avif) +{% /only_light %} + +If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth provider. In your project, open **Auth** and then **Social providers**, select **Appwrite**, and use **Quick setup** to create or pick an organization app; Appwrite registers the callback URI and fills the client ID and secret for you. Then sign users in with the same call you would use for GitHub or Google. + +{% multicode %} +```client-web +import { Client, Account, OAuthProvider } from 'appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>'); // Your project, not the user's + +const account = new Account(client); + +account.createOAuth2Session({ + provider: OAuthProvider.Appwrite, + success: 'https://example.com/success', + failure: 'https://example.com/failure' +}); +``` + +```client-flutter +import 'package:appwrite/appwrite.dart'; +import 'package:appwrite/enums.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>'); // Your project, not the user's + +Account account = Account(client); + +await account.createOAuth2Session( + provider: OAuthProvider.appwrite, +); +``` + +```client-apple +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") // Your project, not the user's + +let account = Account(client) + +try await account.createOAuth2Session( + provider: .appwrite +) +``` + +```client-android-kotlin +import io.appwrite.Client +import io.appwrite.enums.OAuthProvider +import io.appwrite.services.Account + +val client = Client(context) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") // Your project, not the user's + +val account = Account(client) + +account.createOAuth2Session( + activity = activity, + provider = OAuthProvider.APPWRITE, +) +``` + +```client-react-native +import { Client, Account, OAuthProvider } from 'react-native-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>'); // Your project, not the user's + +const account = new Account(client); + +account.createOAuth2Token({ + provider: OAuthProvider.Appwrite, + success: '<YOUR_DEEP_LINK>', + failure: '<YOUR_DEEP_LINK>' +}); +``` +{% /multicode %} + +The provider requests the identity scopes, signs the user into your project, and stores the issued tokens on the user's [identity](/docs/products/auth/identities). Use this when you want "Sign in with Appwrite" as a login method; use the manual flow above when your app needs scoped access to the user's projects. + +# Next steps {% #next-steps %} + +{% cards %} +{% cards_item href="/docs/partners/apps/registration" title="Registration" %} +Give your app a logo and consent screen details, and manage secrets. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} +Request exactly the access your app needs. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/dashboards" title="Dashboards" %} +Build a read-only dashboard over granted projects. +{% /cards_item %} +{% cards_item href="/docs/partners/apps/tokens" title="Tokens" %} +Refresh tokens before they expire and handle revocation. +{% /cards_item %} +{% /cards %} diff --git a/src/routes/docs/partners/apps/registration/+page.markdoc b/src/routes/docs/partners/apps/registration/+page.markdoc new file mode 100644 index 0000000000..6959be06a4 --- /dev/null +++ b/src/routes/docs/partners/apps/registration/+page.markdoc @@ -0,0 +1,666 @@ +--- +layout: article +title: Registration +description: Register your app for Sign in with Appwrite through the Console or the Apps API. +back: /docs/partners/apps +--- + +Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Appwrite gives you two ways to register: the Console for people, the Apps API for code. + +| Method | Best for | Credentials | +| --- | --- | --- | +| [Console](#console) | Products with a marketplace listing: a logo, legal pages, managed secrets | Client ID and secrets you manage | +| [Apps API](#apps-api) | The same apps, managed from code | Client ID and secrets you manage | + +# Client types {% #client-types %} + +Every client is `confidential` or `public`, and the choice decides how it authenticates. + +- **Confidential** clients have a backend that keeps a secret. They authenticate token requests with the client secret, and their tokens live longer: 8 hours for access tokens and 365 days for refresh tokens by default. +- **Public** clients run where a secret cannot survive: single-page apps, native apps, CLIs. They carry no secret and must use [PKCE](https://datatracker.ietf.org/doc/html/rfc7636) with `S256` on every authorization. Their tokens default to 1 hour and 30 days. + +Choose confidential whenever a server takes part in the flow. Public exists for the rest. + +# Console {% #console %} + +{% only_dark %} +![Marketplace tab of an organization showing the app catalog and the Add app action](/images/docs/partners/apps/dark/registration-marketplace.avif) +{% /only_dark %} +{% only_light %} +![Marketplace tab of an organization showing the app catalog and the Add app action](/images/docs/partners/apps/registration-marketplace.avif) +{% /only_light %} + +Register through the Console when your app is a product: the same flow that creates the client also builds its marketplace listing. In your organization, open the **Marketplace** tab and click **Add app**. Give the app a name, a slug, a category, and a description. The slug becomes the app's client ID, and the app starts as a draft that only your organization sees. + +The app's pages hold everything else, split across **General**, **OAuth client**, **OAuth secrets**, **Legal**, **Support**, and **Publish**. + +## OAuth client {% #console-oauth-client %} + +{% only_dark %} +![OAuth client settings with client type, device flow, and redirect URIs](/images/docs/partners/apps/dark/registration-oauth-client.avif) +{% /only_dark %} +{% only_light %} +![OAuth client settings with client type, device flow, and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) +{% /only_light %} + +The **OAuth client** page sets the protocol details: the [client type](#client-types), the device flow toggle for TVs and CLIs, and the redirect URIs. Add every URI your app returns to; the authorization endpoint rejects anything not on the list. + +## OAuth secrets {% #console-oauth-secrets %} + +{% only_dark %} +![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/dark/registration-secrets.avif) +{% /only_dark %} +{% only_light %} +![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/registration-secrets.avif) +{% /only_light %} + +The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. See [Secrets](#secrets) for the rotation workflow. + +## Publish {% #console-publish %} + +**Legal** and **Support** hold the privacy policy, terms of service, data deletion, and contact details that the consent screen links. When the listing is complete, the **Publish** page makes the app visible in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. + +# Apps API {% #apps-api %} + +Everything the Console does, the `apps` service does from code. Authenticate with your Appwrite account's session; the apps you create belong to you, or to a team you pass in `teamId`. + +{% multicode %} +```server-nodejs +import { Client, Apps, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +}); +``` + +```server-deno +import { Client, Apps, ID } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const app = await apps.create({ + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +}); +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps +from appwrite.id import ID + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +app = apps.create( + app_id = ID.unique(), + name = 'Horizon', + redirect_uris = ['https://horizon.example.com/oauth/callback'], + description = 'Deployment dashboard for your Appwrite projects.', + tagline = 'Ship from one place', + logo_uri = 'https://horizon.example.com/logo.png', + client_uri = 'https://horizon.example.com', + privacy_policy_url = 'https://horizon.example.com/privacy', + terms_url = 'https://horizon.example.com/terms', + type = 'confidential' +) +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; +use Appwrite\ID; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$app = $apps->create( + appId: ID::unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential' +); +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +app = apps.create( + app_id: ID.unique(), + name: 'Horizon', + redirect_uris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logo_uri: 'https://horizon.example.com/logo.png', + client_uri: 'https://horizon.example.com', + privacy_policy_url: 'https://horizon.example.com/privacy', + terms_url: 'https://horizon.example.com/terms', + type: 'confidential' +) +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +App app = await apps.create( + appId: ID.unique(), + name: 'Horizon', + redirectUris: ['https://horizon.example.com/oauth/callback'], + description: 'Deployment dashboard for your Appwrite projects.', + tagline: 'Ship from one place', + logoUri: 'https://horizon.example.com/logo.png', + clientUri: 'https://horizon.example.com', + privacyPolicyUrl: 'https://horizon.example.com/privacy', + termsUrl: 'https://horizon.example.com/terms', + type: 'confidential', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val app = apps.create( + appId = ID.unique(), + name = "Horizon", + redirectUris = listOf("https://horizon.example.com/oauth/callback"), + description = "Deployment dashboard for your Appwrite projects.", + tagline = "Ship from one place", + logoUri = "https://horizon.example.com/logo.png", + clientUri = "https://horizon.example.com", + privacyPolicyUrl = "https://horizon.example.com/privacy", + termsUrl = "https://horizon.example.com/terms", + type = "confidential" +) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.create( + ID.unique(), // appId + "Horizon", // name + List.of("https://horizon.example.com/oauth/callback"), // redirectUris + "Deployment dashboard for your Appwrite projects.", // description + "https://horizon.example.com", // clientUri + "https://horizon.example.com/logo.png", // logoUri + "https://horizon.example.com/privacy", // privacyPolicyUrl + "https://horizon.example.com/terms", // termsUrl + null, // contacts + "Ship from one place", // tagline + null, // tags + null, // images + null, // supportUrl + null, // dataDeletionUrl + null, // postLogoutRedirectUris + null, // enabled + "confidential", // type + null, // deviceFlow + null, // teamId + new CoroutineCallback<>((app, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(app); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let app = try await apps.create( + appId: ID.unique(), + name: "Horizon", + redirectUris: ["https://horizon.example.com/oauth/callback"], + description: "Deployment dashboard for your Appwrite projects.", + tagline: "Ship from one place", + logoUri: "https://horizon.example.com/logo.png", + clientUri: "https://horizon.example.com", + privacyPolicyUrl: "https://horizon.example.com/privacy", + termsUrl: "https://horizon.example.com/terms", + type: "confidential" +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +App app = await apps.Create( + appId: ID.Unique(), + name: "Horizon", + redirectUris: new List<string> { "https://horizon.example.com/oauth/callback" }, + description: "Deployment dashboard for your Appwrite projects.", + tagline: "Ship from one place", + logoUri: "https://horizon.example.com/logo.png", + clientUri: "https://horizon.example.com", + privacyPolicyUrl: "https://horizon.example.com/privacy", + termsUrl: "https://horizon.example.com/terms", + type: "confidential" +); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + app, err := service.Create( + id.Unique(), + "Horizon", + []string{"https://horizon.example.com/oauth/callback"}, + apps.WithCreateDescription("Deployment dashboard for your Appwrite projects."), + apps.WithCreateTagline("Ship from one place"), + apps.WithCreateLogoUri("https://horizon.example.com/logo.png"), + apps.WithCreateClientUri("https://horizon.example.com"), + apps.WithCreatePrivacyPolicyUrl("https://horizon.example.com/privacy"), + apps.WithCreateTermsUrl("https://horizon.example.com/terms"), + apps.WithCreateType("confidential"), + ) + if err != nil { + panic(err) + } + + fmt.Println(app) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let app = apps.create( + &ID::unique(), + "Horizon", + vec!["https://horizon.example.com/oauth/callback"], + Some("Deployment dashboard for your Appwrite projects."), + Some("https://horizon.example.com"), + Some("https://horizon.example.com/logo.png"), + Some("https://horizon.example.com/privacy"), + Some("https://horizon.example.com/terms"), + None, + Some("Ship from one place"), + None, + None, + None, + None, + None, + None, + Some("confidential"), + None, + None, + ).await?; + + println!("{}", app.id); + + Ok(()) +} +``` +{% /multicode %} + +The consent screen shows the name, logo, and tagline on the authorization card, and links the privacy policy and terms of service in its footer. `description`, `tags`, `images`, `supportUrl`, `dataDeletionUrl`, and `contacts` complete the listing where apps are browsed. + +Redirect URIs match exactly, with one exception: public clients may register loopback URIs (`http://127.0.0.1`, `http://localhost`), which match on any port. Redirect URIs must use HTTPS, a loopback address, or a private-use scheme such as `com.example.app:/callback` for native apps. + +# Secrets {% #secrets %} + +Confidential clients authenticate with a secret. Create one after registering: + +{% multicode %} +```server-nodejs +import { Client, Apps } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const secret = await apps.createSecret({ + appId: '<APP_ID>' +}); + +console.log(secret.secret); // Shown only once +``` + +```server-deno +import { Client, Apps } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +const apps = new Apps(client); + +const secret = await apps.createSecret({ + appId: '<APP_ID>' +}); + +console.log(secret.secret); // Shown only once +``` + +```server-python +from appwrite.client import Client +from appwrite.services.apps import Apps + +client = Client() +client.set_endpoint('https://cloud.appwrite.io/v1') +client.set_project('console') +client.set_session('') # Your Appwrite account session + +apps = Apps(client) + +secret = apps.create_secret( + app_id = '<APP_ID>' +) + +print(secret.secret) # Shown only once +``` + +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Apps; + +$client = (new Client()) + ->setEndpoint('https://cloud.appwrite.io/v1') + ->setProject('console') + ->setSession(''); // Your Appwrite account session + +$apps = new Apps($client); + +$secret = $apps->createSecret( + appId: '<APP_ID>' +); + +echo $secret['secret']; // Shown only once +``` + +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://cloud.appwrite.io/v1') + .set_project('console') + .set_session('') # Your Appwrite account session + +apps = Apps.new(client) + +secret = apps.create_secret( + app_id: '<APP_ID>' +) + +puts secret.secret # Shown only once +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setSession(''); // Your Appwrite account session + +Apps apps = Apps(client); + +AppSecretPlaintext secret = await apps.createSecret( + appId: '<APP_ID>', +); +``` + +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Apps + +val client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +val apps = Apps(client) + +val secret = apps.createSecret( + appId = "<APP_ID>" +) +``` + +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Apps; + +Client client = new Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +apps.createSecret( + "<APP_ID>", // appId + new CoroutineCallback<>((secret, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(secret); + }) +); +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://cloud.appwrite.io/v1") + .setProject("console") + .setSession("") // Your Appwrite account session + +let apps = Apps(client) + +let secret = try await apps.createSecret( + appId: "<APP_ID>" +) +``` + +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://cloud.appwrite.io/v1") + .SetProject("console") + .SetSession(""); // Your Appwrite account session + +Apps apps = new Apps(client); + +AppSecretPlaintext secret = await apps.CreateSecret( + appId: "<APP_ID>" +); +``` + +```server-go +package main + +import ( + "fmt" + + "github.com/appwrite/sdk-for-go/apps" + "github.com/appwrite/sdk-for-go/client" +) + +func main() { + c := client.New( + client.WithEndpoint("https://cloud.appwrite.io/v1"), + client.WithProject("console"), + client.WithSession(""), // Your Appwrite account session + ) + + service := apps.New(c) + + secret, err := service.CreateSecret("<APP_ID>") + if err != nil { + panic(err) + } + + fmt.Println(secret) +} +``` + +```server-rust +use appwrite::Client; +use appwrite::services::Apps; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://cloud.appwrite.io/v1"); + client.set_project("console"); + client.set_session(""); // Your Appwrite account session + + let apps = Apps::new(&client); + + let secret = apps.create_secret("<APP_ID>").await?; + println!("{}", secret.secret); // Shown only once + + Ok(()) +} +``` +{% /multicode %} + +An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. Each stored secret keeps a `hint` (its last characters), who created it, and when it was last used, which tells you when the old secret is safe to delete. + +Two more operations matter over an app's life. `updateTeam` moves ownership to a team, so registration does not depend on one person's account. `deleteTokens` is the kill switch: it invalidates every token the app has been issued, for every user. + +# Labels {% #labels %} + +Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so they cannot be self-granted. Contact your partner manager to have your app labeled. diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc new file mode 100644 index 0000000000..10e027603c --- /dev/null +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -0,0 +1,83 @@ +--- +layout: article +title: Scopes +description: The Sign in with Appwrite scope catalog, and how grants target the projects and organizations a user chooses. +back: /docs/partners/apps +--- + +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. + +Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. + +# Identity scopes {% #identity-scopes %} + +The OpenID Connect scopes cover who the user is. They are the same four scopes every OIDC provider uses. + +| Scope | Grants | +| --- | --- | +| `openid` | The user's subject identifier. Required to receive an ID token. | +| `profile` | Profile claims, such as the user's name. | +| `email` | The user's email address and its verification state. | +| `phone` | The user's phone number and its verification state. | + +An app that only signs users in requests `openid profile email` and stops there. + +# Project scopes {% #project-scopes %} + +Project scopes carry the `project:` prefix and map to the permissions [API keys](/docs/partners/project/api-keys) use, one `.read` and one `.write` scope per resource. The catalog covers every Appwrite product: + +| Product | Scopes | +| --- | --- | +| Databases | `project:databases.read`, `project:databases.write`, `project:tables.read`, `project:tables.write`, `project:columns.read`, `project:columns.write`, `project:rows.read`, `project:rows.write`, `project:indexes.read`, `project:indexes.write` | +| Auth | `project:users.read`, `project:users.write`, `project:sessions.read`, `project:sessions.write`, `project:teams.read`, `project:teams.write` | +| Storage | `project:buckets.read`, `project:buckets.write`, `project:files.read`, `project:files.write`, `project:tokens.read`, `project:tokens.write` | +| Functions | `project:functions.read`, `project:functions.write`, `project:executions.read`, `project:executions.write` | +| Sites | `project:sites.read`, `project:sites.write`, `project:log.read`, `project:log.write` | +| Messaging | `project:providers.read`, `project:providers.write`, `project:topics.read`, `project:topics.write`, `project:subscribers.read`, `project:subscribers.write`, `project:targets.read`, `project:targets.write`, `project:messages.read`, `project:messages.write` | +| Project configuration | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | +| Networking | `project:rules.read`, `project:rules.write`, `project:domains.read`, `project:domains.write`, `project:wafRules.read`, `project:wafRules.write` | +| Operations | `project:usage.read`, `project:health.read`, `project:migrations.read`, `project:migrations.write`, `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | + +`project:all` grants the full project catalog at once. Reserve it for tools that genuinely administer whole projects; the consent screen presents it as full project access. + +The full list is published in the discovery document under `scopes_supported`: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration +``` + +# Organization scopes {% #organization-scopes %} + +Organization scopes carry the `organization:` prefix and cover what a user's organization owns: its profile, members, projects, domains, and keys. + +| Area | Scopes | +| --- | --- | +| Organization | `organization:organization.read`, `organization:organization.write` | +| Members | `organization:organization.memberships.read`, `organization:organization.memberships.write` | +| Projects | `organization:projects.read`, `organization:projects.write` | +| Domains | `organization:domains.read`, `organization:domains.write` | +| Keys | `organization:organization.keys.read`, `organization:organization.keys.write` | +| Dev keys | `organization:devKeys.read`, `organization:devKeys.write` | + +`organization:all` grants the full set. `organization:projects.write` is the scope that creates projects, which lets an app provision on a user's behalf. + +# Targeting projects and organizations {% #targeting %} + +Scopes alone never grant access to a resource. The authorization request also carries `authorization_details` ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)), a JSON array that names the projects and organizations the grant covers: + +```json +[ + { "type": "project", "identifiers": ["*"] }, + { "type": "organization", "identifiers": ["<ORGANIZATION_ID>"] } +] +``` + +Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. The wildcard `*` asks for all of them, which the consent screen turns into a picker where the user chooses. Your app receives the final selection in the token response's `authorization_details` field and can read the granted projects at any time by listing them, as shown in the [quick start](/docs/partners/apps/quick-start#list-projects). + +A granted scope applies only inside the granted targets. A token with `project:databases.read` reads databases in the projects the user selected and fails everywhere else with a `401` error of type `general_unauthorized_scope`. There is one hard exclusion: an authorization detail can never name the `console` project itself as a target. + +# When requests fail {% #failures %} + +Requesting a scope outside the catalog fails before consent: the authorization endpoint redirects back with `error=invalid_scope`. Malformed or unsupported `authorization_details` fail the same way with `error=invalid_authorization_details`. Validate both against the discovery document, which also publishes `authorization_details_types_supported`. + +The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc new file mode 100644 index 0000000000..c6b7bd90a0 --- /dev/null +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -0,0 +1,107 @@ +--- +layout: article +title: Tokens +description: Use, refresh, and revoke the tokens Appwrite issues to your app through Sign in with Appwrite. +back: /docs/partners/apps +--- + +A successful token exchange returns three tokens with different jobs. The access token calls APIs, the refresh token replaces expired access tokens, and the ID token proves who signed in. + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], + "id_token": "eyJhbGciOiJSUzI1NiJ9..." +} +``` + +# Access tokens {% #access-tokens %} + +The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: `sub` is the user, `client_id` your app, `scope` the granted scopes, and `authorization_details` the granted targets, along with the standard `iss`, `aud`, `exp`, `iat`, `jti`, and `auth_time`. + +Pass it as a bearer token. The Server SDKs send it through `setBearer`, with the `Bearer ` scheme included in the value: + +```server-nodejs +import { Client, Oauth2 } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://cloud.appwrite.io/v1') + .setProject('console') + .setBearer('Bearer <ACCESS_TOKEN>'); +``` + +One token works everywhere the grant reaches. Appwrite validates it across regions, so your app calls each granted project at its own `endpoint` with the same token, and the console endpoints for [listing projects and organizations](/docs/partners/apps/quick-start#list-projects) with that token too. + +Default lifetimes depend on the client type: 8 hours for confidential clients, 1 hour for public ones. + +# Refresh tokens {% #refresh-tokens %} + +When the access token expires, exchange the refresh token for a new pair: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=refresh_token" \ + -d "refresh_token=<REFRESH_TOKEN>" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +grant_type: refresh_token +refresh_token: <REFRESH_TOKEN> +``` +{% /multicode %} + +Refresh tokens rotate: every exchange returns a new refresh token and invalidates the old one. Persist the new token atomically before you discard the old response. + +Rotation is also a tripwire. If an old refresh token is presented again, Appwrite treats it as theft and deletes the whole token family: the current access token and the newest refresh token stop working, and the user must authorize your app again. A refresh loop that retries a stale token after a crash triggers this, which is why atomic persistence matters. Refresh tokens default to 365 days for confidential clients and 30 days for public ones, treat them like passwords, and store them encrypted. + +# ID tokens {% #id-tokens %} + +The ID token is an OpenID Connect JWT issued when the grant includes `openid`. It carries identity claims scoped to what was granted: `name` with `profile`, `email` and `email_verified` with `email`, `phone_number` and `phone_number_verified` with `phone`. + +Use it to establish who signed in, never to call APIs. Its audience is your `client_id`, not Appwrite's API, and resource servers reject it because its type is not `at+jwt`. For a live view of the same claims, call the userinfo endpoint with the access token. + +# Validating tokens {% #validation %} + +If your app runs its own API and receives Appwrite access tokens from clients, verify them against the published keys: + +```text +https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json +``` + +Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. When you need revocation awareness that offline validation cannot give, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials; it returns `"active": false` for anything expired, revoked, or rotated away. + +# Revocation {% #revocation %} + +Revoke tokens when a user disconnects your app: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/revoke \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=<REFRESH_TOKEN>" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/revoke +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +token: <REFRESH_TOKEN> +``` +{% /multicode %} + +Revoking either token of a pair invalidates both. The endpoint returns an empty `200` whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. + +Revocation also arrives from outside your app. Users revoke from their account applications page, and reuse detection tears tokens down on its own. Treat a `401` with a previously working token as the signal to re-authorize, not to retry. diff --git a/src/routes/docs/partners/project/+layout.svelte b/src/routes/docs/partners/project/+layout.svelte new file mode 100644 index 0000000000..ed26ec0f75 --- /dev/null +++ b/src/routes/docs/partners/project/+layout.svelte @@ -0,0 +1,96 @@ +<script lang="ts"> + import Docs from '$lib/layouts/Docs.svelte'; + import Sidebar, { type NavParent, type NavTree } from '$lib/layouts/Sidebar.svelte'; + + const parent: NavParent = { + href: '/docs', + label: 'Project' + }; + + const navigation: NavTree = [ + { + label: 'Getting started', + items: [ + { + label: 'Overview', + href: '/docs/partners/project' + } + ] + }, + { + label: 'Concepts', + items: [ + { + label: 'Auth methods', + href: '/docs/partners/project/auth-methods' + }, + { + label: 'OAuth providers', + href: '/docs/partners/project/oauth' + }, + { + label: 'API keys', + href: '/docs/partners/project/api-keys' + }, + { + label: 'Platforms', + href: '/docs/partners/project/platforms' + }, + { + label: 'Protocols', + href: '/docs/partners/project/protocols' + }, + { + label: 'Services', + href: '/docs/partners/project/services' + }, + { + label: 'Policies', + href: '/docs/partners/project/policies' + }, + { + label: 'Mock phones', + href: '/docs/partners/project/mock-phones' + }, + { + label: 'Environment variables', + href: '/docs/partners/project/environment-variables' + }, + { + label: 'SMTP', + href: '/docs/partners/project/smtp' + }, + { + label: 'Email templates', + href: '/docs/partners/project/email-templates' + }, + { + label: 'Labels', + href: '/docs/partners/project/labels' + } + ] + }, + { + label: 'Guides', + items: [ + { + label: 'Provisioning', + href: '/docs/partners/project/provisioning' + }, + { + label: 'Key rotation', + href: '/docs/partners/project/key-rotation' + }, + { + label: 'Branded emails', + href: '/docs/partners/project/branded-emails' + } + ] + } + ]; +</script> + +<Docs variant="two-side-navs"> + <Sidebar {navigation} {parent} /> + <slot /> +</Docs> diff --git a/src/routes/docs/partners/project/+page.markdoc b/src/routes/docs/partners/project/+page.markdoc new file mode 100644 index 0000000000..e5cf5ac2ed --- /dev/null +++ b/src/routes/docs/partners/project/+page.markdoc @@ -0,0 +1,463 @@ +--- +layout: article +title: Project +description: Configure your Appwrite project, including auth methods, platforms, protocols, services, and policies. +back: /docs +--- + +An Appwrite **Project** is the top-level container for all the resources your app uses, from users and databases to storage buckets and functions. The settings on a project control which authentication methods are available, which client platforms can connect, which protocols and services are exposed, and which policies apply to the resources inside it. + +# Built for platform teams {% #platform-teams %} + +The Console configures one project at a time by hand. The Project API does the same configuration programmatically, which is what teams need when they operate not one project but many: a platform that gives every customer their own project, an agency running client environments, or an enterprise standardizing dozens of internal apps. + +Driving configuration from code is what makes a fleet of projects manageable. Provision every new project to the same baseline, enforce one security posture across all of them, and send each customer branded emails from their own domain. The [guides](#guides) below walk through each of these end to end. + +# Concepts {% #concepts %} + +{% cards %} +{% cards_item href="/docs/partners/project/auth-methods" title="Auth methods" %} +Enable or disable authentication methods on your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/oauth" title="OAuth providers" %} +Configure OAuth2 sign-in providers like Google, GitHub, and Apple. +{% /cards_item %} +{% cards_item href="/docs/partners/project/api-keys" title="API keys" %} +Create and manage API keys used by Server SDKs. +{% /cards_item %} +{% cards_item href="/docs/partners/project/platforms" title="Platforms" %} +Register the apps and origins that are allowed to call your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/protocols" title="Protocols" %} +Toggle the API protocols clients can use to reach your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/services" title="Services" %} +Turn individual Appwrite services on or off for your project. +{% /cards_item %} +{% cards_item href="/docs/partners/project/policies" title="Policies" %} +Configure project-wide policies that apply across resources. +{% /cards_item %} +{% cards_item href="/docs/partners/project/mock-phones" title="Mock phones" %} +Register fictional phone numbers and OTPs to test phone authentication. +{% /cards_item %} +{% cards_item href="/docs/partners/project/environment-variables" title="Environment variables" %} +Share constants and secrets across your functions and sites. +{% /cards_item %} +{% cards_item href="/docs/partners/project/smtp" title="SMTP" %} +Send emails from your own custom SMTP server. +{% /cards_item %} +{% cards_item href="/docs/partners/project/email-templates" title="Email templates" %} +Customize the account management emails Appwrite sends to your users. +{% /cards_item %} +{% cards_item href="/docs/partners/project/labels" title="Labels" %} +Tag projects with customizable labels to organize and filter them. +{% /cards_item %} +{% /cards %} + +# Guides {% #guides %} + +{% cards %} +{% cards_item href="/docs/partners/project/provisioning" title="Provisioning" %} +Apply a standard baseline to a new customer's project from a script. +{% /cards_item %} +{% cards_item href="/docs/partners/project/key-rotation" title="Key rotation" %} +Issue, audit, rotate, and revoke scoped API keys programmatically. +{% /cards_item %} +{% cards_item href="/docs/partners/project/branded-emails" title="Branded emails" %} +Route a project's mail through custom SMTP and rebrand the templates. +{% /cards_item %} +{% /cards %} + +# Retrieve your project {% #get-project %} + +Fetch your project's current configuration in a single call, including its name, region, labels, and the settings managed on the pages above. Use a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for this call needs the `project.read` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.get(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.get(); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->get(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: ProjectModel = project.get() + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.get +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Project result = await project.Get(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Project result = await project.get(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.get() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.get(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.get() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.Get() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.get().await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +# Delete a project {% #delete-project %} + +{% info title="Permanent and irreversible" %} +Deleting a project permanently removes it along with every resource inside it, including users, databases, storage, functions, and sites. This action cannot be undone. The call targets the project tied to the API key and endpoint you initialize the SDK with, so make sure you are pointing at the project you intend to delete. +{% /info %} + +The `delete` method requires an API key with the `project.write` scope. It takes no parameters and acts on the project the request is scoped to. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.delete(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.delete(); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->delete(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result = project.delete() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.delete() +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +await project.Delete(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +await project.delete(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.delete() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.delete(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.delete() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.Delete() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + project.delete().await?; + + Ok(()) +} +``` +```bash +appwrite project delete +``` +{% /multicode %} diff --git a/src/routes/docs/partners/project/api-keys/+page.markdoc b/src/routes/docs/partners/project/api-keys/+page.markdoc new file mode 100644 index 0000000000..ecdeddc4d4 --- /dev/null +++ b/src/routes/docs/partners/project/api-keys/+page.markdoc @@ -0,0 +1,1628 @@ +--- +layout: article +title: API keys +description: Secure your application with Appwrite API Keys. Discover how to create and manage API keys to control access and enhance your application's security. +--- + +API keys are secrets used by Appwrite [Server SDKs](/docs/sdks#server) and the Appwrite CLI to prove their identity. +What can be accessed each API key is restricted by [scopes](#scopes) instead of permissions. + +{% info title="Best practice" %} +It is a best practice to grant only the scopes you need to meet your project's goals to an API key. +API keys should be treated as a secret. Never share the API key and keep API keys out of client applications. +{% /info %} + +# API keys vs Dev keys {% #api-keys-vs-dev-keys %} + +API keys and [Dev keys](/docs/advanced/security/dev-keys) are not the same and cannot be used interchangeably. + +API keys permit access to Appwrite services in production environments, with access controlled through scopes to ensure secure and controlled server-side operations. Dev keys, conversely, are specifically designed to help you avoid abuse limits and CORS errors in test and development environments. + +API keys are for server SDKs and the CLI in production environments, while Dev keys are for client SDKs in development environments. + +# Create API key {% #create-api-key %} + +{% only_dark %} +![Project settings screen](/images/docs/project/dark/create-api-key.avif) +{% /only_dark %} +{% only_light %} +![Project settings screen](/images/docs/project/create-api-key.avif) +{% /only_light %} + +To create a new API key, navigate to **Overview** > **Integration** > **API keys** and click **Create API key**. + +You can then use the API key to initialize the Appwrite client in your server-side apps. + +{% multicode %} +```server-nodejs +const sdk = require('node-appwrite'); + +const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); // Your API key +``` + +```server-python +from appwrite.client import Client + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<YOUR_PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') # Your API key +``` + +```server-php +use Appwrite\Client; + +$client = new Client(); +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<YOUR_PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); // Your API key +``` + +```server-go +package main + +import "github.com/appwrite/sdk-for-go/client" + +func main() { + c := client.NewClient() + c.SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + c.SetProject("<YOUR_PROJECT_ID>") + c.SetKey("<YOUR_API_KEY>") // Your API key +} +``` + +```server-ruby +require 'appwrite' + +client = Appwrite::Client.new +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<YOUR_PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') # Your API key +``` + +```server-deno +import { Client } from 'npm:node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); // Your API key +``` + +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<YOUR_PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); // Your API key +``` + +```server-kotlin +import io.appwrite.Client + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") // Your API key +``` + +```server-dotnet +using Appwrite; + +var client = new Client() + .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<YOUR_PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); // Your API key +``` + +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>") // Your API key +``` + +```server-java +import io.appwrite.Client; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<YOUR_PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); // Your API key +``` + +```server-rust +use appwrite::Client; + +let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<YOUR_PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); // Your API key +``` +{% /multicode %} + +When adding a new API Key, you can choose which [scopes](#scopes) to grant your application. +If you need to replace your API Key, create a new key, update your app credentials and, once ready, delete your old key. + +# Manage API keys with a Server SDK {% #manage-api-keys-with-a-server-sdk %} + +You can also manage API keys programmatically using a Server SDK. This requires an API key with the `keys.read` and `keys.write` [scopes](#scopes). + +{% info title="Sensitive scopes" %} +The `keys.read` and `keys.write` scopes are very sensitive. An API key with `keys.write` can create new keys with any scope, effectively granting full access to your project. Only assign these scopes to keys used in trusted, secure environments, and never expose them in client-side applications. +{% /info %} + +## List API keys {% #list-api-keys %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listKeys(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listKeys(); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->listKeys(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.list_keys() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.list_keys() +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.ListKeys(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.listKeys(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.listKeys() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.listKeys( + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.listKeys() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.ListKeys() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.list_keys( + None, // queries + None, // total + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Get an API key {% #get-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getKey({ + keyId: '<KEY_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getKey({ + keyId: '<KEY_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->getKey( + keyId: '<KEY_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.get_key( + key_id='<KEY_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.get_key( + key_id: '<KEY_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.GetKey( + keyId: "<KEY_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.getKey( + keyId: '<KEY_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.getKey( + keyId = "<KEY_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.getKey( + "<KEY_ID>", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.getKey( + keyId: "<KEY_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.GetKey( + "<KEY_ID>", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.get_key( + "<KEY_ID>", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Create an API key {% #create-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'My API Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ID, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'My API Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createKey( + keyId: ID::unique(), + name: 'My API Key', + scopes: ['databases.read', 'databases.write'], + expire: '2026-12-31T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_key( + key_id=ID.unique(), + name='My API Key', + scopes=[ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE], + expire='2026-12-31T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.create_key( + key_id: ID.unique(), + name: 'My API Key', + scopes: ['databases.read', 'databases.write'], + expire: '2026-12-31T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateKey( + keyId: ID.Unique(), + name: "My API Key", + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite}, + expire: "2026-12-31T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createKey( + keyId: ID.unique(), + name: 'My API Key', + scopes: [enums.ProjectKeyScopes.databasesRead, enums.ProjectKeyScopes.databasesWrite], + expire: '2026-12-31T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.createKey( + keyId = ID.unique(), + name = "My API Key", + scopes = listOf(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE), + expire = "2026-12-31T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createKey( + ID.unique(), // keyId + "My API Key", // name + List.of(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE), // scopes + "2026-12-31T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createKey( + keyId: ID.unique(), + name: "My API Key", + scopes: [ProjectKeyScopes.databasesRead, ProjectKeyScopes.databasesWrite], + expire: "2026-12-31T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateKey( + id.Unique(), + "My API Key", + []string{"databases.read", "databases.write"}, + project.WithCreateKeyExpire("2026-12-31T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_key( + ID::unique(), // key_id + "My API Key", // name + vec![ProjectKeyScopes::DatabasesRead, ProjectKeyScopes::DatabasesWrite], // scopes + Some("2026-12-31T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Create an ephemeral key {% #create-an-ephemeral-key %} + +Ephemeral keys are short-lived API keys that expire after a set duration, useful for temporary or single-session server access without managing a long-lived key. Pass the `scopes` to grant and a `duration` in seconds (maximum 3600). The response includes the generated secret and its expiration time. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-deno +import { Client, Project, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createEphemeralKey( + scopes: ['tables.read', 'tables.write'], + duration: 600 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_ephemeral_key( + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + duration=600 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.create_ephemeral_key( + scopes: ['tables.read', 'tables.write'], + duration: 600 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateEphemeralKey( + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + duration: 600 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createEphemeralKey( + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + duration: 600, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.createEphemeralKey( + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + duration = 600 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createEphemeralKey( + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + 600, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createEphemeralKey( + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + duration: 600 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateEphemeralKey( + []string{"tables.read", "tables.write"}, + 600, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_ephemeral_key( + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + 600, // duration + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Update an API key {% #update-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateKey({ + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateKey({ + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateKey( + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: ['databases.read', 'databases.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_key( + key_id='<KEY_ID>', + name='Updated Key', + scopes=[ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ], + expire='2027-06-30T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_key( + key_id: '<KEY_ID>', + name: 'Updated Key', + scopes: ['databases.read', 'databases.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateKey( + keyId: "<KEY_ID>", + name: "Updated Key", + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.DatabasesRead, ProjectKeyScopes.DatabasesWrite, ProjectKeyScopes.UsersRead}, + expire: "2027-06-30T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateKey( + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [enums.ProjectKeyScopes.databasesRead, enums.ProjectKeyScopes.databasesWrite, enums.ProjectKeyScopes.usersRead], + expire: '2027-06-30T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.updateKey( + keyId = "<KEY_ID>", + name = "Updated Key", + scopes = listOf(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ), + expire = "2027-06-30T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateKey( + "<KEY_ID>", // keyId + "Updated Key", // name + List.of(ProjectKeyScopes.DATABASES_READ, ProjectKeyScopes.DATABASES_WRITE, ProjectKeyScopes.USERS_READ), // scopes + "2027-06-30T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateKey( + keyId: "<KEY_ID>", + name: "Updated Key", + scopes: [ProjectKeyScopes.databasesRead, ProjectKeyScopes.databasesWrite, ProjectKeyScopes.usersRead], + expire: "2027-06-30T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateKey( + "<KEY_ID>", + "Updated Key", + []string{"databases.read", "databases.write", "users.read"}, + project.WithUpdateKeyExpire("2027-06-30T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_key( + "<KEY_ID>", // key_id + "Updated Key", // name + vec![ProjectKeyScopes::DatabasesRead, ProjectKeyScopes::DatabasesWrite, ProjectKeyScopes::UsersRead], // scopes + Some("2027-06-30T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +{% /multicode %} + +## Delete an API key {% #delete-an-api-key %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deleteKey({ + keyId: '<KEY_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deleteKey({ + keyId: '<KEY_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$project->deleteKey( + keyId: '<KEY_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +project.delete_key( + key_id='<KEY_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +project.delete_key( + key_id: '<KEY_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +await project.DeleteKey( + keyId: "<KEY_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +await project.deleteKey( + keyId: '<KEY_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +project.deleteKey( + keyId = "<KEY_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.deleteKey( + "<KEY_ID>", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +try await project.deleteKey( + keyId: "<KEY_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + _, err := project.DeleteKey( + "<KEY_ID>", + ) + + if err != nil { + panic(err) + } + + fmt.Println("API key deleted") +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + project.delete_key( + "<KEY_ID>", + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Scopes {% #scopes %} + +When adding a new API key, you choose which scopes to grant. Scopes are grouped by service, matching the categories shown in the Appwrite Console. + +{% accordion %} +{% accordion_item title="Auth" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `sessions.write` | Access to create, update, and delete user sessions | +| `users.read` | Access to read your project's users | +| `users.write` | Access to create, update, and delete your project's users | +| `teams.read` | Access to read your project's teams | +| `teams.write` | Access to create, update, and delete your project's teams | + +{% /accordion_item %} +{% accordion_item title="Databases" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `databases.read` | Access to read your project's databases | +| `databases.write` | Access to create, update, and delete your project's databases | +| `tables.read` | Access to read your project's database tables | +| `tables.write` | Access to create, update, and delete your project's database tables | +| `columns.read` | Access to read your project's database table columns | +| `columns.write` | Access to create, update, and delete your project's database table columns | +| `indexes.read` | Access to read your project's database table indexes | +| `indexes.write` | Access to create, update, and delete your project's database table indexes | +| `rows.read` | Access to read your project's database rows | +| `rows.write` | Access to create, update, and delete your project's database rows | + +{% /accordion_item %} +{% accordion_item title="Functions" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `functions.read` | Access to read your project's functions and code deployments | +| `functions.write` | Access to create, update, and delete your project's functions and code deployments| +| `execution.read` | Access to read your project's execution logs | +| `execution.write` | Access to execute your project's functions | + +{% /accordion_item %} +{% accordion_item title="Storage" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `files.read` | Access to read your project's storage files and preview images | +| `files.write` | Access to create, update, and delete your project's storage files | +| `buckets.read` | Access to read your project's storage buckets | +| `buckets.write` | Access to create, update, and delete your project's storage buckets | + +{% /accordion_item %} +{% accordion_item title="Messaging" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `providers.read` | Access to read your project's providers | +| `providers.write` | Access to create, update, and delete your project's providers | +| `messages.read` | Access to read your project's messages | +| `messages.write` | Access to create, update, and delete your project's messages | +| `topics.read` | Access to read your project's topics | +| `topics.write` | Access to create, update, and delete your project's topics | +| `subscribers.read` | Access to read your project's subscribers | +| `subscribers.write` | Access to create, update, and delete your project's subscribers | +| `targets.read` | Access to read your project's targets | +| `targets.write` | Access to create, update, and delete your project's targets | + +{% /accordion_item %} +{% accordion_item title="Sites" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `sites.read` | Access to read your project's sites and deployments | +| `sites.write` | Access to create, update, and delete your project's sites and deployments | +| `log.read` | Access to read your site's logs | +| `log.write` | Access to update and delete your site's logs | + +{% /accordion_item %} +{% accordion_item title="Other" %} + +| Name | Description | +|-----------------------|---------------------------------------------------------------------------------| +| `locale.read` | Access to your project's Locale service | +| `avatars.read` | Access to your project's Avatars service | +| `health.read` | Access to read your project's health status | +| `migrations.read` | Access to read your project's migrations | +| `migrations.write` | Access to create, update, and delete your project's migrations | +| `tokens.read` | Access to read your project's tokens | +| `tokens.write` | Access to create, update, and delete your project's tokens | +| `webhooks.read` | Access to read your project's webhooks | +| `webhooks.write` | Access to create, update, and delete your project's webhooks | +| `keys.read` | Access to read your project's API keys | +| `keys.write` | Access to create, update, and delete your project's API keys | +| `rules.read` | Access to read your project's proxy rules | +| `rules.write` | Access to create, update, and delete your project's proxy rules | +| `vcs.read` | Access to read your project's VCS repositories | +| `vcs.write` | Access to create, update, and delete your project's VCS repositories | +| `assistant.read` | Access to read the Assistant service | + +{% /accordion_item %} +{% /accordion %} diff --git a/src/routes/docs/partners/project/auth-methods/+page.markdoc b/src/routes/docs/partners/project/auth-methods/+page.markdoc new file mode 100644 index 0000000000..7f833e22bc --- /dev/null +++ b/src/routes/docs/partners/project/auth-methods/+page.markdoc @@ -0,0 +1,287 @@ +--- +layout: article +title: Auth methods +description: Enable or disable authentication methods on your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project ships with a configurable set of authentication methods, including email and password, magic URL, email OTP, phone, anonymous sessions, JWT, and team invites. Methods can be toggled on or off from the Appwrite Console under **Auth** > **Settings**, or programmatically through any server SDK using the Project service. + +When a method is disabled, the matching account endpoints reject requests for that project until it is re-enabled. + +# Toggle from the Console {% #toggle-console %} + +{% only_dark %} +![Auth methods settings in the Appwrite Console](/images/docs/project/dark/auth-methods.avif) +{% /only_dark %} +{% only_light %} +![Auth methods settings in the Appwrite Console](/images/docs/project/auth-methods.avif) +{% /only_light %} + +To toggle auth methods manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. In the **Auth methods** card, toggle individual methods on or off, or use **Enable all** or **Disable all** for bulk changes. +4. Changes take effect immediately. No deploy or restart is required. + +OAuth2 providers are configured separately in the **OAuth2 Providers** section on the same page. + +# Method IDs {% #method-ids %} + +The `methodId` parameter accepts one of the following values: + +| Method ID | Description | +| --- | --- | +| `email-password` | Email and password sign-up and login. | +| `magic-url` | Passwordless login using a magic link sent to the user's email. | +| `email-otp` | Time-based one-time password sent to the user's email. | +| `phone` | SMS-based phone authentication. | +| `anonymous` | Guest sessions for unauthenticated visitors. | +| `invites` | Team invitations for collaborative access. | +| `jwt` | JWT-based authentication for delegated access. | + +# Enable or disable a method {% #update-auth-method %} + +Use the Project service `updateAuthMethod` endpoint with a method ID and the `enabled` flag. + +{% info title="Required scope" %} +The API key used for these calls needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectAuthMethodId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Emailpassword, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectAuthMethodId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Emailpassword, + enabled: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; +use Appwrite\Enums\ProjectAuthMethodId; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateAuthMethod( + methodId: ProjectAuthMethodId::EMAILPASSWORD(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.enums import ProjectAuthMethodId + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_auth_method( + method_id = ProjectAuthMethodId.EMAIL_PASSWORD, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_auth_method( + method_id: ProjectAuthMethodId::EMAIL_PASSWORD, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateAuthMethod( + methodId: ProjectAuthMethodId.EmailPassword, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateAuthMethod( + methodId: enums.ProjectAuthMethodId.emailPassword, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project +import io.appwrite.enums.ProjectAuthMethodId + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.updateAuthMethod( + methodId = ProjectAuthMethodId.EMAIL_PASSWORD, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; +import io.appwrite.enums.ProjectAuthMethodId; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateAuthMethod( + ProjectAuthMethodId.EMAIL_PASSWORD, // methodId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateAuthMethod( + methodId: .emailPassword, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateAuthMethod( + "email-password", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; +use appwrite::enums::ProjectAuthMethodId; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_auth_method( + ProjectAuthMethodId::EmailPassword, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-auth-method \ + --method-id email-password \ + --enabled false +``` +{% /multicode %} + +The endpoint returns the updated [Project](/docs/references/cloud/models/project) document with the new method state applied. diff --git a/src/routes/docs/partners/project/branded-emails/+page.markdoc b/src/routes/docs/partners/project/branded-emails/+page.markdoc new file mode 100644 index 0000000000..5ffa74fbd2 --- /dev/null +++ b/src/routes/docs/partners/project/branded-emails/+page.markdoc @@ -0,0 +1,900 @@ +--- +layout: article +title: White-label transactional emails +description: Route a customer's project emails through their own SMTP server and rebrand the email templates per locale with the Project API. +--- + +When a user on your customer's app resets their password, the email that lands in their inbox is part of your customer's brand, or it should be. Out of the box, those messages go through Appwrite's shared sender and carry Appwrite's default templates, which quietly breaks the white-label illusion the moment a user reads the "from" line. The Project API lets you route a project's mail through the customer's own SMTP server and rewrite every template, so verification, recovery, and invitation emails come from the customer's domain and read in their voice. + +This guide: + +- Points a project at the customer's SMTP server. +- Confirms that mail is reaching the inbox. +- Rebrands a template in the customer's voice. + +{% info title="Required scopes" %} +The SMTP calls need the `project.write` scope, and the template calls need the `templates.write` scope. +{% /info %} + +# Configure custom SMTP {% #configure-smtp %} + +Set up the client, then hand the project the customer's SMTP credentials and the sender identity their recipients should see in the inbox. The password is write-only, so it is stored securely and never comes back in a response. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectSMTPSecure } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectSMTPSecure } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; +use Appwrite\Enums\ProjectSMTPSecure; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure::TLS(), // optional + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel +from appwrite.enums import ProjectSMTPSecure + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result: ProjectModel = project.update_smtp( + host = 'smtp.example.com', + port = 587, + username = '<USERNAME>', # optional + password = '<PASSWORD>', # optional + sender_email = 'email@example.com', + sender_name = '<SENDER_NAME>', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '<REPLY_TO_NAME>', # optional + secure = ProjectSMTPSecure.TLS, # optional + enabled = True +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.update_smtp( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', # optional + password: '<PASSWORD>', # optional + sender_email: 'email@example.com', + sender_name: '<SENDER_NAME>', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '<REPLY_TO_NAME>', # optional + secure: ProjectSMTPSecure::TLS, # optional + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +Project result = await project.UpdateSMTP( + host: "smtp.example.com", + port: 587, + username: "<USERNAME>", // optional + password: "<PASSWORD>", // optional + senderEmail: "email@example.com", + senderName: "<SENDER_NAME>", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>", // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +Project result = await project.updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // (optional) + password: '<PASSWORD>', // (optional) + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '<REPLY_TO_NAME>', // (optional) + secure: enums.ProjectSMTPSecure.tls, // (optional) + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectSMTPSecure +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateSMTP( + host = "smtp.example.com", + port = 587, + username = "<USERNAME>", // optional + password = "<PASSWORD>", // optional + senderEmail = "email@example.com", + senderName = "<SENDER_NAME>", // optional + replyToEmail = "email@example.com", // optional + replyToName = "<REPLY_TO_NAME>", // optional + secure = ProjectSMTPSecure.TLS, // optional + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectSMTPSecure; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateSMTP( + "smtp.example.com", // host + 587, // port + "<USERNAME>", // username (optional) + "<PASSWORD>", // password (optional) + "email@example.com", // senderEmail + "<SENDER_NAME>", // senderName (optional) + "email@example.com", // replyToEmail (optional) + "<REPLY_TO_NAME>", // replyToName (optional) + ProjectSMTPSecure.TLS, // secure (optional) + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateSMTP( + host: "smtp.example.com", + port: 587, + username: "<USERNAME>", // optional + password: "<PASSWORD>", // optional + senderEmail: "email@example.com", + senderName: "<SENDER_NAME>", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>", // optional + secure: .tls, // optional + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateSMTP( + appwrite.WithUpdateSMTPHost("smtp.example.com"), + appwrite.WithUpdateSMTPPort(587), + appwrite.WithUpdateSMTPUsername("<USERNAME>"), + appwrite.WithUpdateSMTPPassword("<PASSWORD>"), + appwrite.WithUpdateSMTPSenderEmail("email@example.com"), + appwrite.WithUpdateSMTPSenderName("<SENDER_NAME>"), + appwrite.WithUpdateSMTPReplyToEmail("email@example.com"), + appwrite.WithUpdateSMTPReplyToName("<REPLY_TO_NAME>"), + appwrite.WithUpdateSMTPSecure("tls"), + appwrite.WithUpdateSMTPEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectSMTPSecure; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); + client.set_project("<PROJECT_ID>"); + client.set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_smtp( + Some("smtp.example.com"), + Some(587), + Some("<USERNAME>"), // optional + Some("<PASSWORD>"), // optional + Some("email@example.com"), + Some("<SENDER_NAME>"), // optional + Some("email@example.com"), // optional + Some("<REPLY_TO_NAME>"), // optional + Some(ProjectSMTPSecure::Tls), // optional + Some(true) + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-smtp \ + --host smtp.example.com \ + --port 587 \ + --username "<USERNAME>" \ + --password "<PASSWORD>" \ + --sender-email email@example.com \ + --sender-name "<SENDER_NAME>" \ + --reply-to-email email@example.com \ + --reply-to-name "<REPLY_TO_NAME>" \ + --secure tls \ + --enabled true +``` +```http +PATCH /v1/project/smtp HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "host": "smtp.example.com", + "port": 587, + "username": "<USERNAME>", + "password": "<PASSWORD>", + "senderEmail": "email@example.com", + "senderName": "<SENDER_NAME>", + "replyToEmail": "email@example.com", + "replyToName": "<REPLY_TO_NAME>", + "secure": "tls", + "enabled": true +} +``` +{% /multicode %} + +{% info title="Enabling SMTP validates the connection" %} +The moment you enable custom SMTP, Appwrite tries to connect to the host you gave it, so the server has to be reachable with those exact credentials or the call fails. Custom SMTP is also the prerequisite for everything below: you cannot customize email templates until it is enabled. +{% /info %} + +# Send a test email {% #test-smtp %} + +Do not wait for a real password reset to find out the configuration is wrong. Send yourself a test message, which goes out through the SMTP settings you just saved, and a message arriving in the inbox confirms the whole path end to end. + +{% multicode %} +```server-nodejs +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-deno +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-php +$result = $project->createSMTPTest( + emails: ['email@example.com'] +); +``` +```server-python +result = project.create_smtp_test( + emails = ['email@example.com'] +) +``` +```server-ruby +result = project.create_smtp_test( + emails: ['email@example.com'] +) +``` +```server-dotnet +await project.CreateSMTPTest( + emails: new List<string> { "email@example.com" } +); +``` +```server-dart +await project.createSMTPTest( + emails: ['email@example.com'], +); +``` +```server-kotlin +val response = project.createSMTPTest( + emails = listOf("email@example.com") +) +``` +```server-java +project.createSMTPTest( + List.of("email@example.com"), // emails + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.createSMTPTest( + emails: ["email@example.com"] +) +``` +```server-go +response, err := project.CreateSMTPTest( + []interface{}{"email@example.com"}, +) + +if err != nil { + panic(err) +} + +fmt.Println(response) +``` +```server-rust +project.create_smtp_test( + vec!["email@example.com"] +).await?; +``` +```bash +appwrite project create-smtp-test \ + --emails email@example.com +``` +```http +POST /v1/project/smtp/tests HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "emails": ["email@example.com"] +} +``` +{% /multicode %} + +# Customize a template {% #customize-template %} + +With mail flowing through the customer's server, rebrand the messages themselves. Set the subject, body, and sender for a template in a given locale, and repeat per locale to localize. This example rewrites the verification email. + +{% multicode %} +```server-nodejs +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +}); +``` +```server-deno +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +}); +``` +```server-php +$result = $project->updateEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN(), // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +); +``` +```server-python +result: EmailTemplate = project.update_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, # optional + subject = '<SUBJECT>', # optional + message = '<MESSAGE>', # optional + sender_name = '<SENDER_NAME>', # optional + sender_email = 'email@example.com', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '<REPLY_TO_NAME>' # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.update_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN, # optional + subject: '<SUBJECT>', # optional + message: '<MESSAGE>', # optional + sender_name: '<SENDER_NAME>', # optional + sender_email: 'email@example.com', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '<REPLY_TO_NAME>' # optional +) +``` +```server-dotnet +EmailTemplate result = await project.UpdateEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: "<SUBJECT>", // optional + message: "<MESSAGE>", // optional + senderName: "<SENDER_NAME>", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>" // optional +); +``` +```server-dart +EmailTemplate result = await project.updateEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) + subject: '<SUBJECT>', // (optional) + message: '<MESSAGE>', // (optional) + senderName: '<SENDER_NAME>', // (optional) + senderEmail: 'email@example.com', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '<REPLY_TO_NAME>', // (optional) +); +``` +```server-kotlin +val response = project.updateEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, // optional + subject = "<SUBJECT>", // optional + message = "<MESSAGE>", // optional + senderName = "<SENDER_NAME>", // optional + senderEmail = "email@example.com", // optional + replyToEmail = "email@example.com", // optional + replyToName = "<REPLY_TO_NAME>" // optional +) +``` +```server-java +project.updateEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + "<SUBJECT>", // subject (optional) + "<MESSAGE>", // message (optional) + "<SENDER_NAME>", // senderName (optional) + "email@example.com", // senderEmail (optional) + "email@example.com", // replyToEmail (optional) + "<REPLY_TO_NAME>", // replyToName (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplate = try await project.updateEmailTemplate( + templateId: .verification, + locale: .en, // optional + subject: "<SUBJECT>", // optional + message: "<MESSAGE>", // optional + senderName: "<SENDER_NAME>", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>" // optional +) +``` +```server-go +result, err := project.UpdateEmailTemplate( + "verification", + appwrite.WithUpdateEmailTemplateLocale("en"), + appwrite.WithUpdateEmailTemplateSubject("<SUBJECT>"), + appwrite.WithUpdateEmailTemplateMessage("<MESSAGE>"), + appwrite.WithUpdateEmailTemplateSenderName("<SENDER_NAME>"), + appwrite.WithUpdateEmailTemplateSenderEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToName("<REPLY_TO_NAME>"), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En), // optional + Some("<SUBJECT>"), // optional + Some("<MESSAGE>"), // optional + Some("<SENDER_NAME>"), // optional + Some("email@example.com"), // optional + Some("email@example.com"), // optional + Some("<REPLY_TO_NAME>") // optional +).await?; + +let _ = result; +``` +```bash +appwrite project update-email-template \ + --template-id verification \ + --locale en \ + --subject "<SUBJECT>" \ + --message "<MESSAGE>" \ + --sender-name "<SENDER_NAME>" \ + --sender-email email@example.com \ + --reply-to-email email@example.com \ + --reply-to-name "<REPLY_TO_NAME>" +``` +```http +PATCH /v1/project/templates/email HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "templateId": "verification", + "locale": "en", + "subject": "<SUBJECT>", + "message": "<MESSAGE>", + "senderName": "<SENDER_NAME>", + "senderEmail": "email@example.com", + "replyToEmail": "email@example.com", + "replyToName": "<REPLY_TO_NAME>" +} +``` +{% /multicode %} + +The template ID is one of `verification`, `magicSession`, `recovery`, `invitation`, `mfaChallenge`, `sessionAlert`, or `otpSession`. + +# Read templates back {% #read-templates %} + +Read a template back to check the copy that is live, which is worth doing whenever you let a customer edit their own templates through your dashboard. + +{% multicode %} +```server-nodejs +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-deno +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-php +$result = $project->getEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN() // optional +); +``` +```server-python +result: EmailTemplate = project.get_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.get_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN # optional +) +``` +```server-dotnet +EmailTemplate result = await project.GetEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +); +``` +```server-dart +EmailTemplate result = await project.getEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) +); +``` +```server-kotlin +val response = project.getEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN // optional +) +``` +```server-java +project.getEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplate = try await project.getEmailTemplate( + templateId: .verification, + locale: .en // optional +) +``` +```server-go +result, err := project.GetEmailTemplate( + "verification", + appwrite.WithGetEmailTemplateLocale("en"), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.get_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project get-email-template \ + --template-id verification \ + --locale en +``` +```http +GET /v1/project/templates/email/verification?locale=en HTTP/1.1 +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> +``` +{% /multicode %} + +Or list the project's templates to see everything you have overridden in one call. + +{% multicode %} +```server-nodejs +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +$result = $project->listEmailTemplates( + queries: [], // optional + total: false // optional +); +``` +```server-python +result: EmailTemplateList = project.list_email_templates( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.list_email_templates( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +EmailTemplateList result = await project.ListEmailTemplates( + queries: new List<string>(), // optional + total: false // optional +); +``` +```server-dart +EmailTemplateList result = await project.listEmailTemplates( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +val response = project.listEmailTemplates( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +project.listEmailTemplates( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let emailTemplateList = try await project.listEmailTemplates( + queries: [], // optional + total: false // optional +) +``` +```server-go +result, err := project.ListEmailTemplates( + appwrite.WithListEmailTemplatesQueries([]interface{}{}), + appwrite.WithListEmailTemplatesTotal(false), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.list_email_templates( + Some(vec![]), // optional + Some(false) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project list-email-templates +``` +```http +GET /v1/project/templates/email HTTP/1.1 +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +With SMTP and templates driven from code, every customer's project sends mail that carries their brand rather than yours. From here: + +- [Provision a project's baseline](/docs/partners/project/provisioning) so branding the emails is one step in onboarding. +- Read the [SMTP](/docs/partners/project/smtp) and [Email templates](/docs/partners/project/email-templates) references for every field you can set. diff --git a/src/routes/docs/partners/project/email-templates/+page.markdoc b/src/routes/docs/partners/project/email-templates/+page.markdoc new file mode 100644 index 0000000000..832c4ce973 --- /dev/null +++ b/src/routes/docs/partners/project/email-templates/+page.markdoc @@ -0,0 +1,872 @@ +--- +layout: article +title: Email templates +description: Customize the account management emails Appwrite sends to your users, including verification, password recovery, and magic URL emails, per locale. +--- + +Appwrite sends transactional emails on your behalf for account management flows such as email verification, password recovery, and magic URL sign-in. Email templates let you customize the subject, message body, sender identity, and reply-to address of each of these emails, with a separate version for every locale you support. + +{% info title="Custom SMTP required to save changes" %} +You can view the built-in default templates at any time, but saving a customization requires a custom SMTP server enabled on your project. See [Custom SMTP server](/docs/products/auth/message-templates#smtp) to set one up. +{% /info %} + +# Manage in the Console {% #console %} + +{% only_dark %} +![Email templates in the Appwrite Console](/images/docs/project/dark/email-templates.avif) +{% /only_dark %} +{% only_light %} +![Email templates in the Appwrite Console](/images/docs/project/email-templates.avif) +{% /only_light %} + +To edit email templates from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Auth** section and select the **Templates** tab. +3. Under **Email templates**, expand the template you want to edit, such as **Verification** or **Reset password**. +4. Choose a **Template language**, then edit the sender name, sender email, reply-to address, subject, and message. Use the variable chips (`{{user}}`, `{{project}}`, `{{redirect}}`) to insert dynamic values into the subject and message. +5. Click **Update** to save the template for the selected language. + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage email templates programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scopes" %} +The API key used for these calls needs `templates.read` to list or fetch templates, and `templates.write` to update them. +{% /info %} + +## List email templates {% #list-email-templates %} + +You can paginate the result with the `limit` and `offset` queries. See [Queries](/docs/products/databases/queries) for the query syntax. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.listEmailTemplates({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->listEmailTemplates( + queries: [], // optional + total: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplateList + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: EmailTemplateList = project.list_email_templates( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.list_email_templates( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +EmailTemplateList result = await project.ListEmailTemplates( + queries: new List<string>(), // optional + total: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +EmailTemplateList result = await project.listEmailTemplates( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.listEmailTemplates( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.listEmailTemplates( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let emailTemplateList = try await project.listEmailTemplates( + queries: [], // optional + total: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.ListEmailTemplates( + appwrite.WithListEmailTemplatesQueries([]interface{}{}), + appwrite.WithListEmailTemplatesTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.list_email_templates( + Some(vec![]), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project list-email-templates +``` +{% /multicode %} + +## Get an email template {% #get-email-template %} + +Retrieve a single template by its type and, optionally, locale. If you omit the locale, the fallback locale `en` is returned. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-deno +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.getEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; +use Appwrite\Enums\ProjectEmailTemplateId; +use Appwrite\Enums\ProjectEmailTemplateLocale; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->getEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN() // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplate +from appwrite.enums import ProjectEmailTemplateId +from appwrite.enums import ProjectEmailTemplateLocale + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: EmailTemplate = project.get_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.get_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +EmailTemplate result = await project.GetEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +EmailTemplate result = await project.getEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectEmailTemplateId +import io.appwrite.enums.ProjectEmailTemplateLocale +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.getEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectEmailTemplateId; +import io.appwrite.enums.ProjectEmailTemplateLocale; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.getEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let emailTemplate = try await project.getEmailTemplate( + templateId: .verification, + locale: .en // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.GetEmailTemplate( + "verification", + appwrite.WithGetEmailTemplateLocale("en"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectEmailTemplateId; +use appwrite::enums::ProjectEmailTemplateLocale; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.get_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project get-email-template \ + --template-id verification \ + --locale en +``` +{% /multicode %} + +## Update an email template {% #update-email-template %} + +Customize a template's subject, message, and sender identity for a given type and locale. Every field is optional, so you can change only the values you need. The `subject` and `message` accept the `{{user}}`, `{{project}}`, and `{{redirect}}` variables, which Appwrite replaces when sending the email. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +}); +``` +```server-deno +import { Client, Project, ProjectEmailTemplateId, ProjectEmailTemplateLocale } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateEmailTemplate({ + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; +use Appwrite\Enums\ProjectEmailTemplateId; +use Appwrite\Enums\ProjectEmailTemplateLocale; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->updateEmailTemplate( + templateId: ProjectEmailTemplateId::VERIFICATION(), + locale: ProjectEmailTemplateLocale::EN(), // optional + subject: '<SUBJECT>', // optional + message: '<MESSAGE>', // optional + senderName: '<SENDER_NAME>', // optional + senderEmail: 'email@example.com', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>' // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import EmailTemplate +from appwrite.enums import ProjectEmailTemplateId +from appwrite.enums import ProjectEmailTemplateLocale + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: EmailTemplate = project.update_email_template( + template_id = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, # optional + subject = '<SUBJECT>', # optional + message = '<MESSAGE>', # optional + sender_name = '<SENDER_NAME>', # optional + sender_email = 'email@example.com', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '<REPLY_TO_NAME>' # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.update_email_template( + template_id: ProjectEmailTemplateId::VERIFICATION, + locale: ProjectEmailTemplateLocale::EN, # optional + subject: '<SUBJECT>', # optional + message: '<MESSAGE>', # optional + sender_name: '<SENDER_NAME>', # optional + sender_email: 'email@example.com', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '<REPLY_TO_NAME>' # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +EmailTemplate result = await project.UpdateEmailTemplate( + templateId: ProjectEmailTemplateId.Verification, + locale: ProjectEmailTemplateLocale.En, // optional + subject: "<SUBJECT>", // optional + message: "<MESSAGE>", // optional + senderName: "<SENDER_NAME>", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>" // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +EmailTemplate result = await project.updateEmailTemplate( + templateId: enums.ProjectEmailTemplateId.verification, + locale: enums.ProjectEmailTemplateLocale.en, // (optional) + subject: '<SUBJECT>', // (optional) + message: '<MESSAGE>', // (optional) + senderName: '<SENDER_NAME>', // (optional) + senderEmail: 'email@example.com', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '<REPLY_TO_NAME>', // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectEmailTemplateId +import io.appwrite.enums.ProjectEmailTemplateLocale +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.updateEmailTemplate( + templateId = ProjectEmailTemplateId.VERIFICATION, + locale = ProjectEmailTemplateLocale.EN, // optional + subject = "<SUBJECT>", // optional + message = "<MESSAGE>", // optional + senderName = "<SENDER_NAME>", // optional + senderEmail = "email@example.com", // optional + replyToEmail = "email@example.com", // optional + replyToName = "<REPLY_TO_NAME>" // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectEmailTemplateId; +import io.appwrite.enums.ProjectEmailTemplateLocale; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.updateEmailTemplate( + ProjectEmailTemplateId.VERIFICATION, // templateId + ProjectEmailTemplateLocale.EN, // locale (optional) + "<SUBJECT>", // subject (optional) + "<MESSAGE>", // message (optional) + "<SENDER_NAME>", // senderName (optional) + "email@example.com", // senderEmail (optional) + "email@example.com", // replyToEmail (optional) + "<REPLY_TO_NAME>", // replyToName (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let emailTemplate = try await project.updateEmailTemplate( + templateId: .verification, + locale: .en, // optional + subject: "<SUBJECT>", // optional + message: "<MESSAGE>", // optional + senderName: "<SENDER_NAME>", // optional + senderEmail: "email@example.com", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>" // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateEmailTemplate( + "verification", + appwrite.WithUpdateEmailTemplateLocale("en"), + appwrite.WithUpdateEmailTemplateSubject("<SUBJECT>"), + appwrite.WithUpdateEmailTemplateMessage("<MESSAGE>"), + appwrite.WithUpdateEmailTemplateSenderName("<SENDER_NAME>"), + appwrite.WithUpdateEmailTemplateSenderEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToEmail("email@example.com"), + appwrite.WithUpdateEmailTemplateReplyToName("<REPLY_TO_NAME>"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectEmailTemplateId; +use appwrite::enums::ProjectEmailTemplateLocale; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.update_email_template( + ProjectEmailTemplateId::Verification, + Some(ProjectEmailTemplateLocale::En), // optional + Some("<SUBJECT>"), // optional + Some("<MESSAGE>"), // optional + Some("<SENDER_NAME>"), // optional + Some("email@example.com"), // optional + Some("email@example.com"), // optional + Some("<REPLY_TO_NAME>") // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-email-template \ + --template-id verification \ + --locale en \ + --subject "<SUBJECT>" \ + --message "<MESSAGE>" \ + --sender-name "<SENDER_NAME>" \ + --sender-email email@example.com \ + --reply-to-email email@example.com \ + --reply-to-name "<REPLY_TO_NAME>" +``` +{% /multicode %} + +# Template types {% #template-types %} + +Each email template is identified by a `templateId`. The available types map to the account management emails Appwrite sends: + +| Console name | Template ID | Sent when | +|------------------|----------------|------------------------------------------------------------| +| Verification | `verification` | A user requests email address verification. | +| Magic URL | `magicSession` | A user signs in with a magic URL link. | +| OTP session | `otpSession` | A user signs in with an email one-time password. | +| Reset password | `recovery` | A user starts the password recovery flow. | +| Invite user | `invitation` | A user is invited to join a team. | +| 2FA verification | `mfaChallenge` | A user completes an email-based multi-factor challenge. | +| Session alert | `sessionAlert` | A new session is created on a user's account. | + +# Locales {% #locales %} + +Templates are stored per locale, so you can send the right copy to each audience. Pass the `locale` parameter to read or write the version for a specific language. If you omit it, Appwrite uses the fallback locale `en`. Locale codes follow the ISO 639-1 standard with optional region suffixes, such as `en`, `fr`, `de`, or `pt-br`. + +# Benefits {% #benefits %} + +- **On-brand emails.** Replace the default sender name, address, subject, and message so account emails match your product instead of generic Appwrite copy. +- **Localized messaging.** Maintain a separate version of each template per locale and reach every user in their own language. +- **Repeatable provisioning.** Script template content as code and apply the same configuration across dev, staging, and production projects without clicking through the Console. diff --git a/src/routes/docs/partners/project/environment-variables/+page.markdoc b/src/routes/docs/partners/project/environment-variables/+page.markdoc new file mode 100644 index 0000000000..fe309d414b --- /dev/null +++ b/src/routes/docs/partners/project/environment-variables/+page.markdoc @@ -0,0 +1,1222 @@ +--- +layout: article +title: Environment variables +description: Use project, function, and site environment variables to pass constants and secrets to your Appwrite Functions and Appwrite Sites at build and runtime. +--- + +Environment variables let you pass constants and secrets such as API keys, connection strings, and feature flags into your Appwrite Functions and Appwrite Sites at build and runtime. Storing values outside your source keeps secrets out of version control and lets you change configuration without code changes. + +Appwrite supports three scopes of environment variables: + +- **Project variables** are shared across every function and site in the project. Use them for values consumed by more than one resource, such as a shared third-party API key, a database URL, or a feature flag. +- **Function variables** are scoped to a single function. Use them for values only that function needs. +- **Site variables** are scoped to a single site. Use them for values only that site needs. + +When the same key is defined in multiple scopes, the more specific scope wins. Function or site variables override project variables, and Appwrite-injected variables (those prefixed with `APPWRITE_`) take final precedence and cannot be overridden. + +{% info title="Redeployment required" %} +Variable changes only take effect on the next deployment. Redeploy your functions or sites after creating, updating, or deleting variables. +{% /info %} + +# Project variables {% #project-variables %} + +Project variables are available to every function and site in your project. They are managed at the project level and merged into each function or site's environment automatically at build and runtime. + +This page covers how to manage project variables. To manage variables on a single function or site, see the dedicated pages: + +{% cards %} +{% cards_item href="/docs/products/functions/environment-variables" title="Function variables" %} +Manage variables for a single function. +{% /cards_item %} +{% cards_item href="/docs/products/sites/environment-variables" title="Site variables" %} +Manage variables for a single site. +{% /cards_item %} +{% /cards %} + +# Manage in the Console {% #console %} + +You can create and manage project variables from the Appwrite Console. The Console refers to them as **Global variables**: + +1. Navigate to your project. +2. Open **Settings** and scroll to the **Global variables** section. +3. Click **Create a global variable** and enter a key and value. +4. Optionally select the **Secret** checkbox to prevent any team member from reading the value after creation. +5. Click **Create**, then redeploy your functions and sites for the change to take effect. + +{% only_dark %} +![Project Global variables in the Appwrite Console](/images/docs/platform/dark/env-variables.avif) +{% /only_dark %} +{% only_light %} +![Project Global variables in the Appwrite Console](/images/docs/platform/env-variables.avif) +{% /only_light %} + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage project variables programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scopes" %} +The API key used for these calls needs `project.read` to list or fetch variables, and `project.write` to create, update, or delete them. +{% /info %} + +## Create a variable {% #create-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.createVariable({ + variableId: ID.unique(), + key: '<KEY>', + value: '<VALUE>', + secret: false // optional +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.createVariable({ + variableId: ID.unique(), + key: '<KEY>', + value: '<VALUE>', + secret: false // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->createVariable( + variableId: ID::unique(), + key: '<KEY>', + value: '<VALUE>', + secret: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: Variable = project.create_variable( + variable_id = ID.unique(), + key = '<KEY>', + value = '<VALUE>', + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.create_variable( + variable_id: ID.unique(), + key: '<KEY>', + value: '<VALUE>', + secret: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Variable result = await project.CreateVariable( + variableId: ID.Unique(), + key: "<KEY>", + value: "<VALUE>", + secret: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Variable result = await project.createVariable( + variableId: ID.unique(), + key: '<KEY>', + value: '<VALUE>', + secret: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.createVariable( + variableId = ID.unique(), + key = "<KEY>", + value = "<VALUE>", + secret = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.createVariable( + ID.unique(), // variableId + "<KEY>", // key + "<VALUE>", // value + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let variable = try await project.createVariable( + variableId: ID.unique(), + key: "<KEY>", + value: "<VALUE>", + secret: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), +) + +project := appwrite.NewProject(client) + +response, error := project.CreateVariable( + id.Unique(), + "<KEY>", + "<VALUE>", + appwrite.WithCreateVariableSecret(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.create_variable( + &ID::unique(), + "<KEY>", + "<VALUE>", + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## List variables {% #list-variables %} + +You can paginate, filter, and sort the result. See [Queries](/docs/products/databases/queries) for the query syntax. The list endpoint accepts queries on the `key`, `value`, and `secret` attributes. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.listVariables({ + queries: [], // optional + total: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.listVariables({ + queries: [], // optional + total: false // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->listVariables( + queries: [], // optional + total: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import VariableList + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: VariableList = project.list_variables( + queries = [], # optional + total = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.list_variables( + queries: [], # optional + total: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +VariableList result = await project.ListVariables( + queries: new List<string>(), // optional + total: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +VariableList result = await project.listVariables( + queries: [], // (optional) + total: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.listVariables( + queries = listOf(), // optional + total = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.listVariables( + List.of(), // queries (optional) + false, // total (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let variableList = try await project.listVariables( + queries: [], // optional + total: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), +) + +project := appwrite.NewProject(client) + +response, error := project.ListVariables( + appwrite.WithListVariablesQueries([]interface{}{}), + appwrite.WithListVariablesTotal(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.list_variables( + Some(vec![]), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Get a variable {% #get-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.getVariable({ + variableId: '<VARIABLE_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.getVariable({ + variableId: '<VARIABLE_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->getVariable( + variableId: '<VARIABLE_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: Variable = project.get_variable( + variable_id = '<VARIABLE_ID>' +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.get_variable( + variable_id: '<VARIABLE_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Variable result = await project.GetVariable( + variableId: "<VARIABLE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Variable result = await project.getVariable( + variableId: '<VARIABLE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.getVariable( + variableId = "<VARIABLE_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.getVariable( + "<VARIABLE_ID>", // variableId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let variable = try await project.getVariable( + variableId: "<VARIABLE_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), +) + +project := appwrite.NewProject(client) + +response, error := project.GetVariable( + "<VARIABLE_ID>", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.get_variable( + "<VARIABLE_ID>" + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Update a variable {% #update-variable %} + +You can change a variable's `key`, `value`, or `secret` flag. Marking a variable as secret is one-way. Once set, the value is no longer readable from the Console or API. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateVariable({ + variableId: '<VARIABLE_ID>', + key: '<KEY>', // optional + value: '<VALUE>', // optional + secret: false // optional +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateVariable({ + variableId: '<VARIABLE_ID>', + key: '<KEY>', // optional + value: '<VALUE>', // optional + secret: false // optional +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->updateVariable( + variableId: '<VARIABLE_ID>', + key: '<KEY>', // optional + value: '<VALUE>', // optional + secret: false // optional +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Variable + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: Variable = project.update_variable( + variable_id = '<VARIABLE_ID>', + key = '<KEY>', # optional + value = '<VALUE>', # optional + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.update_variable( + variable_id: '<VARIABLE_ID>', + key: '<KEY>', # optional + value: '<VALUE>', # optional + secret: false # optional +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Variable result = await project.UpdateVariable( + variableId: "<VARIABLE_ID>", + key: "<KEY>", // optional + value: "<VALUE>", // optional + secret: false // optional +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Variable result = await project.updateVariable( + variableId: '<VARIABLE_ID>', + key: '<KEY>', // (optional) + value: '<VALUE>', // (optional) + secret: false, // (optional) +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.updateVariable( + variableId = "<VARIABLE_ID>", + key = "<KEY>", // optional + value = "<VALUE>", // optional + secret = false // optional +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.updateVariable( + "<VARIABLE_ID>", // variableId + "<KEY>", // key (optional) + "<VALUE>", // value (optional) + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let variable = try await project.updateVariable( + variableId: "<VARIABLE_ID>", + key: "<KEY>", // optional + value: "<VALUE>", // optional + secret: false // optional +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), +) + +project := appwrite.NewProject(client) + +response, error := project.UpdateVariable( + "<VARIABLE_ID>", + appwrite.WithUpdateVariableKey("<KEY>"), + appwrite.WithUpdateVariableValue("<VALUE>"), + appwrite.WithUpdateVariableSecret(false), +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.update_variable( + "<VARIABLE_ID>", + Some("<KEY>"), // optional + Some("<VALUE>"), // optional + Some(false) // optional + ).await?; + + let _ = result; + + Ok(()) +} +``` +{% /multicode %} + +## Delete a variable {% #delete-variable %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.deleteVariable({ + variableId: '<VARIABLE_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.deleteVariable({ + variableId: '<VARIABLE_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->deleteVariable( + variableId: '<VARIABLE_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result = project.delete_variable( + variable_id = '<VARIABLE_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.delete_variable( + variable_id: '<VARIABLE_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +await project.DeleteVariable( + variableId: "<VARIABLE_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +await project.deleteVariable( + variableId: '<VARIABLE_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.deleteVariable( + variableId = "<VARIABLE_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.deleteVariable( + "<VARIABLE_ID>", // variableId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.deleteVariable( + variableId: "<VARIABLE_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), +) + +project := appwrite.NewProject(client) + +response, error := project.DeleteVariable( + "<VARIABLE_ID>", +) +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + project.delete_variable( + "<VARIABLE_ID>" + ).await?; + + Ok(()) +} +``` +{% /multicode %} + +# Secret variables {% #secret-variables %} + +Mark a variable as **Secret** to hide its value from the Console and API after creation. Only the function or site runtime can read the value at build and runtime. Team members and external integrations cannot retrieve it after creation. + +You can mark a variable as secret either when you create it or by updating an existing variable. Marking a variable as secret cannot be reversed. To replace a secret value, delete the variable and create a new one with the same key. + +# Override behavior {% #overrides %} + +When the same key is defined in multiple scopes, more specific scopes take precedence: + +1. Project variables are merged into the runtime environment first. +2. Function or site variables override matching keys from project scope. +3. Appwrite-injected variables (those prefixed with `APPWRITE_`) override matching keys from both scopes and cannot be customized. + +This lets you set a default at the project level (for example, `LOG_LEVEL=info`) and override it for a specific function or site that needs different behavior. + +# Limits {% #limits %} + +| Field | Limit | +|----------------|------------------------------------------------| +| Variable ID | 36 characters, `a-z A-Z 0-9 . - _` | +| Key | 255 characters | +| Value | 8192 characters | diff --git a/src/routes/docs/partners/project/key-rotation/+page.markdoc b/src/routes/docs/partners/project/key-rotation/+page.markdoc new file mode 100644 index 0000000000..9384f0e84b --- /dev/null +++ b/src/routes/docs/partners/project/key-rotation/+page.markdoc @@ -0,0 +1,811 @@ +--- +layout: article +title: Issue and rotate API keys +description: Manage the full life of an API key with the Project API, from issuing a scoped credential to auditing, rotating, and revoking it. +--- + +Every connection your platform makes into a customer's project rides on an API key, and a key is a credential like any other in production. Left alone, a long-lived key with broad scopes is exactly the thing a security review flags: too much access, no expiry, no record of when it was last rotated. The Project API lets you run a key's whole life from your backend so it never becomes that liability: + +- Issue it scoped to one integration, with an expiry. +- Audit the keys on the project before each rotation cycle. +- Replace its secret on a schedule, with no downtime. +- Revoke it the moment it is no longer needed. + +This guide follows one key from the day you stand up an integration against a customer's project, through the routine audit and rotation that keeps it fresh, to the day you retire it. + +{% info title="Required scopes" %} +The API key used for these calls needs the `keys.read` and `keys.write` scopes. +{% /info %} + +# Issue a key scoped to the integration {% #issue-key %} + +When you connect a new integration to a customer's project, give it a key that can reach only the parts of the API that integration touches, and put an expiry on it from the start. Set up the client once, then issue the key. A sync job that reads and writes tables needs the `tables.read` and `tables.write` scopes and nothing more, so that is all its key gets. + +{% multicode %} +```server-nodejs +import { Client, Project, ID, ProjectKeyScopes } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-deno +import { Client, Project, ID, ProjectKeyScopes } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createKey({ + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + expire: '2026-12-31T23:59:59.000+00:00' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createKey( + keyId: ID::unique(), + name: 'Tenant integration', + scopes: ['tables.read', 'tables.write'], + expire: '2026-12-31T23:59:59.000+00:00' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project +from appwrite.enums import ProjectKeyScopes + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_key( + key_id=ID.unique(), + name='Tenant integration', + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + expire='2026-12-31T23:59:59.000+00:00' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.create_key( + key_id: ID.unique(), + name: 'Tenant integration', + scopes: ['tables.read', 'tables.write'], + expire: '2026-12-31T23:59:59.000+00:00' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; +using Appwrite.Models; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateKey( + keyId: ID.Unique(), + name: "Tenant integration", + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + expire: "2026-12-31T23:59:59.000+00:00" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createKey( + keyId: ID.unique(), + name: 'Tenant integration', + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + expire: '2026-12-31T23:59:59.000+00:00', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.enums.ProjectKeyScopes +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.createKey( + keyId = ID.unique(), + name = "Tenant integration", + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + expire = "2026-12-31T23:59:59.000+00:00" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.enums.ProjectKeyScopes; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createKey( + ID.unique(), // keyId + "Tenant integration", // name + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + "2026-12-31T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createKey( + keyId: ID.unique(), + name: "Tenant integration", + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + expire: "2026-12-31T23:59:59.000+00:00" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateKey( + id.Unique(), + "Tenant integration", + []string{"tables.read", "tables.write"}, + project.WithCreateKeyExpire("2026-12-31T23:59:59.000+00:00"), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::enums::ProjectKeyScopes; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_key( + ID::unique(), // key_id + "Tenant integration", // name + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + Some("2026-12-31T23:59:59.000+00:00"), // expire + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-key \ + --key-id 'unique()' \ + --name "Tenant integration" \ + --scopes tables.read tables.write +``` +```http +POST /v1/project/keys HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "keyId": "unique()", + "name": "Tenant integration", + "scopes": ["tables.read", "tables.write"], + "expire": "2026-12-31T23:59:59.000+00:00" +} +``` +{% /multicode %} + +The secret is returned once, on creation, and never again. Write it straight to your secrets manager, because there is no call that reads it back. + +# Audit the project's keys {% #audit-keys %} + +Rotation begins with knowing what is out there. When a rotation window comes due, list the keys on the project to see them all and when each one expires. + +{% multicode %} +```server-nodejs +const result = await project.listKeys(); +``` +```server-deno +const result = await project.listKeys(); +``` +```server-php +$result = $project->listKeys(); +``` +```server-python +result = project.list_keys() +``` +```server-ruby +response = project.list_keys() +``` +```server-dotnet +var result = await project.ListKeys(); +``` +```server-dart +final result = await project.listKeys(); +``` +```server-kotlin +val result = project.listKeys() +``` +```server-java +project.listKeys( + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.listKeys() +``` +```server-go +result, err := project.ListKeys() + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.list_keys( + None, // queries + None, // total +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project list-keys +``` +```http +GET /v1/project/keys HTTP/1.1 +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> +``` +{% /multicode %} + +For any key that is close to expiry, read it back to confirm exactly what it can do before you decide how to handle it. + +{% multicode %} +```server-nodejs +const result = await project.getKey({ + keyId: '<KEY_ID>' +}); +``` +```server-deno +const result = await project.getKey({ + keyId: '<KEY_ID>' +}); +``` +```server-php +$result = $project->getKey( + keyId: '<KEY_ID>' +); +``` +```server-python +result = project.get_key( + key_id='<KEY_ID>' +) +``` +```server-ruby +response = project.get_key( + key_id: '<KEY_ID>' +) +``` +```server-dotnet +var result = await project.GetKey( + keyId: "<KEY_ID>" +); +``` +```server-dart +final result = await project.getKey( + keyId: '<KEY_ID>', +); +``` +```server-kotlin +val result = project.getKey( + keyId = "<KEY_ID>" +) +``` +```server-java +project.getKey( + "<KEY_ID>", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.getKey( + keyId: "<KEY_ID>" +) +``` +```server-go +result, err := project.GetKey( + "<KEY_ID>", +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.get_key( + "<KEY_ID>", +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project get-key \ + --key-id '<KEY_ID>' +``` +```http +GET /v1/project/keys/<KEY_ID> HTTP/1.1 +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> +``` +{% /multicode %} + +# Update a key's scopes or expiry {% #adjust-key %} + +Sometimes a key just needs a smaller scope set or a later expiry, not a new secret. Updating a key changes its name, scopes, and expiry while keeping the same secret, so reach for it when you are adjusting access for an integration that has not changed credentials. + +{% multicode %} +```server-nodejs +const result = await project.updateKey({ + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-deno +const result = await project.updateKey({ + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead], + expire: '2027-06-30T23:59:59.000+00:00' +}); +``` +```server-php +$result = $project->updateKey( + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: ['tables.read', 'tables.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +); +``` +```server-python +result = project.update_key( + key_id='<KEY_ID>', + name='Updated Key', + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ], + expire='2027-06-30T23:59:59.000+00:00' +) +``` +```server-ruby +response = project.update_key( + key_id: '<KEY_ID>', + name: 'Updated Key', + scopes: ['tables.read', 'tables.write', 'users.read'], + expire: '2027-06-30T23:59:59.000+00:00' +) +``` +```server-dotnet +var result = await project.UpdateKey( + keyId: "<KEY_ID>", + name: "Updated Key", + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite, ProjectKeyScopes.UsersRead}, + expire: "2027-06-30T23:59:59.000+00:00" +); +``` +```server-dart +final result = await project.updateKey( + keyId: '<KEY_ID>', + name: 'Updated Key', + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite, enums.ProjectKeyScopes.usersRead], + expire: '2027-06-30T23:59:59.000+00:00', +); +``` +```server-kotlin +val result = project.updateKey( + keyId = "<KEY_ID>", + name = "Updated Key", + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ), + expire = "2027-06-30T23:59:59.000+00:00" +) +``` +```server-java +project.updateKey( + "<KEY_ID>", // keyId + "Updated Key", // name + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE, ProjectKeyScopes.USERS_READ), // scopes + "2027-06-30T23:59:59.000+00:00", // expire + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateKey( + keyId: "<KEY_ID>", + name: "Updated Key", + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite, ProjectKeyScopes.usersRead], + expire: "2027-06-30T23:59:59.000+00:00" +) +``` +```server-go +result, err := project.UpdateKey( + "<KEY_ID>", + "Updated Key", + []string{"tables.read", "tables.write", "users.read"}, + project.WithUpdateKeyExpire("2027-06-30T23:59:59.000+00:00"), +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_key( + "<KEY_ID>", // key_id + "Updated Key", // name + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite, ProjectKeyScopes::UsersRead], // scopes + Some("2027-06-30T23:59:59.000+00:00"), // expire +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-key \ + --key-id '<KEY_ID>' \ + --name "Updated Key" \ + --scopes tables.read tables.write users.read +``` +```http +PUT /v1/project/keys/<KEY_ID> HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "name": "Updated Key", + "scopes": ["tables.read", "tables.write", "users.read"], + "expire": "2027-06-30T23:59:59.000+00:00" +} +``` +{% /multicode %} + +# Rotate a key's secret {% #roll-secret %} + +Rotating the secret itself, the part a security policy usually requires on a fixed cadence, means retiring one key and standing up another without a gap in service: + +1. Issue a fresh key with the same scopes using the create call above. +2. Point the integration at the new secret. +3. Confirm its traffic has moved over. +4. Delete the old key so the retired secret stops working. + +{% multicode %} +```server-nodejs +await project.deleteKey({ + keyId: '<KEY_ID>' +}); +``` +```server-deno +await project.deleteKey({ + keyId: '<KEY_ID>' +}); +``` +```server-php +$project->deleteKey( + keyId: '<KEY_ID>' +); +``` +```server-python +project.delete_key( + key_id='<KEY_ID>' +) +``` +```server-ruby +project.delete_key( + key_id: '<KEY_ID>' +) +``` +```server-dotnet +await project.DeleteKey( + keyId: "<KEY_ID>" +); +``` +```server-dart +await project.deleteKey( + keyId: '<KEY_ID>', +); +``` +```server-kotlin +project.deleteKey( + keyId = "<KEY_ID>" +) +``` +```server-java +project.deleteKey( + "<KEY_ID>", // keyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +try await project.deleteKey( + keyId: "<KEY_ID>" +) +``` +```server-go +_, err := project.DeleteKey( + "<KEY_ID>", +) + +if err != nil { + panic(err) +} + +fmt.Println("API key deleted") +``` +```server-rust +project.delete_key( + "<KEY_ID>", +).await?; +``` +```bash +appwrite project delete-key \ + --key-id '<KEY_ID>' +``` +```http +DELETE /v1/project/keys/<KEY_ID> HTTP/1.1 +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> +``` +{% /multicode %} + +The delete takes effect immediately, so only run it once you have confirmed nothing is still authenticating with the old secret. The same call revokes a key that has leaked, without waiting for its expiry. + +# Issue a short-lived ephemeral key {% #ephemeral-access %} + +Not every job deserves a long-lived key. A support engineer running a one-off migration, or a script that needs an hour of access, can take an ephemeral key instead. It carries its scopes and a lifetime of up to an hour, then expires on its own with nothing for you to revoke afterward. + +{% multicode %} +```server-nodejs +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-deno +const result = await project.createEphemeralKey({ + scopes: [ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite], + duration: 600 +}); +``` +```server-php +$result = $project->createEphemeralKey( + scopes: ['tables.read', 'tables.write'], + duration: 600 +); +``` +```server-python +result = project.create_ephemeral_key( + scopes=[ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE], + duration=600 +) +``` +```server-ruby +response = project.create_ephemeral_key( + scopes: ['tables.read', 'tables.write'], + duration: 600 +) +``` +```server-dotnet +var result = await project.CreateEphemeralKey( + scopes: new List<ProjectKeyScopes> {ProjectKeyScopes.TablesRead, ProjectKeyScopes.TablesWrite}, + duration: 600 +); +``` +```server-dart +final result = await project.createEphemeralKey( + scopes: [enums.ProjectKeyScopes.tablesRead, enums.ProjectKeyScopes.tablesWrite], + duration: 600, +); +``` +```server-kotlin +val result = project.createEphemeralKey( + scopes = listOf(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), + duration = 600 +) +``` +```server-java +project.createEphemeralKey( + List.of(ProjectKeyScopes.TABLES_READ, ProjectKeyScopes.TABLES_WRITE), // scopes + 600, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.createEphemeralKey( + scopes: [ProjectKeyScopes.tablesRead, ProjectKeyScopes.tablesWrite], + duration: 600 +) +``` +```server-go +result, err := project.CreateEphemeralKey( + []string{"tables.read", "tables.write"}, + 600, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.create_ephemeral_key( + vec![ProjectKeyScopes::TablesRead, ProjectKeyScopes::TablesWrite], // scopes + 600, // duration +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project create-ephemeral-key \ + --scopes tables.read tables.write \ + --duration 600 +``` +```http +POST /v1/project/keys/ephemeral HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "scopes": ["tables.read", "tables.write"], + "duration": 600 +} +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +Running a key's whole life from code is what lets you treat customer credentials as managed infrastructure instead of secrets someone pasted once. The same Project API covers the rest of a project's life: + +- [Provision a project's baseline](/docs/partners/project/provisioning) before you issue its first key. +- Read the [API keys](/docs/partners/project/api-keys) reference for the full list of scopes a key can hold. diff --git a/src/routes/docs/partners/project/labels/+page.markdoc b/src/routes/docs/partners/project/labels/+page.markdoc new file mode 100644 index 0000000000..a827241450 --- /dev/null +++ b/src/routes/docs/partners/project/labels/+page.markdoc @@ -0,0 +1,270 @@ +--- +layout: article +title: Labels +description: Assign customizable labels to your Appwrite project to categorize and filter projects within an organization. +--- + +Labels are short alphanumeric tags you assign to a project. Use them to categorize your projects and filter them within an organization, for example by environment (`production`, `staging`), team, or region. + +# Manage in the Console {% #console %} + +{% only_dark %} +![Project labels in the Appwrite Console](/images/docs/project/dark/labels.avif) +{% /only_dark %} +{% only_light %} +![Project labels in the Appwrite Console](/images/docs/project/labels.avif) +{% /only_light %} + +To manage labels from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Settings** section. The **Labels** card is on the **Overview** tab. +3. In the **Labels** field, type a label and press Enter, or select one of the suggested labels. Labels may contain only alphanumeric characters. +4. Click **Update** to save your changes. + +# Manage with a Server SDK {% #server-sdks %} + +You can also manage project labels programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +## Update labels {% #update-labels %} + +The `labels` array replaces the project's existing labels, so include every label you want to keep in each call. A project can have up to 1000 labels, each up to 36 alphanumeric characters long. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateLabels({ + labels: ['production', 'eu'] +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateLabels({ + labels: ['production', 'eu'] +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->updateLabels( + labels: ['production', 'eu'] +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: ProjectModel = project.update_labels( + labels = ['production', 'eu'] +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.update_labels( + labels: ['production', 'eu'] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Project result = await project.UpdateLabels( + labels: new List<string> { "production", "eu" } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Project result = await project.updateLabels( + labels: ['production', 'eu'], +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.updateLabels( + labels = listOf("production", "eu") +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.updateLabels( + List.of("production", "eu"), // labels + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.updateLabels( + labels: ["production", "eu"] +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateLabels( + []interface{}{"production", "eu"}, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.update_labels( + vec!["production", "eu"] + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-labels \ + --labels production \ + --labels eu +``` +{% /multicode %} + +{% info title="Reading labels" %} +Labels have no dedicated read endpoint. Call `get` to fetch the project and read its `labels` field. + +```server-nodejs +const result = await project.get(); +console.log(result.labels); // ['production', 'eu'] +``` +{% /info %} + +# Benefits {% #benefits %} + +- **Organize at scale.** Group related projects with shared tags such as environment, team, or region, so large organizations stay navigable. +- **Faster filtering.** Find the projects you need by filtering an organization on its labels instead of scanning the full list. +- **Repeatable provisioning.** Apply a consistent labeling scheme across projects from a script, keeping your organization tidy without manual Console work. diff --git a/src/routes/docs/partners/project/mock-phones/+page.markdoc b/src/routes/docs/partners/project/mock-phones/+page.markdoc new file mode 100644 index 0000000000..5f52881eee --- /dev/null +++ b/src/routes/docs/partners/project/mock-phones/+page.markdoc @@ -0,0 +1,1098 @@ +--- +layout: article +title: Mock phones +description: Register fictional phone numbers and OTPs to test phone authentication flows without sending real SMS messages. +--- + +Mock phones let you register fictional phone numbers and a fixed verification code at the project level. When a tester signs in with a registered number, the registered code works in place of a real SMS, so phone authentication flows can be exercised in CI, demo accounts, and app store review submissions without sending SMS or paying provider fees. + +Each project stores its mock phones on the project document. Numbers must be in [E.164](https://en.wikipedia.org/wiki/E.164) format, and verification codes are exactly six digits. + +# Add from the Console {% #toggle-console %} + +{% only_dark %} +![Mock phone numbers settings in the Appwrite Console](/images/docs/project/dark/mock-phones.avif) +{% /only_dark %} +{% only_light %} +![Mock phone numbers settings in the Appwrite Console](/images/docs/project/mock-phones.avif) +{% /only_light %} + +To add a mock phone manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. Scroll to the **Mock phone numbers** card and click **Add a number**. +4. Enter a phone number in E.164 format (for example, `+15555550100`) and a six-digit verification code. +5. Click **Save** on the row, then **Update** at the bottom of the section to persist. + +Use fictional ranges (such as North American `555` numbers) to avoid collision with real subscribers. + +# Manage with a Server SDK {% #manage-with-sdk %} + +The Project service exposes endpoints to list, create, get, update, and delete mock phones. All endpoints require an API key with the appropriate scope or a Console session. + +{% info title="Required scopes" %} +Reading mock phones requires the `mocks.read` scope. Creating, updating, or deleting requires `mocks.write`. +{% /info %} + +## Create a mock phone {% #create-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createMockPhone({ + number: '+15555550100', + otp: '123456' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createMockPhone({ + number: '+15555550100', + otp: '123456' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createMockPhone( + number: '+15555550100', + otp: '123456' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_mock_phone( + number = '+15555550100', + otp = '123456' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.create_mock_phone( + number: '+15555550100', + otp: '123456' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateMockPhone( + number: "+15555550100", + otp: "123456" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createMockPhone( + number: '+15555550100', + otp: '123456', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.createMockPhone( + number = "+15555550100", + otp = "123456" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createMockPhone( + "+15555550100", // number + "123456", // otp + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createMockPhone( + number: "+15555550100", + otp: "123456" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateMockPhone( + "+15555550100", + "123456", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_mock_phone( + "+15555550100", + "123456", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-mock-phone \ + --number +15555550100 \ + --otp 123456 +``` +{% /multicode %} + +The endpoint returns the new [MockNumber](/docs/references/cloud/models/mockNumber) document. + +## List mock phones {% #list-mock-phones %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listMockPhones(); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listMockPhones(); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->listMockPhones(); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.list_mock_phones() +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.list_mock_phones() +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.ListMockPhones(); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.listMockPhones(); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.listMockPhones() +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.listMockPhones(new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); +})); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.listMockPhones() +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.ListMockPhones() + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.list_mock_phones(None, None).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-mock-phones \ + --limit 25 +``` +{% /multicode %} + +## Get a mock phone {% #get-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getMockPhone({ + number: '+15555550100' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getMockPhone({ + number: '+15555550100' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->getMockPhone( + number: '+15555550100' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.get_mock_phone( + number = '+15555550100' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.get_mock_phone( + number: '+15555550100' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.GetMockPhone( + number: "+15555550100" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.getMockPhone( + number: '+15555550100', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.getMockPhone( + number = "+15555550100" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.getMockPhone( + "+15555550100", // number + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.getMockPhone( + number: "+15555550100" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.GetMockPhone("+15555550100") + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.get_mock_phone("+15555550100").await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-mock-phone --number +15555550100 +``` +{% /multicode %} + +## Update a mock phone {% #update-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateMockPhone({ + number: '+15555550100', + otp: '654321' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateMockPhone({ + number: '+15555550100', + otp: '654321' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateMockPhone( + number: '+15555550100', + otp: '654321' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_mock_phone( + number = '+15555550100', + otp = '654321' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.update_mock_phone( + number: '+15555550100', + otp: '654321' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateMockPhone( + number: "+15555550100", + otp: "654321" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateMockPhone( + number: '+15555550100', + otp: '654321', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.updateMockPhone( + number = "+15555550100", + otp = "654321" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateMockPhone( + "+15555550100", // number + "654321", // otp + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateMockPhone( + number: "+15555550100", + otp: "654321" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateMockPhone("+15555550100", "654321") + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_mock_phone("+15555550100", "654321").await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-mock-phone \ + --number +15555550100 \ + --otp 654321 +``` +{% /multicode %} + +## Delete a mock phone {% #delete-mock-phone %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deleteMockPhone({ + number: '+15555550100' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deleteMockPhone({ + number: '+15555550100' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$project->deleteMockPhone( + number: '+15555550100' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +project.delete_mock_phone( + number = '+15555550100' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +project.delete_mock_phone( + number: '+15555550100' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +await project.DeleteMockPhone( + number: "+15555550100" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +await project.deleteMockPhone( + number: '+15555550100', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +project.deleteMockPhone( + number = "+15555550100" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.deleteMockPhone( + "+15555550100", // number + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +try await project.deleteMockPhone( + number: "+15555550100" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + _, err := project.DeleteMockPhone("+15555550100") + + if err != nil { + panic(err) + } + + fmt.Println("deleted") +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + project.delete_mock_phone("+15555550100").await?; + + Ok(()) +} +``` +```bash +appwrite project delete-mock-phone --number +15555550100 +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **No SMS costs in test flows.** Exercise phone authentication in CI, demo accounts, and app store review submissions without sending real SMS or paying provider fees. +- **Stable credentials for automation.** Registered numbers and codes don't expire or rotate, so end-to-end tests stay deterministic across runs. +- **Repeatable provisioning.** Script the mock phone set a project should expose and apply it from CI when spinning up a new environment. diff --git a/src/routes/docs/partners/project/oauth/+page.markdoc b/src/routes/docs/partners/project/oauth/+page.markdoc new file mode 100644 index 0000000000..6f837f3880 --- /dev/null +++ b/src/routes/docs/partners/project/oauth/+page.markdoc @@ -0,0 +1,1060 @@ +--- +layout: article +title: OAuth providers +description: Configure OAuth2 sign-in providers for your project from the Console or programmatically with a Server SDK. +--- + +OAuth2 providers let your users sign in with accounts they already have, such as GitHub, Google, or Apple. Each provider stores a client ID and client secret at the project level, and can be enabled or disabled independently. + +You can configure providers from the Appwrite Console or programmatically with a [Server SDK](/docs/sdks#server). Each provider has its own update method (`updateOAuth2GitHub`, `updateOAuth2Google`, and so on), the read methods `listOAuth2Providers` and `getOAuth2Provider` cover all of them. + +# Configure from the Console {% #configure-console %} + +{% only_dark %} +![OAuth2 providers in the Appwrite Console](/images/docs/project/dark/oauth-providers.avif) +{% /only_dark %} +{% only_light %} +![OAuth2 providers in the Appwrite Console](/images/docs/project/oauth-providers.avif) +{% /only_light %} + +To configure a provider from the Console: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar, then open the **Settings** tab. +3. Find the provider in the **OAuth2 Providers** list and click it. +4. Enter the credentials from the provider (the field names vary per provider, see [Available providers](#available-providers)). +5. Toggle the provider on and click **Update**. + +# Configure a provider {% #configure-provider %} + +Each provider has a dedicated update method named `updateOAuth2<Provider>`. The example below configures GitHub. Swap the method name and credential fields to configure a different provider, the field names per provider are listed in [Available providers](#available-providers). + +{% info title="Required scopes" %} +The API key used for these calls needs `oauth2.write` to configure providers, and `oauth2.read` to list or fetch them. +{% /info %} + +{% info title="Enabling validates credentials" %} +Setting `enabled` to `true` triggers end-to-end validation of the credentials against the provider, and the request throws if they are invalid. To store credentials without activating the provider yet, send them with `enabled` set to `false`. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateOAuth2GitHub({ + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateOAuth2GitHub({ + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateOAuth2GitHub( + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_o_auth2_git_hub( + client_id = '<CLIENT_ID>', + client_secret = '<CLIENT_SECRET>', + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_o_auth2_git_hub( + client_id: '<CLIENT_ID>', + client_secret: '<CLIENT_SECRET>', + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateOAuth2GitHub( + clientId: "<CLIENT_ID>", + clientSecret: "<CLIENT_SECRET>", + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateOAuth2GitHub( + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateOAuth2GitHub( + clientId = "<CLIENT_ID>", + clientSecret = "<CLIENT_SECRET>", + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateOAuth2GitHub( + "<CLIENT_ID>", // clientId + "<CLIENT_SECRET>", // clientSecret + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateOAuth2GitHub( + clientId: "<CLIENT_ID>", + clientSecret: "<CLIENT_SECRET>", + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateOAuth2GitHub( + service.WithUpdateOAuth2GitHubClientId("<CLIENT_ID>"), + service.WithUpdateOAuth2GitHubClientSecret("<CLIENT_SECRET>"), + service.WithUpdateOAuth2GitHubEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_o_auth2_git_hub( + Some("<CLIENT_ID>"), + Some("<CLIENT_SECRET>"), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-o-auth-2-git-hub \ + --client-id "<CLIENT_ID>" \ + --client-secret "<CLIENT_SECRET>" \ + --enabled true +``` +{% /multicode %} + +## Providers with extra fields {% #provider-extra-fields %} + +Some providers take more than a client ID and secret. Google, for example, accepts an additional `prompt` parameter that controls the consent screen behavior: + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectOAuth2GooglePrompt } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateOAuth2Google({ + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + prompt: [ProjectOAuth2GooglePrompt.SelectAccount], + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectOAuth2GooglePrompt } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateOAuth2Google({ + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + prompt: [ProjectOAuth2GooglePrompt.SelectAccount], + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Enums\ProjectOAuth2GooglePrompt; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateOAuth2Google( + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + prompt: [ProjectOAuth2GooglePrompt::SELECTACCOUNT()], + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectOAuth2GooglePrompt +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_o_auth2_google( + client_id = '<CLIENT_ID>', + client_secret = '<CLIENT_SECRET>', + prompt = [ProjectOAuth2GooglePrompt.SELECT_ACCOUNT], + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_o_auth2_google( + client_id: '<CLIENT_ID>', + client_secret: '<CLIENT_SECRET>', + prompt: [ProjectOAuth2GooglePrompt::SELECT_ACCOUNT], + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateOAuth2Google( + clientId: "<CLIENT_ID>", + clientSecret: "<CLIENT_SECRET>", + prompt: new List<ProjectOAuth2GooglePrompt> {ProjectOAuth2GooglePrompt.SelectAccount}, + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateOAuth2Google( + clientId: '<CLIENT_ID>', + clientSecret: '<CLIENT_SECRET>', + prompt: [enums.ProjectOAuth2GooglePrompt.selectAccount], + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectOAuth2GooglePrompt +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateOAuth2Google( + clientId = "<CLIENT_ID>", + clientSecret = "<CLIENT_SECRET>", + prompt = listOf(ProjectOAuth2GooglePrompt.SELECT_ACCOUNT), + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectOAuth2GooglePrompt; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateOAuth2Google( + "<CLIENT_ID>", // clientId + "<CLIENT_SECRET>", // clientSecret + listOf(ProjectOAuth2GooglePrompt.SELECT_ACCOUNT), // prompt + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateOAuth2Google( + clientId: "<CLIENT_ID>", + clientSecret: "<CLIENT_SECRET>", + prompt: [.selectAccount], + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateOAuth2Google( + service.WithUpdateOAuth2GoogleClientId("<CLIENT_ID>"), + service.WithUpdateOAuth2GoogleClientSecret("<CLIENT_SECRET>"), + service.WithUpdateOAuth2GooglePrompt([]string{"select_account"}), + service.WithUpdateOAuth2GoogleEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectOAuth2GooglePrompt; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_o_auth2_google( + Some("<CLIENT_ID>"), + Some("<CLIENT_SECRET>"), + Some(vec![ProjectOAuth2GooglePrompt::SelectAccount]), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-o-auth-2-google \ + --client-id "<CLIENT_ID>" \ + --client-secret "<CLIENT_SECRET>" \ + --prompt "select_account" \ + --enabled true +``` +{% /multicode %} + +# Available providers {% #available-providers %} + +Every provider has its own `updateOAuth2<Provider>` method. The credential field names differ per provider, use the columns below to map the provider's credentials to the method's parameters. + +| Provider | SDK method | App ID field | App secret field | Other fields | +| --- | --- | --- | --- | --- | +| Amazon | `updateOAuth2Amazon` | `clientId` | `clientSecret` | | +| Apple | `updateOAuth2Apple` | `serviceId` | `keyId` | `teamId` | +| Auth0 | `updateOAuth2Auth0` | `clientId` | `clientSecret` | `endpoint` | +| Authentik | `updateOAuth2Authentik` | `clientId` | `clientSecret` | `endpoint` | +| Autodesk | `updateOAuth2Autodesk` | `clientId` | `clientSecret` | | +| Bitbucket | `updateOAuth2Bitbucket` | `key` | `secret` | | +| Bitly | `updateOAuth2Bitly` | `clientId` | `clientSecret` | | +| Box | `updateOAuth2Box` | `clientId` | `clientSecret` | | +| Dailymotion | `updateOAuth2Dailymotion` | `apiKey` | `apiSecret` | | +| Discord | `updateOAuth2Discord` | `clientId` | `clientSecret` | | +| Disqus | `updateOAuth2Disqus` | `publicKey` | `secretKey` | | +| Dropbox | `updateOAuth2Dropbox` | `appKey` | `appSecret` | | +| Etsy | `updateOAuth2Etsy` | `keyString` | `sharedSecret` | | +| Facebook | `updateOAuth2Facebook` | `appId` | `appSecret` | | +| Figma | `updateOAuth2Figma` | `clientId` | `clientSecret` | | +| FusionAuth | `updateOAuth2FusionAuth` | `clientId` | `clientSecret` | `endpoint` | +| GitHub | `updateOAuth2GitHub` | `clientId` | `clientSecret` | | +| GitLab | `updateOAuth2Gitlab` | `applicationId` | `secret` | `endpoint` | +| Google | `updateOAuth2Google` | `clientId` | `clientSecret` | `prompt` | +| Keycloak | `updateOAuth2Keycloak` | `clientId` | `clientSecret` | `endpoint`, `realmName` | +| Kick | `updateOAuth2Kick` | `clientId` | `clientSecret` | | +| LinkedIn | `updateOAuth2Linkedin` | `clientId` | `primaryClientSecret` | | +| Microsoft | `updateOAuth2Microsoft` | `applicationId` | `applicationSecret` | `tenant` | +| Notion | `updateOAuth2Notion` | `oauthClientId` | `oauthClientSecret` | | +| OIDC | `updateOAuth2Oidc` | `clientId` | `clientSecret` | `wellKnownURL`, `authorizationURL`, `tokenURL`, `userInfoURL` | +| Okta | `updateOAuth2Okta` | `clientId` | `clientSecret` | `domain`, `authorizationServerId` | +| PayPal | `updateOAuth2Paypal` | `clientId` | `secretKey` | | +| PayPal Sandbox | `updateOAuth2PaypalSandbox` | `clientId` | `secretKey` | | +| Podio | `updateOAuth2Podio` | `clientId` | `clientSecret` | | +| Salesforce | `updateOAuth2Salesforce` | `customerKey` | `customerSecret` | | +| Slack | `updateOAuth2Slack` | `clientId` | `clientSecret` | | +| Spotify | `updateOAuth2Spotify` | `clientId` | `clientSecret` | | +| Stripe | `updateOAuth2Stripe` | `clientId` | `apiSecretKey` | | +| Tradeshift | `updateOAuth2Tradeshift` | | | `enabled` only | +| Tradeshift Sandbox | `updateOAuth2TradeshiftSandbox` | | | `enabled` only | +| Twitch | `updateOAuth2Twitch` | `clientId` | `clientSecret` | | +| WordPress | `updateOAuth2WordPress` | `clientId` | `clientSecret` | | +| X | `updateOAuth2X` | `customerKey` | `secretKey` | | +| Yahoo | `updateOAuth2Yahoo` | `clientId` | `clientSecret` | | +| Yandex | `updateOAuth2Yandex` | `clientId` | `clientSecret` | | +| Zoho | `updateOAuth2Zoho` | `clientId` | `clientSecret` | | +| Zoom | `updateOAuth2Zoom` | `clientId` | `clientSecret` | | + +{% info title="Apple is in beta" %} +The Apple provider is currently in beta. +{% /info %} + +# List providers {% #list-providers %} + +List every OAuth2 provider and its current configuration state. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listOAuth2Providers({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listOAuth2Providers({ + queries: [], + total: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->listOAuth2Providers( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.list_o_auth2_providers( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.list_o_auth2_providers( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.ListOAuth2Providers( + queries: new List<string>(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.listOAuth2Providers( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.listOAuth2Providers( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.listOAuth2Providers( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.listOAuth2Providers( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.ListOAuth2Providers( + service.WithListOAuth2ProvidersQueries([]string{}), + service.WithListOAuth2ProvidersTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.list_o_auth2_providers( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-o-auth-2-providers \ + --limit 25 +``` +{% /multicode %} + +# Get a provider {% #get-provider %} + +Fetch a single provider's configuration by its provider ID. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectOAuthProviderId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getOAuth2Provider({ + providerId: ProjectOAuthProviderId.Github +}); +``` +```server-deno +import { Client, Project, ProjectOAuthProviderId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getOAuth2Provider({ + providerId: ProjectOAuthProviderId.Github +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Enums\ProjectOAuthProviderId; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->getOAuth2Provider( + providerId: ProjectOAuthProviderId::GITHUB() +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectOAuthProviderId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.get_o_auth2_provider( + provider_id = ProjectOAuthProviderId.GITHUB +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.get_o_auth2_provider( + provider_id: ProjectOAuthProviderId::GITHUB +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.GetOAuth2Provider( + providerId: ProjectOAuthProviderId.Github +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.getOAuth2Provider( + providerId: enums.ProjectOAuthProviderId.github, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectOAuthProviderId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.getOAuth2Provider( + providerId = ProjectOAuthProviderId.GITHUB +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectOAuthProviderId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.getOAuth2Provider( + ProjectOAuthProviderId.GITHUB, // providerId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.getOAuth2Provider( + providerId: .github +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.GetOAuth2Provider( + "github", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectOAuthProviderId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.get_o_auth2_provider( + ProjectOAuthProviderId::Github, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-o-auth-2-provider \ + --provider-id github +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Repeatable provisioning.** Script the full set of OAuth2 providers a project needs and recreate it on demand, without clicking through the Console. +- **Environment parity.** Keep dev, staging, and production projects in sync by running the same configuration script against each one. +- **Server-only secrets.** Client secrets are write-only over the API and never returned in responses, so configuration scripts can run in CI without exposing them. diff --git a/src/routes/docs/partners/project/platforms/+page.markdoc b/src/routes/docs/partners/project/platforms/+page.markdoc new file mode 100644 index 0000000000..d2aa0da845 --- /dev/null +++ b/src/routes/docs/partners/project/platforms/+page.markdoc @@ -0,0 +1,1206 @@ +--- +layout: article +title: Platforms +description: Register Web, Apple, Android, Windows, and Linux apps to your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project has a list of registered platforms. A platform identifies a client application that is allowed to talk to your project's API: a Web platform pins an allowed hostname for CORS, while Apple, Android, Windows, and Linux platforms pin a bundle, package, or application ID for native clients. + +Platforms can be added from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project platforms in the Appwrite Console](/images/docs/project/dark/platforms.avif) +{% /only_dark %} +{% only_light %} +![Project platforms in the Appwrite Console](/images/docs/project/platforms.avif) +{% /only_light %} + +To add a platform manually: + +1. Open your project in the Appwrite Console. +2. On the project **Overview**, scroll to the **Integrations** card and select the **Platforms** tab. +3. Click **Add platform** and choose the platform type (Web, Flutter, Android, Apple, or React Native). +4. Fill in the name and the platform's identifier (hostname for Web, bundle or package ID for native), then click **Create platform**. +5. To rename or remove a platform later, click its row and use the edit dialog or the **Delete** button. + +# Platform types {% #platform-types %} + +The Project service exposes a dedicated create method per platform type. Each method takes a unique `platformId`, a display `name`, and the platform's identifier: + +| Type | Method | Identifier param | +| --- | --- | --- | +| Web | `createWebPlatform` | `hostname` (e.g. `app.example.com`) | +| Apple | `createApplePlatform` | `bundleIdentifier` (e.g. `com.example.app`) | +| Android | `createAndroidPlatform` | `applicationId` (e.g. `com.example.app`) | +| Windows | `createWindowsPlatform` | `packageIdentifierName` | +| Linux | `createLinuxPlatform` | `packageName` | + +Flutter and React Native platforms shown in the Console map to the underlying Apple, Android, or Web type based on the target you pick. + +# Register a platform {% #register-platform %} + +The example below registers a Web platform. Swap the method name and identifier param to register Apple, Android, Windows, or Linux platforms. + +{% info title="Required scopes" %} +The API key used for these calls needs `platforms.write` to create, update, or delete platforms, and `platforms.read` to list or fetch them. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createWebPlatform( + platformId: ID::unique(), + name: 'My Web App', + hostname: 'app.example.com' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_web_platform( + platform_id = ID.unique(), + name = 'My Web App', + hostname = 'app.example.com' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.create_web_platform( + platform_id: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateWebPlatform( + platformId: ID.Unique(), + name: "My Web App", + hostname: "app.example.com" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createWebPlatform( + platformId: ID.unique(), + name: 'My Web App', + hostname: 'app.example.com', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.createWebPlatform( + platformId = ID.unique(), + name = "My Web App", + hostname = "app.example.com" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createWebPlatform( + ID.unique(), // platformId + "My Web App", // name + "app.example.com", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createWebPlatform( + platformId: ID.unique(), + name: "My Web App", + hostname: "app.example.com" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateWebPlatform( + id.Unique(), + "My Web App", + "app.example.com", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_web_platform( + ID::unique(), + "My Web App", + "app.example.com", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-web-platform \ + --platform-id 'unique()' \ + --name "My Web App" \ + --hostname app.example.com +``` +{% /multicode %} + +# List platforms {% #list-platforms %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listPlatforms({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listPlatforms({ + queries: [], + total: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->listPlatforms( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.list_platforms( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.list_platforms( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.ListPlatforms( + queries: new List<string>(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.listPlatforms( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.listPlatforms( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.listPlatforms( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.listPlatforms( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.ListPlatforms( + project.WithListPlatformsQueries([]interface{}{}), + project.WithListPlatformsTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.list_platforms( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-platforms \ + --limit 25 +``` +{% /multicode %} + +# Get a platform {% #get-platform %} + +Fetch a single platform by its ID. The response includes the platform's type-specific fields, such as `hostname` for Web or `bundleIdentifier` for Apple. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getPlatform({ + platformId: '<PLATFORM_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getPlatform({ + platformId: '<PLATFORM_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->getPlatform( + platformId: '<PLATFORM_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.get_platform( + platform_id = '<PLATFORM_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +result = project.get_platform( + platform_id: '<PLATFORM_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.GetPlatform( + platformId: "<PLATFORM_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.getPlatform( + platformId: '<PLATFORM_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val result = project.getPlatform( + platformId = "<PLATFORM_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.getPlatform( + "<PLATFORM_ID>", // platformId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.getPlatform( + platformId: "<PLATFORM_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.GetPlatform( + "<PLATFORM_ID>", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.get_platform( + "<PLATFORM_ID>", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-platform \ + --platform-id <PLATFORM_ID> +``` +{% /multicode %} + +# Update a platform {% #update-platform %} + +Each platform type has a matching update method (`updateWebPlatform`, `updateApplePlatform`, and so on). The example below updates a Web platform's name and hostname. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateWebPlatform({ + platformId: '<PLATFORM_ID>', + name: 'Renamed Web App', + hostname: 'app.example.com' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateWebPlatform({ + platformId: '<PLATFORM_ID>', + name: 'Renamed Web App', + hostname: 'app.example.com' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateWebPlatform( + platformId: '<PLATFORM_ID>', + name: 'Renamed Web App', + hostname: 'app.example.com' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_web_platform( + platform_id = '<PLATFORM_ID>', + name = 'Renamed Web App', + hostname = 'app.example.com' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_web_platform( + platform_id: '<PLATFORM_ID>', + name: 'Renamed Web App', + hostname: 'app.example.com' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateWebPlatform( + platformId: "<PLATFORM_ID>", + name: "Renamed Web App", + hostname: "app.example.com" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateWebPlatform( + platformId: '<PLATFORM_ID>', + name: 'Renamed Web App', + hostname: 'app.example.com', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateWebPlatform( + platformId = "<PLATFORM_ID>", + name = "Renamed Web App", + hostname = "app.example.com" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateWebPlatform( + "<PLATFORM_ID>", // platformId + "Renamed Web App", // name + "app.example.com", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateWebPlatform( + platformId: "<PLATFORM_ID>", + name: "Renamed Web App", + hostname: "app.example.com" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateWebPlatform( + "<PLATFORM_ID>", + "Renamed Web App", + "app.example.com", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_web_platform( + "<PLATFORM_ID>", + "Renamed Web App", + "app.example.com", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-web-platform \ + --platform-id <PLATFORM_ID> \ + --name "Renamed Web App" \ + --hostname app.example.com +``` +{% /multicode %} + +# Delete a platform {% #delete-platform %} + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deletePlatform({ + platformId: '<PLATFORM_ID>' +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +await project.deletePlatform({ + platformId: '<PLATFORM_ID>' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$project->deletePlatform( + platformId: '<PLATFORM_ID>' +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +project.delete_platform( + platform_id = '<PLATFORM_ID>' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +project.delete_platform( + platform_id: '<PLATFORM_ID>' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +await project.DeletePlatform( + platformId: "<PLATFORM_ID>" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +await project.deletePlatform( + platformId: '<PLATFORM_ID>', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +project.deletePlatform( + platformId = "<PLATFORM_ID>" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.deletePlatform( + "<PLATFORM_ID>", // platformId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +try await project.deletePlatform( + platformId: "<PLATFORM_ID>" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.DeletePlatform( + "<PLATFORM_ID>", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + project.delete_platform( + "<PLATFORM_ID>", + ).await?; + + Ok(()) +} +``` +```bash +appwrite project delete-platform \ + --platform-id <PLATFORM_ID> +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Repeatable provisioning.** Script the full set of platforms a project needs and recreate it on demand, without clicking through the Console. +- **Environment parity.** Keep dev, staging, and production projects in sync by running the same script against each one. +- **CI and automation.** Add or rotate platforms from a CI job when a new preview environment spins up or a domain changes. diff --git a/src/routes/docs/partners/project/policies/+page.markdoc b/src/routes/docs/partners/project/policies/+page.markdoc new file mode 100644 index 0000000000..aad7649d60 --- /dev/null +++ b/src/routes/docs/partners/project/policies/+page.markdoc @@ -0,0 +1,3407 @@ +--- +layout: article +title: Policies +description: Configure password rules, session limits, user limits, and membership privacy on your Appwrite project programmatically using server SDKs. +--- + +Project policies control how users authenticate, how long their sessions live, how many users can sign up, and what team members can see about each other. Each policy is an independent toggle on the project. + +Policies can be configured from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project policies in the Appwrite Console](/images/docs/project/dark/policies.avif) +{% /only_dark %} +{% only_light %} +![Project policies in the Appwrite Console](/images/docs/project/policies.avif) +{% /only_light %} + +To configure policies manually: + +1. Open your project in the Appwrite Console. +2. Navigate to **Auth** in the sidebar. +3. Open the **Security** tab. +4. Adjust the policy you want, then click **Update** on its card. + +# Available policies {% #available-policies %} + +| Policy ID | SDK method | Body | +| --- | --- | --- | +| `password-dictionary` | `updatePasswordDictionaryPolicy` | `enabled` | +| `password-history` | `updatePasswordHistoryPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `password-strength` | `updatePasswordStrengthPolicy` | `min` (8–256, default 8), `uppercase`, `lowercase`, `number`, `symbols` (all optional) | +| `password-personal-data` | `updatePasswordPersonalDataPolicy` | `enabled` | +| `session-alert` | `updateSessionAlertPolicy` | `enabled` | +| `session-duration` | `updateSessionDurationPolicy` | `duration` (5–31536000 seconds) | +| `session-invalidation` | `updateSessionInvalidationPolicy` | `enabled` | +| `session-limit` | `updateSessionLimitPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `user-limit` | `updateUserLimitPolicy` | `total` (1–`APP_LIMIT_COUNT`, or `null`) | +| `membership-privacy` | `updateMembershipPrivacyPolicy` | `userId`, `userEmail`, `userPhone`, `userName`, `userMFA` (all bool, all optional) | +| `deny-aliased-email` | `updateDenyAliasedEmailPolicy` | `enabled` | +| `deny-disposable-email` | `updateDenyDisposableEmailPolicy` | `enabled` | +| `deny-free-email` | `updateDenyFreeEmailPolicy` | `enabled` | + +{% info title="Required scopes" %} +The API key used for these calls needs `project.policies.read` to list or fetch policies, and `project.policies.write` to update them. +{% /info %} + +# List policies {% #list-policies %} + +List all policies configured for the project along with their current state. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listPolicies({ + queries: [], + total: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.listPolicies({ + queries: [], + total: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->listPolicies( + queries: [], + total: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.list_policies( + queries = [], + total = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.list_policies( + queries: [], + total: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.ListPolicies( + queries: new List<string>(), + total: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.listPolicies( + queries: [], + total: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.listPolicies( + queries = listOf(), + total = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.listPolicies( + List.of(), // queries + false, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.listPolicies( + queries: [], + total: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.ListPolicies( + project.WithListPoliciesQueries([]interface{}{}), + project.WithListPoliciesTotal(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.list_policies( + Some(vec![]), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project list-policies \ + --limit 25 +``` +{% /multicode %} + +# Get a policy {% #get-policy %} + +Fetch a single policy by its ID. The response fields depend on the policy type, matching the [Available policies](#available-policies) table above. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectPolicyId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getPolicy({ + policyId: ProjectPolicyId.Passworddictionary +}); +``` +```server-deno +import { Client, Project, ProjectPolicyId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.getPolicy({ + policyId: ProjectPolicyId.Passworddictionary +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Enums\ProjectPolicyId; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->getPolicy( + policyId: ProjectPolicyId::PASSWORDDICTIONARY() +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectPolicyId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.get_policy( + policy_id = ProjectPolicyId.PASSWORD_DICTIONARY +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.get_policy( + policy_id: ProjectPolicyId::PASSWORD_DICTIONARY +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.GetPolicy( + policyId: ProjectPolicyId.PasswordDictionary +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.getPolicy( + policyId: enums.ProjectPolicyId.passwordDictionary, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectPolicyId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.getPolicy( + policyId = ProjectPolicyId.PASSWORD_DICTIONARY +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectPolicyId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.getPolicy( + ProjectPolicyId.PASSWORD_DICTIONARY, // policyId + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.getPolicy( + policyId: .passwordDictionary +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.GetPolicy( + "password-dictionary", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectPolicyId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.get_policy( + ProjectPolicyId::PasswordDictionary, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project get-policy \ + --policy-id password-dictionary +``` +{% /multicode %} + +# Update password dictionary policy {% #update-password-dictionary-policy %} + +When enabled, new passwords are checked against a dictionary of common passwords and rejected if they match. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordDictionaryPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordDictionaryPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updatePasswordDictionaryPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_password_dictionary_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_password_dictionary_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdatePasswordDictionaryPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updatePasswordDictionaryPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updatePasswordDictionaryPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updatePasswordDictionaryPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updatePasswordDictionaryPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordDictionaryPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_password_dictionary_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-dictionary-policy \ + --enabled true +``` +{% /multicode %} + +# Update password history policy {% #update-password-history-policy %} + +Stores the last `total` password hashes per user and rejects new passwords that match. Pass `null` to disable. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordHistoryPolicy({ + total: 5 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordHistoryPolicy({ + total: 5 +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updatePasswordHistoryPolicy( + total: 5 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_password_history_policy( + total = 5 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_password_history_policy( + total: 5 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdatePasswordHistoryPolicy( + total: 5 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updatePasswordHistoryPolicy( + total: 5, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updatePasswordHistoryPolicy( + total = 5 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updatePasswordHistoryPolicy( + 5, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updatePasswordHistoryPolicy( + total: 5 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordHistoryPolicy(5) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_password_history_policy(5).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-history-policy \ + --total 5 +``` +{% /multicode %} + +# Update password strength policy {% #update-password-strength-policy %} + +Set the minimum password length and which character types new passwords must contain. Each field is optional, and any field you omit keeps its current value. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordStrengthPolicy({ + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordStrengthPolicy({ + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_password_strength_policy( + min = 8, + uppercase = True, + lowercase = True, + number = True, + symbols = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_password_strength_policy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updatePasswordStrengthPolicy( + min = 8, + uppercase = true, + lowercase = true, + number = true, + symbols = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updatePasswordStrengthPolicy( + 8, // min + true, // uppercase + true, // lowercase + true, // number + true, // symbols + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updatePasswordStrengthPolicy( + min: 8, + uppercase: true, + lowercase: true, + number: true, + symbols: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordStrengthPolicy( + project.WithUpdatePasswordStrengthPolicyMin(8), + project.WithUpdatePasswordStrengthPolicyUppercase(true), + project.WithUpdatePasswordStrengthPolicyLowercase(true), + project.WithUpdatePasswordStrengthPolicyNumber(true), + project.WithUpdatePasswordStrengthPolicySymbols(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_password_strength_policy( + Some(8), + Some(true), + Some(true), + Some(true), + Some(true), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-strength-policy \ + --min 8 \ + --uppercase true \ + --lowercase true \ + --number true \ + --symbols true +``` +{% /multicode %} + +# Update password personal data policy {% #update-password-personal-data-policy %} + +When enabled, new passwords are rejected if they contain the user's ID, name, email, or phone number. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordPersonalDataPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updatePasswordPersonalDataPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updatePasswordPersonalDataPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_password_personal_data_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_password_personal_data_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdatePasswordPersonalDataPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updatePasswordPersonalDataPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updatePasswordPersonalDataPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updatePasswordPersonalDataPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updatePasswordPersonalDataPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdatePasswordPersonalDataPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_password_personal_data_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-password-personal-data-policy \ + --enabled true +``` +{% /multicode %} + +# Update session alert policy {% #update-session-alert-policy %} + +When enabled, the user receives an email each time a new session is created. The first session after sign-up does not trigger an alert. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionAlertPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionAlertPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateSessionAlertPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_session_alert_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_session_alert_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateSessionAlertPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateSessionAlertPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateSessionAlertPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateSessionAlertPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateSessionAlertPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionAlertPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_session_alert_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-alert-policy \ + --enabled true +``` +{% /multicode %} + +# Update session duration policy {% #update-session-duration-policy %} + +Sets the maximum lifetime of a session in seconds. Valid range is 5 seconds to 31536000 seconds (one year). + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionDurationPolicy({ + duration: 86400 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionDurationPolicy({ + duration: 86400 +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateSessionDurationPolicy( + duration: 86400 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_session_duration_policy( + duration = 86400 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_session_duration_policy( + duration: 86400 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateSessionDurationPolicy( + duration: 86400 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateSessionDurationPolicy( + duration: 86400, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateSessionDurationPolicy( + duration = 86400 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateSessionDurationPolicy( + 86400, // duration + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateSessionDurationPolicy( + duration: 86400 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionDurationPolicy(86400) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_session_duration_policy(86400).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-duration-policy \ + --duration 86400 +``` +{% /multicode %} + +# Update session invalidation policy {% #update-session-invalidation-policy %} + +When enabled, all existing sessions for a user are invalidated when their password is changed. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionInvalidationPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionInvalidationPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateSessionInvalidationPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_session_invalidation_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_session_invalidation_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateSessionInvalidationPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateSessionInvalidationPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateSessionInvalidationPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateSessionInvalidationPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateSessionInvalidationPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionInvalidationPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_session_invalidation_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-invalidation-policy \ + --enabled true +``` +{% /multicode %} + +# Update session limit policy {% #update-session-limit-policy %} + +Sets the maximum number of concurrent sessions allowed per user. When the limit is reached, the oldest session is dropped to make room for a new one. Pass `null` to remove the limit. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionLimitPolicy({ + total: 10 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateSessionLimitPolicy({ + total: 10 +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateSessionLimitPolicy( + total: 10 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_session_limit_policy( + total = 10 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_session_limit_policy( + total: 10 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateSessionLimitPolicy( + total: 10 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateSessionLimitPolicy( + total: 10, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateSessionLimitPolicy( + total = 10 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateSessionLimitPolicy( + 10, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateSessionLimitPolicy( + total: 10 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateSessionLimitPolicy(10) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_session_limit_policy(10).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-session-limit-policy \ + --total 10 +``` +{% /multicode %} + +# Update user limit policy {% #update-user-limit-policy %} + +Sets the maximum number of users in the project. Existing users remain active when the limit is reached or exceeded; new sign-ups are rejected. Pass `null` to remove the limit. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateUserLimitPolicy({ + total: 1000 +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateUserLimitPolicy({ + total: 1000 +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateUserLimitPolicy( + total: 1000 +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_user_limit_policy( + total = 1000 +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_user_limit_policy( + total: 1000 +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateUserLimitPolicy( + total: 1000 +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateUserLimitPolicy( + total: 1000, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateUserLimitPolicy( + total = 1000 +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateUserLimitPolicy( + 1000, // total + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateUserLimitPolicy( + total: 1000 +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateUserLimitPolicy(1000) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_user_limit_policy(1000).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-user-limit-policy \ + --total 1000 +``` +{% /multicode %} + +# Update membership privacy policy {% #update-membership-privacy-policy %} + +Controls which fields of one team member's profile are visible to other members in the same team. Each field can be toggled independently. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateMembershipPrivacyPolicy({ + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateMembershipPrivacyPolicy({ + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_membership_privacy_policy( + user_id = True, + user_email = False, + user_phone = False, + user_name = True, + user_mfa = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_membership_privacy_policy( + user_id: true, + user_email: false, + user_phone: false, + user_name: true, + user_mfa: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateMembershipPrivacyPolicy( + userId = true, + userEmail = false, + userPhone = false, + userName = true, + userMFA = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateMembershipPrivacyPolicy( + true, // userId + false, // userEmail + false, // userPhone + true, // userName + false, // userMFA + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateMembershipPrivacyPolicy( + userId: true, + userEmail: false, + userPhone: false, + userName: true, + userMFA: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/project" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateMembershipPrivacyPolicy( + project.WithUpdateMembershipPrivacyPolicyUserId(true), + project.WithUpdateMembershipPrivacyPolicyUserEmail(false), + project.WithUpdateMembershipPrivacyPolicyUserPhone(false), + project.WithUpdateMembershipPrivacyPolicyUserName(true), + project.WithUpdateMembershipPrivacyPolicyUserMFA(false), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_membership_privacy_policy( + Some(true), + Some(false), + Some(false), + Some(true), + Some(false), + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-membership-privacy-policy \ + --user-id true \ + --user-email false \ + --user-phone false \ + --user-name true \ + --user-mfa false +``` +{% /multicode %} + +# Update deny aliased email policy {% #update-deny-aliased-email-policy %} + +When enabled, aliased emails such as subaddresses and emails with a suffix are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyAliasedEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyAliasedEmailPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateDenyAliasedEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_deny_aliased_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_deny_aliased_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateDenyAliasedEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateDenyAliasedEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateDenyAliasedEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateDenyAliasedEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateDenyAliasedEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyAliasedEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_deny_aliased_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-aliased-email-policy \ + --enabled true +``` +{% /multicode %} + +# Update deny disposable email policy {% #update-deny-disposable-email-policy %} + +When enabled, disposable emails from known temporary domains are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyDisposableEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyDisposableEmailPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateDenyDisposableEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_deny_disposable_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_deny_disposable_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateDenyDisposableEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateDenyDisposableEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateDenyDisposableEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateDenyDisposableEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateDenyDisposableEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyDisposableEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_deny_disposable_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-disposable-email-policy \ + --enabled true +``` +{% /multicode %} + +# Update deny free email policy {% #update-deny-free-email-policy %} + +When enabled, emails from free providers such as Gmail or Yahoo are rejected during new sign-ups and email updates. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyFreeEmailPolicy({ + enabled: true +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateDenyFreeEmailPolicy({ + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateDenyFreeEmailPolicy( + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_deny_free_email_policy( + enabled = True +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_deny_free_email_policy( + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateDenyFreeEmailPolicy( + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateDenyFreeEmailPolicy( + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateDenyFreeEmailPolicy( + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateDenyFreeEmailPolicy( + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateDenyFreeEmailPolicy( + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateDenyFreeEmailPolicy(true) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_deny_free_email_policy(true).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-deny-free-email-policy \ + --enabled true +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Codify auth posture.** Keep password rules, session lifetimes, and user caps in version control alongside the rest of your project configuration. +- **Environment parity.** Apply the same policy script to dev, staging, and production projects to keep them aligned. +- **Faster incident response.** When a policy needs to change in a hurry (e.g. tightening session duration after a breach), update it from a script instead of clicking through the Console. diff --git a/src/routes/docs/partners/project/protocols/+page.markdoc b/src/routes/docs/partners/project/protocols/+page.markdoc new file mode 100644 index 0000000000..f3f9596550 --- /dev/null +++ b/src/routes/docs/partners/project/protocols/+page.markdoc @@ -0,0 +1,285 @@ +--- +layout: article +title: Protocols +description: Enable or disable the REST, GraphQL, and WebSocket protocols on your Appwrite project programmatically using server SDKs. +--- + +Each Appwrite project exposes its API through three protocols: REST, GraphQL, and WebSocket. You can disable any protocol your clients don't use to shrink the project's surface area, then re-enable it when needed. + +Protocols can be toggled from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project protocols in the Appwrite Console](/images/docs/project/dark/protocols.avif) +{% /only_dark %} +{% only_light %} +![Project protocols in the Appwrite Console](/images/docs/project/protocols.avif) +{% /only_light %} + +To toggle a protocol manually: + +1. Open your project in the Appwrite Console. +2. Open **Settings** from the bottom of the side nav. +3. Scroll to the **Protocols** card. +4. Flip the switch next to REST, GraphQL, or WebSocket. Use **Disable all** to turn off every protocol at once. + +# Available protocols {% #available-protocols %} + +| Protocol ID | Description | +| --- | --- | +| `rest` | Standard HTTP API requests from client SDKs. | +| `graphql` | GraphQL API access for queries and mutations. | +| `websocket` | Realtime subscriptions over WebSocket connections. | + +# Update a protocol {% #update-protocol %} + +The example below disables the REST protocol. Pass `enabled: true` to re-enable it. + +Disabling REST blocks client SDK traffic only. Server SDKs using an API key keep access, so you can always call this endpoint again to re-enable the protocol. + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectProtocolId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Rest, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectProtocolId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Rest, + enabled: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Enums\ProjectProtocolId; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateProtocol( + protocolId: ProjectProtocolId::REST(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectProtocolId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_protocol( + protocol_id = ProjectProtocolId.REST, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_protocol( + protocol_id: ProjectProtocolId::REST, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateProtocol( + protocolId: ProjectProtocolId.Rest, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateProtocol( + protocolId: enums.ProjectProtocolId.rest, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectProtocolId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateProtocol( + protocolId = ProjectProtocolId.REST, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectProtocolId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateProtocol( + ProjectProtocolId.REST, // protocolId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateProtocol( + protocolId: .rest, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateProtocol( + "rest", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectProtocolId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_protocol( + ProjectProtocolId::Rest, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-protocol \ + --protocol-id rest \ + --enabled false +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Shrink the client surface area.** Disabled protocols are blocked for client SDK callers (anonymous, account session, JWT, and OAuth users). Server SDKs using an API key still have access, including to re-enable the protocol. +- **Repeatable provisioning.** Script the protocol set a project should expose and apply it from CI when spinning up a new environment. +- **Environment parity.** Keep dev, staging, and production in sync by running the same enable/disable script against each project. diff --git a/src/routes/docs/partners/project/provisioning/+page.markdoc b/src/routes/docs/partners/project/provisioning/+page.markdoc new file mode 100644 index 0000000000..4e40258315 --- /dev/null +++ b/src/routes/docs/partners/project/provisioning/+page.markdoc @@ -0,0 +1,757 @@ +--- +layout: article +title: Provision a project's baseline +description: Apply a standard configuration to a customer's project programmatically with the Project API, including platforms, auth methods, services, protocols, and variables. +--- + +A customer signs up to your platform and a project is created for them. Right now it is wide open: every authentication method is enabled, every service is exposed on the API, and nothing is constrained to the way you run things. Before that customer ever logs in, you want their project to match the baseline that every project on your platform shares. + +The Project API lets you encode that baseline once and apply it from your backend or a CI step, so onboarding a customer is a script you run, not a checklist someone works through in the Console. The sections below follow that script in the order it runs: + +- Register the customer's app. +- Narrow the sign-in methods to the ones they use. +- Close down the services and protocols they don't. +- Seed the variables their code expects. + +Each call uses a [Server SDK](/docs/sdks#server) with an API key. + +{% info title="Required scopes" %} +The API key used for these calls needs the `project.write` and `platforms.write` scopes. See [API keys](/docs/partners/project/api-keys) to create one. +{% /info %} + +# Register the customer's app {% #register-platform %} + +Nothing can talk to a project until you register the apps allowed to reach it. Set up the client once, then register the customer's web app by its hostname, so requests from their domain are accepted and everything else is rejected. + +{% multicode %} +```server-nodejs +import { Client, Project, ID } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +}); +``` +```server-deno +import { Client, Project, ID } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.createWebPlatform({ + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\ID; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->createWebPlatform( + platformId: ID::unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +); +``` +```server-python +from appwrite.client import Client +from appwrite.id import ID +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.create_web_platform( + platform_id = ID.unique(), + name = 'Customer web app', + hostname = 'app.customer.example' +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.create_web_platform( + platform_id: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example' +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.CreateWebPlatform( + platformId: ID.Unique(), + name: "Customer web app", + hostname: "app.customer.example" +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.createWebPlatform( + platformId: ID.unique(), + name: 'Customer web app', + hostname: 'app.customer.example', +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.ID +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.createWebPlatform( + platformId = ID.unique(), + name = "Customer web app", + hostname = "app.customer.example" +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.ID; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.createWebPlatform( + ID.unique(), // platformId + "Customer web app", // name + "app.customer.example", // hostname + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.createWebPlatform( + platformId: ID.unique(), + name: "Customer web app", + hostname: "app.customer.example" +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" + "github.com/appwrite/sdk-for-go/id" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.CreateWebPlatform( + id.Unique(), + "Customer web app", + "app.customer.example", + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::id::ID; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.create_web_platform( + ID::unique(), + "Customer web app", + "app.customer.example", + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project create-web-platform \ + --platform-id 'unique()' \ + --name "Customer web app" \ + --hostname app.customer.example +``` +```http +POST /v1/project/platforms/web HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "platformId": "unique()", + "name": "Customer web app", + "hostname": "app.customer.example" +} +``` +{% /multicode %} + +If the customer ships native apps too, register them the same way with `createAndroidPlatform`, `createApplePlatform`, `createLinuxPlatform`, or `createWindowsPlatform`. Each takes the identifier for that target, such as an Android application ID or an Apple bundle identifier. + +# Enable the required auth methods {% #auth-methods %} + +A fresh project leaves every sign-in method enabled. Trim that down to the methods the customer's app offers, so you are not exposing flows they never built a UI for. If they sign their users in over SMS, turn phone authentication on. + +{% multicode %} +```server-nodejs +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Phone, + enabled: true +}); +``` +```server-deno +const result = await project.updateAuthMethod({ + methodId: ProjectAuthMethodId.Phone, + enabled: true +}); +``` +```server-php +$result = $project->updateAuthMethod( + methodId: ProjectAuthMethodId::PHONE(), + enabled: true +); +``` +```server-python +result = project.update_auth_method( + method_id = ProjectAuthMethodId.PHONE, + enabled = True +) +``` +```server-ruby +response = project.update_auth_method( + method_id: ProjectAuthMethodId::PHONE, + enabled: true +) +``` +```server-dotnet +var result = await project.UpdateAuthMethod( + methodId: ProjectAuthMethodId.Phone, + enabled: true +); +``` +```server-dart +final result = await project.updateAuthMethod( + methodId: enums.ProjectAuthMethodId.phone, + enabled: true, +); +``` +```server-kotlin +val result = project.updateAuthMethod( + methodId = ProjectAuthMethodId.PHONE, + enabled = true +) +``` +```server-java +project.updateAuthMethod( + ProjectAuthMethodId.PHONE, // methodId + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateAuthMethod( + methodId: .phone, + enabled: true +) +``` +```server-go +result, err := project.UpdateAuthMethod( + "phone", + true, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_auth_method( + ProjectAuthMethodId::Phone, + true, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-auth-method \ + --method-id phone \ + --enabled true +``` +```http +PATCH /v1/project/auth-methods/phone HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "enabled": true +} +``` +{% /multicode %} + +Pass `enabled: false` to switch a method off. The method ID is one of `email-password`, `magic-url`, `email-otp`, `anonymous`, `invites`, `jwt`, or `phone`. + +# Disable unused services and protocols {% #services %} + +Every service the customer will never call is attack surface you can remove. If their app has no client-side Functions, take Functions off the client API to shrink that surface. + +{% multicode %} +```server-nodejs +const result = await project.updateService({ + serviceId: ProjectServiceId.Functions, + enabled: false +}); +``` +```server-deno +const result = await project.updateService({ + serviceId: ProjectServiceId.Functions, + enabled: false +}); +``` +```server-php +$result = $project->updateService( + serviceId: ProjectServiceId::FUNCTIONS(), + enabled: false +); +``` +```server-python +result = project.update_service( + service_id = ProjectServiceId.FUNCTIONS, + enabled = False +) +``` +```server-ruby +response = project.update_service( + service_id: ProjectServiceId::FUNCTIONS, + enabled: false +) +``` +```server-dotnet +var result = await project.UpdateService( + serviceId: ProjectServiceId.Functions, + enabled: false +); +``` +```server-dart +final result = await project.updateService( + serviceId: enums.ProjectServiceId.functions, + enabled: false, +); +``` +```server-kotlin +val response = project.updateService( + serviceId = ProjectServiceId.FUNCTIONS, + enabled = false +) +``` +```server-java +project.updateService( + ProjectServiceId.FUNCTIONS, // serviceId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateService( + serviceId: .functions, + enabled: false +) +``` +```server-go +result, err := service.UpdateService( + "functions", + false, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_service( + ProjectServiceId::Functions, + false, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-service \ + --service-id functions \ + --enabled false +``` +```http +PATCH /v1/project/services/functions HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "enabled": false +} +``` +{% /multicode %} + +{% info title="Server SDKs keep access" %} +Disabling a service only removes it from the client-facing API. A Server SDK using an API key can still reach the service, including to turn it back on later, so your own backend keeps working while client apps lose the route. +{% /info %} + +Apply the same reasoning to API protocols. If nothing in the customer's stack speaks GraphQL, disable it and leave REST and Realtime in place. + +{% multicode %} +```server-nodejs +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Graphql, + enabled: false +}); +``` +```server-deno +const result = await project.updateProtocol({ + protocolId: ProjectProtocolId.Graphql, + enabled: false +}); +``` +```server-php +$result = $project->updateProtocol( + protocolId: ProjectProtocolId::GRAPHQL(), + enabled: false +); +``` +```server-python +result = project.update_protocol( + protocol_id = ProjectProtocolId.GRAPHQL, + enabled = False +) +``` +```server-ruby +response = project.update_protocol( + protocol_id: ProjectProtocolId::GRAPHQL, + enabled: false +) +``` +```server-dotnet +var result = await project.UpdateProtocol( + protocolId: ProjectProtocolId.Graphql, + enabled: false +); +``` +```server-dart +final result = await project.updateProtocol( + protocolId: enums.ProjectProtocolId.graphql, + enabled: false, +); +``` +```server-kotlin +val response = project.updateProtocol( + protocolId = ProjectProtocolId.GRAPHQL, + enabled = false +) +``` +```server-java +project.updateProtocol( + ProjectProtocolId.GRAPHQL, // protocolId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +let result = try await project.updateProtocol( + protocolId: .graphql, + enabled: false +) +``` +```server-go +result, err := service.UpdateProtocol( + "graphql", + false, +) + +if err != nil { + panic(err) +} + +fmt.Println(result) +``` +```server-rust +let result = project.update_protocol( + ProjectProtocolId::Graphql, + false, +).await?; + +println!("{:?}", result); +``` +```bash +appwrite project update-protocol \ + --protocol-id graphql \ + --enabled false +``` +```http +PATCH /v1/project/protocols/graphql HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "enabled": false +} +``` +{% /multicode %} + +The protocol ID is one of `rest`, `graphql`, or `websocket`. + +# Seed project variables {% #variables %} + +The last step before the project is ready is to drop in the constants and secrets the customer's functions and sites read at build and runtime, so their first deploy finds everything it needs already in place. + +{% multicode %} +```server-nodejs +const result = await project.createVariable({ + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +}); +``` +```server-deno +const result = await project.createVariable({ + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +}); +``` +```server-php +$result = $project->createVariable( + variableId: ID::unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false // optional +); +``` +```server-python +result: Variable = project.create_variable( + variable_id = ID.unique(), + key = 'TENANT_TIER', + value = 'pro', + secret = False # optional +) + +print(result.model_dump()) +``` +```server-ruby +result = project.create_variable( + variable_id: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false # optional +) +``` +```server-dotnet +Variable result = await project.CreateVariable( + variableId: ID.Unique(), + key: "<KEY>", + value: "<VALUE>", + secret: false // optional +); +``` +```server-dart +Variable result = await project.createVariable( + variableId: ID.unique(), + key: 'TENANT_TIER', + value: 'pro', + secret: false, // (optional) +); +``` +```server-kotlin +val response = project.createVariable( + variableId = ID.unique(), + key = "<KEY>", + value = "<VALUE>", + secret = false // optional +) +``` +```server-java +project.createVariable( + ID.unique(), // variableId + "<KEY>", // key + "<VALUE>", // value + false, // secret (optional) + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +let variable = try await project.createVariable( + variableId: ID.unique(), + key: "<KEY>", + value: "<VALUE>", + secret: false // optional +) +``` +```server-go +response, error := project.CreateVariable( +id.Unique(), +"<KEY>", +"<VALUE>", +appwrite.WithCreateVariableSecret(false), +) +``` +```server-rust +let result = project.create_variable( + &ID::unique(), + "<KEY>", + "<VALUE>", + Some(false) // optional +).await?; + +let _ = result; +``` +```bash +appwrite project create-variable \ + --variable-id 'unique()' \ + --key TENANT_TIER \ + --value pro +``` +```http +POST /v1/project/variables HTTP/1.1 +Content-Type: application/json +X-Appwrite-Project: <PROJECT_ID> +X-Appwrite-Key: <YOUR_API_KEY> + +{ + "variableId": "unique()", + "key": "TENANT_TIER", + "value": "pro" +} +``` +{% /multicode %} + +# Next steps {% #next-steps %} + +Wrap these calls in a single function keyed to the customer and every project you bring online starts identical, which is what keeps the next thousand projects manageable. With the baseline in place, the rest of the project's life uses the same Project API: + +- [Issue and rotate API keys](/docs/partners/project/key-rotation) for the integrations that run against the project. +- [Brand its transactional emails](/docs/partners/project/branded-emails) so they come from the customer's domain. diff --git a/src/routes/docs/partners/project/services/+page.markdoc b/src/routes/docs/partners/project/services/+page.markdoc new file mode 100644 index 0000000000..ab19356004 --- /dev/null +++ b/src/routes/docs/partners/project/services/+page.markdoc @@ -0,0 +1,296 @@ +--- +layout: article +title: Services +description: Enable or disable individual Appwrite services on your project programmatically using server SDKs. +--- + +Each Appwrite project ships with the full set of services enabled by default: Account, TablesDB, Storage, Functions, and so on. You can disable any service your clients don't use to remove it from the client-facing API. Disabled services remain accessible to server SDKs using an API key. + +Services can be toggled from the Appwrite Console, or programmatically through any server SDK using the Project service. + +# Manage from the Console {% #manage-console %} + +{% only_dark %} +![Project services in the Appwrite Console](/images/docs/project/dark/services.avif) +{% /only_dark %} +{% only_light %} +![Project services in the Appwrite Console](/images/docs/project/services.avif) +{% /only_light %} + +To toggle a service manually: + +1. Open your project in the Appwrite Console. +2. Open **Settings** from the bottom of the side nav. +3. Scroll to the **Services** card. +4. Flip the switch next to the service you want to enable or disable. Use **Disable all** to turn off every optional service at once. + +# Available services {% #available-services %} + +| Service ID | Description | +| --- | --- | +| `account` | User accounts and authentication. | +| `avatars` | App image, icon, and avatar helpers. | +| `tablesdb` | TablesDB tables, columns, and rows. | +| `locale` | Locale and geographic helpers. | +| `health` | Health checks and status. | +| `project` | Project configuration. | +| `storage` | File storage buckets and files. | +| `teams` | Teams and shared resource access. | +| `users` | User administration via server SDKs. | +| `sites` | Sites hosting and deployments. | +| `functions` | Cloud Functions. | +| `proxy` | Custom domain proxy. | +| `graphql` | GraphQL endpoint. | +| `migrations` | Third-party data migrations. | +| `messaging` | Push, SMS, and email messaging. | +| `databases` | Legacy Databases collections and documents. | + +# Update a service {% #update-service %} + +The example below disables the Account service. Pass `enabled: true` to re-enable it. + +{% info title="Required scope" %} +The API key used for this call needs the `project.write` scope. +{% /info %} + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectServiceId } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateService({ + serviceId: ProjectServiceId.Account, + enabled: false +}); +``` +```server-deno +import { Client, Project, ProjectServiceId } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +const project = new Project(client); + +const result = await project.updateService({ + serviceId: ProjectServiceId.Account, + enabled: false +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Enums\ProjectServiceId; +use Appwrite\Services\Project; + +$client = new Client(); + +$client + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + ->setProject('<PROJECT_ID>') + ->setKey('<YOUR_API_KEY>'); + +$project = new Project($client); + +$result = $project->updateService( + serviceId: ProjectServiceId::ACCOUNT(), + enabled: false +); +``` +```server-python +from appwrite.client import Client +from appwrite.enums import ProjectServiceId +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') +client.set_project('<PROJECT_ID>') +client.set_key('<YOUR_API_KEY>') + +project = Project(client) + +result = project.update_service( + service_id = ProjectServiceId.ACCOUNT, + enabled = False +) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') + .set_project('<PROJECT_ID>') + .set_key('<YOUR_API_KEY>') + +project = Project.new(client) + +response = project.update_service( + service_id: ProjectServiceId::ACCOUNT, + enabled: false +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") + .SetProject("<PROJECT_ID>") + .SetKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +var result = await project.UpdateService( + serviceId: ProjectServiceId.Account, + enabled: false +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<YOUR_API_KEY>'); + +Project project = Project(client); + +final result = await project.updateService( + serviceId: enums.ProjectServiceId.account, + enabled: false, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.enums.ProjectServiceId +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +val project = Project(client) + +val response = project.updateService( + serviceId = ProjectServiceId.ACCOUNT, + enabled = false +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectServiceId; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>"); + +Project project = new Project(client); + +project.updateService( + ProjectServiceId.ACCOUNT, // serviceId + false, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + .setKey("<YOUR_API_KEY>") + +let project = Project(client) + +let result = try await project.updateService( + serviceId: .account, + enabled: false +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + service := appwrite.NewProject(client) + result, err := service.UpdateService( + "account", + false, + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::enums::ProjectServiceId; +use appwrite::services::project::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new() + .set_endpoint("https://<REGION>.cloud.appwrite.io/v1") + .set_project("<PROJECT_ID>") + .set_key("<YOUR_API_KEY>"); + + let project = Project::new(&client); + + let result = project.update_service( + ProjectServiceId::Account, + false, + ).await?; + + println!("{:?}", result); + Ok(()) +} +``` +```bash +appwrite project update-service \ + --service-id account \ + --enabled false +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Shrink the client surface area.** Disable services your client apps don't use so they're no longer callable from client SDKs. +- **Server-only access.** Disabled services stay reachable from server SDKs using an API key, useful when you want a service available to your backend but hidden from clients. +- **Repeatable provisioning.** Script the service set a project should expose and apply it from CI when spinning up a new environment. diff --git a/src/routes/docs/partners/project/smtp/+page.markdoc b/src/routes/docs/partners/project/smtp/+page.markdoc new file mode 100644 index 0000000000..7d04870091 --- /dev/null +++ b/src/routes/docs/partners/project/smtp/+page.markdoc @@ -0,0 +1,605 @@ +--- +layout: article +title: SMTP +description: Configure a custom SMTP server to send Appwrite's account management emails from your own domain, improve deliverability, and unlock custom email templates. +--- + +By default, Appwrite sends account management emails such as verification, password recovery, and magic URL links from a shared SMTP server. Configuring a custom SMTP server lets you send these emails through your own provider instead. This sends mail from your own domain, improves deliverability, and unlocks [custom email templates](/docs/partners/project/email-templates). + +# Configure in the Console {% #console %} + +{% only_dark %} +![SMTP settings in the Appwrite Console](/images/docs/project/dark/smtp.avif) +{% /only_dark %} +{% only_light %} +![SMTP settings in the Appwrite Console](/images/docs/project/smtp.avif) +{% /only_light %} + +To configure a custom SMTP server from the Appwrite Console: + +1. Navigate to your project. +2. Open the **Settings** section and select the **SMTP** tab. +3. Enable **Custom SMTP server**. +4. Enter your provider's **Sender name**, **Sender email**, **Server host**, and **Server port**. Add a **Username** and **Password** if your provider requires authentication, set a **Reply to** address if needed, and choose the encryption protocol (TLS or SSL). +5. Click **Update**. Appwrite validates the connection to your SMTP server before saving, so the credentials must be correct. + +# Configure with a Server SDK {% #server-sdks %} + +You can also manage SMTP programmatically using a [Server SDK](/docs/sdks#server). + +{% info title="Required scope" %} +The API key used for these calls needs the `project.write` scope. +{% /info %} + +## Configure SMTP {% #configure-smtp %} + +Every field is optional, so you can change only the values you need. Any field you omit keeps its current value. To enable SMTP, the project must have a `host`, `port`, and `senderEmail` set, either in this call or from a previous one. When you enable SMTP, Appwrite validates the connection to your server before saving. The encryption protocol accepts `tls` or `ssl`. + +{% multicode %} +```server-nodejs +import { Client, Project, ProjectSMTPSecure } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-deno +import { Client, Project, ProjectSMTPSecure } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.updateSMTP({ + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; +use Appwrite\Enums\ProjectSMTPSecure; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // optional + password: '<PASSWORD>', // optional + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // optional + replyToEmail: 'email@example.com', // optional + replyToName: '<REPLY_TO_NAME>', // optional + secure: ProjectSMTPSecure::TLS(), // optional + enabled: true +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project +from appwrite.models import Project as ProjectModel +from appwrite.enums import ProjectSMTPSecure + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result: ProjectModel = project.update_smtp( + host = 'smtp.example.com', + port = 587, + username = '<USERNAME>', # optional + password = '<PASSWORD>', # optional + sender_email = 'email@example.com', + sender_name = '<SENDER_NAME>', # optional + reply_to_email = 'email@example.com', # optional + reply_to_name = '<REPLY_TO_NAME>', # optional + secure = ProjectSMTPSecure.TLS, # optional + enabled = True +) + +print(result.model_dump()) +``` +```server-ruby +require 'appwrite' + +include Appwrite +include Appwrite::Enums + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.update_smtp( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', # optional + password: '<PASSWORD>', # optional + sender_email: 'email@example.com', + sender_name: '<SENDER_NAME>', # optional + reply_to_email: 'email@example.com', # optional + reply_to_name: '<REPLY_TO_NAME>', # optional + secure: ProjectSMTPSecure::TLS, # optional + enabled: true +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Enums; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +Project result = await project.UpdateSMTP( + host: "smtp.example.com", + port: 587, + username: "<USERNAME>", // optional + password: "<PASSWORD>", // optional + senderEmail: "email@example.com", + senderName: "<SENDER_NAME>", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>", // optional + secure: ProjectSMTPSecure.Tls, // optional + enabled: true +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; +import 'package:dart_appwrite/enums.dart' as enums; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +Project result = await project.updateSMTP( + host: 'smtp.example.com', + port: 587, + username: '<USERNAME>', // (optional) + password: '<PASSWORD>', // (optional) + senderEmail: 'email@example.com', + senderName: '<SENDER_NAME>', // (optional) + replyToEmail: 'email@example.com', // (optional) + replyToName: '<REPLY_TO_NAME>', // (optional) + secure: enums.ProjectSMTPSecure.tls, // (optional) + enabled: true, +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.enums.ProjectSMTPSecure +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.updateSMTP( + host = "smtp.example.com", + port = 587, + username = "<USERNAME>", // optional + password = "<PASSWORD>", // optional + senderEmail = "email@example.com", + senderName = "<SENDER_NAME>", // optional + replyToEmail = "email@example.com", // optional + replyToName = "<REPLY_TO_NAME>", // optional + secure = ProjectSMTPSecure.TLS, // optional + enabled = true +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.enums.ProjectSMTPSecure; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.updateSMTP( + "smtp.example.com", // host + 587, // port + "<USERNAME>", // username (optional) + "<PASSWORD>", // password (optional) + "email@example.com", // senderEmail + "<SENDER_NAME>", // senderName (optional) + "email@example.com", // replyToEmail (optional) + "<REPLY_TO_NAME>", // replyToName (optional) + ProjectSMTPSecure.TLS, // secure (optional) + true, // enabled + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite +import AppwriteEnums + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.updateSMTP( + host: "smtp.example.com", + port: 587, + username: "<USERNAME>", // optional + password: "<PASSWORD>", // optional + senderEmail: "email@example.com", + senderName: "<SENDER_NAME>", // optional + replyToEmail: "email@example.com", // optional + replyToName: "<REPLY_TO_NAME>", // optional + secure: .tls, // optional + enabled: true +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + result, err := project.UpdateSMTP( + appwrite.WithUpdateSMTPHost("smtp.example.com"), + appwrite.WithUpdateSMTPPort(587), + appwrite.WithUpdateSMTPUsername("<USERNAME>"), + appwrite.WithUpdateSMTPPassword("<PASSWORD>"), + appwrite.WithUpdateSMTPSenderEmail("email@example.com"), + appwrite.WithUpdateSMTPSenderName("<SENDER_NAME>"), + appwrite.WithUpdateSMTPReplyToEmail("email@example.com"), + appwrite.WithUpdateSMTPReplyToName("<REPLY_TO_NAME>"), + appwrite.WithUpdateSMTPSecure("tls"), + appwrite.WithUpdateSMTPEnabled(true), + ) + + if err != nil { + panic(err) + } + + fmt.Println(result) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; +use appwrite::enums::ProjectSMTPSecure; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + let result = project.update_smtp( + Some("smtp.example.com"), + Some(587), + Some("<USERNAME>"), // optional + Some("<PASSWORD>"), // optional + Some("email@example.com"), + Some("<SENDER_NAME>"), // optional + Some("email@example.com"), // optional + Some("<REPLY_TO_NAME>"), // optional + Some(ProjectSMTPSecure::Tls), // optional + Some(true) + ).await?; + + let _ = result; + + Ok(()) +} +``` +```bash +appwrite project update-smtp \ + --host smtp.example.com \ + --port 587 \ + --username "<USERNAME>" \ + --password "<PASSWORD>" \ + --sender-email email@example.com \ + --sender-name "<SENDER_NAME>" \ + --reply-to-email email@example.com \ + --reply-to-name "<REPLY_TO_NAME>" \ + --secure tls \ + --enabled true +``` +{% /multicode %} + +## Send a test email {% #send-test-email %} + +Once SMTP is configured, send a test email to confirm that your server delivers mail. Appwrite sends a sample email to each address you provide, up to a maximum of 10 recipients. + +{% multicode %} +```server-nodejs +import { Client, Project } from 'node-appwrite'; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-deno +import { Client, Project } from "npm:node-appwrite"; + +const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +const project = new Project(client); + +const result = await project.createSMTPTest({ + emails: ['email@example.com'] +}); +``` +```server-php +<?php + +use Appwrite\Client; +use Appwrite\Services\Project; + +$client = (new Client()) + ->setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + ->setProject('<YOUR_PROJECT_ID>') // Your project ID + ->setKey('<YOUR_API_KEY>'); // Your API key + +$project = new Project($client); + +$result = $project->createSMTPTest( + emails: ['email@example.com'] +); +``` +```server-python +from appwrite.client import Client +from appwrite.services.project import Project + +client = Client() +client.set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint +client.set_project('<YOUR_PROJECT_ID>') # Your project ID +client.set_key('<YOUR_API_KEY>') # Your API key + +project = Project(client) + +result = project.create_smtp_test( + emails = ['email@example.com'] +) +``` +```server-ruby +require 'appwrite' + +include Appwrite + +client = Client.new + .set_endpoint('https://<REGION>.cloud.appwrite.io/v1') # Your API Endpoint + .set_project('<YOUR_PROJECT_ID>') # Your project ID + .set_key('<YOUR_API_KEY>') # Your API key + +project = Project.new(client) + +result = project.create_smtp_test( + emails: ['email@example.com'] +) +``` +```server-dotnet +using Appwrite; +using Appwrite.Models; +using Appwrite.Services; + +Client client = new Client() + .SetEndPoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .SetProject("<YOUR_PROJECT_ID>") // Your project ID + .SetKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +await project.CreateSMTPTest( + emails: new List<string> { "email@example.com" } +); +``` +```server-dart +import 'package:dart_appwrite/dart_appwrite.dart'; + +Client client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') // Your API Endpoint + .setProject('<YOUR_PROJECT_ID>') // Your project ID + .setKey('<YOUR_API_KEY>'); // Your API key + +Project project = Project(client); + +await project.createSMTPTest( + emails: ['email@example.com'], +); +``` +```server-kotlin +import io.appwrite.Client +import io.appwrite.coroutines.CoroutineCallback +import io.appwrite.services.Project + +val client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +val project = Project(client) + +val response = project.createSMTPTest( + emails = listOf("email@example.com") +) +``` +```server-java +import io.appwrite.Client; +import io.appwrite.coroutines.CoroutineCallback; +import io.appwrite.services.Project; + +Client client = new Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>"); // Your API key + +Project project = new Project(client); + +project.createSMTPTest( + List.of("email@example.com"), // emails + new CoroutineCallback<>((result, error) -> { + if (error != null) { + error.printStackTrace(); + return; + } + + System.out.println(result); + }) +); +``` +```server-swift +import Appwrite + +let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<YOUR_PROJECT_ID>") // Your project ID + .setKey("<YOUR_API_KEY>") // Your API key + +let project = Project(client) + +let result = try await project.createSMTPTest( + emails: ["email@example.com"] +) +``` +```server-go +package main + +import ( + "fmt" + "github.com/appwrite/sdk-for-go/appwrite" +) + +func main() { + client := appwrite.NewClient( + appwrite.WithEndpoint("https://<REGION>.cloud.appwrite.io/v1"), + appwrite.WithProject("<YOUR_PROJECT_ID>"), + appwrite.WithKey("<YOUR_API_KEY>"), + ) + + project := appwrite.NewProject(client) + response, err := project.CreateSMTPTest( + []interface{}{"email@example.com"}, + ) + + if err != nil { + panic(err) + } + + fmt.Println(response) +} +``` +```server-rust +use appwrite::Client; +use appwrite::services::Project; + +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { + let client = Client::new(); + client.set_endpoint("https://<REGION>.cloud.appwrite.io/v1"); // Your API Endpoint + client.set_project("<YOUR_PROJECT_ID>"); // Your project ID + client.set_key("<YOUR_API_KEY>"); // Your API key + + let project = Project::new(&client); + + project.create_smtp_test( + vec!["email@example.com"] + ).await?; + + Ok(()) +} +``` +```bash +appwrite project create-smtp-test \ + --emails email@example.com +``` +{% /multicode %} + +# Benefits {% #benefits %} + +- **Send from your own domain.** Deliver account emails from your branded sender address instead of Appwrite's shared one, so users recognize and trust them. +- **Better deliverability.** Routing mail through an authenticated provider, with SPF and DKIM set up on your domain, reduces the chance of verification and recovery emails landing in spam. +- **Unlocks custom templates.** A custom SMTP server is required to customize [email templates](/docs/partners/project/email-templates) per locale. diff --git a/static/images/docs/partners/apps/account-applications.avif b/static/images/docs/partners/apps/account-applications.avif new file mode 100644 index 0000000000000000000000000000000000000000..2916460af6adec43948e27b525a41bc1fba6bf97 GIT binary patch literal 19610 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/consent-screen.avif b/static/images/docs/partners/apps/consent-screen.avif new file mode 100644 index 0000000000000000000000000000000000000000..f5755bb12010bb6e663a5f4a17e288c76b143555 GIT binary patch literal 12013 zcmYMaV~{0WtTx)#w2j$q_q6S4+qSLUwr$(CIc?jvZDU&Byyu=%H>*~jJgHPA|5hq1 zARr(=O`Y6<1}+w+ApgY1!j$np+s4A+KfY{Z;$-lj|DO<<8(Ta4e<lbB(89>+|Lp%m zM4*L}&HoV4f123B+Ro@dCj1)&^xyeU{{An5&_4WQBo-F7|C988ycqw83D|#8|6&bX z7#ROERV{!Hz<<bL0W`Avhwuh2j6(io{}YC8;RrPOF9-w#^4|rU`=^kB7H$^*dB9;{ zVEzH71<>aI>i<^+xIY*;2ng-Fjj@3fDhM1Lr={6vem@v40wL4B7682tBmji*HwX*} zy!uuwVD8asEeLCSvkHTmWTFCQVY52B`tE++og%Km?suvFclArSZcKY5w}aqk8IzP6 zDc&8ovIyp3dDt(pd?51CH<r+BYV&GKv?>TabIr>4x!#{H&pT614oe~LkVu^Lp-^o4 zWQ$O28~EerLNrN=kRI&rXDDBs3YK`71VGlMKqPSvo_`GCgt~)jR+vfx8H)pFn)k%T zkM`#Y%xuYxxElEEhvY?$#iLOnp^i6h2jcPYH2d90P#+jLnY98ud)>9*gi<wW=Ep-h zdLnB<3kdv}wxj%{P$x2zdO}r`)@=eG(ITHCk>sed<$m$u9oWgp_iv5zDX_2kr~J%_ zW=r+8km-Y|^!t9<(%wA#siFJwb{{88dP?@=Xj&H$i%e@iHb8R?thQxaC}2zx?gaqg z#;E>!>D^dHAhWAr29pmtsIm<F`QXO${QVU^SP<E**Zk?O|G`x!#zGoka<j0o+kxPV zphZYYbIK1Wk?oaYlc}lREH$l}njMxXjU*Ac*-4{`HbljZQW@x&7HVtf;oI1i%@!R3 zZ2RulPe7JP`bGh)m)&HfO6MW8+tvznB6PAK{KgZ#+OUi~uG>M2V&Hm8MOi-LqD2cF z%b-wvc_@CKN2?u=<CHDcNA_M1ImV^md_j5Np;bZI;MBDW&t)(-Xl)x9QEG}P(7f^G zS69C?z^u9t0^So)Y#>K3*Bn}Lz!X96Ky&LfMQM&|_{|I}oeamy^~Pl@LaVf@!%01H zu->B3%9A|S{b7@Jm=g~~4!Gp1tzF9-2Z*YKiMc$M+Ot{jmD=Cc-BXw;dyXeoe_>z5 zR*EIwz6}*bku`0~DcsTVg9XOpvbL&u8J3J78d1MmH|gk0BtII!H($`(NAoMX$6H7I zn$X#;gFHW8D+FqC7{#Tz-SE+ODwLcULsRoBz*$w#f4axjmj(w(jcXG}_@85J61c;g z#YxIburWd6%1~HU4-js`!ERt+5X9rU`llbvH~XMBLi_Tzvr1U{*<M6q))^xfm#)7e zN3rZ~CNw0D87<?Jc=lj%K~1Gm^whCbU<M8F617r0SdX2vw?|57w`Cvd_iD;RGoXi2 z&&cS4i_gfk^eXx2*ZYa<r-l#uPq)_J57|{WBr`>;<qO1(9GI9wp9kD9OH8$@QyC*p zE!Cm*GkP|O?rZ)D8O)W#*439v#PNeyuuxqE@lR9(GuP{tjR0+hJ8Ked3ebH%3Z#Qc zv$`%;cnx$se+vXHkz2!aPIaR|X+nC|#v~Z;xxlq+4^kCErlAgK;n<kSht&P43N71> zK;#*b(wpRh8{NzZjnG#B1B5<>6?*4q*~`Q&5K3ypiaOStVvBL;BVxyxvn+7oyEZSn z?+7n0Gc&c<UCOjmefG`eH77O*ldf0`d~`pQ%*r5EWPYCIN|6UsoJvd;yE<YqZHcuu zGkW$HRe(B4p_h>tbo;puJ{#~%5=|3I7#=#AyCsxF462ikLJ^kZl@9lFFtT47s9Y7^ zh4o<oCj-5d^rDWcOjy~MjY@O`E?YA($T9BjblsL=97#U$k(36HU)t+un_Q<M-F}}A z(fOx=8~{hLoblm!?BhYsHk0!RWk%<kz$lsE6PI}=@P+$ht{N3zjYWUn*uJnR!(_D` zx#e%u7xX!_324nK0dH`eVSoCmEBjKI5%Rvv?N8?6BGL$=_Z|HH<PxyX-MF^D)m?lS z*hOli9Ri}4>pA4M59{VL5kb^85Q(R2msNYe@c(#Dfn3_;LKEXw7zdo&CTm;h?&QV6 zI(!DLf<<u__g2CS5a#h*dm|=PsE?R7wWt{CE`-WG!N=bl&UFEc40>gi1AnYeak|)y zQykp>B@OPs(7GFxTP}P@)W~iWkY+PzhxhG}J2Fsb?Ym{x$5%B%P#=RPsGUx2p=<lq z5t7U9F`9HP$)hLPj`;I~!c+h8b9pmmPcMYQEiDN+s*ah><&-13?lFck6_xNhRB1;G zxc@~ZglXN?v%4gMccI&~ZgNtYPN5!m<cj!JD@8V;C(DbT_rz;>;e@+^Q=gQGab@Sc zY*B;xz=|0Ce72+;^GwYHm|&CO?OXaWNa}c^m+Wc&lzA4KC)xMtd^dci?biyUm7mym z3X|%+9%MTM$80dXK7abtjfxz0AxmI$*yaQ*{}j7D<KgYW4ure_#GKjlGL`|f%*&7C zH`=-rG|WM!+$jIYK0IghriD=1@1F1Tf@>53C8`_O7oJ(3!(G!&TF!2zIy1uJkfZ49 zU^?N#mPE?9aF;3R%)6g)3jX{P&LQ61{Q=8ywNUe|^CWD|&De?FJjnY73hUTQpcOqO z5NVa8VMz--;Ve+T@0JD_JKx~nV;N#5aaXLPNSaWvYGhj|DOoR4&&e$fn(|;uLe?zh z(q)l}YY#l)hRUWn=Ojf{?KTPnp9w`&yP528_S;_w_Xy|bqJOQlw`q_CZ}svKF^Mv= z$3i@YmsJlAN1|LSk73sv8jv^?GJtwipych@{D@A=B6%k)<cb#DkQ_Jn>nT!uHOuNb z*V!wQUmQ1Od@j0yvgc0L6AB$>SAC&{XW{w-;yIa;$&A_M{&Xt0%kmgZosAD+`8O6% z1gY7n{@b4?w-Mm%+GXRIJm751_+`6KQAA$$N2!+*niuA-_Eg=+7y9O-Cd7}>Q;N_a zo(tk;)ST;mrh}IAvve3=6GO(Y0E;$km?OkD{SX4mPE{oD$KQGRirb6{BD`OCw9|jw zG61(lZnWeif3ZDYXaTP@Iu6ll?IvqQP>0PS8Z|I)%4QGXd1Km0!=e6NCuf62YFjXI z{k{~&)FPpDB4M%l*U%5YK(E3myL&ZgEoV;auC>$m_-#GI3sL|)WwQtfW7sU|`%NN0 zHdTJ3|CoQ(RLw8dS}1`P$b#%O2wuyOCfHmsV+}9FfbX4@%<-pr3-8PphRo!noIw$A zwF`9Cv%OD>p=Xn!f`iG<j28V}ma3>H=7kXV2+VlrW8kp1daWtmPqkqzBiCbb*?OHY zk0|9gc$dApW(xga=YSV&l4m`O;TB~MyE{tG60w5GFrW(iK`Ks^KJH>a%^8~XUKW`) zuI=Px8cqa^qE0X46k#l0r@dra0|AA3eK7~qx%mVw+H@sV*UPT))6AOHa8|^tB7Vj| zNmkH}IBve+ssL9EbC49yv`4c&I^`=e@#!40ni$>Jh1RmQ{>7i;abtC#)m%=lE2u$C zdQ`u3haRALl9p0N>(7sP+n?8wf&^o(({M=|*TG@0Bbpcn8emm2VzHPK&hE9lY+1>p z84Tv%KZJPX2||wwdS>1_zdKR<gpy5ea5Nh;%#@;`h{|*>T%psW$IrA(WZ4dL|IJcr z5Ly>o_X%<_#Q6jiZ~%=H1fM1$*7^u67(;WUa@PoE`zYSfho>ZOV2H!TwDz_q!7v?t zJbV%`Fo4-O3VH_ujNq?R?`_gSjmF7`F<mQ?j+2S-D(EC8jZEDHoK6&x4fvo!;+-(| zr8`&-<+T~WJVr&&D|8h6lk|!MRUbJc?e+&->n>LWILyuPMp*oW@Htj%Tsd~t3D}no z6=Xg~HaD6L&rXyv7YZ69?s>VkaA&q94;n^{Q=Yvw2$q*H1uTR@0dEL*DYEn?oN@(= zLxUSKdoD|vT(-NuO_*2l`?|aNyhY?$Jv`mcEOFRSEVv_fc2<QGo<%CZ)%{Y!Vbp%M z8AOvOvMiP_`d+Whk)LZ92u#PUZSc(f0#-U)<rI&&!4x1RSIUtg#~q0fQsA;pYuI_< z?4;uDc_D#P@H2iZ`g~96TgLzua{|9iQ11`8(4(Vq4qi0F@g689aJI&hV-;WRA9)j4 za8CiP+a%+hnSIKih~vn->tD{}uzXbukzRT?r)$(;o^KLNp0V+lr-8-kGb^!vSS2>2 zMrNew+3qKrsqckr#JV3v(E*j=ZRv~L)o5-xi6Xzrf2(PGfzD&E@g7cnmb#tLD`SL9 zgl2`laC0W<dWi}qY<-$xLA>547x;^M&+h*!h2uc9P6Sd@{&M615AT1Nq$R>iU>+8C z>>#e@smhsm8Yp&D#*OAc$BPz27RTk<69$p6g~f&`!*wS$l#|C6JS{uhdl}TS-~aBy zJ2rXtg-`n6&AlV`5QUL~NUzv%RWB8m|GQ0p(WqamJp*qh@YdWCwU4e8Pl^|VnV~V| zed2p~2f5)lXq|7yrURv>+_Lo9`UsJ{^<&v+#=Vb+hNT)M4Z~*UholAp4JmX~W<9pw zt_P)rynb`aU$RkxWegik-xom1MV@Djr<kw{=qELngWGs#pO1V_L8*`GuTGbS=)Zr1 zyCfEf0%}tXXpsx!L9tFPKi`VGc0>N;Fr+S_>WbE}?3ZP^a_6ymTIaD1_w!*CNa*Vj zcpD_Dl76(g{Fq~e{JK7xE<5?Qcx*Noi)tG!&2{Dp=jWjz2!Ub=zS^wc)^d*6zoH6* zKF2>hTVJM%ty!xgY^|sAzE*HYbtt!`F3`OuJ#J-`TMJsqTa4S*8YzAQqH7*k+ksS7 zCSyV$KGMjPMej6e?MxZH;~ZTLz!4V@K$Bs{%!@r&H1CTYvvX2>maG#OjE)(~WM%hc z9y7;Dkrvl7##?V+evK5|Vw-qKX-`W`V}9?MI7ol{cN5#Z+|uzKt>?0-oFQF0@dvu% z^S9hvRB7h?oNCpx*Zp(-oUKH>Km8>683h3EIBCz5JnQtjioi2@2E+@sf-{2m$5++f z29cW4MEOlLk7zlvYg{zG^~lM8@Z*AhA+#yCXANMk&hOIYD>zc^wWHqVc$v<D)(9N~ zm4JPnZOsSBVb|wd(K@>>6p4nIrgw<xDN+m9yeu$F4lF-r49#ApBj186s(%?7rKHn$ z;p}jdwGdURWT@8^7n}XIc@w_n1%!|sxHE+GBYZ<UsSl{&A-|R=dsaz^ext#-=~<3x zj*%ZIKC5!NzU`&A|IYQ))G{ZRhKE6$KUfva#cvhSQ`Vy!mg-0&>d*`?%t^5dyM7nX zW>q^!>#F@-dHCr|L%^D*=8V%OlyY~zqMT^^9?5|=%>t(};;$MDWtVHZq_b|Ku#plN za9BcRXct`Bj98RFv8dfk_>MI7h$%tJ&6&wdTU=+}g_>_PsYundlm^KP7!n8;u4F&? z4p|DOW86kMTS?w?ly9fvVFW8>lH>iIEyj>LhY5jP30OI>9hh2D*we1>Np);Tmg4Yy zql$<eUc4Q*G=>h1a)1ilr$$k6BD(;eNt*YGX%5!l>_U6crrDlTLMPDo$!tF6P8378 z?r?zThD-rB?$Pf>L@Xb!3Y-^UFBya<47P+6rMt%CE0E?@Ym*BmZz&HIoRbA_0&GCJ zLLYUowkT;Q<Ep+iu#ueqG%LIbS7z&eJ9glq?R`Yaq!AQbeE5hJW1cm&?1R<Uw+b+5 zPKYG&Bei_kUB3Q2%x!Z`h_2~mvSoYRq)2GJ`I|10r75=`&YP0bU;ootIF=?&Ai=i- z3Kmw!F^Cf-ji_@N3!E*b7-clYL$^dRR^X}4Ha;FAOfD&j%~-HXQMJCpL!gnHgW2xt zCg&C_V#wx?p#mJR0^=Ap&ckb&Z{1|%oNL;m(gk{4RC#5+I)-g*`fEI=G!3-Cp}O#M zIv0$X^!kIA!|Y7wn^jY<%i0QjqSb+8crgV#>5GQ1w0hPh_W^$d({^{K@BU=@?Fwwy zC9CV<u(KC-P}_7NC5(h8j$>~u3t0tU?Wky`ink;N?18gKDY}n9xu7ekrJQ#eJydU@ z_(&4#hD;Nm08n_W#i7wAOJ4e-L!bC*H27FU)(<K+!vRuX={lM@D%P!brjuCJ2H)QY z&=&Gtz16Wo<k_7KTc%U|+l{?LjfZy$gZH&9JS#S(f%5G7TS#&L$hTOB({n#fJZI8T z^?2b&TP09_Ko$o#Ln(imNoOE_MtITBK-5RwBK>U_$Sb!NiGx*XS-#ZHP54!d;0XBl zV$n140wWP@=h}y{NEKpBQ(-%+Ye3D4Fk~&T6fbAAPp!}AiWtjGxZuX>ki={hNHwdq zW+*$q=48BboqfDdNmz5|-cU$&=I@(Skw082sg}FTzgSpC+O!*n1ZeO9F|J8Ny}nHz zVmR=PhYe9Y+IeXtY7^8>=96(wyb*1RWDX}%Idy`Cj7%n1%1sL47hRD~GFX|Dt>h@7 zOS83RvXp<#h1<&z@8+@*UqLQb(cmTw`h|sC#glqirSn!*BaDe_v@wzl6uX4o`A`=m zJ)|2|ioCGj{A)%~)C`x+_K_}JFzw>4qdqt8R%Wo8++_Qh<w~44&!U!ssD>~{h|qAq zq>?rqimA$Z!L0m$p%XR=ntT{H*}?QkPAzA~J;QTfYU2J##}|Hm;=w22mf&@er(T@y z4lAN(;Zs^#RF;aBjX9Ws`u^E+!ivN+PPKCRi@ZdZnf120&~gZ_1kXWMV_K~PDaM3T z3iaBGLkoMCP$>8kg2$$MA+$tQNAAGM)TieXp3INoQ9eaHSC_p_I!HBJ&r1jlhG%jc z<@W5<+YPrNQNH1@7_+I+S7mybzqUruUCW<aNHt~^l+4{S^(CM>>4!^d@8YDXw9*0d zQl^9_#N$x?fdE#Ssq7sJ4Tn^DH;!v<<$g^%Zfv)eArpK2OiE!2lsEC*%Y-H7*BGmi z>&k_yXqQSN>ZyW^k!S7?o2k<!SYX>JRU4RVv4Buh8q#>Po3Z`adWBbHwW@8|h|45z z10<(1SGP69wUk0~eZY{yUsmW%R!}gD52Oauuj}OGqBtU;jhn_0Ko%JVKLFQkuwKey z_o6k08^Lb?pWW1@$mKJ6#5ZotyU<pw{k+AF-LG!LnbnYS0Q>i`C~v`+Io`lxAZ7$X z>#MvAWQpcnS^3ilt7J%hLP4P|k*`Lyhl3KYs!E(to<)F*?m4%bUO^!#&?q1`pRx9Y z%UA6=W{X=S%{02rUKEu^aJ#Sx@fEMrT`Ul~lP(t+yM)z2tNbZ5sEhnH!1daD0H0C4 zp0v{-Sm<F3vrFg+I)8^1dnZ4p3w9g&9`%=0j~sz%4KY>c>3v?)^=fu$rbO9w@l+!x zhJ<eI;kyTZ?Gtq$^odDWpb$}Z=Q-gKhQlzlKBJbQRo9%6elu^AnDGH=|4;W1<5VX5 z$QHF&*!xM&G(D-dUu*?f{*LX=Ncz|pIs9)cqHMk*79>YALIbe`LX1mGYx<E+`4omz zHz&#VTw{5|zQEx8-csMy)%c&9ryy!mX9128hi>Mj(*B;RZGjIHi4(_lvNk_MID>CK zlH7-O&f?nPX0Iu4J-8#voHlU$olPjoh}dMzk<z=L3sKEai+F>+DJW7duL+cF6Kin6 zw?EcZo%==|-<gkFF)zsbbTei0i;gNE=@UfW)Hyp5!#+--WpMfjbMIaA#e*PN7C`4# zgFq8>k6ucrJLrd38ph~+xPql)rTxexzv%5iSx;f()D+-unf$u>d^MlLKa?`I252pV zmz+pOs*UpVYHZfa%U^^O7U5@Pg8z&|f$hb%5faRw;d?mBtj+PpBEyGw=uZ0mtlKzk zP>g8Vx(Flrg^_~(<8x&Y@Q_)h9((yMS;Ag}csy&TH@My<pexbl3GD<z*CxOcx;s+7 z*76i&zpoG@l2K1Xeob<vjV;uqAf9Nd7CKFzuP9wf7FTtG^%?7?N7;(kp;8S@C4Wm_ zT_P-TDXKWa91hnBvJvX!dVmZdJ^ht1Qu=4nO)WBSX>9zDIPZ6RAKxIKBT2kA2znXa zX&`?&%`GBEs?~^WJCXi@=_K>_a<<3uT@T04uqB@T3X>Ys>v&;12=&Ih?ZhLz3Ok}c z?C@&fR*((xg}cmR;6f>QZv6Jv>C4s^AiR&61g6}-swbbsq7|XUJ6QaS7e&;oQO={% zpOiw}KN;@|0JIPfsj=^fy<2cA@5+IildD>P;Fy1?|H6fWlad**fDBC?b2#Yc%MV2) za+Lcm2l78-crvaZ`x}3T=_6YHXv$#rpA6WsGE+atc>vTshFE?HuTDY{=|42v9obw@ zs`{i&bR|rh_9?ISpUV-EsTPAMJL*@r%im&mdPD8pLjCWI|KtB3_AeD-{Fj9VYfD%# zTi2GJy_sDhF;5FCt)o!^q-ENr?bmvfwQ$pnK&i?j%)OG#ws9+jP_2l$zE*@{7R;L- zQ2naIRfb`_Fu$m2o_gSG0|-?{qN2_$?+8LG^o*a}k+$52rCdY71}q|=Nd_8{5e3H4 z%s7cg*H1nkX)LDGCUukdEj>zOK;~<o&a&3MYpA-p!r$Tz!*E7!gCB5#PUS7M-2O3T z3oQS8%xfA(vhW7J0*971#zRFD+wa3o`BWVY(5sV|@#=|SNx1sX#ek;gwD<Yd3_l=z zl^J%nJ~jLnjhzLOB`*WBu{V0CTr+aThq|)=y2H;kksxBn#$FW~6#}w~s>5|4&^=CA zQbg-b`>jV9SJq%=PatK=LS?@i-|Z^w&t;5KM)RN?BSe%WxIOd14dI}XnKXn{r9Kn( ztoz_rawkQFX0cN=Z`Ytdr>$XBib_CDUHCI%7agH-OA0fFR81CY^IpXDqTV3$R*WG> zwq|{90hl%m8R0TL_8NMz!~zKxLMP`O(@mpUJ-acvV}3;dHcJUPp*J#DFZpD_F#Pr& zyx<(mnWr8mEFDWnxbykw>CR2tc%4rn_9NzZ18t6Bdyj~ZpBwU=fMQtY@N{Q^6kn{E z+0qCwP%$@en*TJc5KQVyazND2?`^-!ht(uY>69{(nSdc)Kvxe|R$e|eFq-P~KDki+ zRYl{qE7VO7b%twTqDokb{=Cm-lxiTlQVt}@p!a(udhzub>K<^L_jmixT}mzfTO!sY z#oP1_i8blGQrdexFcmkVahJ9g0;W0vwqdVM2jU&G(8~L{26N$w!ad3Fl>vZ_sX7ez zbKdxGwQhs|VnS0OZpXj?!y37hW<R)(zlk3?<Op6oSPHj63EC%>q&bz57y#~PQHuuU z07W=8eW>l-aFPMk6^<p;HW%thV-sjnq)KCIM5>UQktT{ep9O1sW?Jp)tBiZReI%mY z#fy9Q5g0vj2Yzw%Zo}2A$40+2Gj<RNk%>^z81}@legUF3X~z$*`MIqboV#<$<j?l1 zV8>z(ym=u^Y}l5&2|A}U;@ERXa6VkhyD5;Ctou^(Br|j!aHjNO0YRy=<Xc}dnef+U z;c7Wo$QjbUz;F0chG>5kCtI$G`V;Zr`*1}NUmy1k(pSjWs=2B3HOeooPL)nwwUCIK z23!95NFH@?kalXJ5`bQ!?<ydV*X|2gng>d!gUgRU><___C*2`c<ymNGL{%^=s?=>O z6#nyV<T0P;5PR_k(OTJ$?Q9Y_uoqBztUj=qgPx@`By>7^m`mr3Z~P?7*mt4*L_b-X zPyQT6r<`)-%!pG<jYfE8``ZW*5=%bbIB2R51mmUMmvq{+zf?OX{9>D#N$|iV%ZQ!| z2lqEK5;|Zk7cEn|LY;M^|KP}!>yDsV_*;b>^MUcvTfV$oaE&FYuxqHb_=9)w;~jm; zcY15$scUBu{6Z=uV!syBf*~~)V#X`rCh{jIEOBB*uPxk^fV2HOZ?(HU|D<4WqyC8F zP}j0MS54!Jjp{`DQ(N3X$gTiun5W+Y@MMamzhp4dDHFjYvPVTQF|kcDLi#z$_l_D) zF2JPyT;wc$ZCN5UyAM3_>@2=|(L`+2YBt}zaO?@R0gS7T${~qo`NL^xRFX>vZ&UxY zSz05@j}Zh*wj|+juAZq-0uNAG{ugnjb}EeF=B%9RgSG*dx6~rg{O{G(c#@r$?{j~k z>Lt^SR$5t?rDUhmE0%foq=GEe>1@Fqw-!0t#v_bCLDRF`EIwobc;}qfR6{d!ReH|) zvpyPD!ZF;PFR1gKR;dQ*<^}dwa|FJ*&mSZSm`i$kV#@HUkm$D^&#C@n+XOPv1=HrU zhfxy%x@--ELZy8$-&3?TaeZ2HQ&nJPhj}~+k~YPYq0h7e=k=@eF6jzIsAI=FU2?MF zp$`}FI~9xUn*^<>+VBWPzE~N-XM7y9)da`J_=bL0>Y$P)xXpsFZ9)MAJSE$m_}-*u zJV#nPOq)e?EfgK}Adb}p0Pe=63#%hIZOLFTodeH(i(9)#H)jL|fUhe&edyM9hwH0W z!k>)2C{cTSJ)C@xXLg}9D8)BVVp*Y?6oKoU5T}#lm5q;jgXh{7tH3bPduv&E4?2rX zov6L>8f%J#y_C%+ZXAI!xQvFHB*G2zGrH-LK)@?6m^QyV!_`^Bb;!e|+0ov)<Rs1} zt*C~vegXXF-(r^~eXBVxuo|c3O?Y(hV6p4N&S?HRX*g(Xlz}hzBG)ib$GyQI^7EZd zfhYH@VA*eUG#}pex64jDqKEas=bWLvL3%L$FPGKLKrDg7DJ(2O6hf%gn>z-Ff-V*Y zBuXq^SGgAl#(lq$dEY1x#;b#<O8>)|r%)tHBd}Je8FIeEaagcnqXHs6M7Y#0-`#&7 zdkPFN(*akUVJ(B0N?&Gf4ky_k2?E@`8|CI^{mgRnsq#`FO@ByD4hq1)dgkX#cdjHj zYB7FIM0Ba5uw2p&vS+p<xq%RpQpaOfG8~zwai;F=KjP#o9RF*pjJB>7uJigGdquKz z*{M4V62WGc3JiTbt=}Hfk`dgXRiuDYjI!kukaZz5@OSEfd@<wfC*!yaSwG$yrOy2O zH}H0H5AF?d)N<2b26o7?7c)|skT`QgF*b|%mBa|KNsy?$G<<}UR#uC3lKkB1nz%<j zMw4rpUR+Z!C9**BN$e`setAaS#0WOu*!c0f%TFv0q5%J~E3V~COVn9*buX_)ko)4p z%|S0&(9I!%O0tAF5xb-qp)^ZY{qSTx7DKwuALlv@vWA-86f`M-H`g1d1k$vDzmhS* zX+vk1&lGZSOT~h&rv)s<S)!N@%+R9XKMlcZsNJ=(x!YTgqr@LwB<E1xXQ*6GGwk)( zt?afrtOTA|w-jF;z5)w9?0ta}?~9vM+pI-II$Ql5G>jR{U)pNpCKDDXZtB#3bd!oH z6Po%V>s;&k+BqvPW`b^h31`@wEUbgN;8E-Sa0T(>d#iH%<$d{r18Ak{(~+jupnqf< zf6Y*VFCnFsC;a{8N^|U#isYFyC1Z4Or|xIWc-d6UEZPuQo;Fi=T}4_>N~fF^F9a}B zA?|l&m%8qv!&ag1x0Xw-I{3b_N4+$7rjbD=hk0LKkO})hWEC)?48^FK!BVNwxT_hJ zbo<m*(}#=;OYxVZ1E{D|n7(i&V=8)st5BJ^=!YFmF!t3MZ1(3I=`&9^l<D1VWAR5S zHY5DVJdEE%NiYLjMY%lH_OTzeeD7toq?9jqK}OdMPqGy-&m@D<%bCaTRa(Y@=@(-Q z4TMU@)xV+%7kSuL)(h|G^-kwAr&rx@1tc7I1Kfmep|X#hm+oNgQD6@zwZ{FoP_f}{ zbfyX)Ot4(`6&!!@@M7;IqOdK`ozvh`I_E_kD5xw$eO|UNy`;bN620il)6X^UmV4EE zs|4!V)H*C~_o-_7#uqxZZLCY0P<_1MUEnehbUO(omOr&T3R^cMs{WS2I^I_;Dd#E} z|D!XpLYgD9P%v>)i{1?%lXV@d{<9E=8NCX$t`gUd?h*DuO=8X20&_Hy`8xmnPf{?y zt5iGd;u%sp*)HTZfu_T)#2Z#Y42Q{fA;_NI%5bXQSO890mo-$I#yu`tgx&rrqW7Dl zHrdEWgD77udkH6tCHRSVjb?0Y>OFov4+!CHb1WUI;n_7A>qrmP2f3o!N1M*mR#D7~ zVT!<YZWGN*4zOcR*XqwDH<x3OQVAq1m@K)}xsMo%%;l@@bz3RiKFW+d!I{vcJ{ZPs z8D$VbA$V9l+bVtp+wzBmRF&k?{eX#|5#gK>DC0{<N_v4n>!wj-O*y&`73Nd{MB9@c z6n#{=grIvrrc#G8D*?%!rA_q|jK1$uyun)m8P{JP4?s-tn2X7t*qsbNzkQ0T%Ezb7 zamvn(sQRlgeN3I?(fA$4>fTM!h@Rg{Ji+Ag0%NmT48mG#kmk3_gNoE1*6*{-{H<Q- zF*@&>8n5MXQ@Yo`pq=@^sM0MIZ<kRJ@KLz&d9T2X!Zis*#c(;-{=0{E3nfW@%nd5Y z{VDDXn`J7&o=PoOW|-=k_gY7&0x5-~Apy|4G(Ct@f9Jrp=qitr(%%>mVfM_+O8Yt* z4A0P&w$Dr6a?J$yPoetlHwcTr-uoY8qY*b*OIiy*2~hUj)mq<=l%`FmuB$Ky7C=z_ zEj@UN{<c+VJKwZsADIMT_{<+<)O#X<60aC0E@U6sig;xD%(Vb7XJM4R_*B+&kKbu@ zJM$Z;M|aR$4yQ#APG+==BQKp9GzAjLK{P*cY>9tKD8wA+-KYiM@3A{D(>_?Nn1+Ha zO?1+PxdpH>C+9I1Ji&GoaSeZ1YYmegh$AYNp6jJ)lxqbld1ElN%vYG_mNG$}2S=hI zs{=;gTqp$Hpdm&H?Qn4;#sZ6l)Ru5*?)Vj|tzbH6g06CWZJ$ihB<cy<e!(eQt@VpT zBQ&js!@^nTWTn8?worUk`k=3L8JXUQ^~L_kCNccJ@wi19CHUR*Ld`K7u1qqq<ylvj z+y9rBEw`Vul1ju=INZ5>fN8DdS2f1HaJTz;$^2W~2t`RJ)ySTCh+3=M{fYC%P)@pA zLaSEKkh_Lc??6_3AF{C0G)pYbcCOP+TaCZHTmGlw-!R&{HnX7=$HXM+%$_4Y{Vxc` zLY#cm3Z}*~ep)O-7NNLDapFtI+-Rh6^2umfvrQ5}`2;Z%h{>e)t9zuK3Nu9Q$Q5*c zQ%B1bO5n?})P+b7vx}LGs7>ng_U^M%5!!8EcM;R{y^=={^n_~oNK{Y8LKn467fCmS zZ&Kgm@e>2N7t=JS4n8AaEy_`a?(M!BH1odB2q$g~8{wmhoj_N(YVi)Jp=VE>ImqG< zwY`ZF2N!_rA)%XN@jWW<fV-p7S@wR%vP+-9GQ5BCXVB8AB;wFxPyJdiPBatZsiw!P zI7j1nNcZ%OfQ!x;zaJf>xV=-J7#OL`*2z;c(dw*hCc5tRZ;*I|6TWPvxOAcU2xEw# z@hi3>!zbwECN@e|t9_i)d6JLqWlO3g!&8oOnQpiG{wp;=^I(rm!r!4kfcZ_At$=kC z8of~s%^}c9Mqdfz75r(ZS&;T*E~=hUCDrEdnaFCB)s>SGoE5>v#x~OSs16P%b-Rsn z2lCMc%oz+|1`Gscc%Zf1E9__M)(KSjS4tWOywpJTN*v1ay*C5#vKHvPDQ7+kedrAm zxK*mWDC-U>`-x+&Uj;z9;Z9OeXRg}73oOdi0!7=YGV+WH>{!WyAH+=rY)tkK!hxqs z4&frwnSk1T4yqubgxwtgK2!&Jr#>&VeT~*Vz2@(w$uaYnlY6LK%2t;*ni6xxFBm|* z4GV>mvLg$4Ftx_N&dS`1UdEtRQX7IM7PhS@8iIbzmcMklKU-#|1_9e*qjS~PS^QC7 z{ql|G;@;<eY1Fb{N3}JGA0PbyRbk!&HEEH}#E%Oc<;h;VY#>DwdC@Iy6bW>r)ccte zVK)+sV<1lTr%QE6cmxw64(zSt5_^k+tCg_ILfkB9Lw56X2+(L6)fjA$Fghu}kTt9e zLp|@{?4Vah^CgAAvCS>WYq!i^CG)nMdp=&`f*>EA+Ct<zV~&tS;ef<a`P7+o$C*); zAIF8)yR&NtC_EI$1HtbK6~+wDV+V%t$&U*;^X(8o-=pzUq>4~%Jo^vl*MWm79^UfK zp8-FM;FQ4H>qTSA={yZ!jv!hQK|JLk)+zRW7~_V;f}wA|`AU~#smQmm=j`;918stY zXX#_|lpy0l!4}s@e@j{>r!-J4jShUg3w9(oCIV?QwSm($G2Pg28B@qFUS^Je+C7QH z{L;_m<CWx-Jb=2fFK-xTiqz&^{n}?$pFg)}waR&nJ9$KInovZOQzeeaO=S;7?E@}f zyV`&)J@{2WyEXJ82k?3D>V1+|;WY()&o!Q;8`;Qcypr@O#pA#x?8q0|#bXSO|D~iE zZQ%I#!RaKMZj;f-;AJJFk7aYe4BpJ3bV=Q`q89vAN6>~ZRP6MerRvJ;nZ*$t*VeoZ ziAwS0EQ&lUFYD<CQc1`~W$%?5(`2;k<Cp5cJ)=W6L%+te0y4HX%}k*EA`Me<OKAOF zu-o8|K9%SX&y9@_JUu&WBHcsPfkj}d=jUVaE?03>i?i2MP8F`@9O|QPEvP-Lutp^f z;_*rnEe+l9mm|r`mA*q1<tO~k@&OXe8vne$H&DHC|5?cpo>OcVcJ~HNE?Azk%7cF2 z2H|oKWZz`4M`03d@b-s*$bdMl;H6Irm$GMa<~d&l6XPC2*AIfuFxB5YjY;vh-sZDS zHP-?=(WDaw6i-Xl(*{efC)&Rq3gCTaAr<<zc`e)PdqEBl@6pow1MI_}9cyeP3tw%h z*(b*bsP;vB6F~fB^NY4{Si<V>eZZfeW8y2@*bimGCoPulMNG^vo_U3SG>tdr-?dKL z)`5Z($V2)si@{M$S5I-O{bik`$BkrO3A&}1O#S_dWkNCB83}k^Nt}tq6}}()Lchxh zW(h`80-ytf!C@TAEiu$l&i(`*zBBN^$pGsEAbXaF(7s^7zSJ;|4wnAdpz+}NHKDx= zsbp|z8pPI@2E~g^4_;HkOeN@e8)qG~(p2Ypn%J8<*64@<@W|~NbvpHzkhql*!AoUv zGoVNYa<U_cKE%0_qdcKj4~&L#drvdg>aWDyzXYmXc;zhp`?I3toHUxl2EGO<#+xNC zLuz^pbcTi}azv9bR^0KVk36C3zF-#r+#%to0A%fclXg)W+}wdho7{2Qj7MozfE@H` z73YzuvL6kEEqeT$lgrPc4vgb^Ocn(9(6I6p)i|#AZj+~pSh4$nvhz<#d0;~@kdxuR za^CjHt>p%~vpJvK=Rl8=?aaf*aYCbMu{Eu>h<s>leKD^WTN>`Ww-e8|MQ@Ce1@(8W z_pWkmW?r5nj?J|oQSF3EZ^NFDQ{VV%$>7Hxh&C5u8(C@5@h*oE(^vVIbKniIh2OBQ z3(ax@gXz8w&RC^v?fy_dKO8Zw(Y82g5QL&%P{hA61~nt`_*b?<`f!1S>Z%VGAzsck zg7#s8nmaL~9sM@Ze46|6K)bFEFc^~u$s~Xw-7UCFtd~YuhGpZp5TYQ`&|xr!2%Ur| zDoKz!<_ZOZD1(vT70H7!RTx(p^x8870u8R6edg5|yuRC|_Q2lkMe(@J!|j1M5q|k4 zt@}3TFW2M5&0_5H)oD}@0oK~FhEeh<B?U<$)NF`J8n@^{lE#p-Lnnz_2mCMzMjq#B zckBZGtjk^@Pf!B&=MD_DIg&BT+AqHuK;DuzlfTOv1-+=e7B7~r$kA$OZo^XXgc(We fPlfRPpz-^~Emj{9%eA`_pwOQl(^mg?pZos-Hn=BH literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/account-applications.avif b/static/images/docs/partners/apps/dark/account-applications.avif new file mode 100644 index 0000000000000000000000000000000000000000..b22d22b1d3bf705f1db3649b9cd8b6b06aa22ecd GIT binary patch literal 21521 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/consent-screen.avif b/static/images/docs/partners/apps/dark/consent-screen.avif new file mode 100644 index 0000000000000000000000000000000000000000..dda846de1c17785febe90cf294a290ceb3c72883 GIT binary patch literal 12018 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�COCF(w7An!^`*Q^ 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 PHG(F9;s5>69q@ku8QK88 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/device-code.avif b/static/images/docs/partners/apps/dark/device-code.avif new file mode 100644 index 0000000000000000000000000000000000000000..eba213c961e8ba187d5ebc4523b37f1d0f915aea GIT binary patch literal 6291 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 I{uK0o055pF!2kdN literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-consent.avif b/static/images/docs/partners/apps/dark/quick-start-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..154520c6f9fd89614ab88e5bd7b54de993ad2003 GIT binary patch literal 11545 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 MevJR`zhA%q1DA~%(*OVf literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-provider-setup.avif b/static/images/docs/partners/apps/dark/quick-start-provider-setup.avif new file mode 100644 index 0000000000000000000000000000000000000000..4daf8904de0dd3f3ac814559d4a3ed42d511f6d8 GIT binary patch literal 22179 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 a#6um7W{43c%nmk<p^7Op{=Eq(g7k8tLf(o1 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-marketplace.avif b/static/images/docs/partners/apps/dark/registration-marketplace.avif new file mode 100644 index 0000000000000000000000000000000000000000..f16bd337a49126ea740c93f4b3db6f05158237ee GIT binary patch literal 27546 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 W0zdKU6;Mnha=cZ%KYH;g>S*TUV`xAC literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-oauth-client.avif b/static/images/docs/partners/apps/dark/registration-oauth-client.avif new file mode 100644 index 0000000000000000000000000000000000000000..819a4fb64aea311c0a1f817313a830a4b9a37acd GIT binary patch literal 31961 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-secrets.avif b/static/images/docs/partners/apps/dark/registration-secrets.avif new file mode 100644 index 0000000000000000000000000000000000000000..7eafc1cfc6b74d41cf22fc6525978410d4378e1f GIT binary patch literal 24871 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 LUi@zkF3ANPh`#I8 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/device-code.avif b/static/images/docs/partners/apps/device-code.avif new file mode 100644 index 0000000000000000000000000000000000000000..56cd50b08c1b2487f7558ca744a4873963b78062 GIT binary patch literal 6250 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..ef3384a9726126d4f32b10a87e75587153bf02e9 GIT binary patch literal 11628 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�M_br`^`z=!eD<dZy;mYoYsvL>BM9kdBq$$; zXi<BlzT{(h1n>kUbu61Uz}sN^=m1O~oyb@&)VL;jQ;a{*@gCPf?um<E|Cpe=Z^|wn zO(H~&L)i@TU&{j-+|lV!uC43SIVFH0hd^K(l-3`(q~5bpRumQFC)R@04z`3uDFP)Z zUk0VeU@7r2>Hl6XBOMmT!r}ZYZSaEmP2gFNhCC_{`jDI^fh)x9BT<2eMsIP_I-X?9 z@-12osJJBJ{FRTfC0Ux}tp_ZCxJc`UtZGX=zLwiP5Y3RaAGqx-y>O-owx7#3i>p$v zNELK8v<@%ezaiAkzzXMV1z(V)3Tite!3r=rNonctZ?i_%u0=n1*>6Ple3HhQA;#@H z%1|ScdiY_Hc1Q#eNGe7wtbqiLE&JY_Nhl$IoC^HBJP?f=$W|2P^)7h1$(w#Fu`^+7 zA&cZvDj;I3ldrQ9r3GbwbT8d3yh&@UMK%Qpl<n!?NmbS0De*qM>2)Aaz2b}!M<{<_ z%q|hdj43s^uswZ6M=m9c^pWosWoV5nk>!QI7B;%*Lh&;AwkjTvp3&X_W5StZNq@!< zDy-UORsSA|1<rsA4cnMiMusNExyEFeu(s}s*_(8oS{N930e#iAzCwc~H}0>IxT!l} z>ZBpYVb`K^Wju$b&H#6nD26imq>t6$M=2lJv0$!Uc0@1HQd>hk=#)K0Rh7<N-7tPF zaf%{`EP-P@gON9D*$$W6l-3@kLcZ@I(|!sa!Br?maYPh>%3$s7_%s7%kFCRJKSqQ% z9r;nkhVpi)=)~GtH*(Zz&94?TDXEh1I2JRk=srSjm9TK{kxVGPP6K*1y>S1ohHRAp zY8kRIA?J*vB5HlDreccQ|Ec?+7r>8w<>GKeqN=v5=WM(>4c-U6RkU@Fc<b8Ll;c-s z0iORQE+#dlTxgEBjXzUto(U6Sdva=Z!1{fGs`JhV5)fb~^_4O);PC_$WKW*^M60YU zjY}e8%Zqt^Cri$!2L9^=c-?1t#ova9CI{V)xxj-hdRV__OX;G{71XFgFKSc5<@bGh zzn_XY7RF2X=G*4OX66@@eR|(!^@md@x6t0{EiFuW)2u7H#h=K0)ZClTSGFPo89Js) zXWS&p4)Zrr#|&qLqHXIzfAu0MIq0>BA_W)X5HlE55?pUBQ}lomM`GhK(x&SceUk|C z&LRi<gX&&p&71LPVWPnYPtJ8npc^t&%uB1OG;RgxYhR&DE`pPe@FQ++dn7828+VMm zUD~eGH{Zw4Gz*MLIV4bR#=in&TB&k+cd#Q8aWSHlfE}?ondaO3V9R{tQL9S$*2KLM z-*|cPDhA5j;(`m(Sds)ZsHcuUXZxppg|8G3S3fTF41uK14buaFn)TaK9OrLKI(cb{ zgs_gACTn(9Hh?AGkQM$=Q41>vtptoeXSSvACK*8emCxhfOkDzjQvnNSad2(o2-!OW zIV`Yjk0=Mauu|XK&!|M7c93FQJQ9)#MK%DwF$TcL+MQcGUU)Dk6jh*(_#8sl1GY*| zRU#>yUWdmpB%?>ea|N`0wq1B`iCc9?;TE_HtbZTDpAKR3@uCaw4@z_|&kZfslRcEk zw|M?*w7=He2%qi%C^Wne#y1u8(&H-2DxjS`Ud=zL27jM25;4Qgr@DrI(pEq>p}9qN zj#}3rBf>hz0{0We&5F3g^6!Eh;+?~RooDXi>_KXlSL-g4c9BR=!;&OC(Peup>kJCg z_`0oyZ!^ORClDmKg~7|Nxb4l|y{B`OX*;&zOGePM8FZz6#5!ERA{|9x=<PB7?=*By ztr2h%j+wsii6>3BF-74zhyD(C<kdrd$w!T%l^}Wir;^XJa`vkj8KoO{U@UsU2TCe? znY^)J>!3~w&aeu~F(1ch^)ceCV0@S50W&sR%|FxM55v{K*R??y5dJ~mEkJFV9OHPH zOh9j`+i5?Q%_6?kzRQ;@*A%Grw6~ENxMIv?jc1|+fsh1)Qr7E_2vvH&lOfQa9y8bf IcbxeD0avgZ$p8QV literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-provider-setup.avif b/static/images/docs/partners/apps/quick-start-provider-setup.avif new file mode 100644 index 0000000000000000000000000000000000000000..9dd61da6511ef013c76503f97475d2e76f9256d4 GIT binary patch literal 21072 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 Ht}#-OZPI#p literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-marketplace.avif b/static/images/docs/partners/apps/registration-marketplace.avif new file mode 100644 index 0000000000000000000000000000000000000000..2243b76deb661efba6c03c3b0bab3606a0fcd224 GIT binary patch literal 25620 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 ONYomY%<!aR!-GIta)rDA literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-oauth-client.avif b/static/images/docs/partners/apps/registration-oauth-client.avif new file mode 100644 index 0000000000000000000000000000000000000000..87ded977b491e8454967babff71daaa33f17c6b8 GIT binary patch literal 30091 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-secrets.avif b/static/images/docs/partners/apps/registration-secrets.avif new file mode 100644 index 0000000000000000000000000000000000000000..caadee00413cc3a5398ed78dd6c2ce98ed0a62c4 GIT binary patch literal 23251 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/auth-methods.avif b/static/images/docs/project/auth-methods.avif new file mode 100644 index 0000000000000000000000000000000000000000..96c2e0c318a4f35fe98c62e7a863effba1bc5a01 GIT binary patch literal 30910 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 JNuu6!l%SJKpNjwh literal 0 HcmV?d00001 diff --git a/static/images/docs/project/create-api-key.avif b/static/images/docs/project/create-api-key.avif new file mode 100644 index 0000000000000000000000000000000000000000..56bab6e32bedfa4d2bbe28dc9dd76f90dac666b7 GIT binary patch literal 14966 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/auth-methods.avif b/static/images/docs/project/dark/auth-methods.avif new file mode 100644 index 0000000000000000000000000000000000000000..51797f206ffcdaed9056803dc27c8ab8570ca132 GIT binary patch literal 34406 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 a8#%{P>uVC7+&j7U^sdirT7R!8OBhIZ40bsH literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/create-api-key.avif b/static/images/docs/project/dark/create-api-key.avif new file mode 100644 index 0000000000000000000000000000000000000000..73564ca6be579cbb8854dc3e96716e2c10c8f70c GIT binary patch literal 17537 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�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 FB!Eh=*(m@3 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/email-templates.avif b/static/images/docs/project/dark/email-templates.avif new file mode 100644 index 0000000000000000000000000000000000000000..9f3998694175cb81db363a229c463c6e9ab6e218 GIT binary patch literal 30610 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/labels.avif b/static/images/docs/project/dark/labels.avif new file mode 100644 index 0000000000000000000000000000000000000000..0ce8f06595a0bed1083acf72cb05359515f58a7d GIT binary patch literal 32758 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�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 Nu=(RG|H_%-@IOnzLOcKf literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/mock-phones.avif b/static/images/docs/project/dark/mock-phones.avif new file mode 100644 index 0000000000000000000000000000000000000000..0c775352c168f761a4d73aee5306140876821fb4 GIT binary patch literal 43735 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 z%0A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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/oauth-providers.avif b/static/images/docs/project/dark/oauth-providers.avif new file mode 100644 index 0000000000000000000000000000000000000000..e4c031cc47134e0a4aba3eec7f2aa23da6a2a512 GIT binary patch literal 36614 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 Dd4J`l literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/platforms.avif b/static/images/docs/project/dark/platforms.avif new file mode 100644 index 0000000000000000000000000000000000000000..08b105f48a8de308adbcd6031ecdb61506dbf447 GIT binary patch literal 28928 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/policies.avif b/static/images/docs/project/dark/policies.avif new file mode 100644 index 0000000000000000000000000000000000000000..6cea4b15c2c8c908d6280e0e3eb8ea8cdc567a3b GIT binary patch literal 29586 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/protocols.avif b/static/images/docs/project/dark/protocols.avif new file mode 100644 index 0000000000000000000000000000000000000000..8c0a67eb35fc75e7ce44c6aa062329febae11511 GIT binary patch literal 44395 zcmXuJW0WX7&o(-?ZQHhO+qP}nwr$(S9@~3t+cV$3pL5=HwO6jJtTz9eCItWhz%g_2 zbTD+YGz0i2ww7j$|LL}thX3(ZTT>Uq|Lp&S(89#V>Hkv!030lhUH(u1KZJ9zbg}&( z0sOZTS=!he|HniG0094u|K#KUM}Qi~e~j4D((ZqU{?Cf~kC+1e=k?Fm(2ardKUK}r z!O7tta#%VT+y6rtLpMg@K+^xYp;$UQnEvMk008=L0xkSo5F9K$EdR3rLqI_M12jtq z+y9IIUl727K)?V1HJ-L6hAv0|P*9v!=HG=wKv=K@OuOqqxF8Jx!vKK-06lc?HRSTI zYYU5g0F)}ZY3XfbqmZ_o3#D++-JRASTtse#!O<!4Mz5sZ*kD~gJ;oIQ33!Z<-6fj1 z-Hg9zmKTNSkYw}K8lK99i>{4Y?aS2$h8VHyO*)FBj?T7C2`-+J*{_r!0;dtTmlrQ| ziNS)c7QGrDI(}OHm}n|d&C5ruY>guj=L%TujVpfgSnL3ZH@e1biIz+kgO03v6wM#2 z{wDz<vyh8c@>_PxSNz2Wl6OtiRAsa|PaVgn7{<m#T1y<KC?Yh0o-86S;3X_5aF|cy z#t7|^ikEgkddF<oag-?5>cN2%S%Vmd!PV>R1>{y%Ai9bci#(|?;P?~`L%^IM7r+=1 zIKG#o_notvkL3a@c`#wnB~2?6r)nVi<@0!HL*dAL>2s{@-Z~?7*F}TGdX8p*{+9Q= zqF?9kox3RZrQubXMXv{wQSwB^T5l9~#Y$5q^~!g|ef1)z@{$gfVRAUjmk>pk!&21+ z88s&j!*lB^JF(#ggrZy6>=7WcpFAo9Im{cG?x%F7z078}=Y#pJQt&JGA0}<v!e)f1 zWlS`He-)N4hAn95-=iIGTL;q$BMgDLCk-w-F(>I)Wie<f!~*{eQ<O$ID*jsOp~?mH z>;)i0WE#`_xGQzdGkiHS914$;g2))&I+3*rbo9dA*WX>?KmA^uni8$C6J-Bb^h2H! z0P1AKcOBB1suy~8pX85ND#v_CK4pd-4)ucoPNX7T)->A>*s2hs6XmWQon{Ki_E2p> zz3G4SK5bKeL;3Rcp`lGAWBq<rjjDtzZ>B{not)>#0t93v;&rf6S{N>?Qt Ki;+ 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�J^a)>MW{Za#_WV<HB7iHM_&L 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/services.avif b/static/images/docs/project/dark/services.avif new file mode 100644 index 0000000000000000000000000000000000000000..397eea4d613692bca19d3d63a0e0375ff99a89ef GIT binary patch literal 46978 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 Y`xySDNrdn(Y?jz%N;(GEgG~sQj6&N7i~s-t literal 0 HcmV?d00001 diff --git a/static/images/docs/project/dark/smtp.avif b/static/images/docs/project/dark/smtp.avif new file mode 100644 index 0000000000000000000000000000000000000000..72641e8a88e6b70b5329a66716fd537f486849fb GIT binary patch literal 29672 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/email-templates.avif b/static/images/docs/project/email-templates.avif new file mode 100644 index 0000000000000000000000000000000000000000..90dddabd537ea282d338fad947efc3267fa276ec GIT binary patch literal 26600 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 W$)`}2QnsRSh8n!+$aPjzNtSSUCS@N0 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/labels.avif b/static/images/docs/project/labels.avif new file mode 100644 index 0000000000000000000000000000000000000000..65269cec052f4f2e30991ed66cf95dc47c1fc4c2 GIT binary patch literal 27825 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/mock-phones.avif b/static/images/docs/project/mock-phones.avif new file mode 100644 index 0000000000000000000000000000000000000000..25e59b1b89660c24e7a3a8da47b4b3b878838106 GIT binary patch literal 36779 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 PHa{UOsqx)o;sWR}BCI5W literal 0 HcmV?d00001 diff --git a/static/images/docs/project/oauth-providers.avif b/static/images/docs/project/oauth-providers.avif new file mode 100644 index 0000000000000000000000000000000000000000..52c778c5f47740ba31714bc2706382846eb995f2 GIT binary patch literal 33453 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 PUDDR-$9NG{PMz^4?$Y{K literal 0 HcmV?d00001 diff --git a/static/images/docs/project/platforms.avif b/static/images/docs/project/platforms.avif new file mode 100644 index 0000000000000000000000000000000000000000..8b5219721937ad1f3bfb427fb821a6e285cae8ae GIT binary patch literal 25120 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/policies.avif b/static/images/docs/project/policies.avif new file mode 100644 index 0000000000000000000000000000000000000000..55ec91fcdbf4934bfa1745c82922f86b6b24ab85 GIT binary patch literal 25371 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/project/protocols.avif b/static/images/docs/project/protocols.avif new file mode 100644 index 0000000000000000000000000000000000000000..27656745a6b8fcddae58aa12cf87ea199f406c4c GIT binary patch literal 37565 zcmXu|W3Vv1(lm@N+qP}vTDEQ5wr$(CZQHhO+xqVPobyg9)6-L3mHCxQbpQYWa7>*& z><wHkOacB28w*p$|J61Y2LI!$HYUyn|Lgx3gyzQ9j{m<B0KneD$oc=({}18pEu3xs zj{yFci7c$`jQ+=j`2hg`TmOsC|33mG4E@K5Ei7#R@6iA2qW(urfc~fYPix@H!1%vX z)xzG<{y*ffus5>%4`B>k8HEB!|4)Wu;bd>}KM?=`=zkk%;lG4nZ{cq7zYZ`21jK)U zW?^sh|K|U12;cx9U;u!GDH~%0XCwe9C{9bWpMpUkELZ}jh9V#_0U7{;Fa&vk8?uk& zZOV9fsrsC^iXoA8h^RWd{J4w<$Uz#>W>Af4d95F%j75+dII8FsNI08#SUVYP=#7Vm zZmloPNjE0+<z{$qOc=DMPXhuM1M3{ay6XHk@t^)XH|y-#bG}50+m=~yG4gc^UXg<} zD+sRWZ8P1ewvWEP=`Wg?Msx+TMjH`!?}}^8{q0+TSmvFBid;9$!yvezAvv24C~yIo zK|5E8z6wnEJjr=OMmdph#1r_m$et(nDyY=ClFP8I`vvY=<_(^i#dMjN(?c=tQA!XU zdL0=f>ZT%d0AsAM+KTJjkazN=8awgz@He~{<wLL}5$ea(0gAb=g+nhCH0jt#^>x=s z@suZtmU>VicDWlaw!6<baV_)+aim2usN=wck~H4m@eEjZiC!6JkHI2jhGQ7q-QK}2 zWIk1JULJNa3_J=fH7^yNj74SZ#Qr}%F`cNh???Jl{g=OUrIQ*J!0p(R6{wCBhbuOf z_xCrd=b(WzKF<7^R=jtcaGyPibln2Vvl`Fw`jl#2#dO!KU9d#4td{Y7yNh|$KplL4 zB1O5e(#CTa$&3n{dOV%NZ?u#~_H6h5JPVtcdK%%0@<TiwRT9|9%%u18A?ya|Pfekk zicXqnAGe%;f{1S^QhH|Aj!@P^>91drZTTHKYOgHSr?z4A?L5-nbB4_Oyb=@J^8#hd zfoE^58pu?Thy9cG>z&fSg7WP~5+R7@Eo{wpOmr^Uc|Rp$-$k?N#55B;Wd7`n5|rM_ z(W#fk_}3`jZqnk9?|u`q!TiLB%MMACr%AKPp!%M-{aTw24q^$0B?xH*13EEw-wo6) zRXU$e#OQz1FVx&vtl*=Vta@w!!hV<xWS!&4s|?0a+M2l<oo2z`;XWLn<CbzIvxQ9Z zx%aCxE}{;kgokB+0N|ZO9EdCz>FG(%8+3j-ek!*D;#0wRhtm;)hZpK<IL+LJe_#W2 zu40;UpDQ1&b>F`Nxe1J0av`4l1X>{}@(i>5cLp)F)hre1TaOQXW1}x5SS{_ypDs*Q zv=!;1uxQdsepl-P_)QYaK>5gGu^Dn|r3ABw6Qx;%Vq*TP{U1fmiCayu{3>{RnM3z` zqG+TnkAj$>Sb{7(<$chI_R?A|A5^>G7t=zke-g6<W^>Dua2l>EJwpFV=0<`#DiFcZ zzhxOKdonx8tOJ&>Erg%-tjIQ}+PEW$!vq|7Ldc@TzqB1)4K)%aAg;vAH2_mQCDoUZ zDrF*okBJ<sfUJsqF_#O!+ukgj%D1)+ah4XAiPttQYeiLnKQDF+t;dI!EzqKUgl1O= zY_J0n_dFHDK{FVV)JuMT`l=cSKcDBE;C6XJ^&Kl4K9?+sQ<8+^4H0$;Ij%_E0+<F? z`vjuSV%qXzNieLXpiSqj^P(q6vzQJCjWsg}U6T~$ueNE*<WV!h@AAcjj3P?C2#^V6 z&tJ<%S-W?3;7cmdX;wA*#g@%Lejo{hp(tB@O&G8@$rTU?N6J~h2NWKH*$u|q5e<?_ zc#ER<CSnnyGWN^VmdrP*;^$4<drEdd;sE?AdaDm7k!NqQ8+MAxkMlZ_v0n2OD1as6 zV)I>CBXUKlpj*QG`64=CxSHAD$XVVdd3HEb>YAY)rA0TB8PNf>uI!|(H8Ep7I7<WH zBEdwJ8DcDl8KO!g2#C&D0(a`gx<DYK=vS?@1gDy16E6ve>P9`g{ut_Std`_Qw~bbp zyw{;cDbO1s6{u)_nh5E)>@K3NHohs-n@f`cJl}K>CP1G&V(^Y_0$>F9IUWl?UG<4& z^X7;PEidJOV8b{|^)m(UjAj|2!Y-A+2O8GO#jL6jvp^38OC|B-G1{?8iwc`Eg2&b@ z-SFyBl0k~0gx>~t)i~_CwpX8JpFtD<+*+#9BzKS+rF4S{Gr4GCe&(}3S-pCU4eRO{ zY5mDo1WXLF$2U%zAV+e0L;iYXr4~bOHf5emuf-y_ABRZ4o29k_h`^r88J$CpMwwbq zu<wu7{d@%B3}@w@JNFJEC~xD6jMch@62$&-qP9A2hhx(sK05;@!TssWD2?n)K9RUV z<2WD60CI1Nisl>a)tx*v#L6bftmKUxDSjf;Ww|`0nWaiIC_r=bn$3H2elLL_IN{Lc zD5r2yT8Zainj+%KPf3OIGo!o)yZ}VZD5askj1$g1xLOOO72G2(T93Xd96wM$te9T? zeEp+XYX1#_`wHVHay6G_^EGwXxu(G`Q(y_J{6&cH8-oRGl)&JTEYPGwFnAwfXZMF; zBoVx4?z_jLWoQBShA-nUJHG=551Ibw2uQa}%^*fXI|@6oXxvTM9Lh0P0L)#+P|}Kl z`ee2{3+TYGsX5pS{{m^4ac`Idu)1p#$AH%*NZ@Jktr1}nN)M3nFd&U$EQjq3@96^V zvAqj_4-Pa~(20vJMeI_GXfy)GZxUhf>S!dO&_Um#^gBIrAvjExOdM-=@1O?L$d3?y z)im{|edv#HWn#D%$0@_@eDoxzn@eGMid2D+3}bs37g*c&gP)Gn;*g8^&uz0U9u~YE zo**KTdZFxR>6X<=(b$kbx#7vW^D21=b;7JXr1tuhv`w5gs<~9YCFbjro~o}z$H75u z#ln_<RlWk0&WE_M6p+pfKyayIxS2qb33_;T9UfCbvcAy5jW4_L1qieR-TR<ppgF51 z%BIpdcDb}M5Cce+#=H1<tUQd<4RPDSUASpf+?y}pHFBGW(WQh$CmNEfIX$4ZxYV1r z#J2aOG8`;GQ&yHz*C@G#hqm)LhyAdk^<BDI!oL5|-aMI-5)Mo?Ah**|#wC`QM8MxI zdD0jR6IPrY7QX#88>};|A|Ld&)!8J}+u0+H8u4Qw3ZD^ay2pK`<kx?IcP|=*Rexc# z7rLfoMcV|q9n9qu`QAOcB4SeY$Uf+G<Cnc85z`srWT8+qR+E!%sPbM&C{{o`Ox;;x z5(hVr@XDHoht6=-w&fai1?)89Vf#Sbi6}~SdU04`1m)?jCmNe2hW_wkgOyuHW+0c{ zxo6;Gy=4+H)0`Q-Y#3KeS&67!4dO?*p9q<ZbzVNHp_y9ir+&-R+~)62Hu5F65GJ~Q zwqQbNp8FHG?3eT2mW*r1)SAb=sJEeNi0*a9o?Z4!JTdUr-EyV}%(%$HRs4&k<sFBA z$CiXM;H#7HQ8nbv8=SMe$+r2XkjR{dU$D*FfD;PQsi^!<-PVvgM(nxBp+kztbf9#3 zJ<Ku|X!jqI_DvHR8|fkb{_u7Y?!#F8WuYDe0Fim1si)r`WsLNZ{~yvNfDBq-Ke;(5 zw7{!L<9g7Eg$6O7J6M)$lczY4GV+MS!Hh*U$Av!momgDe&3Nk`;+zKam<P``JujAz z<DtzR$PIh5;;@@;S`};^4Y~v&M_hj37d6wYQ)JP54QYRp0e4OMKnl3V&}*952Jhjc z93c5T%eV~8t;R7|zd*&wRbzrm=aSi^p(g~7cG6fiQHNUUl<>*tMa@qAqbpJ-hgB5$ z(+ZD9+aiDbZev0FZ0tNTDZ^IsXXIb~CyRj|lE%Ql%hB2?(%B_!k=tiP(36OOwz{6n zyrfg`ERipJrUN{bnK?{DCm!MD9QQ)LZ!x^=L;24_j5XN)zN)lqE9wfjrDIar0dMkk z2*rA&`P=Z!LmXv1K=!U~1nzv1aO9-^S%c%>C@)A4PbQjeSi8+Rr({~JdbDrAVoF6D zao`lfvk7A03HJ&wI(rUqJNm@#x5kwdnl}ix7ste565wxz$G942yndU2p1BkbtPbRz zz7^Cb-_lPpecWIa&lEY{6@aj<gE-()`U*oyu{;ERcBP1^!)7u6>H^9V<$CLyhd+u* zVM7*H650OX%TQS{xbg;*)v8#QowFRZw&X9bXKPG-BsgKjA%(~)uj0@XoP;b~QKfX8 zyfJQQ3XR|MNObSaY?U-zmYUy%oKf4cSMpCIk#pSXt@TfT|5289{nf3U?EMJrUV4~3 zhcV9{cVO2Bddj_Hk%X59JK$go=h|d`?MzM9y<Y(atBQ^?j4h_`(Y^`^CVZ_u`PhrZ zrb|w|VkL%W*)aJZ(40=k4cXVKu;prC7w(dH#sXJY`CWJPCxst`(4}-+#CJYYCQyVf zT5w4xSeSd#r`X{kMBzz81CoZNEEw;1tZ&M)HPN8oAromy6n-3mt+)7CmGAakc!t04 zvv$NpW?MSTM;RweOQPF$oB6<FICRr{s6P)U)G$t*kdmo<cvXP)QPZ^eeV+xd?5A`v zCNw2zw2Y&G*Oe$;nQArYwdYkVdQ5G-Vi0v@mCi+vNN_jYDHy}mLV9f2CezB~Z(tW% zmJ&<pCC2CJbad=CZtea3_ZJjA&;>_ZP0Xmm<473hpIoFyMJ&Ofm1TZi4i?jM>_d({ zXYg}75cPM2#qVzG;V&!@dFH&^&=Q=J=GT>-Fw_|gWQnUlfYmrrC0hKZvG(tfRoMeG zbosa6COQ{#jp=r&rsvFu0sX$M^)P}Ngu_{b*>5x8Qw4f7=ZNpqlRB1&IMDkjH(?`! ztOwag`Kgj=62h=Q+~gt&#Y{gVOVhJ>{$1_~ooI0MW1$}~wJpmnzI`d$(!b8}^&qJl z?F`|$tvuvPzbvDn4JF0qRW?s(Wz=LruZ?_PipudHBbDK&&RAKSXPoNmvtY_|%&kxp zf<+Ri0#>iy>2l~?4deMiN_0^<OKR*s$`AwWP&%;62ibAJxYgx75QZy*&^Bpv(B&kM zgYaAutp<2<H<7Nv-JHqhO~Gr67fK-0Zj&0tqAAmbC`Cd%(|&rQ67f`<6qmU{vhz-} z1YQtorS+IzCSOZ#DGoO19iZCOrt4vo_5A_-Pp+?XTjfzM@<BlDwkJO8c!luWG(F!6 zn|?^*^y>P5KAv@hqy=R*-|3?)@{<wDpQ~ea?AJ-hq)f};#bx@An^B<BUdM@@EHScL zi|^O~gR_$>$uV;g<D~ckDQWonxHYX#do!R28K^0B+m7ZlGO6cFd?Yc^!10Ov)k}vD zI-7y$ze6wGBqy5ivUI!v$$nM|P|#wATW(!sP6~gI4Dj0rs`T-X5$?;%yk3+VP{UFH zk4L+B&;Sn<!#y?wGQ>80vE%q$)op8*x0IHgawQ#N?Sj%z)qR;_F&UfcMHBZ~Z?B1l z+9&1KOW`GLzAt*38^A>K`J65gma|>T|5nrBXp8R4S^&1(L)@<Ah+lpRU-Cj>tRzMt zq{r14QTz#?{LhdGzZYLf97Q57pD;bg0S2a;#$m79-d->6H27Kx5dFrYKyY*<gw$xO zm9_#RI+g_p^s;$3ff?)Rwrxct|EvKK;y@49go~bu!)l>grEELnO{x7;%h6}ZDN*7V z%?7qECd;kX^0xfdp6!ndeAF=osEflc+xuB7j$MO^Z7d`?3=3HDimq7egxF5EPY8o< z2s3fW0H|$)W`rQkIXkw`>KPCg<25*po;;juS59J@^?lcA=VIi0I?Y8n<hR|9rPka% z7(NLW|1o{j%os)Nem)&h<x8-w0@EIzsxOtT?11&EBD*llUYGpN(J%Msp$FZ>`Xl9F z@U_<fQlK_djg&Q-izLp1`-k^0F!?#R^c_C^v7rJ-qd?~Hfc(4$7rRp7+%V0=f*7~= zOlgUPuXo*Q*HVC8i@Vrzj^af%lFZS3eF<E$iV(xGcI(1OOW{uEG!;QZ6S+{kd}Jd? zaNiC;THCFkhi|LRDyPcj7y<}Fi37jo^^4TwE&tI0v>Qx44_0KgD!>>7?`-$y!CHJB z-ey<}r8F&J8KlZ9W0yWz?Q0ag$UDw$rU4HDju~)!8>D!tjZ=r}3S#cr^}}XYrgcX^ z7P%5*sQ*m!c!m#ecmH?uI;rJ^NVMbn?9qPGeggrNF!A_f0qaqk++LxAuv?N3Y1!Fu z9^b`iO;Q+WE!+Bn;tE|6!~-O!Y6M!8Rr%!Ic}!~?1b?0yA-#@HH#hpTV||&HvPF1z zua>hWYS!pzC)8P~<^G9ZsR_d32<1Ez%F=j(=>>@g3|+&{gxPWT>g<@u258YtaSfzw zo&N0FqC4|NZHw)tBsH*FwGKarvqHEm=5pfD-l9!&dsWm4@3+04Iz|iw8~-_U?P5=b zhgW%!$G-hiH7Y&DZ~%WSEE(+Sm-3UwbbxVCwYJn~L^+re*MC5z@T^(F=DJW(6`?gY zG!C#!(#pk1O6#M#zv}2%PdB|&<M%)r0ow!1*|PxNFEhup37=Fb+yQvKiq89;3f_l* zJevbyg(Xhq&T3SEdLY5$h7d0p(Zetug_bF#X&Cq<GD6Uq?W}|?-4C@t$HiQD-fw4T zh4c$-RFRzfWBg#jp=0Fx0KhsHMnfn|0o&uYzC%gZzXj8FrbBdsQO(gvD7TR!t<cSu zLJPddg=RHU7_JuolLpAguc>kff2X$}u!fS$T5^?UdnT1;WsH@n);n_uGBpShGSEyn zJ<KFvt>abkn*H{mRXzzvTGb6rT0tKXz{J!OrT5`{iCYM*VrmkHIu3q#vAg&BKsX*T zrQDGKIKgoEBa8KGeH@$JE#++1x7NlDPva6#R{&KH7v%SZu*cB-Q(3z0&y3Btl&@3# zW>*}eOnNfzjUn?5x$KGugq7lRS;}SQQFLX;dsFwAxz48lk+j_Qe4@z>lx&mLn41E* z$9X{#=O-Jgg_ItD!h1M0n>##ztYmo(pd`=44v2bM*A=+TCP1BuFgfO3I*pVqe~wKD zQKZ&9X1oIOw)E+?U@pi2qvLx<k)j$Q)w>@yO=A5LijFD8Aaub7?`&>oZ^VUxr}LiZ zyeN*&?S3Q$qtvdj_3T1}g5e{h6C1ke7Y*?Y!K+hfB4*&{LuaV6h_Jq8aG$p9U~q%V z|M_aoN55vgRtVXmCWYF3n-jpG1+|uYspYWmuqMu1$2nhf%A$zKI_fC=H2r9^^4o@i zX+Qgub-s-NARjMzD<CyqyNP`R+dNKH%~pbG7U!2Wm2*xp5*dC{?j1mpI}*l@W&jWF zUzy?!q#Z_Cg<FvOITsvuin*c6QGO9bgBUyoRla(rc8SJH6{d*)7k>a3VCUw#Sr!tO zd>$C&@&}Xu*CFhUEvsGn@YGPbnE=x^DKxI4%atFwJBy*s#G)uW$oTHQpW-5eJ$%{n z5KA8BZ2xz?A<s*4A7v#M4vzp?&D^PB;6`zu75r+4dPH++;VsN-#w632CO7|8|19<M zFR2razd)oqObI#ZWD`bX_kD_3T>Ze<mPkqcUSee$ov6$T1>P+87Nt_pG4u5U@2@#J zXjQ=yC~8nrGk=oM@#t1ic0P_=t%hY)&y@G?qLl1e0dqi&As+5BPlK%MRxP}Yj+=9S zNQh$m1!LrT#O`)zt&S+Voig8j#$hp}f{GH84j4~+a5QO%Ozc_<8N^jn(~4?dbh!dA z<HEN81q11*N$V}*yf$y+ME1cTM&AAol`?0(hD~vZ&{9M=5SxoEc^E(Nt@Zsb?>(0A zAGC6tn_cJkg{^4lB6t|)&hsXvrr*gpYd~OpVNLWr%N@iVTaf3R$aL3;Y`qgJmhPuD z<f~N6#-II%p|Lv;(jkP{!X{UfBwGT^da;N8NpM%pD%3H`h;$9~{qaN;nYQlW^Ur7Y z2u!-V!<%{nf=52e*O!&_gAvU3MYLN1po+VOU3b|K+WuHY<+imXbtVzRprr#Tt2q#w zK?3#-O<!ySr~`9m<8DvsW%}eYVnz~nwkmvP$ejxnjDMVXyt>><oy01dX?uvKb<`lX z9=|+eAfiF@S45G8XpCLpN`9QP6_U_Z&*04$lH#f~fRo*a1})x5caJT-yX=n$Jerio zC54PFWV8>0Kay%0-4u%RxN>h67~UrLq#|j;S~NdX>z<f*;~a4!joQP&$5~=;hFI)& zwlIvvXrmADvHhf7`(g6Tww*1-fFahfK^-m|Ac<ec?$ObQT=@B0$BJ{D#AntnPnx{C zpCm_9&&+aN8~TI(T$?X}sWp<EFN;j14SL^*RpYeA6jF2cu<(yz`^iX#2%%W>C;^}M znO&@%W$NVP8cgjv+8PX97a2)pBW~!qOBWg@f8aOwv_>X)i@P&Kl1%`%=YAu*k9MUx zh+Dsa0(Jk24y)*{kArQ@9q_5)2#_40Fuji3UiW#yr*h2v$Y7)-c#*`CK+`@{9bVgN z>B-A&v51is4{<+BHF~p(*#r%wm3gYSGkTBOjVhbjQH<l1Z=p}K^su-$L!}f)XE^-= zGo3{fd!n9HLhLwW%&9$-ZMSyt-Zi(B*pXiQR{yM)5?&c=93lMIL!9JJSoLfe;G&r9 zN_^b%D*&aNz?BKkPrU&128<6<achSVF#3xy-(ZuVVEbH)VY$=l0vGr5Y#EkSaR}g` zym*sU#*m`ntT|m3ydTX%D`g`z>3chzKVsgL8SD(=yScB36657=<o@;IM+BN@Sdl`m zHQRn)s<X4*rgS@dQB){wD?Xw%I{VgCi?7O1Tjkezs6*Dxl4%d&#rTV+1N<rS-KhCu z_YxT}BG3xmjCyJsVkIK-4WTSBvHfF(r^1DefLUy(Jw)kpv8Xdaw1qK5@~V51ha%0i ziK1&-Jp#?#E24<`q)W4()nfl@t#VDYwmgSINF0IGC@Af#TcH-FBeT221-vLtY}S?k zrrC?^ih4$PyHMik=6{Y9$wm&gyKZ!u!3T7{1Kr_IGSn=PQ=mWqJ@K_G0<oM7FgSVE z{SuIP_tl@-^7I!jGJ0#na9Dk&^VFP9;#1>JoDj@`;gT0#2zs7kTos2Df7f4Y9cHci z;Qc{ay7e-bd@O82n5g4{yWFF$U3>AcEmg@Wx6U1&0-8<*ccIRk7o|x_$v);F!(xTw z8ULV+v%e_t_{zXJdOZ{F0!|qz{al3Qz&sy+02m-y|Lg{R$vfga+b@`j=@tgX)nNXn z={C8HIZlE^FdijuuWT5n)}e>}N52B`2-_-!?rzmJS<U7y(>RM_=VkmkWQu_eKF}Kt z8PX1GjKbg&OYH;mpF~Qo*?ho<Y+Mvi{j3#49o%5d_4`1U^N$H~r7Mv&#ytIcJf-q+ z4_fCIu=xQqXNqd1RARvN>>E|ETJy;ZW`2oN=L;s}7(p9)b|`K=+&``AG!qn68)}vQ z4L}r)+$y377T{7P1~-`z@;K!S)QpCXcnPG<>&Sfl_oLU4#|aWw(E2Pzy*c!Y3k|fu zC_CK=EW%CWTN`Y?wJ{(g=A6!U0OAUQZ(EGJMpSav%&&)@Iy%s?dQp!DM(kA)ce2`W zU=5C`DcDb$U~Pq@w^NE$W3w14fT#~jJ^1(qeAq`uGwZOlcmD(}PY44LJL_zh?J&Q2 zO5@>YpePyV2P)pxxkA(p;gle2&ALgH_Jvn55>`Xf>PK-id+~CEuKtot>BRCKF0EMx z@jeklqzt#+Plyak1c$MyF+*;_(OEl%J+Pat`h;S!uPC_alArb|RP7ejPofBoFwEGG zZ*@B+Yq<C0P2P{C^ulem-Wd32Qu)U?2Xavb5@uzv;TWL)0b)+l7FYw5=B4M1?`mky zbL2Ts4v?>P2G0Wtoa0&SJ^}0g0fGDQ$Prh1mF}ozr7lKDQp9x*Kmg6E$W*WqyTMFC zj-x75yy=sMIDW#N6hMcdS$@VgZt<DZfRm`hMQJ<!U3R6BO+wbR?gr6SvPWwponH?~ zh>X}Io<paoy;7pOG8>84n^VQ~W)6>wsemc~@|Ue}o}1I>qh)P(H%MjP3cQarz`WQH zHVm{y>W?+1T|0Uuu;KAi#u~=xdN?Qe5FdaBH^|}iAcoOWFIw~G8GpQRE82P85skB^ zCM>RIlvO?)4`Yz=X}(JsRG*=j@e*=M@*Zy89Ifn->@JVP=10^^Oa6uP3gSLe@OEDQ zB`&L=^aS^C1~7_n*|hUYywyfF!>5iXBK-C5tijfLr##{Dv-Ez-8ftZ(+>5_$`4u%& z@Z<+uEMGNvrt*JQW9t2z<dW2PwGuUmF1MQtJyW8PA@?zkc=F9uqw6(&eu|nQ%nZii zX4v(saRw|*HAn6V`U-KGzS3&(67ujMx%$yKF{xLVf^SU-CYptJU9`3)C;)SaGWV>3 zhHR3@cI6T4IL1>7pwnQ}Kg|G;xsBYw4B&>5!QLS|e=dW=%isaGN}Ky}|FZr6_`|1m z%sC}Q55P@1i{jU&TSOC<aMx&R;d*6Eu?ID{o3UL_p|8+1Ewu4Mvko`|EJmS8ThBr% z7W5IqfOx-`k(0YPE(TP>YEyn7OcV?x2e<H*GC#kSuEWa9y7G+cTSuxkRaiQgj|aIP z<6xE%jL9GUA1LdQ@nr~X23H6$3OFx}VZdmtbP^WNh}GV>EZSrP-wWxZ(EXbidG-N@ zR#LQfRRxb2IPf{c7XL6r68N?qNobZqw7Twv7I%UF4M@#~-aHD%iHSSI?Qiz>Wz9<% zUO^D`oV+~jrjIfFU2*nkh7Mgw1?)-_L;-_$kP2v_)q-;Y94&AI$r@pM*W~Q7nu$xi zi5qyC3Ide^?7!!9^{g0LuAT$Z%_+$7*WsCJ2|nN5WSg<T4oPwL%CY;EhfJh-b6pJ9 zUS03K>@2s;$|c;&yEjl-=W?Um3;n}fNf=%WwQM8&&x!&F7R^WiVQZTIwH+iQ)^&L2 zDqnmAHCn3fhO<0wBe0lRCT&g7V;&rz1q#Lre+3<`+}v@)TUvM0cK6;Up&skP3nfp5 z#rC~JS{qZT`cREKZMAisBLltVFevZ2f1&Wf@uqF$y?%WhohWEQM)9Qd?@xc0t4*W6 z4En-h&Xtv72XvyOcFefl{-bd;gk*Q|Rwia3$2x>w6^0>9S~ma#MYr_~NAqi~`y1gP zl;sf-W-^RWjiwUN&4tftp9CQoEB2lUY8>hZy)Pm{`EX|iMQ?k0s*BP%mUO%6V6i^% z4aTwKAuWf0w>GpO@NQQaAI=*R@&Mv{q(Wuv&2&-u<CrH*CfvQ}7<AFyPSK7ExiD4o za$2#F?^Y=imXP*nrrJG&k7#TwFaiLMaPiET>%Q`O$I)g2+xQ7fKsi!z3Nt}POyAoy zf)yZ&B199;@EIuylO?qmBcl<hEqet-Ym0X*q5f>zUJAJ@2=aU&qS$Cf$W=O8m+zYP zbPI|lm9M2{#%u<z=;@1%$n&WVXjW=L{K~irxr{E-ejLHkrN3uJXML-?xF_m!Mv`_9 zF8m~mH(a#*`-k=uray?kDyW(V<PQbAv@clUuy0jWLLDG&OX^RF-8VMlyoGA5_@Hu} zq4*1JerJ{(*7UhzO&~!Fac5!bR*DM?gk)#~jhquX0tWC$S#7~1#H*0QExMrE9?0MR zINYSpM<XG~!G+~k+U^<^`^;J;fK#jGiKG8y!GA{<1ogfBy5s{Rn_5_Lkq+<ibnlmz zw^~r6d)J_{#x^w7vM&i8fJZsHW@PS|;^Yyg1djK0&0usWD+yPcOjX%!XkFcu>|&|C z5<-E>lGHD!JXxOVM|T46;DtU}?2Aw>Mf1Ygm+}%1d^dOOOwxi~KPjVh4d=PfNisaR z{L^LlCc(k2TtYz(ou{^AW{UVv*Y+;VjgGK{K%V-n2I==LS+7-YtN!X<6cqM%K6g$- zA&$JyP&%%iBd5|NJ}PaE@B?N|{Km=?0DHU^r*H895$3;_Vci+i;CbfP+OKJwIIm`P znb$F7qT%Xwq(YqPx*%srHr=K!+Ag26L)vK7`7cKr5T@lx^Fb{v^g7i{(#+*XwNA4f zugG-fyO;ncaw$v6sP46y6m^Zn1R1g<plUy!UxBl`R2V!2$IB{n8?|j6EXpVjcUHGN z&$I{CnN2l!!<gog2SKBEf-XQySF@DMR!++w0*dV@RB}xICOCQVHm#C7|MO3q=c=b= zrAPUFK1$1C4zyRCf;ro1-Ed>m2dP*JsELsB(Ua^3Aag)f&;v6EXK}ByQKb^Fb9lG* zQi#rn&n#Lq8LxTMKJX@+OOM5i@8nveP$6Y4xQOYw(UCZ1Ol{&ap($}YJ_0LO#2T8C z`4~ch(Z~2eQKFHX#-l)f4+tq>dAi^6(Sf9DD!Vt|UGEHgZ7{+=K9~Eu<Ph!{ps%1l zbV?7u^u{iNNh%ZogPr+qleC7}{M@v6Y<AL3XkMAY=EI4!vgnPVj<E<a?tX21+FGtF z8#R9h6;Ow`APeYgJb*2i)Au2huBcN1hZI~KN<N4KA+?!so-7(PO4tNFSB+Oi;kx%D zIi6$1=uE}Nkvz4ofL#&L>2d>Py1UkV{3`e+6Fd&jx4P+w_VT9l0+gs+yFOkNF;dik z;PnU|q`ZD3;oZi71LghJ8J{{Y2m4>^R+%P|{vN2&iG(<fIq0O5bpu&8SZ9A;aFv=K zBmz3Fvx3WQMABFyb3qg3Hr1hG<U{<Z#93^$RxOaoZ(NJm1#I!R&aCG38-<|yjqn1~ z`0>}nDH2zL%23(d7BA5VC&2WTf|H9G;-`Dg2fjtc$%c8UPeCz;IZx!8mvJ2z;wCmF zo!WP8m>v2d9v|<+h8Wl+mHe?&fiH#Su4mFucBFecJ(?=s=R~Hc$Yl;z!m4@P9~>)3 zH#7aFYt=3Wk_k16imvdL%l0yASb4h1RFTIM6CPT#0cqPhdZsqZ4_jkv3MnR~KC^$k z49b#&|JZI{|Dhha+W$7ds`#{AFE-HqYs{eTm8XToIGU+&DE??F&spwr8B3Qrx@_2Z zkmVh&J6}{N+yHa4<Cr+&ga@S()ZDAUIyU$J(Z(6(YDJVMPm4R_ptp#U75^>WyBqUc zSfE`cwcpdefx+RD{0>Hi1xMN@i%jUrP(DV1C9YsBkB`L0uC4#Xco6L%bKy<!6t=Gi zr1T@(U2K7mOjIP1?`fA%^b?HA=Bg}1c>yQ2;Bfu?fciXsqiXy~Qm8W50V<KyFn`L- z07HL_EP71W-J8O~!vCZ510=Kk`0LMLYp~T#c5M+eyClAFE(kZ&N@`}6?bq48PjBX| zkWy%sqV~5-86#=JSe3z4Nx<6fOKtXRi9=+R%W|fuQfE$N%R>US#)c?8GKjKl&>i!( zk@trp_%xjU?6C&2)q45#F-Bg^@Y4JzorJM|op>h@9r5X0CuSsE+zT!wr%UQTFQ^$& z0^Z_XJ1->d=ExkBK?_}x8&?^Dgiw<re>G^|l^#{g|KO!|gZBZ$TGjQE{rG|xdeOuZ zfo^y2aRm-DLhy)~o<F-yK|^enN;)x_CJ-p-)qby?ZCr*h4mt{iujU9FP`d<8tWlwE ztO0P~+;PI2$dF<{zXS!uxugO9dLCTK2`C|S<f=f)q-?p`3<_(`;1e!(qgOQ@v<ucc z_I+3|P(HK92hkw1UjPM$KE3E#Ifo8zIUZ#S2J@Ye|A(zny!7O1)m}9axL}`?kl0CI zvMwr!z$8YFdr@w2F1H!DKS!?nYQCw5N!suc={9F}w8^~=P~2>izL~Q)1n{CnYC5c9 zXO!dMWo@nCru46wI`_QQ0eApd0H;Lb5O&Eo*EK}uJa|{HojC<mJ8uD>dm9Kmi2uzQ zd2gjI2zYU3IZc8}^BE}QrmG*dtELOB7$2NiJ>PUF+`-1+s=r>x5>R|6TUDr~27zZ6 zjRnLuCRm!Y<3w-_)e>pod4SjVZb~N^bamqFzn_=D*eX+$ova3pl~amngq-uRxJ6QU zF7v}Jq=D$1`KUz%6%w2<Q>?46Ep$Wp?0FAaLV{!$C(_d{+w6`FFG0B?O&1EA^qS<B zVkI@~T}bv)KuUWQgFk@tCLB3+4)>>mnY9-)Pef`iYNAXScqeD#g=E5kbCOmv%YX6J zMvf+C7)>ojz3V;xRLog(cU@hVWzDsr_>}rN=(yk?dW(~yCx(K}2wlih(Jh$`rhH|_ zFEZxrU4Z)Df*rupfjXG*VXHX-LhgG3*W;vw2Y|HRiYt&xJ+l8jo%VRat`>Se%z*1y zv#5~c?V-5q>!7OgYWNyp_n{)fa$W|Ku{z2Zp1j=)I#4vSeB=JL;HkUHCH|}r6jJFg zL3H|LhMTr2F9+)t1A&|%x!N#yJdVP+^B0Q>y~hIwwVkJCo}#S1Sw<oQE@&Lt3`;a! z3Y#qojd6BN)1-d|xAwZe;ySS$6~zT#`jZ1+cB5j-7WYf~^T&vcFNQ4R^7)sKRlN#= zJvyw#^wlPl9^8T=hY{@c(h>f3WLqDwtqe@JT-VCdhGLa*6EMz!Yt4lSzeF}7+9sT% zhvvVO?dE)&Z_n&m3uEVs;bA&L#0{pzj5y+__K3>M(^7*=N6#PMp6?{aylUoAua9^W zFeV&vz0|h83;h|2HeF|X!Qa-1q55s%ks$xQV#8Fxp4=3$bVt(X@bX6AYDv#2V#mb3 zs@R<{edk!z9ClVt%>;R-l8ubD(nbN3{e`DV!xjCL)>(F8JODGU5gp;W>|;;ZmiJ?y zWzCuUFdb^&;p3&fpqI#ka~dO2SBb$3$`~uErt2+Sw}c6*7;X20>azo&QM!S+_1<7U zhPAS?7P!$4`BU%W%!#Fj{D!@hL<bAS--$Yoe8TqApu4L!j0D7#DBSDJv@8V1!ZSmh z8kGp@)w^xq;09u?;kmsp)(J$)#8@FS`q9Tq4nZ4Wsi?La7gAsVLP;=&ZR5@v=@VMq zu(p8V^we%(ETFgM1i1)g=m|w5-(Yldec*BP#w>U@+7cdLuOZ&UkCUT}52Ww^?jlt8 z92}wW5EA6s1K%Ktx(xSZn1Xai6w#u|2XPOcZ8LF!U8&ur7L#l*@N#LHLP<Mw-)-h& zkK<x{#x$^?8u%dp1Ih)shA*)cb_IaiCbE%DOgFGJ63sP#;Z@|%p}q`gi+B$Y1{GhL zkcc9~^n{(8wgfkBUXP+SMm^_*CY2<iwRkZyEDv6uZRc+yKh~xVIKQ(VU>STAEw(U2 zXQknNq5;m}`17pjh~Zj)T+7%*`I=^q`2D7oI#Nb0Cub}9F*RA;SgySo&&v}d(Hgsa zbyV`&BSD@fvx{`$8_`&z6kp>W;NII)8~JOw0V(h*bq`gPc5)vDySX^((STNjX&B59 z9)OnaTK+PHoXd0~rhgGEFu5fvQg70Xj|}A36B^ocYB}Ahlr>S!b{VE^13>y%ZR=>9 zoOz0hAy%sZ(%rk_c8ul<_7}b-Ft`GSTQRx_HXJP&IK6go&v+77x2!Q@`_H;EPi~24 zjK&-YQ#!_~>X{M3*#e)bSP~Ar(K;jGXi+e}Numu&SH8O<o-q3y9|QZL2yuh-gJO=q zOm_Uv1|iGA9<0+*q^_pZ0F4S6h<@z%PcVQ#1Bb*duVpfL*&1{|>IY5RNg-Y%1uin! z4fgJF?=2IeUfym+j@R?pvebpgLSMqtkDnA?dYuDcv}a5AZYWL{b|6?wO324RFCn)a zSK%1K?76Sv9XpO<T*si#aM+->7Xw|DX{_dI`^TFI&;j6$!pPWrm0(c{Nkigf{FE2P zC81F?CK{%trVP5^F=B$WG&?KWNs_%=1~#EsJ1L9IGWllG#vUTXB6C2w>DWo4%t28{ zs;Y&oEA-Bl5olFb>Eg?*0Y#k&PS?+zBNsa0JSj#AX{7?aL*6?>l4o~wdom?<O|_l% z$u~JN`}0?u`6j?cm8T;z_@CGOP)6G&@h(D6;*r;o4rxH6V{>sjpO4n9u+`lTOdG4j z7(AkU;D7x~;<y$V$WfO?q`}afu+s_ju(Ujd+5?Y3T937Ln`(=e*oV!1@4nkbvf5xi zar~KXpGp)W@Qu>x;CKAE)zhrU8GWOJe%drHhxI1#<Kjx>?C0jqGzyrlbWyL8R>NkD zPai2v&8s}T=el*L$o<^}?rmyFWS6gb(}8VNZZ@9Qs}F1K_K+NfYcRtS@fel0+FVB= z0C~3IEAs0k5k>O0s*T_)xgUsr%7Em6GdZqcD;5bN_`Ij!aO-0;ok`ToJ@hs)^9N;m zYTM)(I!BeXpPH)pMtbos+pzvEsq;-MK|@k2O|I3>tkJ4T5F@kUezM#2r!L}DSoQOG zf6Jljk`-0ZbKTrv$icqi#H?xoaRVHRs1flP29~Fd1g9hmJ2c`9z}7AHWfs@?&JyXj z+dSj;;*Pji{G@ej<7<E<UkjUZ{c`t4ZVl6O%h_>vkM%}=wz=WPQd#d#IxrKa?p;b} z+JlzALjNlbro7<>N15o?^-X-+P=NXw`kTcYRtC(^G>qXvfW$(l!$v&Gwl*itz;v<P zXp_7GPels!qY2g^DL$hiN?}*K$M=Vp3e`xQdW%gQxT@R8$79}<rfG`G#kb>EtGpyd z;E<A00{|RglJ+hrHIq<G=PxJlouC14o^Gj}fY~=<XPt8|Q{baq1r_+dtds)Rhui7p z6n0pc9#Zs+P^|<ZLbKOMIek18=?UM|BYQ3>Pyp9L-&aMG!O<O8z5lQFMFvM64FM~| zNTsTZ&GE&Zz$d3r94!Z9Z_ihh%B2Hhtt2zi{g4e@PZo5jgjm9G?`V+i82jg%E>AN# zYP=1ALoqv=d<41Z(^J~S;fC_!jZFASm$DE9@wmgoRCdvYwZrX%Zev;z)au)AXdayZ zpzfbo8)b}5%9}2~f2`>lm%9$5w(tXuRrEZ_X*G}ToWQ8bcurtBBf9!nTv+mU_dW-V z45;PU?s5Kz26D|{R^)#krH7&3U&ZZXd58H{oL5wrXXAKr#Ke%jM3<2rPcIcF1bkvH zw`E~hR$Le2SuD1foeO&2InZ*0#zI5h+ExN6vStL;<@6`9TtL5=cwIaq?CN)K{C5cS z{SD<)6Ma6Y4aMamR1>qiGzfNW!-vzB?p(MEP?u}=(i3P(i^Rsv#HHr^KYH7gAaq!t zC}RCbj>R2FElOQ>fw90)&ur-5U4%Gd6=my6ASyq?yH$$#4X_N>m#US%=!l-=CQQtJ zhIW<!S31mTV8-J@Dn97GP?XXjBcCH&-DDw4aOCTw1d5iU;}6QHb&c~BtEhPIuAwL8 zd6AAN{`kvR;i7`kiw=oLsy{atg@3v3@&;#c!9ZS`>7bhVfv36o*5!xp*dT3r+h%p} z{}|ye=p({G@S_gZGZtNOn94GycXJeZa1lyfV6E|0OKh8hS%@<_)mY6I+H7am6j-7v z2#2HRZj)q<jj>6>aJX?P4F`*_xf?*DonGiXjYUKCdnV=_vwU=Hw#=G!;lLaDEtqa= zF!ve$df;~vkPl*7PD5^{zk|j<I$ptQ!+nE%M9d{7lD5pz>CY|UZ?B$e#4Li?t7j4{ z8YRZmLyx7B<NCbmm>v-pnQc$49FC6t^XylFs~P^5Z40>HRp(;|vfA5RkvG9NhviYo zkX<>M28+&I<DfRZ1mZdHuR_vcBDzyrmT&gJVLd7QR#Kw|d8Rn=5~r>rnpJ-v%F-Y- z-9qm*3Q(x&cR}=p_XZdp$Nqu-fL(Y4v}XjqRD5X-S~}`fa?_cN=+A<T6_=m`7jyF( zZG8YU=v9w$WzG)~L{FNf5^XdCZoeWxW08rI0Y{*U)UxvDk$kbmCg*95k)|QqlctXm zL#mMQyen(aC_C@9flE_>g)|ZDekU!?^k-|0i#r&6gh+^NOKV}RiEh2M4dZ1xno#8O zSylyatb>$zA3c5O2L9Zv^EYSn0<%Q9o@kTE%A0TN*R;+yep?mhkD2S|Cz{(4)lCZG zA7GpwQ`W66U;v=#+!Gz5hQpjBjY%qq<v>A(JI^2y9Yr@mGKrYb*n@_qRjQM6UwR{y z*|;+#g@95M5MZam@Ea;4Y0m}C-7u9IOm9pccR`DUiH(dHF}pr3nxg|t(U{e9vliUA zE?|YWOV6<#cdfn6f>1{6Bl1dLaoNwG`9I+FN*A0ZT+jITW6<Ok27tkg`be095GuaU zD`7uLj<Sd4FFo6Twqk}`kCLofong~hODc(X)P~T0u}L!*p$;gKKq$}!2Qa0HqnLz2 zqbib^+T&75M{n@z*U;1#O~EIC(2OD|Qb_d&DAHvtz<%acQPmT=W`a8CV7mPh6WYES z>A=SWMZ4R0-yrfF>9k{It;nsmUrKZ*D|m^ljpPOoW%W4iAN{QCJRKAkqb9MVsu^bE z5gVMpsOd!N>-*+YNuA!in%e|(iokjo%f(SrwfOi?g?|Ub{l<5^7?J9RoG)Nsp!n9V z(N@9zF$;ZTGMk1J!u`B4(7aM8O@+YZDaO}Gd_Ue{`4Ey2VxJ<d@5z3xDuFV^L(*28 zDdxil<jx68xtC6zpIEp)&=|bVK6&DRF`lb}Ey|_}uowaee?G{KJTNCH2NA6cMJHGt zhd`x=pJBpYM)X*k0a87dy}pd5s<3$Zi}c0&ib%es;w2|prYrnX=eO!VJi`K0FHuYI z2?sOBM=j441q@rQ8pZ*;Gk)#weIP;`Ftr4);z9I<7_l07F^NfLMUkVfx>H>3!t*|( zW5|Lko<(fzfDpe&$&2^Imu^yFsPU*)VG&X{xecg7-je;h&9m8m@zU-1y$FK`sPgxe zR<#4+xQ{y$3WQ;((l?gwrOnyftXKm=<KaCD^8tcpRYomf9TZIVk$uLOZE`CDcB0XC zwdIeT5wV<Yrem%iiYHi4lS#@pX_-!+naOa0`bl`zMNFkxyb-BbX!6BG<lvi)d_1vL z{^qg3Odd(GLi1R$nH7h<eio@50HlSW{l4|v(eD`y{4K`{2EKTqlcccaQV3DQnd~kr zp^??e!zP<Rvhq8$iaauc9j;9HM~Zh&l7zg2#uv@Hn2ui|k@1^$Z<Zyg)Unotk0DIB zTLZtZA8_xj^V|T@QoUcgm|gb3G<u@@&?`n{lJ=T688ZT1H!2erx&-1%I=|%NYY3gA zt}52%byfUOWXU{?><!=t<%jFF^r_-2-Z==_fjATxkeyReLpi9+z4>{h<rd2~Oi$77 z;1VpC4(L)RE(;{rW+hI$M3Cgq&a#=ZXkW{zuaCaU(w|+*{wGfShM&?$VwEMo@We_@ z4yN6R_-GqI{)c#2<Hxfh-kP9FeIgb7^Za{5XfskzHjWeHrro-mbHxn)*;{H>*3J6r zh{$VL)X6r5PrW9~l{UqsS=d8-uR5S^kxUnELO~x`P6A>FJ9#X&4Yfy%){|QWEz)v7 zMs-Tx?sMB|P8V(HrwacNl({-%Ud3e7W^cX4#v>~W8MS^u3r{su{!1xd)Pnhqkn&~F zD~&b4x&otCxO|*Suo&7^@8*iEE1XuB;%SK*U*tQ*9*Rr$2{M!g;MLtd^&wxh;dLr= z0tQS3$4xl4hQ3!ZRyRvqwLYUr{o8=bOo4$hV1R1^yv~Wxm)U>-riz&|<-6C;1-EzZ z6LM*`Jphfz<|e>TwF0?B6ZtS$IORyPXwWnY*<3iG-P`=WI$n^jFU_|tRzDO!V^aag z+d^GwK;nTka^1~wC*l@UNg686h38J|tO43@ub^I0$K;7o{hzUJ&dz~-H--;0_2<x( zkKIc`fD${}bRV;>2=q70^y{z0zn%TL151DXYWV#P8!z{H`Ep_zaZz1WDtsL^;`R=5 z8nR|ZWyrK_{W_=44N+K5A03E$z0p~4-%dRBVY#af{YW58esRlmiwmO!D`o0;<}cn> z0x^9&GNx#ARG+E$bY412nV7lbnFKSZ;_84<0yU}Th%c6gsmB-@2N`--I3b<^aDP`T z($PK8Po)KYNghE6I)QH|STaQ<5ip%T?fKeVe(@2z{g37$myn1JFb>B#ANybrOi@?z z&`go`v(SDjOfK)?deT1r8CnnjTZ+^W8>}P}2TV8eB{fdeS{o2nh6x|#%Lr~Fp?3W3 zFjRIT4^pp4B}o=Y<&&?;I&pOv)}|2kpc3^t$JnGK$&MAN^hI)v`yOAP6ve+XYWEuN zq%FN%YlFB4{mn<w1j>a;+Y6ysrB>>0P~jggndP)Z9UNY&K$}J<0QHk~G~t&mlVl?` z7aEbE2pBk7uX2mLV3}v=&F>f<_`$vEI_-+^FrQ%u5z7UrNC5KGez&yQtuU@jXcvUB zN%wf<&FT3%vf%oQ0qS<Un|_Szw6>5wMsiV$$|2oCVVXn^_1kl84mOd4;-XyOsOPl} z2!k|SlBz2)`l80ISD!v`Pr(UrMtfTvQ}5_FD?@3$_Ok-<SeZuOH+Q`ldHzc$2cM)a zt)7qU9<#_4>lU_<%2Cp%51G(|)|eA!cAwc`VeZc8bel7^!_Mio2-F>3&R6I}r<$ct z(-_bnw5qGdkqHTZi8%J}gc!5kZSj_)xqH5MxZgmq&^)pr_Q4<?xOkw~l@{WoY#{R{ z)<yOci>e5wsGN$j`};U5G%yRvu!Wm>CkFk%oJ5>%UEn*3{knc4Rr@&Cv2CAJm%pDC zu=>l5=A9C<-JEDEZyK6h^jiQcE~bt+H3NoBcU(NtiZ6^6MBY9Wbn4u?*x6>6Vd6x& zVQT`By5OA9Po}(+B3cc=?@y*Wk;-@t2bu*~Sn@K9iAz=vx=HKouE<JALAWs3gY7D6 z4Q~kiTk@68(3)#c&jAB*S4B8**2)54k-@uF0pFYcwB$-h01RbO>P_Jn8y-INRwMY` z^t-Nau5Vs4^F<f1M^Hmr!eir)>GmB&Rw{E;#V=_QCIa#=QE`R`i-*rAhW!uPHAojj zi|9|=8HAxm=$x}bYLTOi9T2UYp@q`CqBPY?8N1Qa&7Vp9WWiHk#)qNB3M7l5b?31; z#UM`(?ZsTJrUhH{_9xd3<~(Bf*k+*gYa`*M|8GK-+;M)POkATk&j*FeAI7)UoV$wf z7HOsi=U{`BC0w%^^8CEcd-K*4i<2VBO@2_Xggx)$dj8O*<Cdyk7=wMtXX?nmIz^Au zb_5rX4jP0lkE>V4!`06LPdcDUsJv3&q=h7sDa)A?hb79Kps!**Ud#xHhN`K3zS-h< zc}{!xlRtHh1h0BlsghVlm4@VQ3(@aG{a?>1Ga?hEso3cLr09+PRdJ_mI?^cEd{P|O zm%iua>yQcn^GuEiWWZ2lqI@(HCBeTl!;3&qfx>f`eX}3wvK8JB$29k9-&zSCJ9iQS zyyS3ZK#Xt*yVS-6^ONgbkVm!7_mHgxr@(ZiB#_{bXIw;?7tz+3`2&P32i@ikTGZ_q zsH}G9T2KO!xAW7G6C<WJhqqKheV`XfXziHzg2L6lwi^~=W%+~etvDfd9ExjkI1Y!u zN_W;f7rSAD?$}R~$5TRe>ZXotQQuDT;3cF@+EzzlHAi2|?<CU|%DM3Vuq(ByfFp&` zm!xxj?b!!h7U{|IOF?fKwaslPG7<NbqKD^(5(R_h8Mgb;9JYZ&rmA<LAbrFUg_AV` zFHN(lf3fA6K-6OUVMIyjEV2HMtkVtsA9TI>9ZkLlYFY$6h%aaDHE2b6Ue@Ji$rQHP zHWZ|>8kyfpLaXojx8`fV63qtKm?^_m5L{|v&@x~BX(f9y=6dO4=7)U@yB0@8;*m=@ zCwzp6F#jI_G(gM0p)S^cUWL#{|B68d)%4)M(@7e1^MVY1QIC10yHd=cfNRJmWZL<K zO)6B(F!#cb_=<%NGMd1?lq+X1|L}T_oYH~x-*ha}*-}E;z1{u(6AbXN{MtC2-l~D~ zd>e%M-Fm(&hqkb!DY839;qQ_Vo4v5UZ#AULJ$*i+#O{l)L65)$8A5*|5Qn-+UmP(} znh@~#P{%^(kmhb~o_f_|w|doJ1z#=sz?PLgqg}s_AKFryu+Lu69ePn*$hTTx_S$9K zNozH&b<cSW$v?h64pZhrLX@=@i0hBpx#e|}xe+F07JKnr6uMyZiXl;OPKVvekky?H zuogDCK<?Gx%T5)EQmMG~^9d(Fr9itAV3Byf#MO3Ew(oe3Mm2BC66GW~M?_9Sk!lJl z%AS%x&^RvI#!Ub|pU{=@YI*I!pr&9K(0`zpNJExRvxBnefpa|7$h?U8jJXf31!u;r z;>;lnJv0MT4DSO#JBmLb1g$;PR0Uyj!$E6;>2Z>EC-&Omv2~4wYU}u;N%V)}I!>S> zM84O~lLs4Qu*iwkb4SUP+{3Q%1WHhK1sQ=PaEYOQ-RZC6LbbZ0;9=B;Du!d5pB)ez zlFJWhgUXK(<TB2_fVin^Jq&D3KTmPkv_A{&2^#_9MvUg;$UNbVl^ArBNHq{5t!Njs zf1sG!$eTle($(h>z8(RH;pNyin5c(EY1y=O16Mz6ZcvZ2g+B(g@0ny%=00~1o$_Y3 zV2gr?S&7LcE{OnHIM)BxC<=A=tzcKvRQN06LVl0vZi2Q-ObqH>dziUa@A##=Sp;Ns zjnz*z^J|0>0*5dT*3=c~{+6gCBkY7Z5KJR=lQFwFX>SZofps?t?mx(9tf^|Lg4$O0 zpP`Luot_ob7Y_dkD6nmx`F#Ml2ovp|oKr()XP?5ut*HBX)_sO7oGaqNoeK^dNp1Ap z{X9(Q5q#Yvxxy|fYr#Ao5b4aPjm^8;Dt^@7<L}l+G?D~V?{{e5kgMNaTw?}9(;pxf zcqx9CbZFB8J$@zkk%h`a4Pv<{JNri54jesALp4Y?v|~q;&!7nc*okxu8`Th@DAhkg zL>h4xYJ>|WYns~m$Dmv=Ozl3xg~$c*3OwLdtWDjcn_I<rozg?@%!9m^TnWI%w+mSs zrx-sXW7=Ja3MENp0kqX_f-HHtYU}@tLWveM+YiHuu$(`VDY0Qn2;#(4NTj^tB5r`2 zqjYM<JCGYG?e7|vAX?1g^MgA<$H!G${lW+E{+Lo;+~^Pk=oLGzDd;n#0Wy_$=xyBO z@6UW%tq~}qGQ`EFLkJ-(h;U1S8o!|bP?fBKh6c<jqWs-;jy?`O?po({XDH=Oca?OI zB+PPYrf@|p67vo+=w-+<3b)>9Zr@bM@9T1pQ8bFjrZ1@>qX>Acis5CSFBDHdM}Xri zREe*U&#f#`AR}3Wl7Qbt*cFgJXa<>}!G`gf9fN|nsb0h8(2l;vD$sAlU68*1i@L-f z1l_)hHv=2-V!564wx5|XhJwH6lZ&uVy#i(5Z-9viGgGfuHvHM1(Wro!zp9@q*EkxE zvAJZ}U~u1@=+7!qQ{@XOsP3;HO3p(3NF<N<C#m0?wF8u_^GJ!BbKvG)Q)cz;6A)?U zJ5wK_3ju4{!MMEa;^)2H*oh09`~RX7=0M|8Ku5g}b0+&N7z;wc3cEw0i1bc3=>Vtq zU-8mWClW?o&{)(0(jPOa=SK*U-maDKe*K#gN0p1EAnm?`oV-_?BF9murf|VYTL#&4 z6D)>|alx7Ty3k9!FdvxTvSqJ<K!It03Ot}C>Wv`Oo;hsNv6^2xnEdgxHQ&Xfa>RE> zys})O84_edMmdUm!QrXT3g0m?ab+0;VZ9?Gkr|0YaOI@(OFm4Ua2^?&UJDQ`%6XK^ zH3=4Aw*q22hEHJ<1&xkE5H=V{`}D*L$oV3356pJY7fqq%ULXDnfSk(ZyIOET;{cxw zWrC!#8PgU_SJTqQC`(oD1%mP^tS!6hXCe{ppex*3;u1$cT4H;M7e>nYTBhyx?|`+} zytpf~P{APMF3g;Ak281o(~c_q)?p&EabJ4BOe7<~ShUAzYDM?*_Bjd30`L1r?*~^b z%=T~4M<Y^%^-A)4*6j)OaU#pP945_|3DME>`oQxP<b1KnW=iyj*nH|0wgS}dgOgka z`q%8JE|96WPzVV0xSmtsXX<X1JvX<sT2jNz<478nQwaa={G&G=_FHh;BO5JBuTigy zxCPAov41WKovIZUfngezy7(}wCCUkZvbm9az7%jcz(L@S(g6y@R0IL9i(VdcI^5%+ z`wUeG5j0j6Fh}#pCUJ13j&A0GL|R3zb;CxYDesD!RzM5_T_jUW`lCxc;$Ie~f-ulM z5~SG;9$9LL?HS}QPUct4GV`iTst<xwr@S93M_x5YGb1d%ad?j_m=(7<`hU-LPQgH* zvK==+<Z6B687s>-OyZ!}6?QOUw={LR9f;;CJoq2Tw6E}qAFT+wuA`_VIlm=4n3_B< zu-{g7LxRh~a-f}quMIU5{sn0rFM^z=Plb0swz^p*41u2$1zry*0o1eGRK&py=U81f zN%fiJCN2|&i-+hvx2iGV^wx~()0cfL+hox@g6-<SgKu@--x@+ci<O)#Hdycwjv)rN z8tb@IHeNPrVf@q4Mmw;gonVew%gr@(VHN`ciml_G@+TW2odFRk)c4%&@fh?$mhrVA z>Y@9Gd6<Ok#j%%N17|)Fw)s1y!60ieRZa1-_YYl<4aIAHuS=5F@#$*A9fS|*y8lAH zR-UMy@u8ya{lYt99fN;-2nib{bA?HN@$@B^bCCB}`#Mir@2vdOeP?_8IRF=`mj2M1 zs(iPb#yDavouSiR^T;B_CN<~mIyt%k>?-z#CSJNJMgXc@D6F^0gV*L?`cyC$EWgMw zvSmY2W^7F18hvY+bJ0ViM1w0<u~D&^stnAUm}f25pBFo6`#rjZB=0y3{>ci9XX1TX zx0Jab50uTFvs<*9<q=CA4fo63xq-A6pR>=v$mWA3*v<w)Q@AGiuT+s&#Nc3=mll9D z$f;ANRm4NNr(s$jZ&FP1FN4*b%7+c|diXszYhBUGOO7nofXaI$EDj1~y$0${qBHVm z6%~u1nw+tq?HD^FswX+(Wa_&f)E*tejsOcb>3mFdb&v(G2>g+tytFh1?=KdBer$xx zK|p{Q(q}Z6wbvdE@!Nk`Fg<mlZBn$ls#0Y}**o`z0qvRhCzmS=Re)<W?3JlG0k|Z2 z$Noo>zx&@D{*D>sk;ozj<_hjF19J{VYSI6?M*D7s2<vRT5$(w#rnwc>IV$;iw<p#s zvFL<oN+R&9>d~IfnmR$6P*!ZiJRsbIMH2^tVK2gRNSg{5Gxxqvo8%5-fw_u&QB=X~ zCqo~~2<{e7e#nGJDja}27|gtYh~U8V`nWL;eM{j*E5D%3>SsT&Ip4ZJ{$WX^!K+{x zv^4UxC`{hGh*;i!%*0Y$m|{C_m{r!oS`oF0d3_iyX4#~?0Qek~UPM_RW?)eKl3Jqj zA{1$Sk7PI03)Pj5Ct<Wn?$trmq7>(^PDLATD+~wx$`zReJ6aExV}j=al_bvk*X6Z) zFTM**bIH>@#kU-6-&v$>{a29{|HX5_UPe7>t7gw>y2T42QanM&sfyIfa@=or%W|bo z8!PONk=T+5t4F?<jz9zC5}>V^;S5NTAIUO5emI2&^HY}v9{fOjIvth$!JY>3!YK#{ zj?Z*-6}kXG_a?1(QagA3SuZ1(asM64C5pn9CCDt77B=^}A{~;E!SJyeyy`6eG$WsK zp(=CHDv{zb$8dO<*x&b`;;kv_*4%^@0lRwXPkoz`beDKM%GEb0^VmGRJ0ex>Lx`w~ z0U*wiBD<Vwz#hp!eerC#b+CD{B)dLv#}3eEg%^N%U1sVtHEi4Tzk{fg+I~Vsokqmq z^TG#e8qnB-EP<0GL;lsNaY2KWh$1`7Jd2`+*)|N}gH@~Kd=U``yn$=wz9vGNu#$bn z0kz%Rwj@bXwk<sgy(bMCXx~MCb1q=h7p>(JC0}|5vLrFY0o)!CA?W%3JH2?*nflDK zBh}6g!U<1Pse1<R@Uzp3f_l|t$9efTdIl9<5ckPD9AFc6I47zS<nm71N(wIJd?wl4 zSbmI?d&BEl0(b8Vf#a8(5gcujUHp9z`M~2WOtW)Ipr++{90kIb;=GMW8khm%EFc%P zzO^DhO7U2{b^lH8c>fyzu8XJ}-qR9>9+-`D=ps&*J8RVL2KbPEm_c`60MtE&<UE_f zMFpRY4DpjQYfU9D8nN8adJ2bN3nL!t64DmvFeWMjb#7ubkl!nhw@dyZQEoTa9UOZ; zmkP#e2BHG{3q(=&2z6!8LJ)jR!gI_~dyoN<v2ZT<D_pI`VQugQ0Pr(P3b?g?W;oDf zk@0Vm0PE@xjXrztYlB0`rxsSa6i5tWqZIz`b{}ZhzOcO|Hdx+fnll+yIMF*|XBE56 zfK^BZhNg(KwZ*(|Bu@jb*<OiVAMgT@HNj=afvFSJXd1*I4@Sb_GCspjj9v#kx8K=x zD}O}iE(PSBjQ!Vr(*?<SA1YSy_kq_vn&yAz7hucY+|L<f@JV9MTD3Oi@%Lb2t1c2E z*l{lMJ=`c+=Xl>SnpJU26-EdMR2sQ7bYVTep-%CViOVk$kizrWVk5fcUqN4AQP0t3 z>)k*yx60EnIaUp8HeoLS>{79jm20iJQ<OwSD9X{#mk=%MjLEJCvi1Y%k%m+zO(Nky zBx`lNm@(y_3V6$R9^m|CVpak?J2?anP$F*L+eP^i)K6SkwO_S36%UXsQZ#<#z%av_ z`|9`M&~MBxJicK$uPLu>^;~IOeIoR+nZ*>ub<{X7SM9%X$5o9T!2|gWHLJVzBQdNs zSiiSrs?V%3pHs2fJRzt^l&G?Ofy+`uXJY(q5q#?!^~du`z$<Ww!rwgXS2!$7JbBeo zLV#B>fPx@W?Wc83#kGY*mkut`819>O0FBFijY(Ze+Q*2F=e*#J!01AmVD1y=4~_fH z#5BvWA=>+}V1d=<<hmNQVf|Ydi1pRawlQB-eA_xMrKZUx(<qUj=d)HL4KfnahcdCU zeV#+S28Epm{pZOIQHi3r6ZSYAr|3=yhqrhJ{&jo_58oa-w8N9BdClj+g-w%Q#;Ohx z*z5=jVP*F((RXlvPL$pjmfcI-QzA4&^kC1o%qboD4K?kaT{(cbuy+&<VuyM{%)faR z8_et053N*(Z+?e-209t>#&vrN=LXDs4GkgCYAVJCvvp2OmbHrqK^V81m_r8`>>WYu za67O8=8*v!P_|H;0kX?ugGqEVx>9jf9_cKLb(g1$kq}{%v*iptCBrw6sC2*j2a@oX z-Nkd8Q}GI5K$z*hMx$n?#tw@$!;nmWHpi_ASiyx2mG9~)^~)9L4;SxrIM*?UsJ#&K zn2M>nRtvTYtZd90N5iQ@BrUocAt`xcWjZ#LlThZ(uTq3}kWJ5XbEiV0$KXScsakxN zI>kGCmY(-_0wpvePj_BGVQN102N@6AYIxRWrmk}7NI9&$5nYW!L>G4#)>%KJElf7L zl*F%*0u8hehzt-qIJ-Zf<<Xn^w`N}BWOAz6oag%K)9>jV2#I%$Wyitwo(=rsOGC7I z&6rX~of+(4zB3T-Vb<rsR7`v3+oe%Nutw=jhk|EzmUikm8bbcmanB6>XvB5eR=%lD z|CL)DjFud8@)Pnx<4AZlI1G8q?c*OwuE_J6&7}ujv@?>obCHB0)s~*G>e;kPYnj4H zWJK+>BW7mf(=d-w-zHIS>i~i@Fj_zKq!DM4{Kld6mwn=5wvGEj#6F~p)py<a_r`#+ z^}vy%AqNq?^P{~Jy50&6RZeyMS=P&VU)8{SBEQpG=m`sJw1u`&T_d^0LnU9-mOGF= zt%f}&fJr!`c+`ZVOK0hGN}jt3kfl&Q^hM7}kl_XX3s<^ApS|`ID=!?)wW@5=aA_O4 z0LtiRyMtz%h!o4a;TtG+x{VLc5z;}?>%o+P3$Y9?q+aJE-<tg+(s77L2dP~8e_42} zu9>zXWkyy&gKNj|eiVjoXS(ISxs2w>MJ1h%r0X*e^HC4y`Jb#!+aHr6jKaopO>n+c zy3VwHRjM@w%x`hI)U5Q7r4RWGHLJVzBT1vvt<59AYgTtZh@w6DB4sMArq?4fvS!JC z1kdMh`iop1rr?h|hN#*9ELNTlqJ~erdcUEv$h6DrmadZ&ViAQ;cfeA&7Uw|jXrZqN z-k0oR{NrCPXqjY}h53~`>jB6$WY^)t(4oRfIHi5UH_Zc#Z~awBKGYx$=^iMb?w^gR z_j{_sc+av~=47460m80KlCFgYKbHrzX0F|O&>wnMkth@leDUWoM)?{@SX=DX9WSI= ziAxfACpHaTLl-tK$%Eoy`Sn8I^lK1QR7~YE-m9a`ChMkPdHnVj8u}<{5k~<7xqbkz zuX@OP+SUHLGr6M*_p2Xd=PQw)&0xU|RF8j_{h5I_NSfJ`ct~wy&4iNS1np*flnogR zx{=K_7`0MPn1B;p<S-r+)>TrfmSOpsn-j1^<cBgN5*}pm+jD$K)1gKp2=-%(YQt#^ zIGbep&l~xRX!TqKVCBrQd;`3W6TuXS99w;b4ip~#wi%`T>M@ZezO{JZ8p1K8Vhm&5 ze#h0-PN6<8F9I62iDFpMF`2O4FIG7E5;4wu2Q-vI6=W;uu(>FdnMJa?t}sm&UwatJ z`)PXO`zuRF9v~qkz)~M&TA|mVP9hvJ`s`A$zkPT}*ZR+B6GQVF_2EXsRwzRxlb;~s z7;=mPlIS(bvFlnbP3s(|s^6?A(iPX{Yw;WLIH*;g=C3Twz!XJwtR)3M==X(AQ&x_u zQKQ7a*n4v~YHD^3Ot!|iVK~WHdm*NG6N`zV$#ds6&{vkGxg#3jIf7n586sz-lvT0| z1q#{8GXxo9wGA}KL4F)4ga{io&gjcaawAI$-Mjtc-9t92)~AcgE04TYEwlhswM*;n zEOHWj3-iamPZ;gYpwWyO%p(c-!J%X{Ci&%=9>GnSispk0wUsbxo$4VHR-TJ0+_JPg zb_e~{Igtn+W4rx8uB8vNa+Enn#H2dpi}saW2uGIs*adX2bs8<xIgQ$|)<9_AwFcT+ z23S&vMk!X7hEJ{osv<Wr)QEueqK`b}zHP4698Te|O`O>(xpurrChh&A{G;X=G_5~i z{vlh$90tky9wu5UpN_}qoG!S#Q9RwKPYDubms3sWa$<8LYdia+*D1#&o96(gJl4=s z7!0!M78j4W`V7&D<2pgx0C9tl@$xIlM2Q8Oe-oII8i^=9;H>oAPa05zwcS*bU8ZKt zUWR7qs#lYGUzo$t3b>~LQKmgJ;gILyz1p?g&w$yztb^qPgbr*+y~;ki)_W-UBHK1i z4oK00U_a;5j?W^oAd65D7DCGoG@SgG%f=9e3jNar%Q5V#2|_KT!sNhhyox+l+up(d z#MGyN@8`|(6wKgQlp9<+Ol96x=frRNo@Qm8$FmGUXa*wy394~m!_9gW91TyawuwR( zhkoR8>HxXI?W^F`@6EM^V~5uon$I%8C2MN$atMSK(6_`6%Sti_2%T)ZpDv3+ZNAlV zaDAsrNXA{=8{%qhavJcT&lv6S`s&apGk~$_?>5A>M4_EJQH0I}RnWxepC$?E^2{+1 zbu`&3eEF!8ccvzYe3BP}p5IxkJFqe(Fn&P3o*pazk`1V!%IN}h#N9&^3f!8uC>vmN z0@v%?`V)7pSTAra+;!O^`IjIAf?fVeN)5NLUbGCpC4}fNwpU?#*!Lxu^g?LLLFLp9 zat8`h)%%Be`%qi+%)m|94MTMQ9ppk7@<(iaB?Hacz5PYYG{?Yz-@_dQDs2qBU>&M; zcmVbe-UPUz>jRH(FyG-7`II8=z0T^`0tfuPv<6Hcz?j8$$anX&oGFb<eMVMo1IskG zsHnJg-r=~C2w7U{0M^lv2YryU&ESWd)w$iR0pE5iy{q~Btso8!jK}I>Di#*J1I?PP z6YWm@8t-@oVG4>ONr*WG>+xh=D>ij21pU`y(HoN3({k}F0soYPnNA!>9T&lqka@kG z{PCgVPJ&gwb+XR1RDfc(w`Vivu`Ywb5UHv)t5tP!#hj5C?oTHKQWE^B;z*5myIHr* zN{?HJ$ku|tjXN(y^Y4@MADU>hD$TdX_c|9AvHD0?-#Z4C1p@vgSsQJfOW$6zR^P3R zf&)DA-sb+2TI-_t5HOx_R+?i9{81Aqx|CvG)9hS^jvg)Gs6-!=MY@WPM|>vsNAd(o zp~piAUYIOWHsv9@Fkzgc#KwC0D${ww{;D9y<;*6g6aulKq9QXo9x#uPC9dgw`OUX@ zGc-WT9Ud*^f4>Q`>xq7z$zbA!u3VKtSd-!Z#*EFYIcbx}TEEPjSnRwg8C!2*uO*H{ zhvMBy_pG-hbH_c>%@KH59N=HQY;octcryD;oi8lp7Qj~59IQ)U24J-%K5mJ(t~7%* zDh(~c=S$L6k%MOBhtI(wN#U8T3$VACJ}(+-)W?U#2SHw^fT^}^*JExBQR(|^_@S^R zWH{BQaXZ8|p3kMNYx?7?e6*grB?&)8RAxSP9JwwYR*gKAD_?+}>3+b$9U)40^9PhT z3oyEFmJ7x-b>=xb7J*?Yf82B5-7e?yR?8qpOC;3hQrWrI|4_P4xt~j4qcL(iUsAn6 zNJ<7?;s=?#`$-2@#ErPXmX>Pv!fvTi()dNFv#qi;E7H0h)C(LU0vxj0uzRcwj$k6) z;5d7f8j%TlWVt0@yJ*y+&=p4E)zDJK<}uv%DE~2ufs$LDLX&>UfLMZZKv7)!>Y-Qx zvwydCWCM>&ahW3fCwMTa!=OjvEe+@;7(Sfu8-EQ&hLwjmjOX_NTG$z-EeTr+5eE@* z6(At52ArpJwKVb5=ouMnE<%`k-c&HwiD>O^9EeI+6uWUkX2W68-Dieqcgl8z+(x1? z*b@Uoj^p4;hvvuSugu<rJ*`+IHrd=Zy34iB;~eew%hfcHZMJK)Yqrc~7mUJN-lI6R zxsn$m28xX3g7uSFseR(oR281o4dg5PzYKBfUA6w%MIH+vVow1zC>tp&(Am2J9z)+V zP{EcnP0*rfT`x)VH!L4ZU%l2W;qOc#CuEFA1Z&Tlw%kDMmsVrHiZCM>J=hj&q02%n zi{}XKgS01mgPVCg1JaTfk;f0i>x9d((I5f-{3Ipiq`CGiGj~}9BsrLPj~UI&tTy(9 za)N90<DQp40~p3ZYq;Yf*AK^gsCZ`n?P+80C~(HfCE_EtUrXFddqh6k;G+!kOi)>$ z?B6w(MmqLBzF{fcJ4FQgO`%GNT6p6v77821W9a-?5?5NnpRi-AW_AT7;MCPsDqEx< zJvvI_>AKKsM%G(Gc>#}{ttqr{xB1l{CanMl{yPEJma!OD0G*MD)dixpZ5;P#$sQet zvF8Bu`){+cMF_lDz1M2-Y+*S)Wg2@_ob)EBc^VCJ8qe%*gdi6DG0Zb?$Q6nkQ%KVK z6+Jmk!~YYR^TXg~&&0w|Q<jf~E1j9kPE~}+INSzVFDM`<=7kg5z{_;4^XJc6to=C& z0sC8!aitk_-g;BG-r>+nP_>;1e1CLI{NFmtAvYDsaUWGGwa=0MIzJ|IMNC_xX;IIc z5?Lf`%#*UnUw(1x_5I_`eGy7h$H;zpq5R@<nHA;0lGrN(G-GATbNtzL&_Uc%wu+k> zrsE1+jO>pxL{1(|RaC7a$wZUTORow$nOFpmF_YsZz=UkLo_f6eTqepnv6rpajd;pO z?-HK_$;nr=`Sg*nhwjoSM>=Qv3Gd}{qw~{oR5nOD5JE$s#g;pcgS1w^+?{%Wy=5D- z<G^@t5r=maE}{NTDSxN!=41n5?x%OW2vj>}eR>Z6lo|jR)JVj-B}0Q!7i~2g?|ZG* zPsizjZuPke`RSuT@A`be9nB�doMyI!b~=B|Q=b7eC#lGyw>tj@ZWHN1B`YL=)}8 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 V7m3Oo7?sQ>)MBV(Glk$GnV2o2&lmsz literal 0 HcmV?d00001 diff --git a/static/images/docs/project/services.avif b/static/images/docs/project/services.avif new file mode 100644 index 0000000000000000000000000000000000000000..eaa3aa8aa028284b421b1ec2f7fc8b222109b151 GIT binary patch literal 40047 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 GoH#(ZhlvUR literal 0 HcmV?d00001 diff --git a/static/images/docs/project/smtp.avif b/static/images/docs/project/smtp.avif new file mode 100644 index 0000000000000000000000000000000000000000..eb1d1a6059a672b2e7341e3abebbe0fd3673ae87 GIT binary patch literal 24970 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 HR$Tdx4+#nQ literal 0 HcmV?d00001 From f1787fdbde913737ff350e80fccad485d4b54a8e Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Wed, 22 Jul 2026 14:40:53 +0530 Subject: [PATCH 30/38] docs(partners): revise Sign in with Appwrite pages with diagrams and tested responses --- .optimize-cache.json | 22 +- src/routes/docs/partners/apps/+page.markdoc | 15 +- .../docs/partners/apps/consent/+page.markdoc | 38 +- .../partners/apps/quick-start/+page.markdoc | 705 ++++-------------- .../partners/apps/registration/+page.markdoc | 646 +--------------- .../docs/partners/apps/scopes/+page.markdoc | 94 ++- .../docs/partners/apps/tokens/+page.markdoc | 177 ++++- .../partners/apps/dark/diagram-consent.avif | Bin 0 -> 16447 bytes .../partners/apps/dark/diagram-overview.avif | Bin 0 -> 28423 bytes .../partners/apps/dark/diagram-scopes.avif | Bin 0 -> 16430 bytes .../partners/apps/dark/diagram-tokens.avif | Bin 0 -> 29119 bytes .../apps/dark/quick-start-consent.avif | Bin 11545 -> 10778 bytes .../apps/dark/registration-general.avif | Bin 0 -> 25685 bytes .../apps/dark/registration-legal.avif | Bin 0 -> 19272 bytes .../apps/dark/registration-publish.avif | Bin 0 -> 19665 bytes .../apps/dark/registration-support.avif | Bin 0 -> 17022 bytes .../docs/partners/apps/diagram-consent.avif | Bin 0 -> 15821 bytes .../docs/partners/apps/diagram-overview.avif | Bin 0 -> 28586 bytes .../docs/partners/apps/diagram-scopes.avif | Bin 0 -> 15925 bytes .../docs/partners/apps/diagram-tokens.avif | Bin 0 -> 29013 bytes .../partners/apps/quick-start-consent.avif | Bin 11628 -> 10912 bytes .../partners/apps/registration-general.avif | Bin 0 -> 23786 bytes .../partners/apps/registration-legal.avif | Bin 0 -> 17767 bytes .../partners/apps/registration-publish.avif | Bin 0 -> 19720 bytes .../partners/apps/registration-support.avif | Bin 0 -> 15812 bytes 25 files changed, 508 insertions(+), 1189 deletions(-) create mode 100644 static/images/docs/partners/apps/dark/diagram-consent.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-overview.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-scopes.avif create mode 100644 static/images/docs/partners/apps/dark/diagram-tokens.avif create mode 100644 static/images/docs/partners/apps/dark/registration-general.avif create mode 100644 static/images/docs/partners/apps/dark/registration-legal.avif create mode 100644 static/images/docs/partners/apps/dark/registration-publish.avif create mode 100644 static/images/docs/partners/apps/dark/registration-support.avif create mode 100644 static/images/docs/partners/apps/diagram-consent.avif create mode 100644 static/images/docs/partners/apps/diagram-overview.avif create mode 100644 static/images/docs/partners/apps/diagram-scopes.avif create mode 100644 static/images/docs/partners/apps/diagram-tokens.avif create mode 100644 static/images/docs/partners/apps/registration-general.avif create mode 100644 static/images/docs/partners/apps/registration-legal.avif create mode 100644 static/images/docs/partners/apps/registration-publish.avif create mode 100644 static/images/docs/partners/apps/registration-support.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index ab941d23d9..8d72d41921 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1599,17 +1599,35 @@ "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", - "static/images/docs/partners/apps/dark/quick-start-consent.png": "2f94d24187e22f9391e86b5029b9b3cf47189b49ca6db8858eca2851b21bccec", + "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", + "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", + "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", + "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", + "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "1d9b2afc99e93e53f4dd934f7de659cb1f52c11d5f42d447b9910ad574ff24d9", "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", + "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", + "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", + "static/images/docs/partners/apps/dark/registration-publish.png": "e50dd334c7df7d926821ee37c07762e0fea196fd3da8a5bf6ff7b92d21b8b09f", "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", + "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", - "static/images/docs/partners/apps/quick-start-consent.png": "4515e2c9bee7c0e269bc3878bf0a804942b9f39fba103a2feda5b71aedf3acbc", + "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", + "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", + "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", + "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", + "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", + "static/images/docs/partners/apps/quick-start-consent.png": "d583752f9abf911002861032e097737cf6b2f0dd49ffd582f9306b72ba4789ac", "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", + "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", + "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", + "static/images/docs/partners/apps/registration-publish.png": "734184fab22320d2c473d25ee8218ee6ebaed5971787d1e1930057d0135cad8c", "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", + "static/images/docs/partners/apps/registration-support.png": "da585bd47fa71c9277a8f98a2b561c9fd31bc99a11a9169367a82bd3e744f8ae", "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc index 6808f9f706..3d41f35baf 100644 --- a/src/routes/docs/partners/apps/+page.markdoc +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -7,10 +7,10 @@ back: /docs Appwrite is an **OAuth 2.1 and OpenID Connect provider**. Your app can send any Appwrite user to a consent screen, ask for access to the projects and organizations they choose, and receive tokens that call their project APIs directly. This is **Sign in with Appwrite**: the same consent flow users know from "Sign in with Google", pointed at their Appwrite account and backend. -Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. That key never expired unless they remembered it, carried whatever scopes they picked under pressure, and had to be repeated for every project. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. +Before this, a tool that worked with a user's Appwrite project asked them to create an API key and paste it in. The key carried whatever scopes and expiry the user picked at creation, worked for one project only, and lived outside their control once pasted. With Sign in with Appwrite, the user approves once, picks the projects your app can reach, and can revoke everything from their account page at any time. {% info title="Building your own provider?" %} -This section is for apps that build on top of Appwrite itself. To make your own product an OAuth provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. +This section is for apps that build on top of Appwrite itself. To make your own product an OAuth2 provider so that third parties can offer "Sign in with your product", see the [OAuth2 server](/docs/products/auth/oauth-server) documentation. {% /info %} # What you can build {% #what-you-can-build %} @@ -24,6 +24,13 @@ Your app authenticates the user once and then acts on their Appwrite resources w # How it works {% #how-it-works %} +{% only_dark %} +![Your app sends the user through the Appwrite consent screen and calls their projects with the issued tokens](/images/docs/partners/apps/dark/diagram-overview.avif) +{% /only_dark %} +{% only_light %} +![Your app sends the user through the Appwrite consent screen and calls their projects with the issued tokens](/images/docs/partners/apps/diagram-overview.avif) +{% /only_light %} + Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. 1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. @@ -31,7 +38,7 @@ Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by A 3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. 4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. -Because the provider is spec-compliant, any OAuth or OIDC library works against the discovery document without Appwrite-specific code: +Because the provider is spec-compliant, any OAuth2 or OIDC library works against the discovery document without Appwrite-specific code: ```text https://cloud.appwrite.io/v1/oauth2/console/.well-known/openid-configuration @@ -46,7 +53,7 @@ Users stay in control after the redirect too. Every authorization appears on the Register an app and run the full flow, from consent to your first authorized API call. {% /cards_item %} {% cards_item href="/docs/partners/apps/registration" title="Registration" %} -Register your app in the Console or from code with the Apps API. +Register your app in the Console and shape its consent screen listing. {% /cards_item %} {% cards_item href="/docs/partners/apps/scopes" title="Scopes" %} The scope catalog and how grants target specific projects and organizations. diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc index 92556f0442..1833c2f6ce 100644 --- a/src/routes/docs/partners/apps/consent/+page.markdoc +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -5,6 +5,13 @@ description: What users see on the Sign in with Appwrite consent screen, what th back: /docs/partners/apps --- +{% only_dark %} +![The consent screen turns your request into a granted token response or an access_denied redirect](/images/docs/partners/apps/dark/diagram-consent.avif) +{% /only_dark %} +{% only_light %} +![The consent screen turns your request into a granted token response or an access_denied redirect](/images/docs/partners/apps/diagram-consent.avif) +{% /only_light %} + Consent is where the user decides. Appwrite hosts the screen, renders what your app asked for, and gives the user the final say over scopes and targets. Your app never sees the screen; it sees the outcome. # The consent screen {% #consent-screen %} @@ -16,21 +23,34 @@ Consent is where the user decides. Appwrite hosts the screen, renders what your ![Consent screen showing app identity, requested permissions, and project selection](/images/docs/partners/apps/consent-screen.avif) {% /only_light %} -The screen leads with your app's identity: the name, logo, and tagline from [registration](/docs/partners/apps/registration), with the privacy policy and terms linked in the footer. Below it, each requested scope appears as a permission line in plain language, and a summary states the overall reach, from "view your identity" for a bare OIDC request up to full account access. +The screen is built from your [registration](/docs/partners/apps/registration) and your request: -When the request targets projects or organizations, the screen shows a picker. A wildcard request becomes a list of the user's resources to choose from; a request for named IDs shows those resources for confirmation. The user signs in first if no session exists, and can switch accounts from the screen itself. +- **Your app's identity**: the name, logo, and tagline you registered. +- **Permissions**: each requested scope as a plain-language line, under a one-line summary of the overall reach. +- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. If your request named specific IDs, the picker shows them for confirmation instead. + +The user signs in first if no session exists, and can switch accounts from the screen itself. # Users can grant less {% #partial-grants %} -The user approves the request as a whole, a subset of it, or nothing. They deselect projects, drop scopes, and for agent-style grants toggle whole categories to read-only. Only `openid` always survives approval, so an approved flow always identifies the user. +What you request is not always what you get. On the consent screen, the user can: + +- Deselect projects. +- Drop scopes, or narrow them to read-only. +- Decline the whole request. + +Only `openid` always survives approval, so an approved flow always identifies the user. -Your app learns the outcome from the token response: `scope` holds the scopes that survived, `authorization_details` the targets. Build for partial grants from the start. A dashboard asked to read five projects but granted two should show two projects, not an error. +The token response tells you what you got: `scope` holds the granted scopes, `authorization_details` the granted projects. Build for this from the start. A dashboard that asked for five projects but got two should show two projects, not an error. # When the screen is skipped {% #consent-reuse %} -Appwrite remembers approvals. A returning user is redirected straight back to your app, without seeing the screen, when the new request stays inside the stored consent: no new scopes, and `authorization_details` identical to what was approved. The screen reappears when anything differs, including a request that omits `authorization_details` after a consent that had them, so send the same authorization parameters on every sign-in. +Appwrite remembers approvals. When a returning user's request asks for nothing new, they skip the screen and land straight back in your app. When anything differs from the stored approval, the screen reappears. Send the same authorization parameters on every sign-in and returning users sign in silently. -Two request parameters override this. `prompt=consent` forces the screen even when a matching consent exists, and `prompt=none` forbids it, returning `error=consent_required` or `error=login_required` instead of showing UI. Use `prompt=none` to probe for existing access silently. +Two `prompt` values override this: + +- `prompt=consent` always shows the screen, even when an approval exists. +- `prompt=none` never shows it, returning `error=consent_required` or `error=login_required` instead. Use it to check for existing access silently. # Revocation {% #revocation %} @@ -41,6 +61,8 @@ Two request parameters override this. `prompt=consent` forces the screen even wh ![Account applications page listing authorized apps with their token families](/images/docs/partners/apps/account-applications.avif) {% /only_light %} -Every consent appears on the user's account applications page, which lists each authorized app, the scopes it holds, and the tokens issued under it. The user revokes a single token or the whole consent; revoking the consent invalidates every token your app holds for that user. +Every approval appears on the user's account applications page. From there, the user revokes a single token or the whole app, which kills every token your app holds for them. + +Your app gets no notification. Calls and refreshes start returning `401`, and the fix is to send the user through authorization again. -Your app sees revocation as failure, not as a message: token refreshes and API calls start returning `401`. Handle it by sending the user through authorization again. To leave cleanly, delete on your side too: revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation) when a user disconnects your app. +Revocation goes both ways: when a user disconnects your app on your side, revoke the tokens you hold at the [revocation endpoint](/docs/partners/apps/tokens#revocation). diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc index 86453b8101..f0166845bf 100644 --- a/src/routes/docs/partners/apps/quick-start/+page.markdoc +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -5,7 +5,13 @@ description: Register an app and run the full Sign in with Appwrite flow, from c back: /docs/partners/apps --- -This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: a user clicks its sign-in button, approves access on the Appwrite consent screen, and Horizon reads their projects with the tokens it receives. By the end, you will have run the same journey with your own app. +This guide builds Sign in with Appwrite into an app, start to finish. The running example is Horizon, a deployment dashboard: + +- A user clicks its sign-in button. +- They approve access on the Appwrite consent screen. +- Horizon reads their projects with the tokens it receives. + +By the end, you will have run the same journey with your own app. You need a server that can receive a redirect and keep a client secret. The examples use `http://localhost:7700/oauth/callback` as the redirect URI; replace it with your own. @@ -27,7 +33,10 @@ Before Appwrite can show your app to anyone, it needs to know the app exists. In ![OAuth client page with client type and redirect URIs](/images/docs/partners/apps/registration-oauth-client.avif) {% /only_light %} -The new app opens on its settings pages. On **OAuth client**, keep the type **Confidential**, since your server will hold a secret, and add your redirect URI to the list. The authorization endpoint refuses to send users anywhere else, which is what makes the callback trustworthy. +The new app opens on its settings pages. Go to **OAuth client** and configure two things: + +- **Client type**: keep **Confidential**. Your app has a server, and the server will hold the client secret. +- **Redirect URIs**: add your callback URL, `http://localhost:7700/oauth/callback` in this guide. After the user approves, Appwrite only ever redirects to a URL on this list, so a stolen client ID cannot send your users anywhere else. {% only_dark %} ![OAuth secrets page with active secrets](/images/docs/partners/apps/dark/registration-secrets.avif) @@ -38,332 +47,26 @@ The new app opens on its settings pages. On **OAuth client**, keep the type **Co Last, your app needs a way to prove it is really Horizon when it exchanges codes for tokens. On **OAuth secrets**, select **Create secret** and copy the value; it is shown once. Store the client ID and the secret in your server's environment. -The same registration works from code with the `apps` service, which is how you would script it in CI or offer it inside your own product: - -{% multicode %} -```server-nodejs -import { Client, Apps, ID } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -}); - -const secret = await apps.createSecret({ appId: app.$id }); -``` - -```server-deno -import { Client, Apps, ID } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -}); - -const secret = await apps.createSecret({ appId: app.$id }); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.id import ID - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -app = apps.create( - app_id = ID.unique(), - name = 'Horizon', - redirect_uris = ['http://localhost:7700/oauth/callback'], - type = 'confidential' -) - -secret = apps.create_secret(app_id = app.id) -``` - -```server-php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; -use Appwrite\ID; - -$client = (new Client()) - ->setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$app = $apps->create( - appId: ID::unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -); - -$secret = $apps->createSecret(appId: $app['$id']); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -app = apps.create( - app_id: ID.unique(), - name: 'Horizon', - redirect_uris: ['http://localhost:7700/oauth/callback'], - type: 'confidential' -) - -secret = apps.create_secret(app_id: app.id) -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -App app = await apps.create( - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['http://localhost:7700/oauth/callback'], - type: 'confidential', -); - -AppSecretPlaintext secret = await apps.createSecret(appId: app.$id); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.ID -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val app = apps.create( - appId = ID.unique(), - name = "Horizon", - redirectUris = listOf("http://localhost:7700/oauth/callback"), - type = "confidential" -) - -val secret = apps.createSecret(appId = app.id) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.ID; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.create( - ID.unique(), // appId - "Horizon", // name - List.of("http://localhost:7700/oauth/callback"), // redirectUris - null, // description - null, // clientUri - null, // logoUri - null, // privacyPolicyUrl - null, // termsUrl - null, // contacts - null, // tagline - null, // tags - null, // images - null, // supportUrl - null, // dataDeletionUrl - null, // postLogoutRedirectUris - null, // enabled - "confidential", // type - null, // deviceFlow - null, // teamId - new CoroutineCallback<>((app, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(app); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let app = try await apps.create( - appId: ID.unique(), - name: "Horizon", - redirectUris: ["http://localhost:7700/oauth/callback"], - type: "confidential" -) - -let secret = try await apps.createSecret(appId: app.id) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -App app = await apps.Create( - appId: ID.Unique(), - name: "Horizon", - redirectUris: new List<string> { "http://localhost:7700/oauth/callback" }, - type: "confidential" -); - -AppSecretPlaintext secret = await apps.CreateSecret(appId: app.Id); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/id" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - app, err := service.Create( - id.Unique(), - "Horizon", - []string{"http://localhost:7700/oauth/callback"}, - apps.WithCreateType("confidential"), - ) - if err != nil { - panic(err) - } - - secret, err := service.CreateSecret(app.Id) - if err != nil { - panic(err) - } - - fmt.Println(secret) -} -``` - -```server-rust -use appwrite::Client; -use appwrite::id::ID; -use appwrite::services::Apps; +[Registration](/docs/partners/apps/registration) covers the Console pages in more detail. -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session - - let apps = Apps::new(&client); - - let app = apps.create( - &ID::unique(), - "Horizon", - vec!["http://localhost:7700/oauth/callback"], - None, None, None, None, None, None, None, None, None, None, None, None, None, - Some("confidential"), - None, None, - ).await?; - - let secret = apps.create_secret(&app.id).await?; - println!("{}", secret.secret); // Shown only once - - Ok(()) -} -``` -{% /multicode %} +# Redirect the user {% #redirect %} -[Registration](/docs/partners/apps/registration) covers both paths in detail. +With credentials in your environment, Horizon can offer a Sign in with Appwrite button. The button sends the user to the authorization endpoint. -# Redirect the user {% #redirect %} +The query string carries everything your app asks for: -With credentials in your environment, Horizon can offer its sign-in button. The button sends the user to the authorization endpoint, and the query string carries everything your app asks for: identity scopes, one project scope, and an `authorization_details` parameter that lets the user pick which projects the grant applies to. +- Identity scopes, so Horizon knows who signed in. +- One project scope, `project:tables.read`, for the data it needs. ```text https://cloud.appwrite.io/v1/oauth2/console/authorize ?client_id=<CLIENT_ID> &redirect_uri=http://localhost:7700/oauth/callback &response_type=code - &scope=openid profile email project:databases.read - &state=<RANDOM_STATE> - &authorization_details=[{"type":"project","identifiers":["*"]}] + &scope=openid profile email project:tables.read ``` -URL-encode the values. Generate a fresh random `state` per request and verify it on the way back; it is your protection against forged callbacks. The wildcard identifier asks for any project, which the consent screen turns into a picker the user controls. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). +URL-encode the values. Because the request carries a project scope, the consent screen asks the user which projects the grant covers. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). # User grants access {% #consent %} @@ -377,10 +80,10 @@ URL-encode the values. Generate a fresh random `state` per request and verify it This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: ```text -http://localhost:7700/oauth/callback?code=<CODE>&state=<RANDOM_STATE>&iss=https://cloud.appwrite.io/v1/oauth2/console +http://localhost:7700/oauth/callback?code=<CODE>&iss=https://cloud.appwrite.io/v1/oauth2/console ``` -Verify that `state` matches what you sent, then use the code within five minutes. It is single-use. +Use the code within five minutes. It is single-use. # Exchange the code {% #exchange %} @@ -415,282 +118,173 @@ The response carries the three tokens and echoes what the user actually granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:databases.read", + "scope": "openid profile email project:tables.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` -Compare `scope` and `authorization_details` against what you requested; the user may have granted less. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. +Check `scope` for the scopes that survived consent and `authorization_details` for the projects the user selected; both may be less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. -# List the user's projects {% #list-projects %} +# Verify the token {% #verify-token %} -The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Pass the access token as a bearer token with any Appwrite Server SDK. +Horizon does not need to trust its own bookkeeping. At any point, it can ask Appwrite what a token is worth by introspecting it, authenticated with the same client credentials: {% multicode %} -```server-nodejs -import { Client, Oauth2 } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token - -const oauth2 = new Oauth2(client); - -const projects = await oauth2.listProjects(); -``` - -```server-deno -import { Client, Oauth2 } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token - -const oauth2 = new Oauth2(client); - -const projects = await oauth2.listProjects(); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.oauth2 import Oauth2 - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_bearer('Bearer <ACCESS_TOKEN>') # The user's access token - -oauth2 = Oauth2(client) - -projects = oauth2.list_projects() -``` - -```server-php -<?php - -use Appwrite\Client; -use Appwrite\Services\Oauth2; - -$client = (new Client()) - ->setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token - -$oauth2 = new Oauth2($client); - -$projects = $oauth2->listProjects(); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_bearer('Bearer <ACCESS_TOKEN>') # The user's access token - -oauth2 = Oauth2.new(client) - -projects = oauth2.list_projects -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer <ACCESS_TOKEN>'); // The user's access token - -Oauth2 oauth2 = Oauth2(client); - -Oauth2ProjectList projects = await oauth2.listProjects(); +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=<ACCESS_TOKEN>" ``` -```server-kotlin -import io.appwrite.Client -import io.appwrite.services.Oauth2 - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer <ACCESS_TOKEN>") // The user's access token - -val oauth2 = Oauth2(client) - -val projects = oauth2.listProjects() +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +token: <ACCESS_TOKEN> ``` +{% /multicode %} -```server-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Oauth2; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer <ACCESS_TOKEN>"); // The user's access token - -Oauth2 oauth2 = new Oauth2(client); +A live token comes back with everything the grant holds: -oauth2.listProjects( - null, // limit (optional) - null, // offset (optional) - null, // search (optional) - new CoroutineCallback<>((projects, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(projects); - }) -); +```json +{ + "active": true, + "scope": "openid profile email project:tables.read", + "client_id": "horizon", + "token_type": "Bearer", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "token_use": "access_token" +} ``` -```server-swift -import Appwrite +An expired or revoked token returns only `{ "active": false }`. This is the authoritative check: it reflects revocation the moment it happens, which decoding the JWT yourself cannot. -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setBearer("Bearer <ACCESS_TOKEN>") // The user's access token +# List the user's projects {% #list-projects %} -let oauth2 = Oauth2(client) +The user is signed in and Horizon holds its tokens. Now the payoff: every Sign in with Appwrite token can list the projects and organizations it was granted. Call the listing endpoint with the access token as a bearer token. -let projects = try await oauth2.listProjects() +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/projects \ + -H "Authorization: Bearer <ACCESS_TOKEN>" ``` -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetBearer("Bearer <ACCESS_TOKEN>"); // The user's access token - -Oauth2 oauth2 = new Oauth2(client); - -Oauth2ProjectList projects = await oauth2.ListProjects(); +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/projects +Authorization: Bearer <ACCESS_TOKEN> ``` +{% /multicode %} -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/oauth2" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithBearer("Bearer <ACCESS_TOKEN>"), // The user's access token - ) - - service := oauth2.New(c) +The response lists every project the grant covers: - projects, err := service.ListProjects() - if err != nil { - panic(err) +```json +{ + "total": 2, + "projects": [ + { + "$id": "6a357f7e001c7237296b", + "region": "fra", + "endpoint": "https://fra.cloud.appwrite.io/v1" + }, + { + "$id": "6a357fa40031c857fa9f", + "region": "nyc", + "endpoint": "https://nyc.cloud.appwrite.io/v1" } - - fmt.Println(projects) + ] } ``` -```server-rust -use appwrite::Client; -use appwrite::services::Oauth2; +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_bearer("Bearer <ACCESS_TOKEN>"); // The user's access token +# Call a project API {% #call-project-api %} - let oauth2 = Oauth2::new(&client); +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:tables.read`, that is reading the tables of a database in the project. - let projects = oauth2.list_projects(None, None, None).await?; - println!("{:?}", projects.projects); +{% info title="No SDK required" %} +Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the project's endpoint, the `X-Appwrite-Project` header, and the access token in the `Authorization` header. Every Appwrite API accepts the same shape. +{% /info %} - Ok(()) -} +{% multicode %} +```curl +curl "<PROJECT_ENDPOINT>/tablesdb/<DATABASE_ID>/tables" \ + -H "X-Appwrite-Project: <PROJECT_ID>" \ + -H "Authorization: Bearer <ACCESS_TOKEN>" ``` -{% /multicode %} - -Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -# Call a project API {% #call-project-api %} - -The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is the read side of Databases. +```hurl +GET <PROJECT_ENDPOINT>/tablesdb/<DATABASE_ID>/tables +X-Appwrite-Project: <PROJECT_ID> +Authorization: Bearer <ACCESS_TOKEN> +``` -{% multicode %} ```server-nodejs -import { Client, Databases } from 'node-appwrite'; +import { Client, TablesDB } from 'node-appwrite'; const client = new Client() .setEndpoint('<PROJECT_ENDPOINT>') // From the project listing .setProject('<PROJECT_ID>') .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token -const databases = new Databases(client); +const tablesDB = new TablesDB(client); -const result = await databases.list(); +const result = await tablesDB.listTables({ + databaseId: '<DATABASE_ID>' +}); ``` ```server-deno -import { Client, Databases } from 'npm:node-appwrite'; +import { Client, TablesDB } from 'npm:node-appwrite'; const client = new Client() .setEndpoint('<PROJECT_ENDPOINT>') // From the project listing .setProject('<PROJECT_ID>') .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token -const databases = new Databases(client); +const tablesDB = new TablesDB(client); -const result = await databases.list(); +const result = await tablesDB.listTables({ + databaseId: '<DATABASE_ID>' +}); ``` ```server-python from appwrite.client import Client -from appwrite.services.databases import Databases +from appwrite.services.tables_db import TablesDB client = Client() client.set_endpoint('<PROJECT_ENDPOINT>') # From the project listing client.set_project('<PROJECT_ID>') client.set_bearer('Bearer <ACCESS_TOKEN>') # The same access token -databases = Databases(client) +tables_db = TablesDB(client) -result = databases.list() +result = tables_db.list_tables( + database_id = '<DATABASE_ID>' +) ``` ```server-php <?php use Appwrite\Client; -use Appwrite\Services\Databases; +use Appwrite\Services\TablesDB; $client = (new Client()) ->setEndpoint('<PROJECT_ENDPOINT>') // From the project listing ->setProject('<PROJECT_ID>') ->setBearer('Bearer <ACCESS_TOKEN>'); // The same access token -$databases = new Databases($client); +$tablesDB = new TablesDB($client); -$result = $databases->list(); +$result = $tablesDB->listTables( + databaseId: '<DATABASE_ID>' +); ``` ```server-ruby @@ -703,9 +297,11 @@ client = Client.new .set_project('<PROJECT_ID>') .set_bearer('Bearer <ACCESS_TOKEN>') # The same access token -databases = Databases.new(client) +tables_db = TablesDB.new(client) -result = databases.list +result = tables_db.list_tables( + database_id: '<DATABASE_ID>' +) ``` ```server-dart @@ -716,38 +312,43 @@ Client client = Client() .setProject('<PROJECT_ID>') .setBearer('Bearer <ACCESS_TOKEN>'); // The same access token -Databases databases = Databases(client); +TablesDB tablesDB = TablesDB(client); -DatabaseList result = await databases.list(); +TableList result = await tablesDB.listTables( + databaseId: '<DATABASE_ID>', +); ``` ```server-kotlin import io.appwrite.Client -import io.appwrite.services.Databases +import io.appwrite.services.TablesDB val client = Client() .setEndpoint("<PROJECT_ENDPOINT>") // From the project listing .setProject("<PROJECT_ID>") .setBearer("Bearer <ACCESS_TOKEN>") // The same access token -val databases = Databases(client) +val tablesDB = TablesDB(client) -val result = databases.list() +val result = tablesDB.listTables( + databaseId = "<DATABASE_ID>" +) ``` ```server-java import io.appwrite.Client; import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Databases; +import io.appwrite.services.TablesDB; Client client = new Client() .setEndpoint("<PROJECT_ENDPOINT>") // From the project listing .setProject("<PROJECT_ID>") .setBearer("Bearer <ACCESS_TOKEN>"); // The same access token -Databases databases = new Databases(client); +TablesDB tablesDB = new TablesDB(client); -databases.list( +tablesDB.listTables( + "<DATABASE_ID>", // databaseId null, // queries (optional) null, // search (optional) null, // total (optional) @@ -770,9 +371,11 @@ let client = Client() .setProject("<PROJECT_ID>") .setBearer("Bearer <ACCESS_TOKEN>") // The same access token -let databases = Databases(client) +let tablesDB = TablesDB(client) -let result = try await databases.list() +let tableList = try await tablesDB.listTables( + databaseId: "<DATABASE_ID>" +) ``` ```server-dotnet @@ -785,9 +388,11 @@ Client client = new Client() .SetProject("<PROJECT_ID>") .SetBearer("Bearer <ACCESS_TOKEN>"); // The same access token -Databases databases = new Databases(client); +TablesDB tablesDB = new TablesDB(client); -DatabaseList result = await databases.List(); +TableList result = await tablesDB.ListTables( + databaseId: "<DATABASE_ID>" +); ``` ```server-go @@ -797,7 +402,7 @@ import ( "fmt" "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/databases" + "github.com/appwrite/sdk-for-go/tablesdb" ) func main() { @@ -807,9 +412,9 @@ func main() { client.WithBearer("Bearer <ACCESS_TOKEN>"), // The same access token ) - service := databases.New(c) + service := tablesdb.New(c) - result, err := service.List() + result, err := service.ListTables("<DATABASE_ID>") if err != nil { panic(err) } @@ -820,7 +425,7 @@ func main() { ```server-rust use appwrite::Client; -use appwrite::services::Databases; +use appwrite::services::TablesDB; #[tokio::main] async fn main() -> Result<(), Box<dyn std::error::Error>> { @@ -829,9 +434,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { client.set_project("<PROJECT_ID>"); client.set_bearer("Bearer <ACCESS_TOKEN>"); // The same access token - let databases = Databases::new(&client); + let tables_db = TablesDB::new(&client); - let result = databases.list(None, None, None).await?; + let result = tables_db.list_tables("<DATABASE_ID>", None, None, None).await?; println!("{:?}", result.total); Ok(()) @@ -850,7 +455,14 @@ A call outside the granted scopes or projects fails with a `401` error of type ` ![Appwrite provider settings with quick setup filling credentials from an organization app](/images/docs/partners/apps/quick-start-provider-setup.avif) {% /only_light %} -If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth provider. In your project, open **Auth** and then **Social providers**, select **Appwrite**, and use **Quick setup** to create or pick an organization app; Appwrite registers the callback URI and fills the client ID and secret for you. Then sign users in with the same call you would use for GitHub or Google. +If your product itself runs on an Appwrite project, you do not need to handle the flow by hand. Appwrite Auth ships an **Appwrite** OAuth2 provider. + +To enable it: + +- In your project, open **Auth**, then **Social providers**, and select **Appwrite**. +- Use **Quick setup** to create or pick an organization app. Appwrite registers the callback URI and fills in the client ID and secret. + +Then sign users in with the same call you would use for GitHub or Google: {% multicode %} ```client-web @@ -865,7 +477,8 @@ const account = new Account(client); account.createOAuth2Session({ provider: OAuthProvider.Appwrite, success: 'https://example.com/success', - failure: 'https://example.com/failure' + failure: 'https://example.com/failure', + scopes: ['project:tables.read'] }); ``` @@ -881,6 +494,7 @@ Account account = Account(client); await account.createOAuth2Session( provider: OAuthProvider.appwrite, + scopes: ['project:tables.read'], ); ``` @@ -895,7 +509,8 @@ let client = Client() let account = Account(client) try await account.createOAuth2Session( - provider: .appwrite + provider: .appwrite, + scopes: ["project:tables.read"] ) ``` @@ -913,6 +528,7 @@ val account = Account(client) account.createOAuth2Session( activity = activity, provider = OAuthProvider.APPWRITE, + scopes = listOf("project:tables.read"), ) ``` @@ -928,12 +544,17 @@ const account = new Account(client); account.createOAuth2Token({ provider: OAuthProvider.Appwrite, success: '<YOUR_DEEP_LINK>', - failure: '<YOUR_DEEP_LINK>' + failure: '<YOUR_DEEP_LINK>', + scopes: ['project:tables.read'] }); ``` {% /multicode %} -The provider requests the identity scopes, signs the user into your project, and stores the issued tokens on the user's [identity](/docs/products/auth/identities). Use this when you want "Sign in with Appwrite" as a login method; use the manual flow above when your app needs scoped access to the user's projects. +The provider always requests the identity scopes. The `scopes` parameter adds project scopes on top, and the consent screen lets the user select which projects they apply to. + +After sign-in, the issued tokens live on the user's [identity](/docs/products/auth/identities). Your backend reads them from there to call the granted projects. + +Use this path when your product runs on Appwrite. Use the manual flow above when you want to handle the tokens yourself. # Next steps {% #next-steps %} diff --git a/src/routes/docs/partners/apps/registration/+page.markdoc b/src/routes/docs/partners/apps/registration/+page.markdoc index 6959be06a4..526e0d7faf 100644 --- a/src/routes/docs/partners/apps/registration/+page.markdoc +++ b/src/routes/docs/partners/apps/registration/+page.markdoc @@ -1,16 +1,11 @@ --- layout: article title: Registration -description: Register your app for Sign in with Appwrite through the Console or the Apps API. +description: Register your app for Sign in with Appwrite through the Console. back: /docs/partners/apps --- -Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Appwrite gives you two ways to register: the Console for people, the Apps API for code. - -| Method | Best for | Credentials | -| --- | --- | --- | -| [Console](#console) | Products with a marketplace listing: a logo, legal pages, managed secrets | Client ID and secrets you manage | -| [Apps API](#apps-api) | The same apps, managed from code | Client ID and secrets you manage | +Your app appears on the consent screen as a registered client: a name, a logo, and a set of credentials tied to redirect URIs. Registration happens in the Console, in your organization's Marketplace tab. # Client types {% #client-types %} @@ -32,7 +27,18 @@ Choose confidential whenever a server takes part in the flow. Public exists for Register through the Console when your app is a product: the same flow that creates the client also builds its marketplace listing. In your organization, open the **Marketplace** tab and click **Add app**. Give the app a name, a slug, a category, and a description. The slug becomes the app's client ID, and the app starts as a draft that only your organization sees. -The app's pages hold everything else, split across **General**, **OAuth client**, **OAuth secrets**, **Legal**, **Support**, and **Publish**. +Once created, the app opens on its settings pages. Each page below is one of them, and every page has an **Update** button that saves that page's fields. + +## General {% #console-general %} + +{% only_dark %} +![General page with the app name, tagline, description, and category fields](/images/docs/partners/apps/dark/registration-general.avif) +{% /only_dark %} +{% only_light %} +![General page with the app name, tagline, description, and category fields](/images/docs/partners/apps/registration-general.avif) +{% /only_light %} + +The **General** page holds the app's identity: its name, a one-line tagline, a longer description, and a category. The name appears on the consent screen; all four appear on the marketplace listing. This page also shows the app ID and the control to delete the app. ## OAuth client {% #console-oauth-client %} @@ -54,613 +60,43 @@ The **OAuth client** page sets the protocol details: the [client type](#client-t ![OAuth secrets page listing an active secret with its hint](/images/docs/partners/apps/registration-secrets.avif) {% /only_light %} -The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. See [Secrets](#secrets) for the rotation workflow. - -## Publish {% #console-publish %} - -**Legal** and **Support** hold the privacy policy, terms of service, data deletion, and contact details that the consent screen links. When the listing is complete, the **Publish** page makes the app visible in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. - -# Apps API {% #apps-api %} - -Everything the Console does, the `apps` service does from code. Authenticate with your Appwrite account's session; the apps you create belong to you, or to a team you pass in `teamId`. - -{% multicode %} -```server-nodejs -import { Client, Apps, ID } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -}); -``` - -```server-deno -import { Client, Apps, ID } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const app = await apps.create({ - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -}); -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps -from appwrite.id import ID - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -app = apps.create( - app_id = ID.unique(), - name = 'Horizon', - redirect_uris = ['https://horizon.example.com/oauth/callback'], - description = 'Deployment dashboard for your Appwrite projects.', - tagline = 'Ship from one place', - logo_uri = 'https://horizon.example.com/logo.png', - client_uri = 'https://horizon.example.com', - privacy_policy_url = 'https://horizon.example.com/privacy', - terms_url = 'https://horizon.example.com/terms', - type = 'confidential' -) -``` - -```server-php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; -use Appwrite\ID; - -$client = (new Client()) - ->setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$app = $apps->create( - appId: ID::unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential' -); -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -app = apps.create( - app_id: ID.unique(), - name: 'Horizon', - redirect_uris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logo_uri: 'https://horizon.example.com/logo.png', - client_uri: 'https://horizon.example.com', - privacy_policy_url: 'https://horizon.example.com/privacy', - terms_url: 'https://horizon.example.com/terms', - type: 'confidential' -) -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -App app = await apps.create( - appId: ID.unique(), - name: 'Horizon', - redirectUris: ['https://horizon.example.com/oauth/callback'], - description: 'Deployment dashboard for your Appwrite projects.', - tagline: 'Ship from one place', - logoUri: 'https://horizon.example.com/logo.png', - clientUri: 'https://horizon.example.com', - privacyPolicyUrl: 'https://horizon.example.com/privacy', - termsUrl: 'https://horizon.example.com/terms', - type: 'confidential', -); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.ID -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val app = apps.create( - appId = ID.unique(), - name = "Horizon", - redirectUris = listOf("https://horizon.example.com/oauth/callback"), - description = "Deployment dashboard for your Appwrite projects.", - tagline = "Ship from one place", - logoUri = "https://horizon.example.com/logo.png", - clientUri = "https://horizon.example.com", - privacyPolicyUrl = "https://horizon.example.com/privacy", - termsUrl = "https://horizon.example.com/terms", - type = "confidential" -) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.ID; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.create( - ID.unique(), // appId - "Horizon", // name - List.of("https://horizon.example.com/oauth/callback"), // redirectUris - "Deployment dashboard for your Appwrite projects.", // description - "https://horizon.example.com", // clientUri - "https://horizon.example.com/logo.png", // logoUri - "https://horizon.example.com/privacy", // privacyPolicyUrl - "https://horizon.example.com/terms", // termsUrl - null, // contacts - "Ship from one place", // tagline - null, // tags - null, // images - null, // supportUrl - null, // dataDeletionUrl - null, // postLogoutRedirectUris - null, // enabled - "confidential", // type - null, // deviceFlow - null, // teamId - new CoroutineCallback<>((app, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(app); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let app = try await apps.create( - appId: ID.unique(), - name: "Horizon", - redirectUris: ["https://horizon.example.com/oauth/callback"], - description: "Deployment dashboard for your Appwrite projects.", - tagline: "Ship from one place", - logoUri: "https://horizon.example.com/logo.png", - clientUri: "https://horizon.example.com", - privacyPolicyUrl: "https://horizon.example.com/privacy", - termsUrl: "https://horizon.example.com/terms", - type: "confidential" -) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -App app = await apps.Create( - appId: ID.Unique(), - name: "Horizon", - redirectUris: new List<string> { "https://horizon.example.com/oauth/callback" }, - description: "Deployment dashboard for your Appwrite projects.", - tagline: "Ship from one place", - logoUri: "https://horizon.example.com/logo.png", - clientUri: "https://horizon.example.com", - privacyPolicyUrl: "https://horizon.example.com/privacy", - termsUrl: "https://horizon.example.com/terms", - type: "confidential" -); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" - "github.com/appwrite/sdk-for-go/id" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - app, err := service.Create( - id.Unique(), - "Horizon", - []string{"https://horizon.example.com/oauth/callback"}, - apps.WithCreateDescription("Deployment dashboard for your Appwrite projects."), - apps.WithCreateTagline("Ship from one place"), - apps.WithCreateLogoUri("https://horizon.example.com/logo.png"), - apps.WithCreateClientUri("https://horizon.example.com"), - apps.WithCreatePrivacyPolicyUrl("https://horizon.example.com/privacy"), - apps.WithCreateTermsUrl("https://horizon.example.com/terms"), - apps.WithCreateType("confidential"), - ) - if err != nil { - panic(err) - } - - fmt.Println(app) -} -``` - -```server-rust -use appwrite::Client; -use appwrite::id::ID; -use appwrite::services::Apps; - -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session - - let apps = Apps::new(&client); - - let app = apps.create( - &ID::unique(), - "Horizon", - vec!["https://horizon.example.com/oauth/callback"], - Some("Deployment dashboard for your Appwrite projects."), - Some("https://horizon.example.com"), - Some("https://horizon.example.com/logo.png"), - Some("https://horizon.example.com/privacy"), - Some("https://horizon.example.com/terms"), - None, - Some("Ship from one place"), - None, - None, - None, - None, - None, - None, - Some("confidential"), - None, - None, - ).await?; - - println!("{}", app.id); - - Ok(()) -} -``` -{% /multicode %} +The **OAuth secrets** page issues client secrets for confidential apps. Each secret's value appears once, at creation; store it in your deployment environment before closing the dialog. The list keeps only a hint of each secret, its creation date, and when it was last used. -The consent screen shows the name, logo, and tagline on the authorization card, and links the privacy policy and terms of service in its footer. `description`, `tags`, `images`, `supportUrl`, `dataDeletionUrl`, and `contacts` complete the listing where apps are browsed. +An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. The last-used timestamp tells you when the old secret is safe to delete. -Redirect URIs match exactly, with one exception: public clients may register loopback URIs (`http://127.0.0.1`, `http://localhost`), which match on any port. Redirect URIs must use HTTPS, a loopback address, or a private-use scheme such as `com.example.app:/callback` for native apps. +## Legal {% #console-legal %} -# Secrets {% #secrets %} - -Confidential clients authenticate with a secret. Create one after registering: - -{% multicode %} -```server-nodejs -import { Client, Apps } from 'node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const secret = await apps.createSecret({ - appId: '<APP_ID>' -}); - -console.log(secret.secret); // Shown only once -``` - -```server-deno -import { Client, Apps } from 'npm:node-appwrite'; - -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -const apps = new Apps(client); - -const secret = await apps.createSecret({ - appId: '<APP_ID>' -}); - -console.log(secret.secret); // Shown only once -``` - -```server-python -from appwrite.client import Client -from appwrite.services.apps import Apps - -client = Client() -client.set_endpoint('https://cloud.appwrite.io/v1') -client.set_project('console') -client.set_session('') # Your Appwrite account session - -apps = Apps(client) - -secret = apps.create_secret( - app_id = '<APP_ID>' -) - -print(secret.secret) # Shown only once -``` - -```server-php -<?php - -use Appwrite\Client; -use Appwrite\Services\Apps; - -$client = (new Client()) - ->setEndpoint('https://cloud.appwrite.io/v1') - ->setProject('console') - ->setSession(''); // Your Appwrite account session - -$apps = new Apps($client); - -$secret = $apps->createSecret( - appId: '<APP_ID>' -); - -echo $secret['secret']; // Shown only once -``` - -```server-ruby -require 'appwrite' - -include Appwrite - -client = Client.new - .set_endpoint('https://cloud.appwrite.io/v1') - .set_project('console') - .set_session('') # Your Appwrite account session - -apps = Apps.new(client) - -secret = apps.create_secret( - app_id: '<APP_ID>' -) - -puts secret.secret # Shown only once -``` - -```server-dart -import 'package:dart_appwrite/dart_appwrite.dart'; - -Client client = Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setSession(''); // Your Appwrite account session - -Apps apps = Apps(client); - -AppSecretPlaintext secret = await apps.createSecret( - appId: '<APP_ID>', -); -``` - -```server-kotlin -import io.appwrite.Client -import io.appwrite.services.Apps - -val client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -val apps = Apps(client) - -val secret = apps.createSecret( - appId = "<APP_ID>" -) -``` - -```server-java -import io.appwrite.Client; -import io.appwrite.coroutines.CoroutineCallback; -import io.appwrite.services.Apps; - -Client client = new Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -apps.createSecret( - "<APP_ID>", // appId - new CoroutineCallback<>((secret, error) -> { - if (error != null) { - error.printStackTrace(); - return; - } - - System.out.println(secret); - }) -); -``` - -```server-swift -import Appwrite - -let client = Client() - .setEndpoint("https://cloud.appwrite.io/v1") - .setProject("console") - .setSession("") // Your Appwrite account session - -let apps = Apps(client) - -let secret = try await apps.createSecret( - appId: "<APP_ID>" -) -``` - -```server-dotnet -using Appwrite; -using Appwrite.Models; -using Appwrite.Services; - -Client client = new Client() - .SetEndPoint("https://cloud.appwrite.io/v1") - .SetProject("console") - .SetSession(""); // Your Appwrite account session - -Apps apps = new Apps(client); - -AppSecretPlaintext secret = await apps.CreateSecret( - appId: "<APP_ID>" -); -``` - -```server-go -package main - -import ( - "fmt" - - "github.com/appwrite/sdk-for-go/apps" - "github.com/appwrite/sdk-for-go/client" -) - -func main() { - c := client.New( - client.WithEndpoint("https://cloud.appwrite.io/v1"), - client.WithProject("console"), - client.WithSession(""), // Your Appwrite account session - ) - - service := apps.New(c) - - secret, err := service.CreateSecret("<APP_ID>") - if err != nil { - panic(err) - } - - fmt.Println(secret) -} -``` +{% only_dark %} +![Legal page with privacy policy, terms of service, and data deletion URL fields](/images/docs/partners/apps/dark/registration-legal.avif) +{% /only_dark %} +{% only_light %} +![Legal page with privacy policy, terms of service, and data deletion URL fields](/images/docs/partners/apps/registration-legal.avif) +{% /only_light %} -```server-rust -use appwrite::Client; -use appwrite::services::Apps; +The **Legal** page holds the privacy policy, terms of service, and data deletion URLs. The consent screen links these so users can read them before they approve your app. -#[tokio::main] -async fn main() -> Result<(), Box<dyn std::error::Error>> { - let client = Client::new(); - client.set_endpoint("https://cloud.appwrite.io/v1"); - client.set_project("console"); - client.set_session(""); // Your Appwrite account session +## Support {% #console-support %} - let apps = Apps::new(&client); +{% only_dark %} +![Support page with a support URL and contact emails field](/images/docs/partners/apps/dark/registration-support.avif) +{% /only_dark %} +{% only_light %} +![Support page with a support URL and contact emails field](/images/docs/partners/apps/registration-support.avif) +{% /only_light %} - let secret = apps.create_secret("<APP_ID>").await?; - println!("{}", secret.secret); // Shown only once +The **Support** page holds a support URL and contact emails, so users have somewhere to turn when they need help with your app. - Ok(()) -} -``` -{% /multicode %} +## Publish {% #console-publish %} -An app holds several active secrets at once, so rotation needs no downtime: create a new secret, deploy it, then delete the old one. Each stored secret keeps a `hint` (its last characters), who created it, and when it was last used, which tells you when the old secret is safe to delete. +{% only_dark %} +![Publish page with the published toggle and the branding card](/images/docs/partners/apps/dark/registration-publish.avif) +{% /only_dark %} +{% only_light %} +![Publish page with the published toggle and the branding card](/images/docs/partners/apps/registration-publish.avif) +{% /only_light %} -Two more operations matter over an app's life. `updateTeam` moves ownership to a team, so registration does not depend on one person's account. `deleteTokens` is the kill switch: it invalidates every token the app has been issued, for every user. +The **Publish** page carries the branding shown on the consent screen, a homepage URL, a logo, and optional listing images, along with the **Published** toggle. Turning it on lists the app in the marketplace catalog for every organization. Publishing changes discovery, not authorization: users consent to your app the same way whether it is a draft or published. # Labels {% #labels %} -Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so they cannot be self-granted. Contact your partner manager to have your app labeled. +Labels such as `official` and `partner` mark apps the platform vouches for, and consent screens surface them as trust signals. Labels are assigned by Appwrite, not by the app itself, so there is no field for them in the Console. Contact your partner manager to have your app labeled. diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc index 10e027603c..add2aafbe2 100644 --- a/src/routes/docs/partners/apps/scopes/+page.markdoc +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -5,7 +5,14 @@ description: The Sign in with Appwrite scope catalog, and how grants target the back: /docs/partners/apps --- -A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. +{% only_dark %} +![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/dark/diagram-scopes.avif) +{% /only_dark %} +{% only_light %} +![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/diagram-scopes.avif) +{% /only_light %} + +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:tables.read` by itself says what, and the user's project selection on the consent screen says where. Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. @@ -57,27 +64,94 @@ Organization scopes carry the `organization:` prefix and cover what a user's org | Projects | `organization:projects.read`, `organization:projects.write` | | Domains | `organization:domains.read`, `organization:domains.write` | | Keys | `organization:organization.keys.read`, `organization:organization.keys.write` | -| Dev keys | `organization:devKeys.read`, `organization:devKeys.write` | `organization:all` grants the full set. `organization:projects.write` is the scope that creates projects, which lets an app provision on a user's behalf. # Targeting projects and organizations {% #targeting %} -Scopes alone never grant access to a resource. The authorization request also carries `authorization_details` ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)), a JSON array that names the projects and organizations the grant covers: +Scopes say what your app can do. Targets say where. Every grant carries both. + +## The user picks the targets {% #targets-picked %} + +When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant. This is the default, and it needs nothing extra from your app. + +## Pre-selecting a target {% #targets-preselected %} + +When your app already knows which project it wants, name it in the authorization request with the `authorization_details` parameter ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)). The consent screen then shows that project for confirmation instead of an open picker. + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=<REDIRECT_URI> + &response_type=code + &scope=openid project:tables.read + &authorization_details=[{"type":"project","identifiers":["<PROJECT_ID>"]}] +``` + +Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. Use this for flows like connecting one specific project to your app. + +## Reading what was granted {% #targets-granted %} + +Either way, the token response's `authorization_details` field holds the projects the user ended up granting. + +To check a token you already hold, introspect it with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=<ACCESS_TOKEN>" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +token: <ACCESS_TOKEN> +``` +{% /multicode %} + +The response returns the granted scopes and targets: ```json -[ - { "type": "project", "identifiers": ["*"] }, - { "type": "organization", "identifiers": ["<ORGANIZATION_ID>"] } -] +{ + "active": true, + "scope": "openid project:tables.read", + "client_id": "<CLIENT_ID>", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "token_use": "access_token" +} +``` + +To turn the targets into concrete projects, list them with the token itself: + +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/projects \ + -H "Authorization: Bearer <ACCESS_TOKEN>" +``` + +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/projects +Authorization: Bearer <ACCESS_TOKEN> ``` +{% /multicode %} -Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. The wildcard `*` asks for all of them, which the consent screen turns into a picker where the user chooses. Your app receives the final selection in the token response's `authorization_details` field and can read the granted projects at any time by listing them, as shown in the [quick start](/docs/partners/apps/quick-start#list-projects). +Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. -A granted scope applies only inside the granted targets. A token with `project:databases.read` reads databases in the projects the user selected and fails everywhere else with a `401` error of type `general_unauthorized_scope`. There is one hard exclusion: an authorization detail can never name the `console` project itself as a target. +A scope only works inside its granted targets. A token with `project:tables.read` reads tables in the selected projects and returns `401 general_unauthorized_scope` everywhere else. # When requests fail {% #failures %} -Requesting a scope outside the catalog fails before consent: the authorization endpoint redirects back with `error=invalid_scope`. Malformed or unsupported `authorization_details` fail the same way with `error=invalid_authorization_details`. Validate both against the discovery document, which also publishes `authorization_details_types_supported`. +Two mistakes fail before the user ever sees a consent screen. The authorization endpoint redirects straight back to your app with an error: + +- A scope outside the catalog returns `error=invalid_scope`. +- Malformed or unsupported `authorization_details` return `error=invalid_authorization_details`. + +Both catalogs are published in the discovery document, under `scopes_supported` and `authorization_details_types_supported`, so your app can validate requests before sending them. The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc index c6b7bd90a0..6e40bf9a4a 100644 --- a/src/routes/docs/partners/apps/tokens/+page.markdoc +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -5,7 +5,43 @@ description: Use, refresh, and revoke the tokens Appwrite issues to your app thr back: /docs/partners/apps --- -A successful token exchange returns three tokens with different jobs. The access token calls APIs, the refresh token replaces expired access tokens, and the ID token proves who signed in. +{% only_dark %} +![Your app exchanges the code for tokens, calls granted projects, renews with the refresh token, and revokes when done](/images/docs/partners/apps/dark/diagram-tokens.avif) +{% /only_dark %} +{% only_light %} +![Your app exchanges the code for tokens, calls granted projects, renews with the refresh token, and revokes when done](/images/docs/partners/apps/diagram-tokens.avif) +{% /only_light %} + +Your app holds three tokens with different jobs: + +- The **access token** calls APIs. +- The **refresh token** replaces expired access tokens. +- The **ID token** proves who signed in. + +All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, authenticated with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "grant_type=authorization_code" \ + -d "code=<CODE>" \ + -d "redirect_uri=<REDIRECT_URI>" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +grant_type: authorization_code +code: <CODE> +redirect_uri: <REDIRECT_URI> +``` +{% /multicode %} + +The response carries all three tokens, along with what the user granted: ```json { @@ -13,7 +49,7 @@ A successful token exchange returns three tokens with different jobs. The access "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:databases.read", + "scope": "openid profile email project:tables.read", "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } @@ -21,22 +57,53 @@ A successful token exchange returns three tokens with different jobs. The access # Access tokens {% #access-tokens %} -The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: `sub` is the user, `client_id` your app, `scope` the granted scopes, and `authorization_details` the granted targets, along with the standard `iss`, `aud`, `exp`, `iat`, `jti`, and `auth_time`. +The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: + +- `sub`: the user who signed in. +- `client_id`: your app. +- `scope`: the granted scopes. +- `authorization_details`: the granted projects and organizations. +- The standard JWT claims: + - `iss`: who issued the token, always `https://cloud.appwrite.io/v1/oauth2/console`. + - `aud`: who the token is for, the Appwrite API. + - `exp`: when the token expires, as a Unix timestamp. + - `iat`: when the token was issued. + - `jti`: a unique ID for this token. + - `auth_time`: when the user last authenticated. + +Pass it as a bearer token in the `Authorization` header. The userinfo endpoint is the simplest call to try it on: -Pass it as a bearer token. The Server SDKs send it through `setBearer`, with the `Bearer ` scheme included in the value: +{% multicode %} +```curl +curl https://cloud.appwrite.io/v1/oauth2/console/userinfo \ + -H "Authorization: Bearer <ACCESS_TOKEN>" +``` + +```hurl +GET https://cloud.appwrite.io/v1/oauth2/console/userinfo +Authorization: Bearer <ACCESS_TOKEN> +``` +{% /multicode %} -```server-nodejs -import { Client, Oauth2 } from 'node-appwrite'; +The response is the signed-in user: -const client = new Client() - .setEndpoint('https://cloud.appwrite.io/v1') - .setProject('console') - .setBearer('Bearer <ACCESS_TOKEN>'); +```json +{ + "sub": "6a150ace003bc4c2919e", + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true +} ``` -One token works everywhere the grant reaches. Appwrite validates it across regions, so your app calls each granted project at its own `endpoint` with the same token, and the console endpoints for [listing projects and organizations](/docs/partners/apps/quick-start#list-projects) with that token too. +The same token works in two places: + +- The [listing endpoints](/docs/partners/apps/scopes#targets-granted), to see which projects and organizations the user granted. +- Every granted project's API, whatever region the project lives in. -Default lifetimes depend on the client type: 8 hours for confidential clients, 1 hour for public ones. +Your app never handles regions itself. Take each project's `endpoint` from the listing, call it, and send the same token. + +Access tokens last 8 hours for confidential clients and 1 hour for public ones. # Refresh tokens {% #refresh-tokens %} @@ -61,15 +128,52 @@ refresh_token: <REFRESH_TOKEN> ``` {% /multicode %} -Refresh tokens rotate: every exchange returns a new refresh token and invalidates the old one. Persist the new token atomically before you discard the old response. +The response is a fresh pair, in the same shape as the original exchange: + +```json +{ + "access_token": "eyJ0eXAiOiJhdCtqd3QiLCJhbGciOiJSUzI1NiJ9...", + "token_type": "Bearer", + "expires_in": 28800, + "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", + "scope": "openid profile email project:tables.read", + "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." +} +``` + +Refresh tokens are single-use. Each exchange invalidates the token you sent and returns a new one, so store the new token as soon as the response arrives. + +This is deliberate. A refresh token that gets used twice looks like theft, and Appwrite responds by killing the entire token family. The user has to authorize your app again. The most common way to trip this by accident is a crash between refreshing and saving, after which your app retries with the token it already spent. -Rotation is also a tripwire. If an old refresh token is presented again, Appwrite treats it as theft and deletes the whole token family: the current access token and the newest refresh token stop working, and the user must authorize your app again. A refresh loop that retries a stale token after a crash triggers this, which is why atomic persistence matters. Refresh tokens default to 365 days for confidential clients and 30 days for public ones, treat them like passwords, and store them encrypted. +Refresh tokens last 365 days for confidential clients and 30 days for public ones. Treat them like passwords and store them encrypted. # ID tokens {% #id-tokens %} -The ID token is an OpenID Connect JWT issued when the grant includes `openid`. It carries identity claims scoped to what was granted: `name` with `profile`, `email` and `email_verified` with `email`, `phone_number` and `phone_number_verified` with `phone`. +The ID token is an OpenID Connect JWT, issued when the grant includes `openid`. It answers one question: who signed in. Decoded, it looks like this: + +```json +{ + "iss": "https://cloud.appwrite.io/v1/oauth2/console", + "sub": "6a150ace003bc4c2919e", + "aud": "horizon", + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true, + "updated_at": 1784707579, + "auth_time": 1784617272, + "iat": 1784711196, + "exp": 1784739996, + "at_hash": "ro6WSzsVqgrWqQy4m7_DGA" +} +``` + +The granted scopes decide which of these fields the token carries: + +- `profile` adds `name` and `updated_at`. +- `email` adds `email` and `email_verified`. +- `phone` adds `phone_number` and `phone_number_verified`. -Use it to establish who signed in, never to call APIs. Its audience is your `client_id`, not Appwrite's API, and resource servers reject it because its type is not `at+jwt`. For a live view of the same claims, call the userinfo endpoint with the access token. +Never use the ID token to call APIs; it only tells your app who signed in, and Appwrite rejects it as a bearer token. To fetch fresh values for the same fields, call the userinfo endpoint with the access token. # Validating tokens {% #validation %} @@ -79,7 +183,44 @@ If your app runs its own API and receives Appwrite access tokens from clients, v https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json ``` -Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. When you need revocation awareness that offline validation cannot give, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials; it returns `"active": false` for anything expired, revoked, or rotated away. +Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. + +Offline validation cannot see revocation. For the authoritative answer, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ + -u "<CLIENT_ID>:<CLIENT_SECRET>" \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "token=<ACCESS_TOKEN>" +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/introspect +[BasicAuth] +<CLIENT_ID>: <CLIENT_SECRET> +[Form] +token: <ACCESS_TOKEN> +``` +{% /multicode %} + +An active token comes back with everything it holds: + +```json +{ + "active": true, + "scope": "openid profile email project:tables.read", + "client_id": "horizon", + "token_type": "Bearer", + "sub": "6a150ace003bc4c2919e", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784737416, + "iat": 1784708616, + "token_use": "access_token" +} +``` + +Anything expired, revoked, or rotated away returns only `{ "active": false }`. # Revocation {% #revocation %} @@ -102,6 +243,6 @@ token: <REFRESH_TOKEN> ``` {% /multicode %} -Revoking either token of a pair invalidates both. The endpoint returns an empty `200` whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. +The response is an empty `200`, whether or not the token existed, as [RFC 7009](https://datatracker.ietf.org/doc/html/rfc7009) requires. Revoking either token of a pair invalidates both. Revocation also arrives from outside your app. Users revoke from their account applications page, and reuse detection tears tokens down on its own. Treat a `401` with a previously working token as the signal to re-authorize, not to retry. diff --git a/static/images/docs/partners/apps/dark/diagram-consent.avif b/static/images/docs/partners/apps/dark/diagram-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..a96625756d8d58b9d9bab6dffb0ae6770ef585f2 GIT binary patch literal 16447 zcmYMbV~{3H%q~2(ZSL5%ZQHhO+dJN|ZQHhX%zJDb-#+j8-gDB`edS7}tMeySsqQoo z5D=cZtCypZyOlZ6Ke4kiXZlaKvoiXR|Ftu7HTuu~Plzo|ZJqy*3Iyb6W#an3`u`$= zqm`@O{}AARD~Xk@gUNqPR1gUG-}q17|9=D$5c|hSt*q?-=g|MLqW>diApd#&^EGm3 zWcp84w{moL{D+)YjwTNO5YEV*NhFBuf85ZlTpZ2*a{>Ya|2IJv{w+w3R-RV>SwNwn zp#A}dm80GN#{Vw}&>#>{ARqxbJ5wW96d)KFE^CXgf<X`*cp~Oze+emCAfjL(MIhII zJN+iOjZ``t-kFB`AY+nk2ox?~sa0H>O=2NLel~PjXALSKuZMsAoH3Rb*;J*&VE6Q| zgJzX-mwg*ofbc6!v`V56z%F-?2$PrnQ9*_D6^6b1Rj_nY>nqM?;YMsPfd%Ytx*`nI zWc)Cvh5(e(zxH_lUHVxIm9lQK8cy7qq0u8k!0Xa|$_pf$KB;C@U12iLy~%Tpl*RR3 zR5-(g220JnTp>U0>r^A=@^a3mW(C5lt5H|0{Hc#oYTH@lR`9m%>R2%%&SD<M(<DUy zU=JwMtdYUnB#}AAj!VUo`H@BOB1k$oW?ni_<_)54(tA2@c>k+Wf+#E6m0EKx7!L0H z+w>%q0iq|5LM#AFUsfx`X4nl#I{Rnn5aTG91Os2{J%K=%4S2u3O`hWFL%xusk~3*K z7c2s*`^ZG?kmgks>kC&C5KnmX_{BuJRI`!}!jF5pV&Erl`59KV-O=Y#H8w>TB>8Z4 z7#>+`bmvJ<Seo}x3o4cwUSeabFXraH2~#rixW@esR2Q3nOeW})MsrDW^L~UrJJzi& zyjb*3Lq`g|r06CTY%-5yPH5rNP_~DZr>HR#q>Jh<JuS8ab^8vwOh!T@wt?WQN<Otq zqsyyKlaP|x@tYuj_D4ZF!c+s4(6wx=wU6S(4_jQ^8KdJt4fq2oM}Mpm8k*jW;xE$( zaBCqV_<bp9Kmn_cZ*L~Oferhu8lmUtwXzxU8gaL0BUZHyB<Da!#3Yt_OswI8Sw8!^ z_nkB2Z1oAr$}r7SLD4=tCRaCe=}~s4Ht_+2DI}oCf(?7ys|@vTTM>6whW8+2&q5$| z)BHo(Ce$of?nwxBu{IxaAl%d*y|(yZEOBaow@z~`lw9|OnNpV!h_&+dcyzYta0?G@ z!&MHsvHwJ-!OGXE<&h19I7{1<wm!tUg|#3;kL;CH2s9%KAZe7HwqTb}2-<(?8ey$& zj&-FV4Mn6RfI;AwIb=+@siKSt*}QORkbTeMHA$MRowQL*%BBZR83Xj>DK;mKNIsH; zapyCK4e?P;UAlHAE4t3~Wpjva*Y7d95Ko;^fdeayAWbJuiDm3CYI~U}|B5J!a0XI` z?|MAcV^^F%-EiP)g5#2!{3%sR8a<ZAbYc7NWXu)L-myKZY>6**AfeCGc-UdS8zt%# zydG;rxixb(NZ{l$ymo&IDAsne(iJ+3Zv!?B1Ic&*>+?qUf}_?H_=tlB6K>PTH*BLw z9R#!tw@uVYM>S7q+LL5XS0KZ&H-s0y3P#`4_AQDq8BK<T;s!8s{%bXIb|_?kvktqm z@ErfNC0bm@`v43O+%+7+L`CI6PKUE~dC3QYelC9+J$xPqS{2G|Mk@;q)XbC#vZVON z*PFPzG&G0|eUydaaxUby^~6&P_&?W?jR#MtXN&GJ(+vVV!1J-qX`OuZq@aRCx9%<> zu4tH+rf<us2?$DF!Dm1#SK`an=W*Gw-JUDBl~2kG^2IFcvFJ9>6Dn)1`t)=})npu0 zSFo~Vm~}yBJ#kC>D~IG`{1{|`EogUWR;lE^cUuP)w|<shVk3{9yX7w`cZeJ=#+Qkv zd%S~fzeoFbCeMY>ToRK6tG#?_y(Ex)i<y^T<c}aUf|yxt74OeUGGHYJ3l~e35{A(Y z^%Q<z?+uf9=J1+750xFPZ$6!`RbfmNw&q;o8e6Y}?}bN##Rd0mTAj;<32a!}py%!y zdtX*jjvGj4I1g0`VrbH`R18r-3WjKLeHg3ehFxb%qS1@%wz;V%Z!e?OI91xW<I$Gv zM}m4`>8fmuV}1;Hq=41<8-Kh26IkW~d<7tIu7|QOtydurN37aa!L{^5wij7n-MI9r zaX0L3Lc&Fq<A}l!cjc_;1u)E^7$;aJ)0g^l=6?SoRRRTH7I?Kma_+Y)MD2?kdWaJ{ za6>`RY!Uw8ZWwXDe`soTZ(}c*CshJIi(vdULtZ4gRCxPrYPiwpX-zLoY{nkaj5vtD zn}AA_d3268BRh@+Bzv&Buso9kNwT3t3AoTI*c<=ygnmKk3qKzv8616gzlclKA5JDN zBuQ31v?{K0{{5Z~cGlQc9vx{z#rOx|Z9tF_affW3v_g1SWjbx*jYOJi!u5C_97D~r zLgY{F?DAkckN4Jy0!Y=@XtNg$Z@m<ABgR#6Z9eyqo?g$C7h8D7PV(hhzpLG8)D?5e z)D8+==HS@h(<V1S<BX0LP61_2#*D>!>_Ay+pL->-VCU8}Y=kk9Pw9x%YT&6$z3kcZ zYA*@NP|@dQX+T=L0-2TFN5gVDva#<b?YD0NIHTdaoWO!Rj_-{XRIEh=0*2KQ*mm11 zk$k;tWBrBe8Nu=gs`-WsTLrKU$^rkoc)m`*_h2{Bi4D?PBG{nTKt2LpNw8G|qd+x# z8*Jj{-@p33%Ad4Zh~(vdVl64vah%+Z8~GJUfBJua(6n^z2(K$+*4hz%nEfrnd<oP( z5n2o~&WkIc^B3(9Ce-Q9<^5X87dkboqhJG-L0b3WLR<nD!M~8T{<1+eXIAqP={UZo z$kJvXN7->l<FosUF7Frx)Zl@}oLORQB`B@B1?sm7VP7iXq8xEMPj#7|f-p`iy9YJ) z`!yW}VV~p65=Y5%R-TA2d&@&(_e&qppXG#4`n3(3I<y?7uX<0E2_2p!lX_6`*3i#( zVf=CEKzJg2MIXiL2fDF6pCAhP@;Go6dPSqiV>j&bTxzglh|-I;;l;T2g(>})t_k2{ z-l{4AtBv7@JY%<bv(sU@skFU2O~jGced&JOu^nYx&R`dy3QXe^=_Xoiu!aEY(l>#q z$(p>E{EHg5^1o=SoKsY4?c||CVH2bpcly%tQp4k2Wqb9o|F7&|5kkiT!sx2sn+&V% z;Yahgz-O05aeqjhn!18`RruH;ClBW5;&LarQ&qsiJ<g1V9NR(5RIpkFB?n4gHu;b) zd;Ew1EvI{92XL`x*fhf>wI0TeUTmT)6ucAE0;l=`quVOJU2|N?)h@GBjG`S7O0&Xa zi|bT|y`-nFVen*KcEAF^dvG)<fbo|~=&g4(-GVW(HmHVGD`}bY0}E9C5fCN23V&Ry zkT6wYde=WQ+_Cx$9hH^~1FvJTP}$^7`Pp$EkT~rrtg$nlZlH=FZR}{aFU8evwNhsD z4AHisP;>NWPS}b6O6=|Mw2ueqqadtJ&!wm<G-*OVI!*y+e9GC;+6`?MzfPJDragwD z_HxeBG;}nvP>VOi+K{k|;?Yu0JSTsmMEa{}=NAU*Q_~m8;eVTXO$IcFW>lY3pjBFV zHLDZplK&!d_%0aJE_$Ac`>i13*HWr`XB@J)0#)ykz)6l_hFhQ7vlQ+7Y3{d0R4E`f z-M{h1ha@z(hztaQ<~iiI288ljou5(G(Kks}su!v-I_`l&AhX@cS}C%~6-b_X;y}e& zUDeT{haXT$G}ot|H4I5*Z@iC3=0K?IXoH>|%9S+y!9uP;I@*OHIzoGDGk(89)JWuv znu61YM7UQ&u6t_ymAne8Nnzj?%TbS%yrHTMJ8IM2*<_1{4Y5d&2r&*Z{?eTM*UFk- z^vBB?GIX_s=-6y!1tTg{%nimg3UHRz-n5A+^Oj#mnivGi%oh`j9uwv2eu`b$#0lr| zI68a2z8nX^x0@%QQ-ij`@PSV0Nv)-@<ddHQ)`db7U=sNigSgQV52A$UW%xmvMM7ph z^iz+^^aFHh5+B)6+3BSoi2JekO`<jcJ<SibA*AyxDS@NK&c;4SQdzsCBy9W!spl9~ zUrBCuf?}>#24$Iifv&8hfXriZ@JS%)wdPB-`l-j-_7^x_Y=%Hm+Y&=M)&m41L(5Nz zqZ31Q#k%d*zLCVvHtGIlSMO{vALcvd89u3<jPr^w{~a~S?#iGy&6xJVMB1WfV~pf= zrlU{MK2*A8;LD)EFVOb8&B)cyM}HdZDu07tkPM>-Lu1#Hx=hh-U>kGFETKv1AmPef zlp$>Bw^RvS-(p9r{_OFS-*oICj*=){jT3c%=y>nm)e?_~GHQY#H3pSEr%aDdS3SB) zPZdcYrJFf^TD15K8Tsooh#!frLiTsoo|?5+fs25#EK|K>w251YF|`_dzk>Vq`87|_ zC7KIfV_M!QK+4haXp;Q)qM4g*SXIK^ZS(gZX-j|%+<_MJr{<cnrASh4PC&P8w{9RS z{9hXaQq$tOiHf5)Tx~~?>AkHDSUfW?BY|~zk0JEj164xquE*vI7Wc44+;=|MRyggS zPaPYP<9N_BVbIHT+8IxdQ4vZ003&33*Fwrhpj5$~7Lc^sbIR3WK}H0wV!8<01QSg@ z;S7b+7~4vpQyjMq8<Y|NGJ0L;>w!yRv$1y#EF4UWPeE0xbU17m8%EMInNq7wjpEFm zNvT1%olwwy;$u`!vQ_;QSfniWZzKb=AFiS?)q(792^(@k??A?II>1-t0O=kf<y`hE z#gpr=-4dC3+Mnj2iL??0S(p>T8`jZZ1&eVdIZfPo7(`Ep?`n{mJ9$a8q`opsPn>G% zUI73Bd}Z%F<!{#4ONz>1$9&WJ%i*5Hl<3Kw-#Jwo0tsi!3T=W0-$F^L1f!*R>Mt%Z zLCFW$=(s*$e;3J#XyT~NtuPS0O5-hkVa?p+X~|{NZIuQvqoY^~{mrV%2>oD7Bhw;J zazEc1#>7-Ckn8n~Kbv*xZ9CA{jYEU4dy8Ig63h7?jRpufq_&hzrl4u}%k=ZZ2q7#; zE!du19a|YJEu~?!YwC9M`rJDFj~`H~beR$$3d76(0;x*NBM6HgYH$BZ7?UJ!SYH|G zC;_TRVFg=DqVR-se7Q>fi?dxWaEh~D{AB3fO;PxCW30eL)zA&-mB;|<<M@Ky2kr`) zyle|Ba6I$V^N6KR3(gURkL^`9$E1%)Egfed^n+^0B2Ug<|4#jeoPr!luwzwQ)9HOM z%eCXtPugaT+KROZy+Dgb5LGT(IvHSrq`+P5Y}{v~rk^S7YNBpfV32mBT_&m}a;Wr; zS0A3Nhf6rec{+l4nUh_@1iFaola~N3rAxJO_DPP#%H|GS086c2Pu`m=SNjt)>(s@P zSF9-q)qfp1>nM*A%`WD)7U>$GUo2kiDH(Y4T`*D%Xu86|j+q(77m+l|F9LAoixtzv zIltL|@^*r5jPy(zj3r-k;`>~DHA(=bp=s(>*|PdUXNUWyvOq}2lrd{ljJ7By$dq*! zmHaWnxbv&q!8k`437UJ&j<5&D@M?9tz~#oOg_f(5G<L$GXU;2|wGSod2UP~E5XNyM zn=<%(vy+-=qS5RBq5Sp5aU6+_+&f4+%2RZm)XmxKN8}W<Za)m2VqiZ7`?J3Xm9c51 z>KOmK&=iRk&=d&Drg_W1<n31+7W7c$ax44dif52sZoS>>`XRT$oFf@lki)oup@(_L zEenQq?LB*E-FKjiEM1WHeN0v%y5M4?TG1Cho#o-4mjxU?CLQj)gq+zF5D3_jF<6lY z=gwb@nNcF-bT#smjZbYl9k}*Brka;ocX>MGl@*}aPw=S}^pp4I%vrS!8Hfm01yj7L zXA+EV-a(dFbDGH2`ip^fKw;`cy_^MkDogU-6Q+RW^g((EpAijfB#?#?;WVUO=5e-N zI}wZ6t@A^VX|wZq<+A7~OifT%%M4~k*FY(2-uyd$$+q0vz(|m27ED>!6UR_b3Xem_ zF^lkp7*Wtc=G!WMY)=kSO{T3_Ek8mWRzdE_MOsV%SzUl8lNDhVQ6p(nP`Swz``aLb zgv9|<HN^PCJ}k{=J9B6RtC*{~-KJAte`C`f!8bv6!YB#1H|-0J$egF)=4ADwc0s2t z+mxvHpmzx1nE`}SPu~{1yCPa!=sdMfY^V`>$o)H*ynCv&2-aEw&mJ6KAq$%A)XL+c zLjnC&1#9VMbuy<vDz5hLFKVsgO24FJ1jkp1qb-{&B+-h4*PnKBe+g#_76ySNQ0H@k z1Oa5e<)5har_(^tcM5?jLujIh>%~bI)aQOtygz*xi6S<uQhiQE%smckFBDsQXqJ`1 zVrNiTV!%LOINVU(+Zmf)HrUV<?=kQS_=)qBwfqj6q!^CgqqdUJ?OqIq@Go{(r%X^B z@V-@^SN*DA(?Fjr1k1->Uc6L_Zn4c{5vwu)mFD126_p0Nup*w99Ig0R({wcHJZJu3 zl(G|g-bFOYPwtAWl^$O8KN@+L4jsL9UHV>N*hci9<Q+M0NWa`RdqGJI5|C61x{{%3 zoO7qwOf^2mj1oXF+6T5UUl_KTpB;e0>g7AjXcl$P6(E(n6h)9gc)PkGBh?WHqk;0# z;_f8}x&96-tnX<4IYE9L#a*i5{uz#XacS0|y-ed>5-k!IxE_|b7l=4QZoxGPQbJ?p z-Sk~0m4gv6f<fhm3uu!d`TAUMjqk8b&S6!U*?Gy(&f3WRx|{F8u9-Mfo^JNs5w*k$ znhX#pe}+!6DL<3FD7)ZfF1hE+3+F;FfjE|%$+{z}z{D;DIIUf~ooLnm7L=g*1^;fh zo|Fv-FXvt&o~%Y%%sbQkz`m3fpkQ*qPnrRg_ed7gzB;8EQ3`QA%aG6cxiDjkO#7=g zB`qf_jc%1Zpu=$-KKDoik0M<SgWJ!!rHZl~G^sbK(s@kAc~epMu3kReD(1@?n*{6F z$J{V^?ASO%je=4W@^a}6k9#G#o=A9lNCh63H%j$K(4iu>`|Y&lfTDC^I)W~<=TUH) zaf>O7dLIq@EUI+Z*H(A~R>0==*_|U6R8Jk!{#QJ|YjmK!SWGSCGDsK|tO1VEJry*W zaM>)kP^k<q?HTg_E!jV~!Z71+kXIR%T)P3f3ZIY54{qymjV^ysr^%Ej>V}z`3nPbo zmUNYarGp{P;{6cZr-YJJCx7B*7Gw4SWJ}={p9tgY)t%&es=iG>2Nf@m>qJ;Ou(w&d zAaNrX4@i^6g^T0xBQ!?r)D#$#?<n9_36wlj<m5RzThBj8le@WnFVm(yF9G;sNVXB5 z1+Ji}k90P1$os#@euhTjR*ylTcqIItqoQv&ASlG@>asL3a<4G3Lkx)7!?D7DEp8k` zY-g}yABAEc<Z{vL+@|)vGJVnE{NX&yW^o6`+gxK<rTiAiWVtC%!cR^Vyx3tElzL03 z8-m>H>C_l2`vtC1*aqd-CGL}PKZ}L*+a20Tqq72^A)Ng_o7t1sTI_|~%vNd|n-vCy zCoQdvWui_`^}cv`KA86y5dDJBNe#u>LVlip)ovCrO+KTREI{NVAyLyVMV1O~oEi7Z zL@L}j+;O`*Q1F#S>kWF{=@$B>BFC+D1OT(Yy+w4C{TtF!VNsrg5HxnsvqJ+Eh*En9 znYbkaf3TW@{72}Dzy;{56QFwj9w}9vZQBD<$g9{ufvZ<=M+nx=p4GgCqs;XCd1fBf z<-qf{uq5a%s%aQ0CTT3ssl%nHo=ahk(>tL}tgVFqOE_4h2iMUHqC^)+A{v%XI2v|+ z^LJ0#-YRf1$~)%umKB69SyW=N!p>!+u3thSSJ&H#fRC=dg|dpIdXlPDXafPIB@nAI zspO7qDKucdAsiF*#qf;jyRbf|w$KG3W*6zNUS9~Rf0+xg?V%rS;5R@Kk^(<VlryU_ z>sVec6tSNvg;790ebaW=O_<z)8K~Nur;HRmE4IYM?As4m-6r55I-{X#((iqdw=`mM zQ<LUCU+>FSdZJrz2CkF*#{^?-Fxv=;h>hloDBdH3SNt`)T81wyCJU9}C<U!}CD6Pi zrL0@5YSZfmz>$iv#Iv}7kH%Mw#QQsLpr>YdwalqR=v+0>xeJYy^lh_SRTqr<nBuTr zFt0L6@_{P{&{w*_+2Vj{1UX;dVEt?Tev|PC#mKK|0a0B$<~SB0$Us<LjIV!#0}8#i zdA}Y+ciA(zg{E(>@UQ`H)%0yqLU4Nv<cI6@GimlzL@0=FPUu!GG>kFoB{h?>0^k08 zIfc;s5MCJ`I43oUUmjLa<DoQy`EZ(F_Tctrdt49gCb8PDo@u6e*KnUlke)Z|5(-)X zRQ&xlwBjL&I4J}Go`nW9o=VjDR{QDKXE$H72s)bLS(9q;VUfsXFbYsu^Iy5s|AmC1 z{cf>HvRdN#t6hUbJR^b0o~tZScI>CFA#UhvKLweFCJ8)F9dETzlliRdw8bBEj5*3A z_N~q^1x6kqbre?l7<{yji_QvbJ(o;tgdRz;u#UQ(jE303mwwt~Y0xT3uiaM)4E@qX z_LtpjK0h!=NgnZaIGwAtR_zFU6>>-i&Z<Br@n|1sePlUiaUY(?)g)-QjT`sE$;IX4 zuvBwZn_NWCdyz?Yj8stq574Kdo5&2-xy|FC@*3A?8{3(#lm5lu|7{@sz=R!Lt^LW1 z113DnOWVmvd@TjKN|}i)r0r$$t1|QCyDrM2&UG+`N6v&6viLUfq%}0V+5^9DeXlkM zBLl#{2x*BNjja2DLGua#r4Vd4VPikE?@)DWv>K4K@7HgE;_EF`E<d!MtBL=VdKq*A zhMw=hJO)wGLnlBo@c)eCb6b^mJ>;j>8@AR#2SGk0gV9VHDKj*oAsZnA?24<(H%Cf) zH5NSeF?>b#j~seXFd6G{mk~)_5UGK@9;1>a%%x)MwKbU^kFx5BjzWL_6{Ws07N!D_ zw#C=3NXOfJc?AmR?gs1{g!helhjhikGJbTKNhM;YX3<*o?u+hYdyI`v7k7Ctx(H{V zfyd6Y-kgj^wqX0S;d6zz!H!4-d+@PQYRH9qizU_?GuRkVv)~Who6+oW!KvQ7#zgdi z2$|^Rn_R(nI3mboHZJ-c?-s8JecU~z-EI6t_rJf>9w4u?ed*~=F|6mT)x@RIp6Rwg zn)6#?ogoq|>3!W*Vb`T?*>Rzh%<MGApC~t@ar)IS<pgmU)l2O0-B$M=D0(jY3EPO} zhuGsj65<dZxT%AvaynFE8sj}B6;B47kj!iMGWDKXDDj1s?TfSYWF66)eA5j-$sDlc z`UDgvtakP2C;Gs@T9sS8Jx^=^gVz;)u2mH5N`Aqwgi8zJjKb8+XG6cN<tc=_2IsN< z@R>r;XLLpO9oWO_Uy^L;iTYGNxBX3VrGp|x5MCH8pSOdH-5=3|)@Fzsx*7BA6R3T| zn_elR`PLkfcnhB|_;R8bW`xE;NFo<igXk)4Hz8?c8#R1J#ft!IU+tBy4QB&U#y>8> zlwK8-wy5egiIhqE@s+JxW$RXtKx2&nYg0H$7R3YOIPGhOi#75SYNWewbk~6RiMg0U z4gCT)LReYL1%$270G%1;0@n-xyTrQ_GWI9OTVdG@sok`#$U&7zIsgdx*m%L!gyG%q zDH-h>k$q9&X}R7_K^(;;?jz6u=N)wBwwBDtZPb|(qOJ30-<j3uhIvuSXkR;7<oG}= zfyNLuneBbHPcNlP_{_!XN?_{qAIrn<rz$L&-ls7ug-kT|(h+*sv;J(xlByDS;h7VY z8uEm;-zj{Sl$7*e8b>72&f;4z5%SW@-r~iVA$sB2a<=NE3ig!1M~JZv8KxU7m)dX5 z0=!^C?`mbRMMNV<8wy<bH{du``%8$cl1j={7h|kdG{=oE@;_ZbM8jWnTJB8}T`Krd zT5heBg(C#(M1=>2e%bvh%Q4Lrj6!ZvG*kA91v%+#g<H8Py$NuxNYr#NTbXa?i_7F% z2HA<_>}R%hIwn>O(}(0RbRQLR>n9mYqSdWYi04>4j1wgb`bK9~Qdqk@Tm1wf6Ry^( zhi~apmCdJ6cV|ra99<5)@g<HHfCI31$5{G-x%<Z0B}bNOOzB)+pB5d-YwD{55&=_X zWzL^G-Z4Rnd@}A}Y@{{%QHHE?frMS#rGnJl)#g;hAZMCo!Fdu#Wax~OknHSL8NZO) zdLP=_#JO_zqF9qHeLJCN;1oD9oS~Sq5XPuZM=DNHL#Lu-W>+;31_D2XIF@VUkR7M@ ziB$3M<_&w_uC$?zvJ4%HOL(+k7D5fF;YPt{f8w#o6fJ}(AZT#?bXpRQ#3z+rX!I4| zNj0FFa3-}Bfn8z|C+|Rp`r4%C*nNwQI^x6+iJiiV(0QbayGErKB8fhAuow+6ME8}P zt)@9Y8JaW5uoCjuJ>RvjQ{iHt0oLAdwzU)+)M}<;IfY!wRQ7g2m-HaDkkGw!<o(i= zZk=PxRqVs-=-J+}?es!9sM_ZI_GFzl+Jk*u(JH62-KuMtpB9`?hG~Qo$~m3WE~OA} zV^taSN9>n{h=1CI#2EDKIWmSBuK>v(yYpCU79u@&DD(z5xJ_X15GYWCKmbeC;knz( zA#D=-afh!1jn|CHoAl__$x|bbr9(;^7y_DqOhqy7kP=C|rfc}{{hW$IiU4@>)l0oh zXE@q>3uVE<#*#91nmHO~etJKId?;gQu~lT12~k%sQL3k^la73GBm5d<*n50unhX1~ z@h%2X^;MLi)K?<y!kA-Y(h=pfUV?;lfimcM0S#tk>DNPq1y9!BrZlVQKkYGDrz7l_ z+A&<bhAbUQQtwe2inQu{=yCl7p}ip1`utZD(jewDhaap->b4DEWqv_O7xZw>FmE%q zzP=G<a>~u4u)G7^!wkS%Ktd=^!MlRQDx)P#U3DAb=cJB)v?q7hqc>bK8(crN7jfwG zPYBQN*v9S%o@eTf6YfTzVI~5q>ZWmjGa_Axd1Su{yeA+t$QM=yAjvRczCzjcu@)3m z`b>USiUIb)kSS1zSV&4YhqLqy6oD@3PdaIHD7P6aJR@gQHmsQKlfUdjCFbfaXyX&0 zB#$9|LHWu_L{ouri%Kh@gR1aVrlRN>_|jq8EZG;hT`xj&6lQrN&$yDBSI7+lr%L~z zAiYwW;Itm0Mrn>$XOVc?A&E|Aw;`>dw3PR;bZ|&H+~m894nyGY3b7e5?2jNN>;ruk z81!*@Wq55%q)k2xlP@q+_avE7;6{*aM4iI2jnJ;I?{@wy%q#EfMEF3wXgS|6U+h+D z#a`Ou5*xldGWkO&6dQ<pfP6A(47oIZYy9yf>fBjEq$=`*#RjXCib-e8p|A8m>%99> zmU)Ui^m8xAvJO3qazulmj>Z6Wqp3p<MLoy^S>WY|YB2N9K^0_fLYjd#zi4sXG^E8{ z?YzF=)B5`SduUXA`8$)<>C8zdZvg<mR&UKKS=HtW)M85R-?rft>CG@V4zdwiLFe{- zCl*lDZAADt(E2FaY2b)3h>%yN&Xf0Nj_)}-amYhY&N5KChlYY2LEE8d@AizAJ|3$5 znWWJOt3>y=5sGRl_81S?7|nA99%)Fak6F!`4*O9&w5K{@y#w$)Q$hYMy^^mcjg-LW z*j+Xqrn;A9FjI!DSEOsy(=-hj*+Zpn&Nr%~B~R_!%MY6x<Aw?@PCz;A!EdVs)AFb= z!OFmk0W-^rte-A)tsmmck5?o3g(>5}YVCkJfvcG5de~k<{<RalP+_j2qbRJJEL~_m z@nXwI$SBPXyev%*)1_bWFvcdf-a6?zdE;i7XN6cI4WUT^*x@Gr1mA9=ZgXXi2~D65 z81XAw)7KtaNdbpB!)erZR+_?A%UCQ(w7H4L7R!Hfecx>scR3`hzNEdE5+4o*IEZ90 zLcP{_CJUsvW$Jh_xTeVrQ8~l8N7GvWU9Ie5VrUrZD>F}TNM$2Q>@`&}Z7wzW5~2wK zX*BI9QUH5`f)9asq8hcPuWzV{o^y(+6O22OFr52aM^u^;S5fwh%YZQyKN`hAlp{zd zwariznGKw<*LEs2B|;FsZsG;kKz%0C){zFa$@q&NZE;^R4`7gD#oeA}S2izg|B5cf zRN*+x7FveFHseg@6&TLdO;)g!7C>QVIxAl}<D#3pJOZEK<(&e6AL*h5iT&g-%qt0) zbX{<GBX@RnBAC}NNjeJ(!|oi^qcPy2t$)$M=uSkzFrmC6e{knY_3Zg6-4-2Kc|BoV znHN>>p}gcIOklYsL#eFtvR$k03>JeIWx5kurn!g@1kDDg6$x&i5~~t+9Pli=MAoM_ zYBI<onx&FuYtR-b^=62=>iCIEnZR}bDuI`UktjS4P!f+PjZB@BkEZ*j$r0~7ZZeQ= z-+o@}KKSCoepD&fzYToobb^EkaJ`k!e-D*3G84<%@!?=I)zqS9Qgfp0TKV_zPPLD1 zS1*ifKudFnS+UNG_wQPHm==o;F?;p8KUQ1Yk>RrCI$;<?o2%)%T~9cx|Eckg^da`k zKG1xtHXmCuXZ=EG%DviO6k@YA9yOF#Qdfwp33zbJ6WUb~bX7juEUl#hrHwkyWJWIR zj*WWW+<tJ)ji;<t=1}Quq7J2&pOQHrn8AB()%~_Z93)8lavn=F?4ce<xe5^mzJVjw zQu!Q*h%r_oB#L@7mgh0QPaA@}xoIJ-zVI5G$anV$aHkZy#c)U8dZA;s)Zf{p0#)OY z#X_4&p*U(cBKt~5X5p&*yw2Q)=z4x6d8CdR2(MQAkc=q=R}R}JEq`>|hYiST3z&)r zQ^NNLtxCXTqEUz0-1Rdx)pEhFZOspwu#f$0E>hhbX2+of;ohJu)(^PM)poS|Z9BW0 zRv?sZ|Lp9dLC&)k?^sk?NNneH(e{xVr3hQq8|cv8k$6lnfcTT}9=wJ_pxq<?jkfC` zpnz1~TRH^-#~D?VGw4jqNMEP&w5Va5Z9QT9;(We-&EJspQtvrOp<NhG_3nxTTDyPn zcH-}H^vw=E+;YnfBEoZq4bA?1?r7yuW76^`ED$*lxC*>=Ip2CD_cX?|&iII)iS1_h zaJ%C~GI&)wGP9_d;;SR)VlkTWxjl$L4N~Ink=Kt7r#K0%LDk2&tkiyYv(*oJKBmw` zHmBQ=i7_|h@T81LmgFU*(C1(0*#GGYYsBo#9WnWPJ(TBDa_Ugv18aR4wMTWfpT}aV z^9uZRE{c`r6NN*e-t08x1E$qj!mvb)cdiCXxsF3aZu>1FzILJkF%`09&!-Frxd25L zhHLAngB*+AcNfGuaZdr*Ta}z(Z$g<&fbUtmqdRJ!wvA%syZ9bJv3?8^YZ>-cm*2?< z@~aMk^^b^3oiK_aFWu6wpji0@vCPvscVKX%nw1MkY~x}z5^g~x`}^qFqOkX>wUL$s zZS&LXU1Mjj0yH8pM~n!fSE_u=>;^{V<4vj0Kc#g~I%yYQy!Dj%)>Rf1HSkR6sC5{F zHN@1uA?!emeD|rXtN{lW%%aDISAZzm%if;ZY7vJ_LfWFu=xj(Dxwj5Ouk33f3Vv#9 z2&8Jkw-!Z~x8=J&x-GV7g>qA{{Wk>$1@%gY*(Sb<%v@(oM@-*$*#Pw!8qC1*jMe{A zwoYg?dr;0nsz<}Vn6$4!JgZvaPc1uq6bvD9tz^+6V)7=72NYw3xTPbdMZrsxapTCR zVCRfI=2H+06a=iSw~Kn7mk5z^LKoD7`*BkQP-Y`Z*%$tZGSw5vahakqn;>o#K^-FD zL8(jWhA_*>$oT?X#4+d`P8{fh8e!|Q9+oH)8>7$=Ujmr1f~%?@MQ0?44Dr><SI?gx zRd{-~QonIAn{*GrP!^=<+%AN?Nj*qJ*oLN0@NQ#++4gKT*-yrC*7R_wv~NR$rgfyV zLK}l2f!RVI{JD*R*C|`wb~jw9+cW29o@dGfkYVLcgVArb7TbZMtYXf@x|D9^Bqg&~ zZMnkSe6vUI&pASEWeO_h{!xe{AoIR;+Y_6rD-$HX%?U7!&jv12Cxi<UmN|W1P!;*I zWOQP%29Q)!5t4304A6S~juf0w4It){iZs!&oqLxLUyskjPPR<{E2}%*4l4a6S63^D zS*C+*+8WI42JCIzxL@%{zon%OzS+$n0>G0tbDpanlS&V8?P{*x!*uJmSN6V{E8nxz zp7AzEni3`gXq(}?WFCXP+b(zAT^_H)FE>z%NSN>A^D~@8F=Z!(w>8;JVQojezXA9J ze*?4<$P8%DoZ6CXq?oC|<sUhlhPbP${Z@G@gfU?`$SteV7JB#HGs!X0HFW9A!n}zF zK?1htjB3*$H59RtE!G9W^;95>k<_hQ`Y#|Jd#TuGXq7^G|H8LQ$_P6QJvT*(YVi=R z9m(ex1H(IWT##r_GtB(D@GYer5U?ykB;mx5l^sIbs<YUH>$xG|Lm*bkH0}>nB$D97 zR$T&oL@|0=7I;cU39W2v9-q6y(rhVDpPz}!;tNxNXT@d|cH^iIt*QJWe@^Y9avS%* zUE5fNuN|P!pgfYw`X+wb%o~=mnA~M;*k<JRV7oWucW(yY$wiP1x#1)OnpEWC-KQco zozGS=D5I{(n2=ZRY|=<L9nZLKDh=aj=iVZ}5|`w}g`p?1e)X|(JA;9RSsaX;ZB73T z=hO4T1z8*TGt(o+TpTs=VZpPGD0E9k%>5D^!{<z~Lt?U;31TOTL?4%C7Wa#;2S^Cs z60z7XZLRbnw6j^$z&3DX;8Wv3hFP7}<=!`zMqVaMxaIK>RKDN~f1&Afco<Cd7t6|3 zM@IeY_<0~jEGeqBO~aE#uU)I}PhKvWB1}D>mKmm+wMPzXdY_f9Qo5vFn)<T(F{+lw zZkg!GT$>%~$mx!bxX*7=^MrG}Sce!<QNt0StS2pnTr>B^BJ`|Fe#Q1U!655A9{{0m z#YNElezs{}C2;eli!`<F4v(V!zv3Sk`0H1?fYc~(k+&sP2aI`7>_Hb}gip_XO?GHv zP7K!SdqbAmZzmqR?$$2E?pX$Tykw4Z+}}{9xQF6<eY1Wv<Kvh=-+2-ZculE61;UCH zY)72&MNiLX<=>%h<Jnn=uL^7U$)JR0@-_)_e{?ELRIzD3ejv}ho@`15y3LxYc<x(^ zVHUdh!&t#>VyGJ!j@~saw{;ik(uT6FdM4r^A(NaXZLhvZB00C7gu|pden)7fbUFOh zl(H;d-|8r~-b7S1jC=H%6i+;~PQ_iMqf|Yk;V1~6C7}mgAik~StFBdLa?Nd}qsW16 zBZZOxrImUs(aF?EY3MTb?<Z;2WvmU1kf52dk|x`OC2+jZA+>k}k@{kv&<r)(z09%Z zlIzRGw0Tkp;hZ%us)js*nd#Y(*gNco8KcLkxxfaPkURgeKfb{C-4uVGG8rp49t-Yj z5pyH7kC>as#~0^RpJ=cgO{)uI5yngB%Y78-&W4WWI~Ue?QYEK+ack<iDw}?mQ;<7J ziA_?Rn;hZOSt1GToB4@G<sDZSGw-#ef$L(|AXBqug&)FzZ(s^=tdX~oQ@r8tRQ8OU z#yllxzr01E8W>_=%CVg*6AU_6UH0F4sXiwc$_#XS+ThizS*&sS5!_n&rg}C#ikk+V z`SrDkYXt@sf$`E0pzevEFfdW;jqp`!nGVg*RyoE{CEG?YJmz^-i&$Lpxq|E~y;aLD z=JjcoCedGyfcmp8rBshFHBn`?Dw{tz<Lp|~6!3XL{d11B8v5ckyRI(|zppeySz>L# zKT5g9XQ*6Sfn)nkXFGVd9eD{A?SdSyiJOrK_}6otgFIw~RMHCRU((oSkO_FZ_1&o) zaq9>@9q+LR557{s@#b9WY>0$GLLr4UJwcf~RoS94RUkE(*F$+4ko$dRvP97nD6}8u z6xl$7NNpL5VZA>LzO^hG&l-;5n|@b0%jPG~bzAnr_@*pyI!gQPHL!^q-)SOGs-EKT zor$3u)555xE3k`4)blHj71iG%)5f)RIc{5BIoV3+5xi!0_Hm2K$X=`imr;vIL)Vrb z#F-*gBiR=Q;HRj&ValQfIg*7b_<(lMd7!XB#C()cWGJs1#n<pwWFKuCfZ&b<QTGVQ zE{ntd1uctV2^1s1u)&vH=tDw#9@FMu*f}on{`<35S5>vfn2s?|tY?ImfzDaY3ql0n zYuirAb<e{9nMS1s>5ME>Y&XNCzr2Ane+7InKlOWBFN{afw*ZN<ZqP7oB@T0|)|ox# z(#))o_terPbx{GF$yOP+S*NYN_lt%88WsCg^OjOZ;@e8mWFCR@GVBp$BpElLL_|bv zcRvlmPb?m`aJNBeZeHl&;%P+=N05vy@Pa}kU?G7e_grxnWJ#}tN1LGkrf`v9A*ibd zW6mut4Cm+LwOQ0n{u_W*ODisoME+hauDCX{i38(S+5}4BsWRy_l|XA*X?X-mNZf}U z59h-`F3>mVF1gogtG)2<T)$*VTJx$#ez!%kDB0EVX}EpWCljYNZL<6DsixXMR0OT_ z7mhapXqg6+>DmpJKtNJlNay+vcP_`E<<6{20QX9K_ZGaqIhpk4??z59;4`iSMZI!u z^IJ6{1H+ZcLwhtL3R*;XS&jzBZ#O9(H%S3)23eNzs!f%})+iY-!tBm?s}|R)G~)Z_ zjxg8p0+_*$xCbQoSN3a$*N`9e#f@f>I|-J9A(Jp%(<Rtj23P*^;>m;7VQI&?)i>w; z+61>r(<q2-3k2&)$rWo973sC$D6Exy7)Q`oca0dzC8tpqDii4+M!PpG>kp_azf3uQ zKeRlZ+a#5P4ztcrc)&%w>#$BRT~kF|JNXy_*X+Fzv1L}o0G1_Mc-I1=D@`>xtbx!M zv76IDEJLbM-8j|eh2AT6NFCy5L}ZhWYu#y}zqXowKyG`(3KZq2{g^@D*|Hr4p`TIM z?gZ|l?QR;KE!<ynuzPxi8yV;h_Fsvs0VFgPMDHOYe>3T!24gqT+yOux+6&6jj#VC0 zDksm)#JeYqNDouq?mg4h7yGec<1pr4`cVVJcoHXj=oY%;;~@cod=mWyTi?=gfZksr zRUB{v)k9q#;qUpZ$qq1V?mt*!_EE<Wd-1!+rQxzmySd<6(ca@SfJZ^3`q6KW=Y{So z4_@B|XCcF8Y8)jBP8h(i2t=tz`KeKR=?ySFgpn3Pfmm;#1d8%<F4NGUk3o{!z1&EJ z{M7@AHVJuS@_cR;AYD(4i53<?Vlo<H?v65_9U5g+DfIg7<H!-A^5sFcCZv~))_U^h zw;R2FQkFtSuJ#ntDP8^fX0mq`4UdsT0VNj>jx&Rzgy;|s&;3UphOdj=x9FCNMw!;j znonum!yDz^?Xg<$zdJ&i@d(u)U?qE!GActL##CCkDD)#~tm}fP&yBB??neAsWydN? z3V3!>cQX_|EKl~3nVB4_l;9Ax1UO`LBJFg<vK_&D_Y`hl>BS!Nw2ybimS=MFL%xoM z{lM8=AoO~VB*NQZ?7=j%DL;C)NGfTzW1NvGPq07I8djC3&!_d>UVWuyZP^Tl>q?ug z)w4z{c;qZ=<~9avZoYc1TADX<nLF)|UgswvYmrQ#TmgJL%%&tmaGzaXrglBZQ_8}L z243Her;r~HfBP`Z){nU-(h~X8tK9yg5*k`iBw~YKD|9$-=~j5|1;5mn7i)17bXqhL z)aRlE#mo`?dm*?e-9>ID-wBzRxMMp6rs8~3f(S$=fOcQcp5%!7dOdX8+(PMOTmxiF zjb6q!$Gw(KUIBf4K6=Gec_TxNWSv|7`r}CMWJy83MxR$QNYjrvocP)iX8$+?Q!AY9 zRsY*WUU<AHG6a)VuR}vdlbq#Lbm@HXRJYyE1dWe%$F)w^{|UWgd0jH@>Q00>*iy}c zXn(%(xA$dU{KEa;e3Z;7xplpcKjgbhrRvM7xvp;7UQ{3!Cg)8C>33u?LefPjOWmSW z?l>)f_vnA&DdnrSp}K;|+Q<sU0KY+({Sl1zEHlJcFoHfci`;#BP*2(!CISL##z-4w zqQo4*#xW8Ken3DAlP|gh>ex-|rdl%Oo1U;Qoy4f`1>hyd_$f<l--}@mNaNl6G=3;4 z33C?Lv+&@lZ*gw-&nS8`oPON?fidK+zJK}PpfNs?)DOj}>GEId2JZyBYTFmxSo1c7 zNG1@E_qk>J*Rhi!G<5>iEm<!?LkI=IA{f9ZyDp5^H<b}sqia-sa`>*Y-x|aP2u^1r ztV)r})2`=5xAx}(@r6dHaqp*>N15dBwz-}5fUvpdkN*}PBfZFskq1LGI{cwJP`Jh$ zv2j-r_O*RU=?(zm3+=Tyvq!bh1Qc98uOy?3sK&|-V>obUNA)ohXN}OYs%-Y&l8{5c zW$-*IA?;1z&V2gG!#Z1uy;5!-e@(8RV>`}+>x+8?{3K&=#-SYGm-K4IU;F#V52D%G z^0WvA12W$X?0LK7Khv?YGlxJ}YHOX|ghx3;^0=`x9y3RyzS;!`(LC6tU4H|O#D$5$ z|86o@tTH&+7;4Vq)-okBZcTgabaiZk@au$`I^C8+vot7+ehJ-fVH(OqxjA3fP1y^X z_;diEW{6~LRwT((G@?>M*sJ2!&*E0!XPx-My{{aw(n%`vEDz4gvv!(L6QTT~Yahx6 zkM#X%o)vYDD>;pxEv(rbflG83=XbVbhxD^Dg#-hc19q5$Kl3?HAJT;H7Iy!0wRC-I z1EyuIod*e{l^&}>=E`mKfd@p(i>S24dD4>kohvi81wF(*dIWRwhgv?L#rK^HX8GcD z8NF3+OvJI8q_4~@33ZWA82??EI7m6)1N&Z$YtagIYqqxzs%LUUNYF5RH{NJFJwnY% zedZQ}1j%-{JXQD{UMfo6=5w4HkIWjOExkkC!yW0if~PUR&DT;|-v!LKo199Fxr7nC zf208gBDO2R0K@yGV7ihVnU{7I(<^m3i#lcZ``UCk4dQY4Tatfed+fYM`LvdFhg_Wy z_dTa4+3C{ilD1Ron&(1|$M>_l+Qf3eN^=V_qm+6PUp=mA<N4udP++dz{9}nyMJ^c? z@Bzwb^_W?^(jP!fD4VrCxV>rM-EE>JGE>qlw$tSxetvWf^)C^(5*H*c9oVQ|Xgerq zk>EVHzuXcih{y<evYY+X0+|6|FG^Km6qzKats>)vp>!}hSr5%U?BI}qh^N6udo|b^ z;_Zy^cGXoCGePDGw<yPw7tgiDCaY{jyhZmv4|U<NEF$<J;~J|K+~Wvbh^w?uu8NcQ zx09m~_8@^!$GBJ}4-Hs*@V^#3g&s{d&k7t?F$ZfjhaTd=Xl2>oc>F}k-dG?5V4E(v zK_Iq#@J=M#+9q?6pjqkr`7dt8ltB_En94;lXfRs2S1?NM;0zj6AUq$@>VY5}2_DfR zkGc@I-cP1eX8(PwAv=CiolA3ecHImcMie^HvknLpLO+4v=SvNb=QYt;J!XVLiW0UI z^dP}(o?pa}A{UW<(Dm$vlYhG8&>Y?+H$t0Lc|O1?$eUYd4X?OQDf2s^W|UMP<@8e# zvq5a>2nySzm*%Kyu-2}e88Lf`*bV^Ey@)`|G>~JCoRcuwXX)mjNr=qp)cif0<d9{i zS@A%l?JJfw0;l{ty)8)IX3EEM)EdSgIsSEFJ*ED3cmYkI7=+XsJ`p4oNRKgFU%?5^ zY<8boFAwKsRa@Jmec#&AGM)*TWpj4W9{lZLUoiN}I`;JrNmZ_MDa<UNslYa1FhFp8 zSTB@rhUq$ZR8@p5$9U1sYQPGCb7Qn96;`*4Qw@9@Yq9Qw-<~9~BZ$I8#>DhwGfBXz zv{3r;7#Q@bUuL9Esl;)}u+$uP@wakm!lNkbanN>*r~2(02i3&Km_*qYV4y<$<em(= z$3lXe=#Q{jNQ02#)ReP(-~r{7;?KPrBw$#+)Syo?j|fzwNVKx^)8ZpeM?3`2wi9_N zl!jyvk#H+Yh))9z`sori?&eXRsA3U`Q`xMP>fNmNWW{<FFA0F;@}<Z?)Q^)xdB78@ zvwFwcf2l-SOX2pqheD#Wa}`tPGL_29{lKs)9RC}|NmmW_wS5%{E(b5Wom-M5o1ZB3 zHZ*t>h(@95x8&>Yfri%Wk<<el17(}X-7_JW?U1OyccSg$4s-7fMruVk14+8ZW`4lO z@-(Q4yw*wq49bTuKGRT;L9_Lu87nn|`7WR0(gSiM^}$eqR95f&NU87;b)n^iRb)u| zF`eWwY5j%NYv7$u1?c1jgYGXi^fvVL9ow>819w;$X6=5p6D50f>EvC<;-*2j;H+wb zb(gya1?aj8;{|E>){;?rUeBF(GS^<OqwXbUHqxnY2%Hm&?5yVKJ5{Zd)bqXFFYto! ziaUofG{T{A4jvkfQkdd+S4grs5*IhbLtDF?D7MN(Zn^@wkt6fT8yhXjmRsXMzpz^I z&6OqVUlj96b0EqidH}y(m*T|WX(*os2t0lWyXP5|)g+17Q?moA1;N@60VTv;TkpKj ziySIfD-EH8f~O%8LCNaGAu_-er$5~i2eZ$#1am#(JLs6dNvm-1!|Hr7nGR5aJATqf z@uarx+EJU;cC*nU^dS!ciw5jQiqKxwk7!>xz~rc(z{*$(%YDpCSD{u&+2v@J6gaXT z>+u(9w^Vr>hOLWNMp#OMkgoE}keY`qT8qY6;KU5m+URUA#B*h=k%Vnc!?vx9p%`6f zTs%%7n#v%!8QJCuo|d`q*ganC21Q%!#`!icHHVFupkc-&RXZ9}oa0?2Zu&u0t5-d~ zGS>k6fg(N5bNFT@7i<>(N*>?nSq#<BGmto`UAm(;_Wjp+34xGltkfC6;FH>B52C)? zW9WSUn124<FR_47Vdq}>%w&dnuVk^Zt&{nA5H|XfXr+n;1SDjBh9c^Aq4QgeFc4oL zn#fIw8uL$^2u~&|w;+)DK4gat`wLcN@5G5CGt-umk&^8Bhj<g&<kEU=3M@u9{=tWa z1LMB6=^s^!7&peCi-uOnS;FSIk3OMk{WxYGgT7%$@|bmTqC!rVW2ql-D|=iKE4mA8 zdatl}Iuk~(na_7^{NN?lTZ3rrOgV8X^^C51)LTU<3t5Zkw=5_Tyd8?NO=Sh`zH`Cu zx7D>&U72Jr<<T+fK2X&NH#py{LGSXtxf&=67-|KW{UZThOdtp1^5NZwzew`@$?LYA z)!wEQV%aa?MzMQ-lyRp@wd@#-CzmQtBX@Q#TgO|vFvu4>rbztlf3ELop&DP_oH=Oj zmS`Boa^B${Ggi&0n(z`jA|pWW>J~_A(mp=&>92Z5yMuFJjV;jeMGJbB1jD=wz$Qpe z34yBfexKu6n0f~=(3%>0U*r2SX$Y$D<4DcyX7AaI?$(muB#U!4<XPVg^T(Lnlu#Dk z7UNr~ATG(7RO_+6$#cODjzhY^$qE=6>;D1zV;iTOVg_~oem@v@<!I?cCYt6u=}Ns; z;r)htcjFHbjZ!~?P+)19%J0gwTKlA97=wQk>jnBnm!+=m-kwV3P#98Wp#iK$gYW(0 zb3$XU@~+|{zHxAlM5(@51@owWA6yM4p(jhGP9{Lw%9h&1{Z3IxG!=L9fa*p-jLn<V y9baT2$LabGFj!%dveGo|sdk^9Y?W=R`naDO_g!*m_{)>MswutYb~GZ<{{I0j(xJBi literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/diagram-overview.avif b/static/images/docs/partners/apps/dark/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..60f201d29df0e01fab983a9b3dbd50ee64394a75 GIT binary patch literal 28423 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 V%_{Ju5ismq1k3}&WQ6uf^$1A4BK-gW literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/diagram-scopes.avif b/static/images/docs/partners/apps/dark/diagram-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..cf5737d19df069cf94b2ad2e116d1ebf624e2467 GIT binary patch literal 16430 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 bmB>FV$fP8fhl6+YLl~|6cg(`!uj>B?q|aMh literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/diagram-tokens.avif b/static/images/docs/partners/apps/dark/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..74a5e93869102a1d3b2cc38decc95982c1769bad GIT binary patch literal 29119 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-consent.avif b/static/images/docs/partners/apps/dark/quick-start-consent.avif index 154520c6f9fd89614ab88e5bd7b54de993ad2003..2dec3a85e8ce785edd5fc9a3f9a13c36953877cd 100644 GIT binary patch delta 9454 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 A761SM delta 10227 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 diff --git a/static/images/docs/partners/apps/dark/registration-general.avif b/static/images/docs/partners/apps/dark/registration-general.avif new file mode 100644 index 0000000000000000000000000000000000000000..67e3c1530e43d37e129cf438f58ee8b5297a5a95 GIT binary patch literal 25685 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�y(P5Ckvl<UlMajlRt&PVw7vjH^~aJF^V z!fG~wI``Z!nKMl5?sm-gO$jS4?<N^#qo5oMCloO)N@vu`33=I7&SG*;;!!VxK1k;t zTcIAQgg5P~7j^<*ZeNi9F!7d75O7o6<x8dA{eJ_iokz7vzGeOxmvdb#y;3Ii#>F6H z+`Dj`&!L^K2E-)Np0u=CC*^IqpeGNqF_ZS64^UwvWWCfin>P7SuO5V&zR+C0Kmn6I z6ku3CDvP&lIm)X*RQ|p^m682o_J1lahUkqp(Ff;DQabC-^$t!Mum)|C-a)mD@DLWe zHyJe}08CRUX!#~?LJ=e^c2$W5;^Yc3GNRH+0+(S9vYVwz8o+av3>;$7;oJS~V5p_B zr2!w1hyozVh|T0w%a<2nQ!GYB`__EAGh}NP$zFg&NbF~m7EU`u!B59Rxo(Q$@Emj@ zlu(p@CODu=<p~Cyo$r4ogHPgaMq0taP-TGt@`}qjc4Q0AMhqLdd3MXnig;3GzG1JF zxnZc^qZGpWXa66=!h^pc&cZdf?rl-W#hdYg_f|r6Kl^@Z6Zz@0RNvK}REm^Q7K>q9 z)7y811)gb6jd(S$=gW>dx;t;&@uY5~5O}84y$Tw1BAh;r*<h4~hOnUjw-w1!sv}+- zqcv3=a)zP7dqjp@`P>re$bU$Ee9e$F=SH6n6F4aZ;%R>7rh}LN5#04m#&t|RrND(v z?XPRb5(A3s53=lf<?9S_we6y0Xd(YAcBm0*3<OhhY+Fg_RS*W<=&_m1q}bEg-u=2c zA1nEcCvI}_MVP-@+C^Lqp=!}37fuAE;cB(p++Ns(J;XPnT!Q9Zdn6u6$W6+@yU(M( zlnKUW*2Nzq53H>@Mx(6R!#I9s_5jh*ww)nC*vo7*VBH`J10ATDR33ZjqmS&pXLKo0 zRw>fHquxyWk}}>UFUlZU3bgt>KKU(t%9u)ocVK)?*&k9nPH~&b0(u(c6l;hQb1`=@ z!WK?xLy(0w7kZEoDz$E4AIr!(H+YQ0UWD8?oc~HpnF{iV{LYm?TP3k^#(N3+%+|7+ zd>9J!pQX5V6iCs=Cg^hN@G9AR_&e_|{8fhR-9uNFDk)6S!uWPWttJNt%`<TlcO1My z|IFh&oj9r<^L?!SdyPD06jFZU?#oo(UD=T@3Qz5@jhN7TYso44JL@;V6Vxb)F6vBz zG_k*WK|QuD=)drcBzP62sab3dgOZiCz05vdOUqi9mL0SbnK0-7<KPcF9?vSMp|N(g zQ`#fA`v-jh3X}s?%##+9CL>Oa0VdNBpsD~69RZgZIaFwwV=dXnYPkD^d6ym(a<N*6 zBFLJ)5-i_c{CLZEFkQ+3LrwC!#Q3Qi8c2Vd+tS>9MO(Q5%gf!pF(jqJN+@(MiS3<J z43K<lr)Bff%$I-SUz%>rJAqxQ^iL@3PqBo9VD^+LxblUvSMWYts~uZ-d>MD|OrSRU zp2!;V7B?-N-Q=a8KRPFLV8!Xqw}ylbde$Cob!y|?|EOoOBv*nCLPtuQS3nBZAHFHn zg|BQb^M`l%FEJd0tBz<vBJUv?0zMB$m<h+>{SL=5(Nup4=hT;jz3B*18}qlLNB)c8 zwW;h|eCJao)UABZ1YgHv5}D7&N0AIV?D*>DCH#yJXXr+tDn^jw>IHgd8()BCVop#M zcC$Lkte_T*<J8^I@DE?DZR?#4`o1Uw=OK6$tun4;cG%zc1X1H57D1$TN$ejJ90b&7 zvx<r`6CLi6QbzoGO1s`uV~)RJ+S^>KIvsTZmRvO<0V3KOTxGLO>?U<Va!qPx_G56+ z1uX?O<(lh6L0L~l7*=LhS4`~Y6oN5BLfQ1LOj@ZbRyqhFl?F)rcp}{-ysZC*kN_qx z25a*$oY>O^`Mc<oEch`A1|yMTOz3}rOaE|SDsz_(h7q-c;)u+ZH4io=HPaS=9;cXc zT8V#RB8(To;QD1(n5)N#)hplta{?+4eBHc6D03t#eS=*7{8?%1Ll}Wnug1UG*FHtr zW#0oL&8UrqnBfISzU89uzEHk~DshqY*ba+*oEX#LZ-<dSO^YssM@McK4c`JO^7iNU zj;e;s=*V}_S!cKoFo?Fq%PerLUG*#ASw9BSC#_V2yGjdaj3LK8(2%BX;(^2;??*HM zq>4@)pmqK^v*CyrAs8V4?=_q5ivhIUSJ0hWr~DB%d=^ho13LE}JzEn`kwSb`>V{8F zU4ZK-YwCESi>Z1kC3!?tgSerRf~^sMfwF3GUxwN40oI1gIqj|MHj-^-Sr8Ma`M!x< zxGshP2Y&!8bLKe)uLu0$(qttDyD+^|++MVQu9c0T;Af^M+p7`QBtqsv-@M*rGkT=+ z%^B!^R;>DNS@Ca%A}%X;&&dfsu%Eds^Aql~O?1tfsAROE@s0p$`Swpyrx;><@3M+) z#NbR0az&ceha9>EJQp}&Iu6kT;#&5VM_~0BWz8K%HJAXwh&?{t<JlwSLpX4oO~Lpj z$5@##0lZGQ{##wFIvq5~fm7;-@`Q^kA)hf9u1;f&l4WzE=3bHF=KE$bqitze1&ho$ zLN%KhwIt5pG7%ctv|26@%&s-)^_RIGz{dIU&8r~4UI-@6HgzwJldQpnm~u){JE8JT zBRf6!B5tdPYBGXIP<>C07CbMGo97mqdvTXN=T_QUr&7<Jh%6LT=)ADjf<Q$85ug<= z_`ehjQ2E%*OnIe`fWCBz&J8%jj|B!V3>ZoaH5-Q~RmIb(2GASQ+X-Ze;wJbe#U4`P z5^r!cHt;Eyd~a>>rpR*r98qS|!5pC@M20|^Xm)7kw&(b0G8q;mz{J8j<s8zD|231P zVU-DcfaZO+8T1y+T(BhTAz;M(>{O*jpf7|{r8ns_ugMcj@HL8nU2+;~K3Mre7yyio zeWMd8BGIvZHhV9iszUxD>VPLn1FWAtPg~|kSSw`LW0;;|ZX=&|f6!}sW1Pdo3?T)S zc5=Dd#;#n$!4qQ6*t)qK*SitXLnWIXx<yOyz<qg7F(lWqV}>YbO}k;0m#tc=QYy0l z$p}7S)6DgCata_{#IJEe?sMMgaXBS8aGhLX#jd2WtJ~W6p+S%hQnVpU7otqJOy^ON zEn_}i#lt8ckZy`)+AnF87f(p_xHtLA;(1?7;AE<d*{{vCjTwIOqsyO3@<_Gta4Yr+ z4Ea+n@Bu-qWD6G@i~gohCHS($nV;KwslwA<rLFEALit^-la=)sLSbx@K}q}yE0&X_ zxVJeBD&zHMJNwzuUsIN{=4_F=la}2ID1Ao(A2vt-Ib)4nC=W@=F?}l)iL#W=Q3#O3 zn3=OIl~y<Aqs?eNq{Tsm(yt?QB)W1l`T)al^@W{1dp^nkyI9=aPY2fJF{x<|*e5Aw zYRJZcK?Lz)D*u#z=0IFvl__Ybc!yiAG+RWqp0(Dt@Ee_W+l{wfN=>J{l7kBK4vmU@ zn{lIWj0UkVGLm$~jWfjLMWXXUDjwQV{(Q5@XeV9bo)BSZicQqgV5hEgn*DoUJ)Uz= zxaK>wJ_<c-JPSgIj;Z5yDTAC7;Dz%BnO%v2NRMR8<w4LjeUM$*V5dX^WV?-!mIQfp zI{w46U?rq9kHK}pupB*$|5QmV2`S~!gPEEg+fOt3!p|Cu2T~_1QpvQW%m?RgTrE^y zV$aKkHH1K6(B;~Cs?O&UWAq}6FCbz(R6{2^derYF{5So^v*EuUP?>c2<5rEQjg>$H zj-nHg`nsK1(T9#wdbCua++8voIsLa7C09NU;-_k&bdOpTl3CWKCg+LPk0lC#d%`10 zVGl3G10<Cc^M2!sbI5U2*Os=%$qo3m-kq11admb_8GYA9j0``@qY?r`ygVZl?db9b zk6af$L%aVScRW?7Z$KoOm`tZtLxo79V;W;3I0FO5{S?1?A1dmMZolI7pSnis^A3l0 zLserYimAu}N=G_(P<T}(OJ5gtQdQPPT>lWDj)2Krba)Sb$d$OW|1PPG@)|Lej`U{= zh@kY!dBAORkhD3CyDKjymX9!U9r&^6bp&v4$5Uyod;jzN5Zc(M2dqDHZ{;NYTP(Cg zqi#pCmF8EJh9y)64lCit%52_A%EHbi<hR<GZ%DF(N>ZGx$C;tOsr^h*N`jP8smHsu z$gX4XDs(k8`u+z7nkf(yKNJq39HM6G^L=pOzS4`M(WWK`^aX!9L7Bz@jD9&pg_IWu zjX3>q+MALW6X?#Hf1y|&PXtiQ+W0%Gz!YaJJ-I=5Ym3s4gyP|HS?qdR;)XzckG?N= zbGX4z!jafY=Ys!0g8%;)*CQz03pIGtC5F&!5?SL5;!+e)WkOiu!Ht&}fZv$aWzlw0 zmSo*1`<hacxz>E2AV4i)f8Wy6ytraQmolC#uJ}M%1HkE&${;(a1*S*jpQ9-sRNJFg zxk9RZ;zC0BEOJ`<L>O7Q%go)JO)tQVs$an~JGGU8HWoNP`+^t^vZ0KG3sR6o;@<oJ z9F92^6XNGf<wT1yY;#5}QA`BBQ>)L(Wsxv??SD^+!s(3(;fSyn+*8ijT?hs$+nx5P z44uk{U^56zh{)bLcYX+n4K5-DO^e}Wezp)=x_Osb0))m(Ai)iMs@7Kij8kQzG;@|B zP(1J0yY8Fso@oL>3BkQjH(2kGvsJy!e3G|Y@*oJ7$YsA5n-=5Wu=S-VI`0nv5kao* zrw9!c5qM((mB7A3ZRy|q73O5vOwGtea+$D+-HF^G$4XY2@PSKOrn=d=2t__JOPU>g zobqm@<@;qhC#xT>FG0$ez?!Eb82X*oPtH8~V!mXOAb%uY8h71~Uuq(VS=()@KiPd? z%ux=;lt5GWx=3syDKN~OhG|>MR+a$EZ2UV#kK%#Xr!(Q&)SrYX-U2mpf2cu3T$T#z zXdk}-WM!X1>w`y^=n{S2qCl3Tcd4*_Rv_s*QjbwvykKzKi792(L~Disa(@>&`}$3} z09pHD`}byKxZaN%)Ya#qsy0vQ<+Iex_FmJo!1t(B&`kECAtTvN7X*vPtroj&YU}$P z)TkKwtyL-JSyAM#+rBAfi(Bu#bE8wES73Jn%Z=kShuCd2Tn9xAk?->C)nAstmcsv? z4M^-*>W{NEL~4MZz*_$AJVU|tq@yIDgdTrMwk(L^sD?zgj{-X91!8C8GBK`3>jS*4 z_9XLHL_==GV#JYRV7*xGSy%i{oY_7JceAFpEYgw~O}n5BHeg5`)W&%-sh3(wOjzqh zYA$zQ_Vxeqd~H0DLBdknNasjy`lCbNevpVhCVUHnPzT<4MWGi!>e7=UeUCB?`fgJ* z-s_X=lys$%JI>c6wJQS}?e1LG0}JP*q84{&=!sV|Ctf-t(k6T;<^kPfjilyY3=UZ& zV0gFDf6I&HTZFo1Og>uNk`hFc<CS4oo|9l9Y6Tu<JgQMo=Q@A~ld`kjm16l1AJ(Fn zp~E4fLEXAne6f8`iBYg7*P%U`#w-35R~1S?QtLgA?f)ckf)Vzey=;rdhg-s4@!I4Z zJwHKsRBAH&d@0cO;y|&YB~A$>L4CRtFn9f>7Ub)LwtO094*?dBj9hQ(jYON%TWY?s z5U3B!jgGUrfNJ;$;u#Tp#&KKnSu75ZFStmHD8cMIu25N{H+QwVSOg=Z<+OkGhXf^k zDxzpFulF`sK`c|oS}nwKXkQ5O$fZ`h^npe_8&mq<wc_k9hDcRWO6boA^z*uO8bU@X zfeDn>rq$-IWqRz^)?ZjAr1cEV`q0GynjXj47H2XpiHOSMXD6T@Zd5F5I#M`#q$h%w zu^2J)J5~p03A<NW4eYMLr-2?*sGY+_?vqdYW?44O1}FAPUY+NLtA>RPu#0t=`ilqv zCzHe6+~}C6VS;1?gXe`o#s2EBep&~zmU-QBQmm_VV@XTbGR8hu?@aAG(}eYyg3v5( zwc^*j?sDzE%0HlPV+M&s3Wr<~2F!Xf4F6lec}ZFxBRJKs1Bt6fUv4Sqo<|Y&n{9FZ z`7A=T%}^>U6477=J0z;i)sdfI*7eYXec`iS<+_tHodnYf+XmJKOq&W{{%b%s{u;<U z48U)F*DKqhg86kS;y|NYbTY0Tgs1p2*zNy$rxeAf;~DeQ8bA$OlkodDBaEMXGwQ$= zHra*ZQ^oxxi$%!Bi2{Cdr<OG49ukfydnH19;@m#})2}*^G(_G2&_B@(aLI(4`m(2f zU=(@=+FWk{CU#AKHrYV4!Xu=t$I63^z>wi+8%M=ZWmIp$ed7`&AT?6r*JEG1>^nY) zc|-6;o^7m4=pwd!%O4)E!@#-`npKgO+Yo?IAu=-?izWz1;rlb?r>Asv<t*MTQOdq} ztTMiN9wp~1FQ(-$ep2IV+6-?uviN~>8bB<sxmb+P8lE6#ySjXapzP3VNbo4mpqNx) zldqTwbXF{7BN|>3xAd&b4u1XHpZvKtLnPIGz?#is5NDRBXTqF_Fz(4FR1n;nC8iD& zU=b*!eA?p0h{RpXlmj8l=jfGmn@Tn_8kTBJKQqUpjzNe(;i%wCx2D18mC^-5MgLK} z;psIg&&(9Qoyd}N4rEAc*VLV{iAXA^zi0+wuZWhnDlA9>kl-f+GFNpB3G=#bCxMx1 zAGX<O-?)MjT7SK!$wuv0(P7{ZdvHB>nORs6Xq&-Y#Z;xs&%rXw07HwDIK2$7rJZY$ z)Ywxeo_{S8X5%)X&m{Tk7@XN=rXpvjMLXR9pRUfuA=vT-Yj?>Jo&2tUe5P#>oR1-U zquFXEk;I^Ta(QSRM+s;4bEFk=7<OL6iTv{i`ETOhf(YWjg5ivJ42c;)RZ9zp<QCns zspL5pLJbd-j0^NyY^gz|DTWYw0H^Q(h!p+RO}A}SlekCObP_VE;IKDT!Y54->Jt}w zF(@nq=mDPMOqW<0_P6PZjHz5A6cQgfU1XZ%M;E!X@p6RLMv8Dlc$4td?iE(b;%2qk z5#O)jw|8UnkiDZ{BNvtOzk9&4DJp!H6c)8Qy-lQXiG&lB)R8%Gwsz9uKouWev`#f& zr~7+4lrbQ%WbD2(DwLe4ltA1i7}f}5<qd$%bprQS<<8ai6})cQ2_6PGjT|=M0%X9x zlBX&7wz)k2b)^#%o7u%9AcLr@;RZ%G0Bmnjg$L;-p9+i;9z|R<GvhO7TM*TwvjY|u zvK^ay90E+=ubA<~I+hA3RIKZ11Yqn+cOwxQ`I~q*v)%n2szAM0oxxvw&qHl}=4`#O zl~vm1^dLa8A|p$KTK6u)rd&km{I85P+ej!q@``)cByxDPrZf6c+9sNNcMuvT@~m>c z2SM(ak4g9(0Y>ypaj%iO2*QnY#*CH^gl-#ndFHibvnKhHWT!`7hz7$SIh{}}3UZ0J z6hl<LwZcf4Iy56IZayOt-a+1We9)h{V9pJy=`c3LP21;1nhOdi8LXS#FtZk8ggfQl zw1aHkU%vQD3_(JlKvjc98ip*1l_-BrP&A@n<AO`!Oy5!q%qc1#TM5&*>5eKJW#e+< zT-_VAlnC6f&tT>>wE8iA5j3NPHSPRCIW7$|^z=P~!Y6>PKw)H}3-+!>>QU6K(4fH= zeeWP!j;U24<x>WVd^uY2rUS(6d&q1OUoXSP0ZuX~|Brr7TX)06`kIe9L9Y-H*CPCU zF1A+FN4b)ou7ln-jN@&a{vgi(b`*-ze>HRogamUFH|nUFBo8k&5lKRq_F82CY!C70 zBquH8fZ|5z#8ME%jU1I6@l1bZzCljySI=YZ!lafx;l33x@?eqU4kwb5)p<;8L_e)y zsIW$7h8gQcNkgiIlqMiZJ19A1<m1@z36_PpPLKY)c{|f*9rh&rE2Pfcq0^S_dBzsX zBw8OE<4Otdm_Q*uQc5Vvp-Re_X6G}uwLQPteJa9p4eyhJ)t=EA58q<?W3jPK8O!b> zEAM1wAkWU?<!B4+f-qxTMUp=1j810Z#rOMJdj|HE!d?CuN(#`s_q{ug*ukHB(qmQH zU_dEfl*p!6sL7G4nqoCmX8EA_9a25*(K1pm5BPUh1g=sh5S9213wdGbU5gUO$sM~U zrW7dHc^)DUEJmRTengeT>4Qz<{t`KZ9aV|`DVn*Wd}05F4XV-h;(UGWa9-DH_RMEH zVAifQQd@SH3z^~Ki570@z!B_mYcd{9x%X_J`(9Qf7%9eut^Dh5-?zRB>yhUE+5Q&$ zNHB}3hYy^Y9-=i!lpsZ=_?*)XEV@yn^V1<YK<vk~Cvp)hC7ZZKU^wT|CIEiTnAQ#- zUl{JtD6W2jV(dQ%D|NwX-KIYJLaWzrZl1=~fCP32O8Ok4(yE7BA@_o=gxUO&4Fvll zSIhdjxZqHaQ_2(P19!)o;fOGjVbKfthgC3ImG#*wccTx16+6y}5lTJ+9DR8_t=xgZ zZO*11Q|)nh2bc0zctul>jw<QjAz^?xuGtfycBLEfqdB?}a>>gV&zs#c_6n+g=(56p zgqKXkv5EB)GO};X!PaQ0;V0A3BqgRq<^V*jJ(N=EY!J{OwJHCRFluW~_+rM$DrG-r z<vi-Rj@}2QRaNUnQxg2{e^uZ)VqKffL;z1KutViqmmY-FZE(T9Kqks_w*sM{6We}k zSA*KAJ~e^7c>mu<)z6n$^N<$ji}|{bO}}VpOnD$LR~Hz<L5P|6_|dSHW-yJJQ!OA} z=KK*EmbFU2*Ih((4E<UEq4eD2d-ABE`<_`+96nnxVG9%Ood{9vNh<P$@gVp;`fWjE zFn0Fv7Jr8Wv=Cw@0$qQykp=I(&{s~#P&AHXrM*q+pgX*Ca9Dc4da(2lHI2zDUS#T| zC+_B^ib@h>8_dT?!qvjWBhrY;AzBy4PbWB9j~3Amul*xP8x79D=5rGOW7|_y#+LvZ zpov1pKfM`{j%F;_TXSRE$#fX`x%O!Y&*l9;IBJiAfk%@w!L;l_^Nhmf7!`J^X!(=6 za=O7pijOU;0}eejXtDCLP7;luyn|kk&vw8HkH{T`lX`oEuO-L^=(07*zVNP=0ss-1 z<F7|w-FR3&*s}ZDtjFSP`sVAvbp6UGt}bcYuiZ8KwV@y1(oLSx;W}~>icY}E(z0#X zjdTK|vi0Dds1}*5bkc~EM4jA&5;%tJe4BgqSC_T|$Ke4ASx+nY^h|pBuq~o;TPf;W z>EMxV-Clv~zviZzC^$pGI_lrL<SsQ1PNhW;;C3x@oU3|Fz}{|~b31X49+?oY)B`)M zP2&6`Krx~HsFo+J7vXKFI;&otHHDJmTs&aJyT#$O=~(<AJm;^kLZ&P~N|HRwn$iM* zVD}<r&)8V0pRL7W%Wp%X>V?p`3aRh#6nU;^-8%hrMa=A_JSLsav?DxFZ~H&qX?FM1 zPx2#i-E_Q2#+bc%x|kVWT(w%9%)XyLdc0fm_ufbQd*=U?j^IqDcqy=zo}Q@iiXYUf zmioe<J1n>}+U8l_N=(+95xv}`u#F2{Ls-i6ND|CiRJnU9P~j-Lbj+FRuM#|pUzo$B zZk8mFsdt$YvDS0pr^4utrkE_|b`F5$(bS<Wo-uW($ID9;p$_xp1WMnI#ek9gQe?g2 zGLb~_mENpcNfTyQUJnX!o-b^7)Nre&z+=+cic=4fGFxyNphSC@_b#hkw(E1=GuBVR z!2O<q&gdbP!WMBg9H`cp=M;mKG??c^YD|^McuC^H6L{GBJ~cWl$BRShcist8H|*7n zrf;mD*tq*t707)RRRYU$vKg&HnWEWFbWJjsV2$;$<e-z@_JI2u;^6tBD^9&LagnF) zb>ntPzTSNxOW`XZ<|ArJAW=RMr7(2|ustbcQjn%$%7$Ypj3t)6N(#O_SJ_;a0A|mp zkPV#*0}(b9TxZ+ohCvcgZ^>O4C31WxbLGgkHVgS(bid8JGJ(fu3(-q}Wbu)J&=YOR zE*%s~RpHGXpCd>;!;yGJbAs<2GWV|^{~r7N5GGsOWAB3cE^aOh%!yQxQ09@Y;C&jD zEa-{H!v#pRRt!-vMh3X@8_S{z$dVAffY-8|Q{eYC%w~x=P<!vUx7eK@(rnteHTTFI z11WpG-Z^B`PL`q-5bGVps-Fj)_1Xu<xd9C1Jfi|nyH$&QoG^S7aoDeg@<tT^P`&<u zl^mhW($f(IhijbbwCOAev`;GKHkj_R{z%(eFE=DMislo|-DJrg^$5#mx#d*OF8e{Q zdPTu#W4$SU|2Gln%ZZ*`J3xd#h`2??*&IP43R<8@(*rG<)eh^o<E<-i62W@`hCiQF zT2?cD7ovGnPW`xKeCQbcPehHWI%Pd(;(*K^12*zA@sMDVQKttn0Q||R5;1b`9+rph za_nhpFe{^id@!Dtsw3Ff`7<B<9Bl__WPI7QJrz)4xEzu8@+8TL6}OJA0jhE{+#-E- zox&%7dJb&<8kRLTEwCU!KD^De2*n*5sWHwvb1l2ec+1*Kj*rbnOqx*+=n8p($5x)u zlaggEK3xL-aq*!ofWxuax{3KWKDo>%q%h|lMK`^!Xpmad$IcYfR;J)T8(=|K_gMq0 zqag&fEDw=RYO~uCv+rS1_S}HEdHcPUM=8wB13>?xC`Bj@Y~l*X?l9v14wY7GsNe4C z&*`j~`^}Z|h?uKi1#;<kd+<DCl9x1;1)`EKM&kC0$-1V?+gh2JT59FfnUUC`I%&0& z7TC5N8&%9>dq%lXYL<(HQ})u*_!QtpnGbmEFHp41lm-plL$I~sa5u%9Lhgm!Z`yw5 z4F7%@+;SJxUE^=1Dl)dTOn*qNOrt*%6e^+<&mVAooerpkMWzM;A~YZY*2{M+fecz| zXC5A~48B6{S73KZQsB75R?zqLORE3p$`ZGqcW3>6j?jC}i!mbi`Y`WAw9UTWiI3A6 zvsxu6a?5ZwDhR<vLva-RmanQ3mf_lrr=5LubcxB01X)BDbp0FUm-*zy;O`CBJ>AVM z7R)Ao_=UF#Z#+$I<GWm&kJ*PVs#tf)^yQ;x`mBQ-wx$bF!$pxMWWX}$^NWs3M;rm* z<Uz@k`38<`#}MYC{Z}_ankX`NI)Y|;Uj+7sM(gJHFrQ~dRAR^jek5zj{dvkWgO=@F zr7$LpMy$oO`BV>X6{D=>newI6Fh*@{M|gHboqja%Ix1OTVM}iCIJ7|DSlHiLq=i>1 zowBG&T5e4h-A;2Z3&iAUKsQESmz@u(i0rA&2dS0iJnT|jgl@$}l2hQ3SkO&15jMi% zuvnv^a)jVeD59DU@VhehUuFl<?uvMzWDObi#l_G_-0b?<wk8!Q$BsDWrUuSg?N86z z%o64{FcQ-;Pfm>dpEr^x11d(pcbMT08>jya9)0Awt1}fV>1QLw{G)u@8nNQ$j1_ff z#r3i;2{DTX6AFR?UD>64zD{!w4pKFZt>I}hQh|h7!vthr<_~JJF;-5z-=Mm<2>Z&F zbOrrybP2@N4f>`4sO8lRLCtfpDvG+H+#>?jIL{Ju72*w63OW*wfhG*#;i;T4cnko7 zJF(PYDDUfXHC_;7Go*;Qc>Id%{{bkV9U@~lLnxbd2f+>6#thYnL?dU^Hz6<aoP`e| zNjtg5ScmWM$JjUUI`3M%jyTFE8{vTu{{7p6sv0>Vh8Xpu%UY@qf=xp8&Oy3dOkG?1 zXpcDeMhwS^Y4MT6?`_O=;LBVF!~-^_GFcdjb(7E=9Hgd-tiJND@`l_ZA7G4BBaJRc zD7SEpK_Te~BPHg}zSevzO6_0)Bgpb9;%bxsQkPxvKbsM3B%#eVC%yip1eW<6zScU9 zv9C6nn^<W8^}|1j<iC%e$>6%gJLH(k>^8)xm_@?y86xm18P8y5`&^j<@eOxcY6BN9 z>!M^S|4MffIYhV+lS;F_aiS7xyuz&fyI!rYtZVo7cEN(<wY{SYm}N`-(vlHgsV{wT zBCoSD$O1|~S%m8<PYemc2fs7~>EhPa4_}lEJZ}z+mZ+-rvNR#U(tb!tYS@e6h7u35 zSsD)C0f4l0anp*F<jT5I8@XL@L9>x+|D$&R)v~K=Abo$8VxIh2D;i+*=Z?F&%R}ue zu!q&njE_<wv<9d69e-)XoZ5ED92^PKs8bX)FF<Fu7(-b8oJAsIldYyn=z!3P-o|WS zF3AtL(sXNCfapO2T!Zk$Haj^Cb9_TE%_NsxAzBy<FsHuiaE+LH$DlGqGpP6{-Fgux zVOo>?-Tb49(T<{EEP(Mw(3oSl-wEjRA}rckf1HA1L~B?EGSqA+wE>tW{uMUPYpQVG z!*IvNNTQE-M~|c?nNhMQ;?n`(^{rh0(s>6%<%@ro<t0}&iOXM4u%@3R`<BCrPK;cj zGFdBaJE7Fvj_y${-v$(zH~Zv8N-tlY3l;fffXfJDd#1NHtR)laVz$zr0LmhNa_<pE z!3ZSBx-@-@s`eyCQl_y(LIKnXc)p0|yYgbpY)2-`ZBrrpqok*HT=SP6#$b9Q<;rj_ z&4sSog4-a^XOcD+pBMSI|Ih#rxg=4`Ue`(d{=fF{64k;hjWi!^FdWa|*|V_sJ!>^` z`8>#KXOqVIwYQ7$bquk?MThjKS@8o`?6+~z=nY*5a(duusbdsDb-g|A%JqH~-`i0n zf}mb$2@S&K{!;K(nEFIO;Gye8RRx!{SfcL2!KMJ(xP+#U73_{4!dAbrJ{8{ACEYER zw&^g4;RHcy9;+v_inqsH4fsG;r)5sm+iHmFUAW&$tz<<EajrvpI*<OUQGL?w((MS; ziVGZY39_Br?;WEzQRz2EEsCU}@<L4=aRwTi`P<R0`r=@WZgDv<P!lvZOu3@T>umof z!03I97^7pC9<NR(?ljgm^e@ss-0*?v1-eF5t!!c(YSZ3GTQjz!#fK(p0Oa9Au1KkE zvT!q^Inye2hVGonLbk9270UV8&1{kkEA`Vl;;&0h3Zr9`W}C#eK;p;jL1D0MrmP0K za+u?>t~LFubFq>_5H?MyW`y_ItFpn+vC4PV5s}&Z3yk1iJkc&5!>@%t_T#D7DT=+Y zY9l0_euu^#w|)fRP$0Z+GDb*T_Q>)t<{WHs_u!%r)x-bn6m&vW2{I~_3k%#mDEF)C z_eioh(!`x53u|keS$Z*4%*1)ORDf2=<WAgDj6E4l>SG!&Gru_CRb~qOLXmk!dau(p zm(3XmKDb-By8L37tH_GKL1kB;7=(qgpj)v>Qy=J78!8I=BmzSZbJ|;S-X9~(hTgGG zU^XKg0%NvKnWaSc;krLP>yTR&u|cU09iC{k*VLE`e9ci@>We%Z>rXVL)&WF<(JJ<v zZ}u~}!1F>oGq{Q=yRqef>-msJ$(ei~so<xhX|C6+KCG-w>|Sd$g_ats*&XE=_w2aO zZx>J^Fz2-Dsy&yM^*8fxeN_PU4Ln=GaR~XXQ<jN{z!Ta8HiK~fa-SPUeh_qAt_)5t zt^Oxz!lBa7CQ&}|x=-YGp|l4J?Q2)iD0UdqageRiH3xeFbL{M8%Q2+i#Zj1bg-pcB zPD?QNM$RQ+yghe8h_H*;N$r^{8(7)@uBiC>4VcM69TX7Gs>%%L*6o@l+?j!H^);jk zj^S|Q@+`(sxnBNDJR`nE=TwgCt%uutap<wWYhvMLDeS_vp8M5W&IhNgbLkp8IZ;ub zo`&^a-vj78E#I`UCmCPk<Ij^djKxy!az}1b+(JdRt`DR-KBi5-95tlPuhX~Z@DaAX zC7+rExDFEeYRS|Bevd5MjiFp=k#*w{gYC)@^{Q3aiXt+iWIMHxv)a|NJecKU%87l4 zh6l@4GsvKn-RAN47puD2HDk@3p517aV8Vuk#X;ST3!I>kZN+1(ev7gmu4!uQMwpkh zI?wW0Fd|I^iAsOu=`)P@i+1z+jgyZCG!RjVp4l-L_P8S(*#~*yIFv0%^P=Skb`=Ka zY4ZCm;nEkMb0K3oXR8|wVwZcZMrtMSaVep}(lwQXZ^iUj`&@ZJLty{}hh&5&Nb$n1 z+VORbTa`e5Qtj4-Cn&2+&#s7pS$oG7)QtYr6jp>e>l<N>F$TgjT1yT#a*QizYlJLt zFz|1r+*~zQBmz&XE4)j{nfv&BYygyEMC)iEuY!c*x22^Z*<kbK0o$+g%mrtf9->Pl zoYcmC7z)Dm?P8h@-v%sHxS}?M>)ddsh&a!}5!7=NF|jxzFdtC3(0tBzK`h#KuZg<7 zjNhjJIQ;&@h)ff5-!;AV7KT8}?Qv0|Ec1MP#xP~~l&ENc05~TjAX@)C)J!G#<mXIg zNiE?g#FR0dQ!NhTFeQA$fKlFHR<A%+Y6yOS->NkPMi7I3Ad8fli8~xWHgnjBdQD9< zPxeKtUj&B1$ohzZqh%8nj~84&HB{dNOm;Iv@{7`1x0|fcc5%c7wk9|^lHPy6C>~Z{ z-{ep^40_d9I>S^TaY`vOoW*f7)d=A7uDpuDgyJ~pYRkVDd<9aquLyfH*(?jZGeG}t zsk24d$S#wvP~c!|&OvZ;iI8A<fHm8Ae;yT?e;<}|kfW-Wq85FX;HKOF38`}cXi99? zV6FE(!6Jz2q^XqctuB|k09}yIfr|Slw>1%zzcaYHbyC(l5v3XuK}i0D6}1GisITWw z$D?hYQ`e+e#>v^`X=r)+S229)Rd@ouFjQR`lL|#+{Th~qJ3VJ8A?yKd1CFVKwl1st zbLAsA)!HV$%1AS`o@9&|7zG0gz%$L(Ehx~-Ks$z5f44Myx~p!$`tFW}g?ND@PX({+ z!)`@yV8~0TIqf9g$u!pZnw0^(Fpf8dy>lk>sF7{s*r?DqETm`wk|&c(*5I=W(Ncgb z#;U;7RH&U^cFQq4^d_QTtrBxet+*ncF%01mXOwqLBj`5#bLnQ4NC5fjqG2r1GQ}%g zCR(idn9~<v3&y;;5WSB?uNK+w`TveFtcUPhAmq<>eXH}<7pIyS(cs)r?ds<T2_bDy z4=In35SSpHq9gpcFy%aUf!|bM)fve@8}SQ&*LjwC=@M>u##2ROoGq?ig3kJwwUC?( z*yEg+NrMlw5Z=@3trNEAyEG{Y>3Rl*by<=B8pkFEb<!l;7JOu=&29aJfrKo;Z>2_? zg3hb&Pbsenp`?}@s>$4HkL-Kk7_A#;Cf2-iVQPX`5Jf%PVCfq^<^*0HW+;O&KT~rg ziLD6>lEX9Y(8wM08#m<rHI4{-s_xdfx)14fL<P9_%A!s=m*&xbl%*I9Wz1N;O+Q|S z?|==6Cghx7yF$la?iI+Gfv<lZKY#b36_jS>flqzX|8wju-ur%(aap!F518;-%TcP( z8)p2kPWh?`tnqV{!62z(qwLh<<yv@UCEAdKmmXjiU$+Kb2pW5xU|Xy-rJDVZkuT{S zag3?EGTX<@_kKE<BitDa(^gx}3(X#_{W@7WO~Ip6)C14ATKbzGy;y9jsNGZlGlr1{ zUpv1b@n#FnF8Z${z~phjkV4&(Xgi&0(@?Rw*<;1xArpPkTR?rj&13z21q58`d2<Vk z(@U?;$$)kjK^44m4=Wwk6bMqz$m#ck08Rr_<qSW|K3J)CJ_$`j;qwi{J}kDVbPO)v zSh}H2g~voPxyg|s{k-U<rWn2oG1-x0kn%7t_0aK;7uw8d5Gj7Im1>NJtXCLBCt$n5 zuo*_38NdIb7VbROpeb#xL~H65VS*;vu48EoN=Ou%*Fvox-u{xmu!@@p?)RnrDwzs4 zaXY3mVph+5iI(FIUH(P_EUJH!O1(L4A6HE6ewB^&TKomahR@`8T*YS5d||U<eTPN$ z<ias^5*6HP#MPJw?Vr4lSf8tpc__~bEN-lq9Lh+t3v(;^CerSLH~S7z0xt6atAa}K zj4PEtk+59o--4zoLoetk{usOni-X=UYx}S(<!a{Dv2NEat_vWUMzZ!5H`%swLx}if zq&lTr)=@;Oh)wLyi;j#V;DNbvuLkx64vFU<<lCOOE&GiwpXW8F{bsh$UHe2HXVxKD z7L0TxS}KP&R!|Jzgi;sZ^>162snHuby=T#N(iYz5wbZs|)%a!VUHV0TonSv}c?v~@ zg)*}?@7xok`(|K!8!`KpJNnPiAFTh24B0KBiW{##D1f$@#+!r5h~q%;Foa%7sfaiY znR)RlZ*pk7e0-RZx4;qulOE;Abo45##TtZ)Qo=>mTMqPO?q1TX%e>S736{ZGH{uQ? zL7j<-lHsX>;&TOx&<vU9s4MqB7z1@D=T;eDqWpDU*_PD!_36rF7cm_jc$6X%J(G{p z|A?oc`ei=XZNhU_kkSjPp@gg97Q=Y5O;*_It0W>20jJ{PNM?)fDb^Uj&SoyUn9RY7 zW-?mH!E5j3hj<p$8GR*f2|`QPTet}6V+w$q<Ub(mKu5B!d}3p=cYPkCPc<Sk#~C`i urYv7X-kfwt!=2Kt+^OHsvY@Tu{5HZ9h=V3<PaEF~?0PyKJPKlKm@0rFJ%0iK literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-legal.avif b/static/images/docs/partners/apps/dark/registration-legal.avif new file mode 100644 index 0000000000000000000000000000000000000000..a44fbf077f343195ac8fa5fbdb9fa0ee589ad19e GIT binary patch literal 19272 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 <qPX{8kEr3>ZcEx2HQ<Y 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 QKY@gjUxP<1*Cq`Ccu$4=wg3PC literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-publish.avif b/static/images/docs/partners/apps/dark/registration-publish.avif new file mode 100644 index 0000000000000000000000000000000000000000..a71d29bb4b651efd0b4f507fc3633ecc39c5fd17 GIT binary patch literal 19665 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/registration-support.avif b/static/images/docs/partners/apps/dark/registration-support.avif new file mode 100644 index 0000000000000000000000000000000000000000..e72937c95de5a5deaed8756e100279a89a6b5815 GIT binary patch literal 17022 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 Ctc~aZ literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-consent.avif b/static/images/docs/partners/apps/diagram-consent.avif new file mode 100644 index 0000000000000000000000000000000000000000..5138ef57ee2e3f950ec5c7d672708f3396c99b04 GIT binary patch literal 15821 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-overview.avif b/static/images/docs/partners/apps/diagram-overview.avif new file mode 100644 index 0000000000000000000000000000000000000000..fbf2483f6d10838a677337a0c29e419452c6b624 GIT binary patch literal 28586 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-scopes.avif b/static/images/docs/partners/apps/diagram-scopes.avif new file mode 100644 index 0000000000000000000000000000000000000000..b19481b1f7887161bc06fcab36ff3125f7102082 GIT binary patch literal 15925 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/diagram-tokens.avif b/static/images/docs/partners/apps/diagram-tokens.avif new file mode 100644 index 0000000000000000000000000000000000000000..7aa81b2e30a6c21337647fc0811c2bbacae4553e GIT binary patch literal 29013 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif index ef3384a9726126d4f32b10a87e75587153bf02e9..35f37ce20b5fd262646411ecfddc0429885a35f5 100644 GIT binary patch delta 9365 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 P$Obfmp_)X1lQJzjdCNMc delta 10086 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⁢~f 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 I7n5cxI&%bOz5oCK diff --git a/static/images/docs/partners/apps/registration-general.avif b/static/images/docs/partners/apps/registration-general.avif new file mode 100644 index 0000000000000000000000000000000000000000..8c67d6d7a34dcf6d8cd7d212fc850ae0ee0f83f3 GIT binary patch literal 23786 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 KuW@zI7<hmKU<^Y5 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-legal.avif b/static/images/docs/partners/apps/registration-legal.avif new file mode 100644 index 0000000000000000000000000000000000000000..1adbafc1a8f73efefce1e3f437db77ba2a7e331c GIT binary patch literal 17767 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 O391rIux}`P#wk!ApO16^ literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-publish.avif b/static/images/docs/partners/apps/registration-publish.avif new file mode 100644 index 0000000000000000000000000000000000000000..65303f5eb745b46aa51d81793c41a063b3950ecf GIT binary patch literal 19720 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/registration-support.avif b/static/images/docs/partners/apps/registration-support.avif new file mode 100644 index 0000000000000000000000000000000000000000..b6726b007080557efab0a3fc6aa06a6b838b3472 GIT binary patch literal 15812 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 literal 0 HcmV?d00001 From 57426bd6f1ed8c47b5611f6c889e945b6f4e2477 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Wed, 22 Jul 2026 21:54:41 +0530 Subject: [PATCH 31/38] Add folders concept and docs --- .../docs/products/storage/+layout.svelte | 4 + .../products/storage/buckets/+page.markdoc | 7 + .../products/storage/folders/+page.markdoc | 639 ++++++++++++++++++ .../storage/upload-download/+page.markdoc | 6 + 4 files changed, 656 insertions(+) create mode 100644 src/routes/docs/products/storage/folders/+page.markdoc diff --git a/src/routes/docs/products/storage/+layout.svelte b/src/routes/docs/products/storage/+layout.svelte index dd84bb33e9..8ac86d359d 100644 --- a/src/routes/docs/products/storage/+layout.svelte +++ b/src/routes/docs/products/storage/+layout.svelte @@ -28,6 +28,10 @@ label: 'Buckets', href: '/docs/products/storage/buckets' }, + { + label: 'Folders', + href: '/docs/products/storage/folders' + }, { label: 'Permissions', href: '/docs/products/storage/permissions' diff --git a/src/routes/docs/products/storage/buckets/+page.markdoc b/src/routes/docs/products/storage/buckets/+page.markdoc index fb5f76e494..004f9b2691 100644 --- a/src/routes/docs/products/storage/buckets/+page.markdoc +++ b/src/routes/docs/products/storage/buckets/+page.markdoc @@ -296,6 +296,13 @@ This means users can't create new files or read, update, and delete existing fil [Learn about configuring permissions](/docs/products/storage/permissions). +# Folders {% #folders %} +Files in a bucket can be organized into virtual folders. +Each file carries a folder path, like `photos/2026`, that you set when uploading it. +Folders are derived from these paths, so there is nothing to create or manage separately: a folder appears when the first file is uploaded into it and disappears when the last file inside it is deleted. + +[Learn about working with folders](/docs/products/storage/folders). + # Encryption {% #encryption %} Appwrite provides added security settings for your buckets. Enable encryption under your bucket's **Settings** > **Security settings**. You can enable encryption to encrypt files in your buckets. If your files are leaked, encrypted files cannot be read by the malicious actor. diff --git a/src/routes/docs/products/storage/folders/+page.markdoc b/src/routes/docs/products/storage/folders/+page.markdoc new file mode 100644 index 0000000000..4da4c4ed92 --- /dev/null +++ b/src/routes/docs/products/storage/folders/+page.markdoc @@ -0,0 +1,639 @@ +--- +layout: article +title: Folders +description: Organize files in Appwrite Storage buckets with virtual folders. Learn how to upload files into folders, list files by folder, and browse folders. +--- + +Appwrite Storage lets you organize the files inside a bucket using virtual folders. +Folders work like key prefixes in S3-compatible storage services: they are derived from the paths of your files, so you never create or delete folders explicitly. + +# How folders work {% #how-folders-work %} + +A bucket doesn't store folders as records. Instead, every file has a `folder` attribute, a path like `photos/2026/`, and folders are derived from these paths: a folder exists whenever at least one file's `folder` path places the file inside it. +For example, uploading a single file with the folder `photos/2026` is what brings both the `photos/` and `photos/2026/` folders into existence. + +A file's folder is set once, when the file is uploaded, and defaults to the bucket root (an empty string). +Folder paths are stored in a canonical form that always ends with a trailing slash, like `photos/2026/`. +Each file also exposes a computed `key` attribute, which is the file's full virtual path: the folder followed by the file name, like `photos/2026/Pink.png`. + +Because folders are derived from files, they exist implicitly. A folder appears as soon as the first file is uploaded into it and disappears when the last file inside it is deleted. +There are no empty folders, no folder permissions, and no folder metadata to manage. + +Unlike in S3, uploading a file with the same name to the same folder does not overwrite the existing file. +Files are identified by their file ID, so multiple files can share the same `key`. + +# Upload files to a folder {% #upload-files-to-a-folder %} + +To place a file inside a folder, pass the optional `folder` parameter when [uploading the file](/docs/products/storage/upload-download#create-file). +Nest folders using `/`, for example `photos/2026`. The trailing slash is optional on input and is added automatically when stored. + +{% multicode %} + ```client-web + import { Client, Storage, ID } from "appwrite"; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const file = await storage.createFile({ + bucketId: '<BUCKET_ID>', + fileId: ID.unique(), + file: document.getElementById('uploader').files[0], + folder: 'photos/2026' + }); + + console.log(file.folder); // 'photos/2026/' + console.log(file.key); // 'photos/2026/Pink.png' + ``` + + ```server-nodejs + const sdk = require('node-appwrite'); + const { InputFile } = require('node-appwrite/file'); + + const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + + const storage = new sdk.Storage(client); + + const file = await storage.createFile({ + bucketId: '<BUCKET_ID>', + fileId: sdk.ID.unique(), + file: InputFile.fromPath('/path/to/Pink.png', 'Pink.png'), + folder: 'photos/2026' + }); + + console.log(file.folder); // 'photos/2026/' + console.log(file.key); // 'photos/2026/Pink.png' + ``` + + ```client-flutter + import 'package:appwrite/appwrite.dart'; + + void main() async { + final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + final storage = Storage(client); + + final file = await storage.createFile( + bucketId: '<BUCKET_ID>', + fileId: ID.unique(), + file: InputFile.fromPath(path: './path-to-files/Pink.png', filename: 'Pink.png'), + folder: 'photos/2026', + ); + } + ``` + + ```client-android-kotlin + import io.appwrite.Client + import io.appwrite.ID + import io.appwrite.models.InputFile + import io.appwrite.services.Storage + + suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<PROJECT_ID>") // Your project ID + + val storage = Storage(client) + + val file = storage.createFile( + bucketId = "<BUCKET_ID>", + fileId = ID.unique(), + file = InputFile.fromPath("./path-to-files/Pink.png"), + folder = "photos/2026", + ) + } + ``` + + ```client-apple + import Appwrite + + func main() async throws { + let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + + let storage = Storage(client) + + let file = try await storage.createFile( + bucketId: "<BUCKET_ID>", + fileId: ID.unique(), + file: InputFile.fromBuffer(yourByteBuffer, + filename: "Pink.png", + mimeType: "image/png" + ), + folder: "photos/2026" + ) + } + ``` + + ```client-react-native + import { Client, Storage, ID } from 'react-native-appwrite'; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const file = await storage.createFile({ + bucketId: '<BUCKET_ID>', + fileId: ID.unique(), + file: { + name: 'Pink.png', + type: 'image/png', + size: 1234567, + uri: 'file:///path/to/Pink.png', + }, + folder: 'photos/2026' + }); + ``` +{% /multicode %} + +{% info title="Folder naming rules" %} +Folder paths are `/`-separated segments. A folder path must not start with `/`, must not contain empty, `.`, or `..` segments or control characters, and can be at most 2,048 characters long including the trailing slash. +{% /info %} + +A file's folder can't be changed after upload. To move a file into a different folder, create the file again with the new folder and delete the original. + +# List files in a folder {% #list-files-in-a-folder %} + +Filter files by folder using [queries](/docs/products/databases/queries) on the `folder` attribute when listing files. + +| Goal | Query | +| ---- | ----- | +| Files directly inside `photos/2026/` | `Query.equal('folder', ['photos/2026/'])` | +| Files at the bucket root only | `Query.equal('folder', [''])` | +| Files anywhere under `photos/`, including nested folders | `Query.startsWith('folder', 'photos/')` | + +Query values must match the stored form of the folder path, which always includes the trailing slash. +For example, `Query.equal('folder', ['photos/2026/'])` matches files in `photos/2026/`, but `Query.equal('folder', ['photos/2026'])` matches nothing. + +{% multicode %} + ```client-web + import { Client, Storage, Query } from "appwrite"; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const result = await storage.listFiles({ + bucketId: '<BUCKET_ID>', + queries: [ + Query.equal('folder', ['photos/2026/']) + ] + }); + + console.log(result.files); + ``` + + ```server-nodejs + const sdk = require('node-appwrite'); + + const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + + const storage = new sdk.Storage(client); + + const result = await storage.listFiles({ + bucketId: '<BUCKET_ID>', + queries: [ + sdk.Query.equal('folder', ['photos/2026/']) + ] + }); + + console.log(result.files); + ``` + + ```client-flutter + import 'package:appwrite/appwrite.dart'; + + void main() async { + final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + final storage = Storage(client); + + final result = await storage.listFiles( + bucketId: '<BUCKET_ID>', + queries: [ + Query.equal('folder', ['photos/2026/']) + ], + ); + } + ``` + + ```client-android-kotlin + import io.appwrite.Client + import io.appwrite.Query + import io.appwrite.services.Storage + + suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<PROJECT_ID>") // Your project ID + + val storage = Storage(client) + + val result = storage.listFiles( + bucketId = "<BUCKET_ID>", + queries = listOf( + Query.equal("folder", listOf("photos/2026/")) + ) + ) + } + ``` + + ```client-apple + import Appwrite + + func main() async throws { + let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + + let storage = Storage(client) + + let result = try await storage.listFiles( + bucketId: "<BUCKET_ID>", + queries: [ + Query.equal("folder", value: ["photos/2026/"]) + ] + ) + } + ``` + + ```client-react-native + import { Client, Storage, Query } from 'react-native-appwrite'; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const result = await storage.listFiles({ + bucketId: '<BUCKET_ID>', + queries: [ + Query.equal('folder', ['photos/2026/']) + ] + }); + ``` +{% /multicode %} + +# List folders {% #list-folders %} + +To browse the folders inside a bucket, use the `listFolders` method. +It returns the folders directly inside a given folder, or the top-level folders of the bucket when no folder is passed. + +{% multicode %} + ```client-web + import { Client, Storage } from "appwrite"; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const result = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/' // Omit to list top-level folders + }); + + console.log(result.folders); + ``` + + ```server-nodejs + const sdk = require('node-appwrite'); + + const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + + const storage = new sdk.Storage(client); + + const result = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/' // Omit to list top-level folders + }); + + console.log(result.folders); + ``` + + ```client-flutter + import 'package:appwrite/appwrite.dart'; + + void main() async { + final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + final storage = Storage(client); + + final result = await storage.listFolders( + bucketId: '<BUCKET_ID>', + folder: 'photos/', // Omit to list top-level folders + ); + } + ``` + + ```client-android-kotlin + import io.appwrite.Client + import io.appwrite.services.Storage + + suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<PROJECT_ID>") // Your project ID + + val storage = Storage(client) + + val result = storage.listFolders( + bucketId = "<BUCKET_ID>", + folder = "photos/" // Omit to list top-level folders + ) + } + ``` + + ```client-apple + import Appwrite + + func main() async throws { + let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + + let storage = Storage(client) + + let result = try await storage.listFolders( + bucketId: "<BUCKET_ID>", + folder: "photos/" // Omit to list top-level folders + ) + } + ``` + + ```client-react-native + import { Client, Storage } from 'react-native-appwrite'; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const result = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/' // Omit to list top-level folders + }); + ``` +{% /multicode %} + +Each folder in the response has a `key` (the full folder path), a `name` (the last segment of the path), and a `parent` (the path of the folder that contains it). + +```json +{ + "folders": [ + { + "key": "photos/2025/", + "name": "2025", + "parent": "photos/" + }, + { + "key": "photos/2026/", + "name": "2026", + "parent": "photos/" + } + ] +} +``` + +## Pagination {% #pagination %} + +`listFolders` returns up to `limit` folders per page, 25 by default and 100 at most, sorted by path. +Because folders are derived from files instead of being stored as records, the response doesn't include a total count. + +To fetch the next page, pass the `key` of the last folder you received as the `cursor` parameter. +When a page comes back with fewer folders than the limit, you've reached the end of the listing. + +{% multicode %} + ```client-web + import { Client, Storage } from "appwrite"; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const limit = 25; + let cursor = ''; + let folders = []; + + while (true) { + const page = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/', + limit, + cursor + }); + + folders.push(...page.folders); + + if (page.folders.length < limit) { + break; // Listing is complete + } + + cursor = page.folders[page.folders.length - 1].key; + } + ``` + + ```server-nodejs + const sdk = require('node-appwrite'); + + const client = new sdk.Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>') + .setKey('<API_KEY>'); + + const storage = new sdk.Storage(client); + + const limit = 25; + let cursor = ''; + let folders = []; + + while (true) { + const page = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/', + limit, + cursor + }); + + folders.push(...page.folders); + + if (page.folders.length < limit) { + break; // Listing is complete + } + + cursor = page.folders[page.folders.length - 1].key; + } + ``` + + ```client-flutter + import 'package:appwrite/appwrite.dart'; + import 'package:appwrite/models.dart'; + + void main() async { + final client = Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + final storage = Storage(client); + + const limit = 25; + var cursor = ''; + final folders = <Folder>[]; + + while (true) { + final page = await storage.listFolders( + bucketId: '<BUCKET_ID>', + folder: 'photos/', + limit: limit, + cursor: cursor, + ); + + folders.addAll(page.folders); + + if (page.folders.length < limit) { + break; // Listing is complete + } + + cursor = page.folders.last.key; + } + } + ``` + + ```client-android-kotlin + import io.appwrite.Client + import io.appwrite.models.Folder + import io.appwrite.services.Storage + + suspend fun main() { + val client = Client(applicationContext) + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint + .setProject("<PROJECT_ID>") // Your project ID + + val storage = Storage(client) + + val limit = 25L + var cursor = "" + val folders = mutableListOf<Folder>() + + while (true) { + val page = storage.listFolders( + bucketId = "<BUCKET_ID>", + folder = "photos/", + limit = limit, + cursor = cursor + ) + + folders.addAll(page.folders) + + if (page.folders.size < limit) { + break // Listing is complete + } + + cursor = page.folders.last().key + } + } + ``` + + ```client-apple + import Appwrite + import AppwriteModels + + func main() async throws { + let client = Client() + .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") + .setProject("<PROJECT_ID>") + + let storage = Storage(client) + + let limit = 25 + var cursor = "" + var folders: [AppwriteModels.Folder] = [] + + while true { + let page = try await storage.listFolders( + bucketId: "<BUCKET_ID>", + folder: "photos/", + limit: limit, + cursor: cursor + ) + + folders.append(contentsOf: page.folders) + + if page.folders.count < limit { + break // Listing is complete + } + + cursor = page.folders.last!.key + } + } + ``` + + ```client-react-native + import { Client, Storage } from 'react-native-appwrite'; + + const client = new Client() + .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') + .setProject('<PROJECT_ID>'); + + const storage = new Storage(client); + + const limit = 25; + let cursor = ''; + let folders = []; + + while (true) { + const page = await storage.listFolders({ + bucketId: '<BUCKET_ID>', + folder: 'photos/', + limit, + cursor + }); + + folders.push(...page.folders); + + if (page.folders.length < limit) { + break; // Listing is complete + } + + cursor = page.folders[page.folders.length - 1].key; + } + ``` +{% /multicode %} + +The cursor must be a folder directly inside the folder you are listing. Passing any other path returns an error. + +# Permissions {% #permissions %} + +Folders don't carry their own permissions. Access is derived from the files inside them. +When a bucket uses [file security](/docs/products/storage/permissions), listing folders only returns folders that contain at least one file the user can read. + +{% arrow_link href="/docs/products/storage/permissions" %} +Learn more about storage permissions +{% /arrow_link %} diff --git a/src/routes/docs/products/storage/upload-download/+page.markdoc b/src/routes/docs/products/storage/upload-download/+page.markdoc index 518f3450fb..6a49d1c9a5 100644 --- a/src/routes/docs/products/storage/upload-download/+page.markdoc +++ b/src/routes/docs/products/storage/upload-download/+page.markdoc @@ -203,6 +203,12 @@ You can also upload files programmatically using our SDKs: {% /multicode %} +When uploading, you can pass the optional `folder` parameter to organize files into virtual folders, for example `photos/2026`. + +{% arrow_link href="/docs/products/storage/folders" %} +Learn more about folders +{% /arrow_link %} + # Large files {% #large-files %} When you are trying to upload any files above 5MB, you will need to upload them in chunks for better reliability and performance. If you're using an Appwrite SDK, this is handled automatically. From 701b93840049066cd47ef3f997e1132d0ce95f0b Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Thu, 23 Jul 2026 17:35:08 +0530 Subject: [PATCH 32/38] docs(partners): address review feedback and add Device flow concept page - JSON bodies with client credentials in the body across all curl/hurl blocks - Switch examples from tables to databases scope, list databases in quick start - Replace introspection with userinfo verification and JWT decoding via JWKS - Remove authorization_details pre-selection and fix consent narrowing claims - Official product names in the project scope catalog - Add refresh section to quick start, public client PKCE section to Tokens - New Device flow concept page with diagram, tested end to end - Retake consent screenshot with Databases READ permission --- .optimize-cache.json | 6 +- src/routes/docs/partners/apps/+layout.svelte | 4 + src/routes/docs/partners/apps/+page.markdoc | 2 +- .../docs/partners/apps/consent/+page.markdoc | 7 +- .../partners/apps/device-flow/+page.markdoc | 108 +++++++++++ .../partners/apps/quick-start/+page.markdoc | 160 ++++++++-------- .../docs/partners/apps/scopes/+page.markdoc | 79 +++----- .../docs/partners/apps/tokens/+page.markdoc | 180 +++++++++++------- .../partners/apps/dark/diagram-device.avif | Bin 0 -> 24021 bytes .../apps/dark/quick-start-consent.avif | Bin 10778 -> 14779 bytes .../docs/partners/apps/diagram-device.avif | Bin 0 -> 24382 bytes .../partners/apps/quick-start-consent.avif | Bin 10912 -> 13969 bytes 12 files changed, 337 insertions(+), 209 deletions(-) create mode 100644 src/routes/docs/partners/apps/device-flow/+page.markdoc create mode 100644 static/images/docs/partners/apps/dark/diagram-device.avif create mode 100644 static/images/docs/partners/apps/diagram-device.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index 8d72d41921..7113e5e70b 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1600,11 +1600,12 @@ "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", + "static/images/docs/partners/apps/dark/diagram-device.png": "208a3dc343bfd1c4ea16d64b6b19e8efec363855231b0eaf467de1397bc29a64", "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", - "static/images/docs/partners/apps/dark/quick-start-consent.png": "1d9b2afc99e93e53f4dd934f7de659cb1f52c11d5f42d447b9910ad574ff24d9", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "7b5c60b821ea7d3cc037ba77f97e858429c6a63a99b453ac063fbe9628e458c5", "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", @@ -1615,11 +1616,12 @@ "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", + "static/images/docs/partners/apps/diagram-device.png": "f620b3b450ca3b34fc9326cb1b4bd9fc7066e4c912b229c211e1ef30ff77010d", "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", - "static/images/docs/partners/apps/quick-start-consent.png": "d583752f9abf911002861032e097737cf6b2f0dd49ffd582f9306b72ba4789ac", + "static/images/docs/partners/apps/quick-start-consent.png": "43ceef1d6e6a1f4b73ae0150508909f7af903332dc2817ba168fef361b185e57", "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", diff --git a/src/routes/docs/partners/apps/+layout.svelte b/src/routes/docs/partners/apps/+layout.svelte index 807565ae27..454f33a34d 100644 --- a/src/routes/docs/partners/apps/+layout.svelte +++ b/src/routes/docs/partners/apps/+layout.svelte @@ -39,6 +39,10 @@ { label: 'Tokens', href: '/docs/partners/apps/tokens' + }, + { + label: 'Device flow', + href: '/docs/partners/apps/device-flow' } ] } diff --git a/src/routes/docs/partners/apps/+page.markdoc b/src/routes/docs/partners/apps/+page.markdoc index 3d41f35baf..42d45d2d22 100644 --- a/src/routes/docs/partners/apps/+page.markdoc +++ b/src/routes/docs/partners/apps/+page.markdoc @@ -34,7 +34,7 @@ Your app authenticates the user once and then acts on their Appwrite resources w Sign in with Appwrite is the authorization code flow from OAuth 2.1, served by Appwrite. 1. **Your app redirects the user** to the Appwrite authorization endpoint with the scopes it needs. -2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can narrow the request, down to read-only. +2. **Appwrite shows the consent screen.** The user sees your app's name and logo, reviews the requested permissions, and picks which projects and organizations they apply to. They can grant fewer projects than you asked for, or decline entirely. 3. **Your app receives an authorization code** at its redirect URI and exchanges it for an access token, a refresh token, and an ID token. 4. **Your app calls Appwrite APIs** with the access token as a bearer token, on any of the granted projects, in any region. diff --git a/src/routes/docs/partners/apps/consent/+page.markdoc b/src/routes/docs/partners/apps/consent/+page.markdoc index 1833c2f6ce..524bd4bdcc 100644 --- a/src/routes/docs/partners/apps/consent/+page.markdoc +++ b/src/routes/docs/partners/apps/consent/+page.markdoc @@ -27,7 +27,7 @@ The screen is built from your [registration](/docs/partners/apps/registration) a - **Your app's identity**: the name, logo, and tagline you registered. - **Permissions**: each requested scope as a plain-language line, under a one-line summary of the overall reach. -- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. If your request named specific IDs, the picker shows them for confirmation instead. +- **Project access**: a picker for the projects or organizations the grant covers when the request carries project or organization scopes. The user signs in first if no session exists, and can switch accounts from the screen itself. @@ -35,11 +35,10 @@ The user signs in first if no session exists, and can switch accounts from the s What you request is not always what you get. On the consent screen, the user can: -- Deselect projects. -- Drop scopes, or narrow them to read-only. +- Deselect projects or organizations, shrinking where the grant applies. - Decline the whole request. -Only `openid` always survives approval, so an approved flow always identifies the user. +The permission list itself is not editable. Scopes are granted as you requested them or not at all, which is another reason to request the smallest set that serves your app. The token response tells you what you got: `scope` holds the granted scopes, `authorization_details` the granted projects. Build for this from the start. A dashboard that asked for five projects but got two should show two projects, not an error. diff --git a/src/routes/docs/partners/apps/device-flow/+page.markdoc b/src/routes/docs/partners/apps/device-flow/+page.markdoc new file mode 100644 index 0000000000..44bf217f4e --- /dev/null +++ b/src/routes/docs/partners/apps/device-flow/+page.markdoc @@ -0,0 +1,108 @@ +--- +layout: article +title: Device flow +description: Sign in with Appwrite from TVs, CLIs, and other input-constrained devices with the OAuth2 device authorization grant. +back: /docs/partners/apps +--- + +{% only_dark %} +![The device shows a short code, the user approves it on a second device, and the device polls for tokens](/images/docs/partners/apps/dark/diagram-device.avif) +{% /only_dark %} +{% only_light %} +![The device shows a short code, the user approves it on a second device, and the device polls for tokens](/images/docs/partners/apps/diagram-device.avif) +{% /only_light %} + +Some clients cannot run the redirect flow: a TV has no browser to send the user back to, and a CLI has no redirect URI to receive a code. The device flow ([RFC 8628](https://datatracker.ietf.org/doc/html/rfc8628)) replaces the redirect with a short code. Your app shows the code, the user approves it from their phone or laptop, and your app picks up the tokens by polling. + +The flow is off by default. Turn it on with the device flow toggle on your app's [OAuth client page](/docs/partners/apps/registration#console-oauth-client); the authorization request fails without it. + +# Request a device code {% #request-code %} + +Instead of building an authorization URL, ask for a device code, authenticated with your client credentials: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/device_authorization \ + -H "Content-Type: application/json" \ + -d '{ + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>", + "scope": "openid profile email project:databases.read" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/device_authorization +{ + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>", + "scope": "openid profile email project:databases.read" +} +``` +{% /multicode %} + +Public clients send only their `client_id`. The response carries everything both sides need: + +```json +{ + "device_code": "6015241e3d2023091dcabf86d5ab85c3f16c985c49d418f37f0c446e1d2c2a9c", + "user_code": "MDF2TN39", + "verification_uri": "https://cloud.appwrite.io/console/oauth2/device", + "verification_uri_complete": "https://cloud.appwrite.io/console/oauth2/device?user_code=MDF2TN39", + "expires_in": 600, + "interval": 1 +} +``` + +Show the user the `user_code` and the `verification_uri`. The `verification_uri_complete` variant carries the code in the URL, which is what you encode into a QR code so the user skips typing it. The codes expire after `expires_in` seconds, ten minutes here, after which your app requests a fresh pair. + +# The user approves {% #user-approves %} + +{% only_dark %} +![Device verification page asking for the code shown on the device](/images/docs/partners/apps/dark/device-code.avif) +{% /only_dark %} +{% only_light %} +![Device verification page asking for the code shown on the device](/images/docs/partners/apps/device-code.avif) +{% /only_light %} + +On their phone or laptop, the user opens the verification URL, signs in if no session exists, and enters the code. From there they land on the same [consent screen](/docs/partners/apps/consent) as the redirect flow, with one difference: after approving, the screen tells them to return to their device. + +# Poll for tokens {% #poll %} + +While the user approves, your app polls the token endpoint with the `device_code`, waiting at least `interval` seconds between attempts: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "<DEVICE_CODE>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "urn:ietf:params:oauth:grant-type:device_code", + "device_code": "<DEVICE_CODE>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} +``` +{% /multicode %} + +Until the user decides, each poll returns a pending error: + +```json +{ + "error": "authorization_pending", + "error_description": "The user has not yet approved or denied the device authorization request." +} +``` + +Keep polling. The moment the user approves, the same call returns the full [token response](/docs/partners/apps/tokens), with the access, refresh, and ID tokens and the granted scopes. If the user declines instead, polls return `error=access_denied`, and your app starts over with a fresh device code. + +From here, nothing is device-specific. The tokens behave like the tokens from any other grant: the same scopes and targets apply, and the refresh token [rotates on every use](/docs/partners/apps/tokens#refresh-tokens). diff --git a/src/routes/docs/partners/apps/quick-start/+page.markdoc b/src/routes/docs/partners/apps/quick-start/+page.markdoc index f0166845bf..238ab9e098 100644 --- a/src/routes/docs/partners/apps/quick-start/+page.markdoc +++ b/src/routes/docs/partners/apps/quick-start/+page.markdoc @@ -56,14 +56,14 @@ With credentials in your environment, Horizon can offer a Sign in with Appwrite The query string carries everything your app asks for: - Identity scopes, so Horizon knows who signed in. -- One project scope, `project:tables.read`, for the data it needs. +- One project scope, `project:databases.read`, for the data it needs. ```text https://cloud.appwrite.io/v1/oauth2/console/authorize ?client_id=<CLIENT_ID> &redirect_uri=http://localhost:7700/oauth/callback &response_type=code - &scope=openid profile email project:tables.read + &scope=openid profile email project:databases.read ``` URL-encode the values. Because the request carries a project scope, the consent screen asks the user which projects the grant covers. Scopes are described in the [scope catalog](/docs/partners/apps/scopes). @@ -77,36 +77,40 @@ URL-encode the values. Because the request carries a project scope, the consent ![Consent screen asking to authorize the app with selected projects](/images/docs/partners/apps/quick-start-consent.avif) {% /only_light %} -This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers or reduce the access to read-only. On approval, the browser returns to your redirect URI: +This is the moment the user meets your app inside Appwrite. The consent screen shows Horizon's name and logo, lists each requested permission in plain language, and lets the user select the projects the grant covers. On approval, the browser returns to your redirect URI: ```text -http://localhost:7700/oauth/callback?code=<CODE>&iss=https://cloud.appwrite.io/v1/oauth2/console +http://localhost:7700/oauth/callback?code=<CODE> ``` Use the code within five minutes. It is single-use. # Exchange the code {% #exchange %} -From your server, exchange the code for tokens. Authenticate with your client credentials over HTTP basic auth. +From your server, exchange the code for tokens, sending your client credentials in the request body. {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=authorization_code" \ - -d "code=<CODE>" \ - -d "redirect_uri=http://localhost:7700/oauth/callback" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://localhost:7700/oauth/callback", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -grant_type: authorization_code -code: <CODE> -redirect_uri: http://localhost:7700/oauth/callback +{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "http://localhost:7700/oauth/callback", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} ``` {% /multicode %} @@ -118,51 +122,43 @@ The response carries the three tokens and echoes what the user actually granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` -Check `scope` for the scopes that survived consent and `authorization_details` for the projects the user selected; both may be less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. +Check `authorization_details` for the projects the user selected; they may cover less than you asked for. Store the refresh token like a password. [Tokens](/docs/partners/apps/tokens) covers lifetimes, refresh rotation, and revocation. # Verify the token {% #verify-token %} -Horizon does not need to trust its own bookkeeping. At any point, it can ask Appwrite what a token is worth by introspecting it, authenticated with the same client credentials: +Before doing anything else with the token, ask Appwrite who it belongs to. The userinfo endpoint answers with the user's identity, and only for tokens that are still active: {% multicode %} ```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=<ACCESS_TOKEN>" +curl https://cloud.appwrite.io/v1/oauth2/console/userinfo \ + -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -token: <ACCESS_TOKEN> +GET https://cloud.appwrite.io/v1/oauth2/console/userinfo +Authorization: Bearer <ACCESS_TOKEN> ``` {% /multicode %} -A live token comes back with everything the grant holds: +The response is the signed-in user: ```json { - "active": true, - "scope": "openid profile email project:tables.read", - "client_id": "horizon", - "token_type": "Bearer", "sub": "6a150ace003bc4c2919e", - "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "token_use": "access_token" + "name": "Walter O'Brien", + "email": "walter@example.com", + "email_verified": true, + "updated_at": 1784707579 } ``` -An expired or revoked token returns only `{ "active": false }`. This is the authoritative check: it reflects revocation the moment it happens, which decoding the JWT yourself cannot. +An expired or revoked token returns a `401` of type `oauth2_invalid_token` instead, so a successful response also proves the token is still live. # List the user's projects {% #list-projects %} @@ -200,11 +196,11 @@ The response lists every project the grant covers: } ``` -Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. +Each entry carries the project's `$id`, `region`, and `endpoint`, which is everything your app needs to call it. The listing returns 25 projects per page and accepts `limit` and `offset` parameters for paging through more. A matching `/oauth2/console/organizations` endpoint lists granted organizations the same way. # Call a project API {% #call-project-api %} -The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:tables.read`, that is reading the tables of a database in the project. +The listing gives Horizon everything it needs to do real work. Point a client at a granted project's endpoint, keep the same bearer token, and call the APIs your scopes allow. With `project:databases.read`, that is listing the databases the project holds. {% info title="No SDK required" %} Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the project's endpoint, the `X-Appwrite-Project` header, and the access token in the `Authorization` header. Every Appwrite API accepts the same shape. @@ -212,13 +208,13 @@ Prefer not to use an SDK? The cURL and Hurl tabs show the raw API call: the proj {% multicode %} ```curl -curl "<PROJECT_ENDPOINT>/tablesdb/<DATABASE_ID>/tables" \ +curl "<PROJECT_ENDPOINT>/tablesdb" \ -H "X-Appwrite-Project: <PROJECT_ID>" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ```hurl -GET <PROJECT_ENDPOINT>/tablesdb/<DATABASE_ID>/tables +GET <PROJECT_ENDPOINT>/tablesdb X-Appwrite-Project: <PROJECT_ID> Authorization: Bearer <ACCESS_TOKEN> ``` @@ -233,9 +229,7 @@ const client = new Client() const tablesDB = new TablesDB(client); -const result = await tablesDB.listTables({ - databaseId: '<DATABASE_ID>' -}); +const result = await tablesDB.list(); ``` ```server-deno @@ -248,9 +242,7 @@ const client = new Client() const tablesDB = new TablesDB(client); -const result = await tablesDB.listTables({ - databaseId: '<DATABASE_ID>' -}); +const result = await tablesDB.list(); ``` ```server-python @@ -264,9 +256,7 @@ client.set_bearer('Bearer <ACCESS_TOKEN>') # The same access token tables_db = TablesDB(client) -result = tables_db.list_tables( - database_id = '<DATABASE_ID>' -) +result = tables_db.list() ``` ```server-php @@ -282,9 +272,7 @@ $client = (new Client()) $tablesDB = new TablesDB($client); -$result = $tablesDB->listTables( - databaseId: '<DATABASE_ID>' -); +$result = $tablesDB->list(); ``` ```server-ruby @@ -299,9 +287,7 @@ client = Client.new tables_db = TablesDB.new(client) -result = tables_db.list_tables( - database_id: '<DATABASE_ID>' -) +result = tables_db.list() ``` ```server-dart @@ -314,9 +300,7 @@ Client client = Client() TablesDB tablesDB = TablesDB(client); -TableList result = await tablesDB.listTables( - databaseId: '<DATABASE_ID>', -); +DatabaseList result = await tablesDB.list(); ``` ```server-kotlin @@ -330,9 +314,7 @@ val client = Client() val tablesDB = TablesDB(client) -val result = tablesDB.listTables( - databaseId = "<DATABASE_ID>" -) +val result = tablesDB.list() ``` ```server-java @@ -347,8 +329,7 @@ Client client = new Client() TablesDB tablesDB = new TablesDB(client); -tablesDB.listTables( - "<DATABASE_ID>", // databaseId +tablesDB.list( null, // queries (optional) null, // search (optional) null, // total (optional) @@ -373,9 +354,7 @@ let client = Client() let tablesDB = TablesDB(client) -let tableList = try await tablesDB.listTables( - databaseId: "<DATABASE_ID>" -) +let databaseList = try await tablesDB.list() ``` ```server-dotnet @@ -390,9 +369,7 @@ Client client = new Client() TablesDB tablesDB = new TablesDB(client); -TableList result = await tablesDB.ListTables( - databaseId: "<DATABASE_ID>" -); +DatabaseList result = await tablesDB.List(); ``` ```server-go @@ -414,7 +391,7 @@ func main() { service := tablesdb.New(c) - result, err := service.ListTables("<DATABASE_ID>") + result, err := service.List() if err != nil { panic(err) } @@ -436,7 +413,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { let tables_db = TablesDB::new(&client); - let result = tables_db.list_tables("<DATABASE_ID>", None, None, None).await?; + let result = tables_db.list(None, None, None).await?; println!("{:?}", result.total); Ok(()) @@ -446,6 +423,35 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> { A call outside the granted scopes or projects fails with a `401` error of type `general_unauthorized_scope`. The token works on every region, so your app never maps regions itself; use each project's `endpoint` value from the listing. +# Refresh the token {% #refresh-token %} + +Access tokens expire after 8 hours. When one does, trade the refresh token for a new pair instead of sending the user back through consent: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} +``` +{% /multicode %} + +The response has the same shape as the original exchange: a fresh access token and a new refresh token. Refresh tokens are single-use, so store the new one as soon as it arrives; reusing a spent token invalidates the whole pair. [Tokens](/docs/partners/apps/tokens#refresh-tokens) covers rotation in detail. + # Sign in through Appwrite Auth {% #appwrite-provider %} {% only_dark %} @@ -478,7 +484,7 @@ account.createOAuth2Session({ provider: OAuthProvider.Appwrite, success: 'https://example.com/success', failure: 'https://example.com/failure', - scopes: ['project:tables.read'] + scopes: ['project:databases.read'] }); ``` @@ -494,7 +500,7 @@ Account account = Account(client); await account.createOAuth2Session( provider: OAuthProvider.appwrite, - scopes: ['project:tables.read'], + scopes: ['project:databases.read'], ); ``` @@ -510,7 +516,7 @@ let account = Account(client) try await account.createOAuth2Session( provider: .appwrite, - scopes: ["project:tables.read"] + scopes: ["project:databases.read"] ) ``` @@ -528,7 +534,7 @@ val account = Account(client) account.createOAuth2Session( activity = activity, provider = OAuthProvider.APPWRITE, - scopes = listOf("project:tables.read"), + scopes = listOf("project:databases.read"), ) ``` @@ -545,7 +551,7 @@ account.createOAuth2Token({ provider: OAuthProvider.Appwrite, success: '<YOUR_DEEP_LINK>', failure: '<YOUR_DEEP_LINK>', - scopes: ['project:tables.read'] + scopes: ['project:databases.read'] }); ``` {% /multicode %} diff --git a/src/routes/docs/partners/apps/scopes/+page.markdoc b/src/routes/docs/partners/apps/scopes/+page.markdoc index add2aafbe2..71cc98fb66 100644 --- a/src/routes/docs/partners/apps/scopes/+page.markdoc +++ b/src/routes/docs/partners/apps/scopes/+page.markdoc @@ -12,7 +12,7 @@ back: /docs/partners/apps ![Scopes and targets combine into a grant that the access token carries and every request is checked against](/images/docs/partners/apps/diagram-scopes.avif) {% /only_light %} -A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:tables.read` by itself says what, and the user's project selection on the consent screen says where. +A scope names an action your app wants to perform. A grant pairs scopes with the projects and organizations they apply to. Both halves matter: `project:databases.read` by itself says what, and the user's project selection on the consent screen says where. Request the smallest set that serves your app. Every scope you ask for appears on the consent screen as a permission line, and users decline requests that want too much. @@ -41,9 +41,14 @@ Project scopes carry the `project:` prefix and map to the permissions [API keys] | Functions | `project:functions.read`, `project:functions.write`, `project:executions.read`, `project:executions.write` | | Sites | `project:sites.read`, `project:sites.write`, `project:log.read`, `project:log.write` | | Messaging | `project:providers.read`, `project:providers.write`, `project:topics.read`, `project:topics.write`, `project:subscribers.read`, `project:subscribers.write`, `project:targets.read`, `project:targets.write`, `project:messages.read`, `project:messages.write` | -| Project configuration | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | -| Networking | `project:rules.read`, `project:rules.write`, `project:domains.read`, `project:domains.write`, `project:wafRules.read`, `project:wafRules.write` | -| Operations | `project:usage.read`, `project:health.read`, `project:migrations.read`, `project:migrations.write`, `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | +| Projects | `project:project.read`, `project:project.write`, `project:keys.read`, `project:keys.write`, `project:platforms.read`, `project:platforms.write`, `project:webhooks.read`, `project:webhooks.write`, `project:policies.read`, `project:policies.write` | +| Proxy | `project:rules.read`, `project:rules.write` | +| Domains | `project:domains.read`, `project:domains.write` | +| WAF | `project:wafRules.read`, `project:wafRules.write` | +| Usage | `project:usage.read` | +| Health | `project:health.read` | +| Migrations | `project:migrations.read`, `project:migrations.write` | +| Backups | `project:backups.policies.read`, `project:backups.policies.write`, `project:archives.read`, `project:archives.write`, `project:restorations.read`, `project:restorations.write` | `project:all` grants the full project catalog at once. Reserve it for tools that genuinely administer whole projects; the consent screen presents it as full project access. @@ -71,62 +76,27 @@ Organization scopes carry the `organization:` prefix and cover what a user's org Scopes say what your app can do. Targets say where. Every grant carries both. -## The user picks the targets {% #targets-picked %} - -When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant. This is the default, and it needs nothing extra from your app. - -## Pre-selecting a target {% #targets-preselected %} - -When your app already knows which project it wants, name it in the authorization request with the `authorization_details` parameter ([RFC 9396](https://datatracker.ietf.org/doc/html/rfc9396)). The consent screen then shows that project for confirmation instead of an open picker. - -```text -https://cloud.appwrite.io/v1/oauth2/console/authorize - ?client_id=<CLIENT_ID> - &redirect_uri=<REDIRECT_URI> - &response_type=code - &scope=openid project:tables.read - &authorization_details=[{"type":"project","identifiers":["<PROJECT_ID>"]}] -``` - -Each entry has a `type`, either `project` or `organization`, and an `identifiers` array of IDs. Use this for flows like connecting one specific project to your app. +When your request includes a project or organization scope, the consent screen asks the user which projects or organizations the scope applies to. You send only the scopes; the user's selection is written into the grant, and your app does nothing extra to make it happen. ## Reading what was granted {% #targets-granted %} -Either way, the token response's `authorization_details` field holds the projects the user ended up granting. +The token response's `authorization_details` field holds the projects the user ended up granting. -To check a token you already hold, introspect it with your client credentials: - -{% multicode %} -```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=<ACCESS_TOKEN>" -``` - -```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -token: <ACCESS_TOKEN> -``` -{% /multicode %} - -The response returns the granted scopes and targets: +To check a token you already hold, decode it. The access token is a JWT, and its payload carries the granted scopes and targets alongside the standard claims: ```json { - "active": true, - "scope": "openid project:tables.read", - "client_id": "<CLIENT_ID>", + "iss": "https://cloud.appwrite.io/v1/oauth2/console", "sub": "6a150ace003bc4c2919e", + "client_id": "horizon", + "scope": "openid project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "token_use": "access_token" + "exp": 1784832895 } ``` +Neither value changes after issuance, so a decode is authoritative for what the token holds. [Tokens](/docs/partners/apps/tokens#validation) covers verifying the signature. + To turn the targets into concrete projects, list them with the token itself: {% multicode %} @@ -141,17 +111,12 @@ Authorization: Bearer <ACCESS_TOKEN> ``` {% /multicode %} -Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. +Each project in the response carries its `$id`, `region`, and `endpoint`, which is everything your app needs to call it. The listing returns 25 projects per page and accepts `limit` and `offset` parameters; a matching `/oauth2/console/organizations` endpoint lists granted organizations the same way. -A scope only works inside its granted targets. A token with `project:tables.read` reads tables in the selected projects and returns `401 general_unauthorized_scope` everywhere else. +A scope only works inside its granted targets. A token with `project:databases.read` lists databases in the selected projects and returns `401 general_unauthorized_scope` everywhere else. # When requests fail {% #failures %} -Two mistakes fail before the user ever sees a consent screen. The authorization endpoint redirects straight back to your app with an error: - -- A scope outside the catalog returns `error=invalid_scope`. -- Malformed or unsupported `authorization_details` return `error=invalid_authorization_details`. - -Both catalogs are published in the discovery document, under `scopes_supported` and `authorization_details_types_supported`, so your app can validate requests before sending them. +A scope outside the catalog fails before the user ever sees a consent screen: the authorization endpoint redirects straight back to your app with `error=invalid_scope`. The catalog is published in the discovery document under `scopes_supported`, so your app can validate requests before sending them. -The user can also grant less than you asked. Consent may drop scopes or narrow write access to read, so treat the `scope` string in the token response as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what that narrowing looks like. +The user can also grant less than you asked by deselecting projects or organizations on the consent screen, so treat the token response's `authorization_details` as the truth, not your request. [Consent](/docs/partners/apps/consent) shows what partial grants look like. diff --git a/src/routes/docs/partners/apps/tokens/+page.markdoc b/src/routes/docs/partners/apps/tokens/+page.markdoc index 6e40bf9a4a..45b7da94ae 100644 --- a/src/routes/docs/partners/apps/tokens/+page.markdoc +++ b/src/routes/docs/partners/apps/tokens/+page.markdoc @@ -18,26 +18,30 @@ Your app holds three tokens with different jobs: - The **refresh token** replaces expired access tokens. - The **ID token** proves who signed in. -All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, authenticated with your client credentials: +All three come from one call. After the user approves your app on the consent screen, exchange the authorization code at the token endpoint, sending your client credentials in the request body: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=authorization_code" \ - -d "code=<CODE>" \ - -d "redirect_uri=<REDIRECT_URI>" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "<REDIRECT_URI>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -grant_type: authorization_code -code: <CODE> -redirect_uri: <REDIRECT_URI> +{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "<REDIRECT_URI>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} ``` {% /multicode %} @@ -49,12 +53,55 @@ The response carries all three tokens, along with what the user granted: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "authorization_details": [{ "type": "project", "identifiers": ["6a357f7e001c7237296b"] }], "id_token": "eyJhbGciOiJSUzI1NiJ9..." } ``` +# Public clients {% #public-clients %} + +Mobile apps, desktop apps, and SPAs cannot keep a client secret, so they register as [public clients](/docs/partners/apps/registration#client-types) and prove themselves with PKCE ([RFC 7636](https://datatracker.ietf.org/doc/html/rfc7636)) instead. Before redirecting the user, generate a random `code_verifier`, hash it with SHA-256, and send the hash along in the authorization request: + +```text +https://cloud.appwrite.io/v1/oauth2/console/authorize + ?client_id=<CLIENT_ID> + &redirect_uri=<REDIRECT_URI> + &response_type=code + &scope=openid profile email project:databases.read + &code_challenge=<CODE_CHALLENGE> + &code_challenge_method=S256 +``` + +The challenge is not optional: a public client authorizing without one is redirected back with `error=invalid_request`. At the token endpoint, the original verifier replaces the client secret: + +{% multicode %} +```curl +curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "<REDIRECT_URI>", + "client_id": "<CLIENT_ID>", + "code_verifier": "<CODE_VERIFIER>" + }' +``` + +```hurl +POST https://cloud.appwrite.io/v1/oauth2/console/token +{ + "grant_type": "authorization_code", + "code": "<CODE>", + "redirect_uri": "<REDIRECT_URI>", + "client_id": "<CLIENT_ID>", + "code_verifier": "<CODE_VERIFIER>" +} +``` +{% /multicode %} + +The response carries the same three tokens, on shorter leases: access tokens last 1 hour and refresh tokens 30 days, against 8 hours and 365 days for confidential clients. + # Access tokens {% #access-tokens %} The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf.org/doc/html/rfc9068)), signed with `RS256`. Its claims carry the whole grant: @@ -71,6 +118,24 @@ The access token is a JWT of type `at+jwt` ([RFC 9068](https://datatracker.ietf. - `jti`: a unique ID for this token. - `auth_time`: when the user last authenticated. +Decoded, the payload reads: + +```json +{ + "iss": "https://cloud.appwrite.io/v1/oauth2/console", + "aud": ["https://cloud.appwrite.io/v1/console"], + "sub": "6a150ace003bc4c2919e", + "client_id": "horizon", + "scope": "openid profile email project:databases.read", + "authorization_details": [{ "type": "project", "identifiers": ["*"] }], + "exp": 1784832895, + "iat": 1784804095, + "jti": "d0fe924a1fe6113ba1bab1eaf631603d", + "auth_time": 1784803731, + "tokenId": "6a61f2f3c94806401116" +} +``` + Pass it as a bearer token in the `Authorization` header. The userinfo endpoint is the simplest call to try it on: {% multicode %} @@ -92,7 +157,8 @@ The response is the signed-in user: "sub": "6a150ace003bc4c2919e", "name": "Walter O'Brien", "email": "walter@example.com", - "email_verified": true + "email_verified": true, + "updated_at": 1784707579 } ``` @@ -112,19 +178,23 @@ When the access token expires, exchange the refresh token for a new pair: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/token \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "grant_type=refresh_token" \ - -d "refresh_token=<REFRESH_TOKEN>" + -H "Content-Type: application/json" \ + -d '{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/token -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -grant_type: refresh_token -refresh_token: <REFRESH_TOKEN> +{ + "grant_type": "refresh_token", + "refresh_token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} ``` {% /multicode %} @@ -136,7 +206,7 @@ The response is a fresh pair, in the same shape as the original exchange: "token_type": "Bearer", "expires_in": 28800, "refresh_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...", - "scope": "openid profile email project:tables.read", + "scope": "openid profile email project:databases.read", "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." } ``` @@ -177,7 +247,12 @@ Never use the ID token to call APIs; it only tells your app who signed in, and A # Validating tokens {% #validation %} -If your app runs its own API and receives Appwrite access tokens from clients, verify them against the published keys: +Your app never needs to check a token before using it. Every Appwrite API validates the bearer token on each call and rejects anything expired or revoked, so the normal move is to send the token and handle the `401`. + +Decoding the token still helps in two places: + +- **UX**: read `exp` locally and send the user to sign-in the moment the token expires, instead of letting a request fail first. +- **Your own API**: if your backend accepts Appwrite access tokens from its clients, verify them like any JWT against the published keys: ```text https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json @@ -185,42 +260,7 @@ https://cloud.appwrite.io/v1/oauth2/console/.well-known/jwks.json Check the signature, the `iss` claim, the audience, the expiry, and require the `at+jwt` type so an ID token can never pass as an access token. -Offline validation cannot see revocation. For the authoritative answer, call the introspection endpoint ([RFC 7662](https://datatracker.ietf.org/doc/html/rfc7662)) with your client credentials: - -{% multicode %} -```curl -curl -X POST https://cloud.appwrite.io/v1/oauth2/console/introspect \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=<ACCESS_TOKEN>" -``` - -```hurl -POST https://cloud.appwrite.io/v1/oauth2/console/introspect -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -token: <ACCESS_TOKEN> -``` -{% /multicode %} - -An active token comes back with everything it holds: - -```json -{ - "active": true, - "scope": "openid profile email project:tables.read", - "client_id": "horizon", - "token_type": "Bearer", - "sub": "6a150ace003bc4c2919e", - "authorization_details": [{ "type": "project", "identifiers": ["*"] }], - "exp": 1784737416, - "iat": 1784708616, - "token_use": "access_token" -} -``` - -Anything expired, revoked, or rotated away returns only `{ "active": false }`. +Signature checks cannot see revocation, so your own API accepts a revoked token until it expires; the short access token lifetime bounds that window. Appwrite's own APIs reject revoked tokens the moment revocation happens. # Revocation {% #revocation %} @@ -229,17 +269,21 @@ Revoke tokens when a user disconnects your app: {% multicode %} ```curl curl -X POST https://cloud.appwrite.io/v1/oauth2/console/revoke \ - -u "<CLIENT_ID>:<CLIENT_SECRET>" \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "token=<REFRESH_TOKEN>" + -H "Content-Type: application/json" \ + -d '{ + "token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" + }' ``` ```hurl POST https://cloud.appwrite.io/v1/oauth2/console/revoke -[BasicAuth] -<CLIENT_ID>: <CLIENT_SECRET> -[Form] -token: <REFRESH_TOKEN> +{ + "token": "<REFRESH_TOKEN>", + "client_id": "<CLIENT_ID>", + "client_secret": "<CLIENT_SECRET>" +} ``` {% /multicode %} diff --git a/static/images/docs/partners/apps/dark/diagram-device.avif b/static/images/docs/partners/apps/dark/diagram-device.avif new file mode 100644 index 0000000000000000000000000000000000000000..3652f071d4c70627f26a039fb7a4feb660fa4c3d GIT binary patch literal 24021 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/dark/quick-start-consent.avif b/static/images/docs/partners/apps/dark/quick-start-consent.avif index 2dec3a85e8ce785edd5fc9a3f9a13c36953877cd..574014a40d7677e717be91fc442d8ffea7ed0de4 100644 GIT binary patch delta 14638 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 delta 10605 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 Hy0Q9zZxyB) diff --git a/static/images/docs/partners/apps/diagram-device.avif b/static/images/docs/partners/apps/diagram-device.avif new file mode 100644 index 0000000000000000000000000000000000000000..e7580a0fd783e4f4e0316ee33d5dcfd3775a90dc GIT binary patch literal 24382 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 literal 0 HcmV?d00001 diff --git a/static/images/docs/partners/apps/quick-start-consent.avif b/static/images/docs/partners/apps/quick-start-consent.avif index 35f37ce20b5fd262646411ecfddc0429885a35f5..0a3fc7e3b79f025c2c5344a25e1207e72f82f246 100644 GIT binary patch delta 13846 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 Y(VO<;uhq4i&k$Y-Z9oiI-H#p7^iLerzW@LL delta 10764 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 K3|QTd9nticNc$52 From 56a82e194f62adcc595ae6452ab69f9676097ee3 Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Mon, 27 Jul 2026 19:46:49 +0530 Subject: [PATCH 33/38] Normalize optimize cache formatting --- .optimize-cache.json | 4674 +++++++++++++++++++++--------------------- 1 file changed, 2337 insertions(+), 2337 deletions(-) diff --git a/.optimize-cache.json b/.optimize-cache.json index 58c411bdf3..66baa620bb 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1,2338 +1,2338 @@ { - "static/assets/logomark/co-brand.jpg": "43b3e6e84acec3e52a627f9a19a530a7e2f148f002f06bddca933c8b3db0d32a", - "static/assets/logomark/co-brand.png": "bdbee41505fcc16f5d1b46e1f999857b330af42f0ad33b6d8daffc0f173387a7", - "static/assets/logomark/logo.jpg": "d814c71e13033fd8214c63781b84b173390b57debafe5a2e549adc0b7b7e845d", - "static/assets/logomark/logo.png": "8db57dc55ef3ed0623babf5ea7a94dcbe9ae99e18c759bf84326852434a1f961", - "static/assets/logotype/black.jpg": "ae432871231b591e4c991516b0210cd496e25bffebe387833135c8447ca28c93", - "static/assets/logotype/black.png": "a0f914500f2fdc013b1e1dce9d5ecabfb9fbc9f4136286e8541ba58792216986", - "static/assets/logotype/co-brand.jpg": "2c0753168982ac72dfca6fc9f1d9851411803c53eae5aa74c3cd569106192a84", - "static/assets/logotype/co-brand.png": "d93727f2abd173b1d4a02630c447e89cfe1441a78cf8b8ebb8b9c19d2318bd79", - "static/assets/logotype/logo.png": "8db57dc55ef3ed0623babf5ea7a94dcbe9ae99e18c759bf84326852434a1f961", - "static/assets/logotype/white.jpg": "8ae411a3f2a1dc1762848d5271a46c8509c42e653c9f84dbb5fc8bdef3c5408c", - "static/assets/logotype/white.png": "a6c0a516cafa38798b578597a50e1edc967494e986ee1a74e9170e3fa45c67fc", - "static/assets/visuals/auth.jpg": "a310ed768b63e73eb09452352ffa5a59638b4223aebbcaac80bdb232b24de64f", - "static/assets/visuals/auth.png": "6634419bdf4972706d08a03a148fbf2f0053377dca85ffd7d95ecc3e016a009b", - "static/assets/visuals/dashboard-screenshot.png": "931eec1e7232b5754684e2652999648f3fada876b3d39351360a5bb87008367c", - "static/assets/visuals/dashboard.jpg": "fbb2bae3d39f500337d6c4bca64ddaaea163a177ab3db77641ecd7050c43c10e", - "static/assets/visuals/dashboard.png": "931eec1e7232b5754684e2652999648f3fada876b3d39351360a5bb87008367c", - "static/assets/visuals/databases.jpg": "0de2e6b470f9903db803120d03e1b3abe21728802564d2702989a48128bd0abc", - "static/assets/visuals/databases.png": "d50ce8119e31f7b8099e9b98fe38a7066adcf421eb061756db900b5e60f257fe", - "static/assets/visuals/functions.jpg": "cb9dc9f434329949a8a0bd1302033e4106d4e6f16e05dada696529800e7236b3", - "static/assets/visuals/functions.png": "b7996d1c9270207489fef94aedbd75ac1e49d9b42123c2f7036257c63974dc29", - "static/assets/visuals/messaging.jpg": "a42131dff41bce5714237794e5cb330d595e723398371e63f044c99a872d3f75", - "static/assets/visuals/messaging.png": "5b43e5f9c9d6b75a92701196a13bcd82ede24e37d5d10ad9fdd2261deb7fe259", - "static/assets/visuals/storage.jpg": "82cd0fd62727ebad45e5a869fdbed54baa056db5461fb307711178fbbd60e874", - "static/assets/visuals/storage.png": "617f55240fa9a1eedfd8b61b6fe7aed384d51894514f144c147bed4b669c27c8", - "static/email/discord.png": "69bf5fc0d3973e75cea7a2e650428a7049e506dd5d3258854a20a59b379a063a", - "static/email/footer.png": "835d583d34cb72d573a0a99828ca505e34c4ab957cd3afdd44113f01031c4148", - "static/email/github.png": "d0175509e6e303c9ce8ea4610fdcebee1bdf3d46c8e153dd43352f91e7850a9c", - "static/email/x.png": "9a479c86458031bca300e710135983521929e008bf453915057b3c5590df7e6f", - "static/favicon.png": "a779da8b6e1ee4f2591c0058a34302ab027648f7ec064fdd223e66f4660df4e7", - "static/images/animations/mastercard.png": "71b0d7ddfe71903b697d8085864712c2e7f085c9fc9b9b22ca4424458ce3f7b9", - "static/images/animations/storage-1.png": "ddf90715a4d515b201ce5d97dad5326c4e9528375f865795c596aea4a55a9d02", - "static/images/animations/storage-2.png": "2a2d352a1c5370ad2b0eccfa56b24c03b09ea1255bd18d9e4f02835b3ab569cd", - "static/images/animations/storage-3.png": "4cdd2966f28e409e1f2bc8c7a178f74f6a486f0a0dd1f73b5585436001c27219", - "static/images/animations/stripe.png": "733874f3649fcdabf6a4bec92b6cbf8448c52785c11912ef31ff229e339fb33f", - "static/images/animations/tech-dark-transparent.png": "391da4ae4f6967fec8f1e11d186fc68838485ee9cc13e2e0914f052abfb20433", - "static/images/animations/tech-dark.png": "ea4081e1ab34551317074541a62dda8c10c71e8255382e5e955bdfcd13186bc7", - "static/images/animations/tech-light-transparent.png": "6dcbd4f1b4a627c0a6781db0567391c7487f7d6c45d091ec1d15a51e24e8a3af", - "static/images/animations/tech-light.png": "417a9173413b1b8f0e2b32b9c5dc58eafbc4c7dfe68068b41a20b3327ab22d76", - "static/images/animations/visa.png": "583ca129a0ad39d8470184a224567bfe3905348bd2af057f3d100697335e3258", - "static/images/avatars/aditya.png": "3ebc1876c64c2f0b5d37961b292211421169b7cf9e56cb42880de7e3d8394e26", - "static/images/avatars/aishwari.png": "39010e039821bd3ef5845cf38c8ad1cd8e256034136314d7300caf905479fc7f", - "static/images/avatars/ariel.png": "53fb1b13612e29a3930289f8cdc7cccb0259bad794cc622418e4586043e6e55a", - "static/images/avatars/arman.png": "4a5bfa2b79ba7c1e30b4478e433d9d3f3e62359f5c0f480c4053938ea739fa0a", - "static/images/avatars/arnab-chatterjee.png": "a29c833cf20eb1586cf8d87d02b65c2127bef49c897fa753da9007fa688bc819", - "static/images/avatars/atharva.png": "8e71be7d9607d99e4f1a2404b4a18662742d6c22b2cf7ac5e0866428615fbae3", - "static/images/avatars/binyamin.png": "dd5f2d3d9ee4c3bfec778e02bfd4fed977cf0002724cf3790fb3f737c6382f68", - "static/images/avatars/bradley.png": "fb84bc6d4fb67cadfd534afefaf9268bec238bd7c8d544bd26b205bef9852a7f", - "static/images/avatars/caio.png": "9617c053d3079225491d0d314ae84cfde03c91840bc2518fe999f85655b45052", - "static/images/avatars/carla.png": "1f307b4929c8b82331c0eedef41e2cc645610359bb93902d7963a8fe646dd004", - "static/images/avatars/chen.png": "d255d98ccc9388391b058ed6056532bdf74993c00b6182a34f0c979e66fde94e", - "static/images/avatars/chirag.png": "bfb7f9339880749b8850459587ebcff4f899243402c2ce09ad25edc53713d8c7", - "static/images/avatars/christy.png": "b8df189de17db2640955fe6552f626141d74289d14fdaa4acb02cebdaffbe0b6", - "static/images/avatars/damodar.png": "d9c95c30cd04477324dae2775513df3135498aff1b491bc869f633571c530b30", - "static/images/avatars/darshan.png": "1e78fc1d3b8b45e1d26703fb2371ec50df911105352f9f8aa573ffd0c7c93e81", - "static/images/avatars/dennis.png": "3390295ec0a763e5289004632afaef0c1fc44c74a0ed7d9cc120e3a31d77f3d4", - "static/images/avatars/dylan.png": "c92b77cb11a412b2f3bb91624e3c9fb42c5444882875ad7c693b14c83f0ffcee", - "static/images/avatars/ebenezer.png": "847eb062be6a6c9c82d0ad6e3b4077af517fd529c38c2b07ad3ec5c498e02ed6", - "static/images/avatars/elad.png": "94ef181aa73e627ecad3eaf94d03130da8f9edd39f2a57ff2fdb39d9964761bd", - "static/images/avatars/eldad.png": "556dcfdff5babae663891a702d78d44ef93baddde04588fe6218222e966de10d", - "static/images/avatars/emma.jpg": "1dc762ca4571ce93fe79a8dcad13f8ecdaee7bb40b4e3635fba08fe77b916984", - "static/images/avatars/emma.png": "32e49536e4d61d1b6cdf40fbe72227bf1218bccf2cc1f36c164489195c82b2be", - "static/images/avatars/haimantika.png": "c32f906690dccbe5208a322abd0946137999fd65de7cf325ae420386dc343b6d", - "static/images/avatars/holly.png": "21b4d551e5275d03212494ea59e16257ec66eb5d3c2a2176f7e2cee196a31961", - "static/images/avatars/jade.png": "477be82025d52e0b32c1c7f8c70ae605c16a315e768601ebb197e4b58db902ed", - "static/images/avatars/jake.png": "6a9640cf0aa2d15c23d4b454195ee84ff30e060187759547648f49178033b7d0", - "static/images/avatars/jesse.png": "99f96274279be20c2bf6c97feeef9f61b7fb8bde6404b4f2472cfd63b44f6cdf", - "static/images/avatars/kushboo.png": "b64531c4b946dfe64c542c7d400a431c8b6634b1bfafda5cd293ba14407a80b6", - "static/images/avatars/laura.png": "608a5ca230d0dbd4fbedac4c9f3b6203f1e70108c3da697d79e2f13a607d7d33", - "static/images/avatars/levi-van-noort.png": "42aa314246f4adde1a3db59b9e227f6f216fb99888be8e60b50bd3af7a66253c", - "static/images/avatars/levi.png": "10d2a7a99d47a969ed74aa0ddc014f985e3d3904f086e83abf56978482b2d8b0", - "static/images/avatars/luke.png": "d3945fa606673bcef524da2736fa27bc4a4ee75e8b188a80b1e7d511f4def350", - "static/images/avatars/matej.png": "5b456bf1472486f98610cb8f76c3aacc1fa413b8486b5b119639d2dacc700187", - "static/images/avatars/may.png": "b060895e3a13de66ba4834177643fec8ec700a18eaeee56d5d12ad58ff103f7b", - "static/images/avatars/nishant.png": "dbf79f4e543008e3022b7b3ef8bc446a001fd16f87396c68fdfb5ae65ae54158", - "static/images/avatars/sara.png": "d05b819fb0465ca5d1c2b40b3057c5376ed3c97d4eee484a7ceb79725168869f", - "static/images/avatars/shimon.png": "be4818ee829c4e53da05f21e2607ebd523d1361999670f811ab2e45624ddcaec", - "static/images/avatars/shmuel.png": "c14857b3aa115c841879d5e48c7b776c7afb74b728ddd3b9cd00f8a41034d610", - "static/images/avatars/snezhanna.png": "838adc665f3494e76b9144f645592da68f624b51a1158fdab647ce1acf2843a3", - "static/images/avatars/steven.png": "bfcd8524b034f6f23425a622df79ad7f219ebeeda514cfc47cffb64536b2765f", - "static/images/avatars/tessa.png": "25975c0b69dacc4d0f1e0a65372ebcbd96887187601fc879574a34ed2ad9cc84", - "static/images/avatars/thomas.png": "348a183298059975356737a9296a5676eeedd9ac739c044ad1e014933ee10e67", - "static/images/avatars/torsten.png": "347853ce5da6a1b3b2966ffcf099325950d43df123f6a8bdaf90b484f9fae9c4", - "static/images/avatars/veeresh.png": "c37fbfacec8d147c26308d5f654d748ce431af2acc3a05170321cf7facfa2b89", - "static/images/avatars/vincent.png": "492ada1a745fe6f5f94e8732a01d7e6b5b7b4d6dc6d7e1db92e024db5396874a", - "static/images/avatars/wess.png": "48590e95c7d515a00a4e6455b26e0069df0196c84ae8d0670886d6ae431b36d5", - "static/images/bgs/auth-hero.png": "e8b36120ecf4c81318aa6b1005008a563e5322aef9802d8397922f423459fc8c", - "static/images/bgs/building-blocks.webp": "1ab8f41e83b284ee1e32c920787df1b2baa6e284693f3752cbf94523d4005cfb", - "static/images/bgs/checker-bg.png": "2678e23dcba15db50efb6fcdc154031a683718ed33efc04bd5259ad7eac10d36", - "static/images/bgs/contact-us.png": "914ba3ac3d2cce181356035c34f68f9da58714ef4914dbcbb8bf0c700e849f51", - "static/images/bgs/diagonal-lines.png": "fec1ae8c3df19ce7ba7f04e02fd475e686ce262fad8b7ce22b82a15a1148aa70", - "static/images/bgs/footer.png": "3d5b8c35a456c1529d053ed2778d714a1f7158e1b65abe51b4b6b9bde85bfd95", - "static/images/bgs/hero-lines-1.webp": "42911ccb70af26bc6dab55a7e451ec41458b76e864a01d24595f04442d5157b7", - "static/images/bgs/hero-lines-2.webp": "7790166150c3aa1f8b10360d8cc6f633813c9f9e3ad312fa41b3c0aabb52cc5f", - "static/images/bgs/hero.png": "b8d88d3ebf9dd04d8a1e0adc930f96f8bbc3692a02f3891e6cdedbc2b71157ea", - "static/images/bgs/heroes-pre.png": "5035a999eb75a7f0a1930ad34ef074b9dc8be810933bac186f321989947c1d84", - "static/images/bgs/mint-gradient.png": "03c1db3d28c88ec91d2dc48430d2b90be488ec5e96384cd29fecc01f2d679591", - "static/images/bgs/mobile-auth-hero.png": "0f69086c12acf66ccd56c2a9d48f45127d7884ebd025350c77d25014eb4801ca", - "static/images/bgs/mobile-hero.png": "2630cd9ffe14f825d98dc7debe92536a679bc7314735e3ba56918a7837288b46", - "static/images/bgs/pre-footer.png": "15a941a19cfee8681d73efa75d30fad2274be8b1dd3dd315e01e44c936d324a5", - "static/images/bgs/purple-gradient.png": "2275600ef7cab3442e5ada9a8e934a08bb31589e73a2e797d6c0017fdd24e8ee", - "static/images/bgs/top-bg-init.png": "1bf31c08228a231ded0362965912efe3ad18c87382a7ca561140bd06bbed6168", - "static/images/bgs/top-page-light.png": "d3fc84ba8b77a424a32e83a20afd57231aaead5e0b2aeb07fadc7929df01d892", - "static/images/blog/10-best-mcp-server-client/cover.png": "4e970350fd8f90ac2d4fd4bb2f8fbb2b28772eb1b76f699b9da4f3577ef8026f", - "static/images/blog/10-git-commands-you-should-start-using/cover.png": "714e0283f3d41ab3c41f73be070008d877f4ef4f682083a11acf85dfd95f15ef", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/AppFlowy.png": "ec1cbd2af25df6cd57c5f592c8132b8b17cbcb536cf2df3172285a1a0292a0d7", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Appwrite.png": "18c1b713797acf348ced23fb67e1e52f06d6d0541b3193c39eb8996484910630", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/PostHog.png": "eb2b7e51ae96c60dcf9e65a24e8a6f71783723fd6c3547330bb5687294d02bc3", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Sentry.png": "f49408981ffc2a9cb1e02c286a8b6507c4e0936cd937ad00a74f7aa3d9777004", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Typesense.png": "9487a55e01fa138583067914b37c810103616147d31feaef7aa7a5aa25b8afa0", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Webstudio.png": "e73e63de846c31686fcb05c01c19f7117bb869ee7992326af3207c33e227f848", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/appsmith.png": "2e6208f9a3fd9b95b8a137e124c58fa520eb09662071cf209e3c8be1539a1ec2", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/cover-image.png": "fa50f1e9b1fec30f865891b8f1ae3106693c643dcd1d1efdf3b696863f88b64f", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/documenso.png": "f61801c225aed64160e33743377952bea17f6d064bb8be3aea47fb26b1e5df1f", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/dub.co.png": "737fb7140dcd99000f93a1f4e92cc004a5e690c10305d0bcc52b289349efc560", - "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/n8n.png": "e1e0be292f7a40346fe9b6fc1b386976976746dd67a96518bbb00546abe4a478", - "static/images/blog/15-git-cli-tips/cover.png": "701de0be53919ffbf09bca6e1f8f8f21491cb1238060058cc48e8bd55a266aee", - "static/images/blog/25-startup-ideas-you-can-build-with-vibe-coding/cover.png": "69e1328071e894cb70e28d4c0c4eaa8f9dc63b71612b8823e455006bec21e25d", - "static/images/blog/3-things-you-can-build-with-rust-runtime/cover.png": "fc603d24fd2ef803cb1cc81445ec990081c5cf69d5e7bf8143fce4595c2ed454", - "static/images/blog/3-things-you-can-build-with-rust-runtime/webhook-create.png": "b76d6b4fecf5a14960916338580437e5c7b3ded9b7838eb67dae50a048406c79", - "static/images/blog/5-MCP-startup-ideas-to-build-in-2025/cover-image.png": "deab6b0d8461c224bac8094872544cb4ba3833ea238f2f395f7b09ba928d064b", - "static/images/blog/5-claude-hacks-you-need-to-try-right-now/cover.png": "c144874bf9b2dbce69e1e56caaf6b8f6f8e00ea8c35d00ead7f77fd4602335a4", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/blackbox.png": "57aa779e54f0ca6874c92ab59f719b1a9f19c23bde32dae1984430f881d53888", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/cover.png": "b48e8c43ca1a95a0e645936552f5ac0a4a2db16fc5ee84848e5339b92024bf18", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/dendron.png": "9dcab1330d67d549b37bbd980ac9ae8a231dfc96dcf931303451df093723e781", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/error-lens.png": "7aa0d4b1ec7071b4db585f0536ea2e8c04af77dec1c7ea8ea44690db1e566e87", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/thunder-client.png": "4017e48f8c3641d140d26e7f7039c75367345b423f15ecf292cf0c99b25ca43a", - "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/time-master.png": "0088a67ba8de6544ba27961efa93b6ac3b2921f9edde18612133fc9339d73b76", - "static/images/blog/6-practical-ways-developers-use-ai-to-build-faster/cover.png": "df0d7e4c191e7209519f58ecc94cd4a9682d4ef2e99b74e5aedab7b9841206e4", - "static/images/blog/7-prompting-mistakes-you-need-to-stop-making-right-now/cover.png": "eea096934c726917cfa1686a6c23198bf70c4215191101302047aef440404dde", - "static/images/blog/7-steps-gdpr-startups/cover.png": "9894264a71940716de2ec5e09711834791ddd1c510dee9e5bf42a864343c5a2d", - "static/images/blog/7-things-claude-can-do-that-will-blow-your-mind/cover.png": "7bb98ebda77a4cc582b67e5d72db18ee32b94278d17a805ee9a94f1f459db741", - "static/images/blog/7-vibe-coding-trends-every-developer-should-know-in-2026/cover.png": "5831de0b500eb362127df7a21ea63cd27045ac7e9bb5df6a60332f5802d3d70b", - "static/images/blog/Behind_the_pull_request_Stories_from_contributors.png": "16d81aff97deaded8b03c33f4498d3bf6f8ec392fee8edff6dc273d0cafbd132", - "static/images/blog/Blog-cover-oss-journey.png": "0599716142966c9efc71769c4e3dfc4b3e8c0c7aa53eeff94a11dcd30e3bc245", - "static/images/blog/OSS-program.png": "b2cb73db872591b279e9b7ce87eb1c281732f394ef96a5d4e941ba3892924be7", - "static/images/blog/Torsten-GitHub-profile.png": "a1f7bf2d46428a5f3a9cbaddbcc262d91069f396ed8fb68f954ab3fd8862684f", - "static/images/blog/a-recap-of-init/init1.png": "446305a616f6ce3ec77b01e5f5ab5dbf0e68f32268a3d5aab7249fc055ff61cd", - "static/images/blog/a-recap-of-init/init10.png": "8f39e8d643d0630ced6f5c96a8bc9dbac72a7759e2e7caf7a09699f03566b184", - "static/images/blog/a-recap-of-init/init11.png": "77ee790eecb99b592884a2c55933011587b965a95bccafd9fbd6cbeec6f81416", - "static/images/blog/a-recap-of-init/init12.png": "60a45eea71b2be12f32c915d4b7fc327de91ccc4490749c81d0aa8d05728cf89", - "static/images/blog/a-recap-of-init/init13.png": "988ce8bb11fd3cc1a29fca01824e5f90e99ac7a1e3c50f439adfc1a68d7c7e7e", - "static/images/blog/a-recap-of-init/init14.png": "af908714adf0a4790a42cb9c7674b3ba46149160ef1c820df0359c7cdcda5c08", - "static/images/blog/a-recap-of-init/init15.png": "6f13f782e437636a8ca90c70a79c2d66337c11250bdf306cfa00ec0fa49f3590", - "static/images/blog/a-recap-of-init/init16.png": "b0b8d762c94f0cdf72add9e90baa25bc83a452975aa70558d2df6746671beed2", - "static/images/blog/a-recap-of-init/init17.png": "693a6ee0c7b846c46ee16472811a50f867ae108ed658386c75827ce1f7751985", - "static/images/blog/a-recap-of-init/init18.png": "d657858c546c3e49e77e0a56fd09e9af4f05a3622a95196574a9503e64a24727", - "static/images/blog/a-recap-of-init/init19.png": "e7e1362a4249a54be52a8f9417f1f7116554a1ddcacc5aee66b365742b933383", - "static/images/blog/a-recap-of-init/init2.png": "8f78ad7adc9e5c4bff50aee77e4cfcafad3216e6924710945f8a25a4ade94077", - "static/images/blog/a-recap-of-init/init20.png": "792c556e0bf74e3d5d19717b33045b4bbdb4fc88422b50d09038341c135c53f6", - "static/images/blog/a-recap-of-init/init21.png": "4de9ebfe6da0046d3c6c82941f8cf300edf10f857e688cf0d880045733e52e04", - "static/images/blog/a-recap-of-init/init3.png": "8dfa8b7a7f135701a4ea09f55185ffa52726251bebb99027ef7ed59301f22121", - "static/images/blog/a-recap-of-init/init4.png": "5608915eba19e986f580f3cd67ba6c4245e1654db04482e0b5c4fad379fc28dc", - "static/images/blog/a-recap-of-init/init5.png": "46c7b87e40c2a9ff2ee377bf27d571b769394488e585ed72077e536fa8f4b518", - "static/images/blog/a-recap-of-init/init6.png": "85302fbc8af72506d73a684039d10dda8d631388277c16bc656ef99c6d6a5d0c", - "static/images/blog/a-recap-of-init/init7.png": "21d2fd0c2d8798f63aa4616f345d8d8d4a9a867afa637fd142077edacdabfea6", - "static/images/blog/a-recap-of-init/init8.png": "91aabc506ae73ff96c779618da027175df52cb9a862deeae3f7845ecf51ae156", - "static/images/blog/a-recap-of-init/init9.png": "8b728ff8a2e11f4581d1d8085e034c05d84af51b6ca4641a06d157458cfb314a", - "static/images/blog/a-recap-of-init/the-recap.png": "70b602c6d257a1ddb0555b291849f595965b241d67609457edf9aade6c654989", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-1.png": "bea79f347ed5fdd63c7d16fc7713c63a7fd0cb30c9b498e005bc2fd92ca96a09", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-2fa.png": "08d07dc09065e7e1ca56a934342923ec2e15a7aaafb12a4b9bfff25c90eb41c8", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-db.png": "c4285105bb782c3ad4428a1ba689075ca3349068706f884e6494f2815f74928d", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-init-shorts.png": "837aa4e680afaddae417fe82b1848d13be732da927d71e878dd9dd41437472f7", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-messaging.png": "41c73ad7ccd604e68313463132df69af094b13b117049a66a96edce5aee64974", - "static/images/blog/a-recap-of-init/thumbnails/thumbnail-ssr.png": "017dfd647ae87c1c3c0a8e48471786c02f64be02836421afbf8ff63de86fe5d7", - "static/images/blog/accessibility-in-pink-design/cover.png": "b8789d83d6b9a75c1c42e85dcad8d6906d1333e416062f19e9a48343b6cc5862", - "static/images/blog/add-a-search-function-to-your-app/connect.png": "5ba269ae7c0e0705ca666327e755d59602e36938d7e935d3d6b8d26b3cd17a96", - "static/images/blog/add-a-search-function-to-your-app/connecttemplate.png": "2b1c603b64056b57dc1b342bfb1ecbdf97a2a4ba5c89c1e533b00af3bc8dcf6f", - "static/images/blog/add-a-search-function-to-your-app/cover.png": "993d12e0242b46c68201e508e99d93736464642a6cd1dedebddf37f25ea171d9", - "static/images/blog/add-a-search-function-to-your-app/functions.png": "1b109daad835f85ce163efa06f44349f01841b2d15f95bf21226dffc9e3460b0", - "static/images/blog/add-a-search-function-to-your-app/templates.png": "27c8f62073bf10b10759d6fde9edefd74528b618df2388f615912f1f19aac3f2", - "static/images/blog/add-a-search-function-to-your-app/variables.png": "80f4f5779fbdddd14cae121a022ce66e3d04bb573f5dd0b1d7f4ee9a0f1e40f3", - "static/images/blog/add-figma-oauth2-appwrite/appwrite-figma-oauth-screen.png": "7d77174bfa2fe88d0e1435a42a1c1c9c6575668c255dd9ccb0e02631eb4fc7d7", - "static/images/blog/add-figma-oauth2-appwrite/cover.png": "02817202a57df22bc6a66035646fee12b3e82e2cc3c492bc9b136197479a2fe1", - "static/images/blog/add-figma-oauth2-appwrite/figma-client-info.png": "dbf9bd52550f58b990a8685c4741b35b0f13af82b411046d310908aedbde9256", - "static/images/blog/add-figma-oauth2-appwrite/figma-create-app.png": "b539e1ef2a6e7604d89494820ac4f43354b425d8675491cae49a94b612e18e5b", - "static/images/blog/adding-url-shortener/connect.png": "5f0f0f5e6c271b7bbad30ae64314aa315c48fe383b45fc67eba2d3800c6365ab", - "static/images/blog/adding-url-shortener/cover.png": "0274174cedc2c2eda55f1839ae8ec8cd7efd79a824ee4d23840ecb1431e8e278", - "static/images/blog/adding-url-shortener/functions.png": "64e977705133028364f8336da706f59d6a3c672a9ea30d16034155c04198a89d", - "static/images/blog/adding-url-shortener/shortener.png": "170a82455ab8bc95ccfcccab0ce3bc7ae194caa79b03ff42a83ea7a921ed1306", - "static/images/blog/adding-url-shortener/variables.png": "9e5135356992986e0c68f84b75da7f71990d882283693d80ef1461ab209b5a84", - "static/images/blog/agencies-vibe-coding-client-projects/cover.png": "98bcaaf0efde370f4903c1f5448a7a0275c6759913825107d3fcede8a17e7fab", - "static/images/blog/agency-backend-standardization/cover.png": "b0f24c2e12e820e8707b1b63dcf11f7181752cd47d4bd142c36bbd29c5018f3a", - "static/images/blog/agent-native-backend-platforms/cover.png": "441fab2ce0c04df6b6569db19d33bd1cd9051614ea1dd7045db87a55e45d19c0", - "static/images/blog/agentic-ai-vs-generative-ai/cover.png": "fcda7c601879683cc380860c3a9403d8d6868cdc3bbf239cd74077f67df830aa", - "static/images/blog/ai-announcement.png": "255c23234eb3bfa441ec1c15939e360afa2127b7172ee8addbdb6c55c14bea02", - "static/images/blog/ai-crystal-ball/cover.png": "c0cb15a8bd1d0637447abf443145a8465f18b57493783187810bf6bd73eda272", - "static/images/blog/ai-crystal-ball/github.png": "238ed65c2ae5148055b51468a9ee440a8f09d26bae31ed49489904517331ee3b", - "static/images/blog/ai-crystal-ball/oauth.png": "b2eb223edbc8d15759ad8504f2af0af1a310bdcd128cad0d834c8dfb628a80c2", - "static/images/blog/ai-crystal-ball/openai.png": "e173bd8e0e5a23be2becd54677869a006d2a549f2736ba8d83f4bb12f337783e", - "static/images/blog/ai-docs.png": "e79a7c650086d5c54d00a6b41acefc8c6f7c8fb4af1760c6c17a7c2c5781671e", - "static/images/blog/ai-function-templates.png": "e6b8ef2c632c1fe92a14ff4b58b8be542f8824b8cae9fb2081d70cc175b5b36e", - "static/images/blog/ai-threads.png": "ee83e6ec3c2778db996c8557587ef8524e56f4d48d38dfb6cf00ae9030a3607e", - "static/images/blog/ai-vibe-coding-insights/cover.png": "05e455d9c7b07c4f8a0b1647435798ad2c6eba2adebcd5cf232bc32bb5de9a95", - "static/images/blog/ai-vibe-coding-insights/tweet.png": "4025c2236fcfc74d6435911a26239a8fef889005908ab83b6ee5f010ad3533cd", - "static/images/blog/announcing-2fa.png": "1df5ba12c2de318f858c36a3804b7170844cb74bdb73e1ea37895d674208b9e0", - "static/images/blog/announcing-appwrite-arena/cover.png": "3934fbf6ee24c468b715b1839bc49c335a47a68f7fc99a763b109b2446f97379", - "static/images/blog/announcing-appwrite-claude-code-plugin/cover.png": "334e890b32c20c3a4c7f0878b5908a71a518d983b15b6ee434f9dabb66ee8ecd", - "static/images/blog/announcing-appwrite-codex-plugin/cover.png": "6328e3c6089bcdbd7b9187b1e77b1b496a2d1e1a092f1375623fb2512e22c359", - "static/images/blog/announcing-appwrite-cursor-plugin/cover.png": "1a2dffe9876e72c571f24e46990b203b450b389afb0f0cf125fbd0e7eca4831c", - "static/images/blog/announcing-appwrite-daily-dot-dev-squad/daily.dev-squad.png": "c69fdc687770e5562097fb30bf3f82ba54d7208faae9805faf3677480ba73857", - "static/images/blog/announcing-appwrite-databases-new-ui/cover.png": "9318e0034f7c069246429429c08cc9f87032c34ad040c1f05f75449c4f28ffe9", - "static/images/blog/announcing-appwrite-is-gdpr-compliant/GDPR-Announcement.png": "794f946530f8bb04e844d92ee2ccb53a81e0ba61858ab015123304df69290a4b", - "static/images/blog/announcing-appwrite-is-gdpr-compliant/dpa-card.png": "d458c425437bac34930587234f8e239cd39217c9fcd04f135f4cfbecd90627d1", - "static/images/blog/announcing-appwrite-mcp-server-2/cover.png": "3596fcf4df169dd7297123d60826b8504a202d28bb874cd46ca86a87f42dedae", - "static/images/blog/announcing-appwrite-pro/credits.png": "285905e1fd8b8282cb45a4f2259debd851812c23665145d865e141f5133c0be0", - "static/images/blog/announcing-appwrite-pro/header.png": "ab709ff45870607ec4472bd4dc9e4a028e320bbfb89009ec04c98ec69248a15a", - "static/images/blog/announcing-appwrite-pro/pro.png": "01427f30610de4d6d19cd9160154d8849ffa75da04d063d12bf3e9bba481b4e7", - "static/images/blog/announcing-appwrite-react-library/cover.png": "db2536faba9c82ad441662e10bf69375c8f6d1716e151324e37b0a5bbca9ee48", - "static/images/blog/announcing-appwrite-rust-sdk/cover.png": "b5b69e19f4fc1ac5eb985016c1b058bb9ed308680197f315f3b9b861f3377310", - "static/images/blog/announcing-atomic-numeric-operations/cover.png": "9fbe339856b8040eb49fb01ca4353b5600609962ab8044dcfc34ffbe0e8a9738", - "static/images/blog/announcing-auto-increment-support/cover.png": "83a7b1dd0e31ae86e49fa873cde0b6c0319a552b27dc447b4a214efd7f3fd534", - "static/images/blog/announcing-bigint-columns/console-create-bigint.png": "21e815c2f7d297ef6f544c71f17680367391e35e36e809b3c71029397c6706d7", - "static/images/blog/announcing-bigint-columns/cover.png": "de0ec57085646427a552f35f0b1ab9a77f9e38b9b20801329ac19bc4bdb069f7", - "static/images/blog/announcing-bulk-api/cover.png": "78a0fdf3b54ce8412bf6be1880eb4a42bcac2cb04420045a60bce888c8999c6f", - "static/images/blog/announcing-bun-and-dart/bun-and-dart.png": "ea94af00a5c035cefb6474a9061441803db0160b7cc194fb5a71fbe05abf0d12", - "static/images/blog/announcing-bun-deno-runtimes/cover.png": "5c739aa57624b990174943108de2433dd9292798d9e488d01351d5f01eba7800", - "static/images/blog/announcing-bun-deno-runtimes/runtime-bun.png": "3ca689b349526e34386ac8dac25eb3ced20952c4493a85800da848a4e81fe319", - "static/images/blog/announcing-cname-flattening/cover.png": "3d79ccb4a7f1bac9e32e0456e31fe09f4475e87368e582591799445a7d4a6f3a", - "static/images/blog/announcing-csv-export/cover.png": "a330a6cc463d94635f905f5b48e6ee8b7c1b3f48b1c7ca0fada2e2b6f62b4ccf", - "static/images/blog/announcing-csv-imports/cover.png": "47b77b504bdb691afcdf7769b70a5edc610ad525364bff8747d813cc674d549c", - "static/images/blog/announcing-csv-imports/csv-import.png": "160d2eaa3aacbfc3dee93ffe909dafd848479079bf47cd4149fd915b2cd9b6e1", - "static/images/blog/announcing-database-ai-suggestions/cover.png": "2965424134174a486c7552ef8beda42ee0aae0d29e74816d6c711876b4b615db", - "static/images/blog/announcing-database-reads-and-writes-pricing/cover.png": "5c9557e393b07822a76cc1c2e20e759742029cd6a0c7623fd4a8085c364c49fc", - "static/images/blog/announcing-database-upsert/cover.png": "40839c8f5c28a5d78c2507f12e165ac8f176c53b81d8eb6b77b46d1c58f381dc", - "static/images/blog/announcing-db-operators/cover.png": "9e0adb9ac1849e40b6a3c30ab4923ac63d1f551be1003ecb9804e4989bb2cf3c", - "static/images/blog/announcing-deployment-retention/cover.png": "e6c59f73d83c1b88aed82a8974df97de83ab653241a5717f20b407809fa46ba9", - "static/images/blog/announcing-email-policies/cover.png": "3b62c98a38e16bbf4446624035e89e4ee2aba0af636c9ff32a0d2d5ab56d4e2c", - "static/images/blog/announcing-encrypted-string-attributes/cover.png": "f3d1d0a022771392019c760c6dcf88fc231a7f96d19e2eb61d89b3605e818463", - "static/images/blog/announcing-git-deployment-triggers/build-triggers.png": "c388a45677ff90b0ff5a651ea6182094a23ae139b4ba068585387dd8b6975779", - "static/images/blog/announcing-git-deployment-triggers/cover.png": "1de5b1715230da3858017c845decdf24f1d30270d851e0412a5b1bbd43fb8009", - "static/images/blog/announcing-image-transformations-pricing/cover.png": "dfdd070a46b5f8c66d7b4781cc3dc61faa10c80307882e206be0ff7d46ca77db", - "static/images/blog/announcing-image-transformations-pricing/usage-component.png": "e24a8b710ea5de5ee2fe7c2c4507f54dccb3530a602027fc7a4265d5fc7b6eca", - "static/images/blog/announcing-init-faster-smoother-better/init-cover.png": "bdb97596d618cfe366d946c49d7791e9bb37062b2033fa7ee6d21329ced5e58a", - "static/images/blog/announcing-init-faster-smoother-better/init-swag.png": "2894ba9370588ff92a0d94ddb410e1700ae368834391603f0bceadf57ac89fab", - "static/images/blog/announcing-init-faster-smoother-better/init-ticket.png": "fe4e16ef27d3fcba378c52882ce3458aab3f1de84cb183d39db577e5264ef905", - "static/images/blog/announcing-inversion-queries/cover.png": "232f806b8b655f469cb5398ba3abce2074e959d2fb49b9782b1889b22f1ee16e", - "static/images/blog/announcing-list-cache-ttl/cover.png": "ca1554dc34d1222b86ccc295252af8e07b2f635b9b10e1227a21fff81138e409", - "static/images/blog/announcing-message-based-realtime-sdk/cover.jpg": "00559db66e7c1333bc9b9acc0784fd4d6fb2fc7c4e1964e3cbb93e49640323a4", - "static/images/blog/announcing-new-push-notifications-features/cover.png": "a0c758cf6c8a95e09a0d2ca562b0775a50d34a4d691d675cda70e44ad21805ac", - "static/images/blog/announcing-opt-in-relationship-loading/cover.png": "e16cc16ea6d968b29af19bcd6274741141584a7efe5e1bb18be19b77c3a380c8", - "static/images/blog/announcing-password-strength/cover.png": "94fc2cb7da6fbe1427ff9e2b421ff52165dd07282dc13ee59a3b2403cdfa1538", - "static/images/blog/announcing-password-strength/password-strength.png": "a7be43cb33eb329eea4d62008d05426d9327cb6fe6bd3de47fa588db5db03458", - "static/images/blog/announcing-phone-OTP-pricing/cover.png": "598d55359ca4cb2b46846a8fd76b1f051be7c5f3199b50ffa92a28e84e5f3d67", - "static/images/blog/announcing-presence-api/cover.png": "9c3600d4014e5eecb59ea2d2e0d84c4ac52bf38357ad465f44631c9421bf5734", - "static/images/blog/announcing-projects-api/cover.png": "ac2de4ff48a10f1d306dd4ab55b9bf7463fc3f271598621aca7c955ba10bdc36", - "static/images/blog/announcing-realtime-channel-helpers/cover.png": "cbcffde3edfb77908566ff6361cb31bb1175d64bb1958a038720c52748dfa904", - "static/images/blog/announcing-realtime-queries/cover.png": "2e11ad5d30399bced1817ce0edb6d266cc57a70955d2102af173d26461c9bf57", - "static/images/blog/announcing-relationship-queries/cover.png": "7e615c0a9dcbb3949d5fb7ed71f36bb44de40ae67c8cd832b96ff5bbd4b0f451", - "static/images/blog/announcing-rust-runtime/cover.png": "a203fe2ef16c40592813ae7efb3c746d4250e68414c9b7d763893dae264f61d7", - "static/images/blog/announcing-screenshots-api/cover.png": "56555006946b9ead5cd4258544b6a9dda44bce6841706749f7539bc31356383e", - "static/images/blog/announcing-self-serve-baa.png": "b66eb0be9b323fb4b28f16218887a463bd1d45f7838c08d6d49e4822a6f95609", - "static/images/blog/announcing-self-serve-baa/enable-baa-modal.png": "b07c61f88fad334847c9c7c918511485fb85d682b2dfde5231f81925bc7475ff", - "static/images/blog/announcing-spatial-columns/cover.png": "b3e73629df86190fb06b715f4fe24aad473631538c1b3e78ae45cc8c5e7cd7d0", - "static/images/blog/announcing-time-helper-queries/cover.png": "0ee1d4d1edc65bf8fc3376b761b08efaffa55dd8ca84860ab3a9c34f7d78c25b", - "static/images/blog/announcing-timestamp-overrides/cover.png": "5bfc2ba16b8ca4a82188c0f67b300ed0a7f38b4abc04b06a10ee52b2832fa65b", - "static/images/blog/announcing-transactions-api/cover.png": "604a7721b7bf0a752460a721ffcaff10598abc5f398e7b16a8a58195c2ebf7ea", - "static/images/blog/announcing-user-impersonation/cover.png": "0d637f5d3a748e033945741a9e926a001b84c51854077ac5de4fedbc8801a40a", - "static/images/blog/announcing-variables-api/cover.png": "e8fb298d6e2ab46b4293eaf7d9414bd83fbbce421d4eea288d17d37f6a4f8fa2", - "static/images/blog/announcing-webhooks-api/cover.png": "a029dca7fc776d3d81ec0502a8fe3fb0d3e170e474a515b4ad9d61c9854ca745", - "static/images/blog/anthropic-just-launched-claude-fable-5-and-claude-mythos-5/cover.png": "45721aba1b005e1b02d2b585c69d3e48227bea22b8c7253aaeda2ce67bb79b1d", - "static/images/blog/anthropic-just-launched-claude-for-small-business/cover.png": "9b89a91dab0f56e4d49777ca4a370c558edca339e573c155d6c1838f04a1dbd6", - "static/images/blog/anthropic-just-launched-claude-opus-48-with-fast-mode-and-dynamic-workflows/cover.png": "0fba6f3f51a4fc24f02ac6c14b1f098277bd8a8d3e555c024b3dca0b29d20167", - "static/images/blog/anthropic-launches-free-claude-access-for-us-k-12-teachers/cover.png": "5af971e028a2acca04c08342ab035a422b5eea67367d0a71c33eeedac50f280c", - "static/images/blog/apply-appwrite-how/cover.png": "d23f45ced245b42c8712c021f5d2068c17aebd94fd049cb90222cb9647a41a4a", - "static/images/blog/appwrite-1-8-0-self-hosted-release/cover.png": "c15a9d88ccd16c2dc8333dc74e715e1f4a6c7818d3b4a05f4d68342eacdc0523", - "static/images/blog/appwrite-1-8-1-self-hosted-release/cover.png": "82f0a396c56b6b299b24133079acc6a317c66b2bf02fd91f4862bd3be0f8f373", - "static/images/blog/appwrite-1-9-5-self-hosted-release/cover.png": "f5958ba97aa507888c54c11ba156bf8a4e0643d129ed900ef1c83915efa31e88", - "static/images/blog/appwrite-1.5-now-available-on-cloud/cloud15.png": "a1df7388572a9f08d0e315e4b6bc8c9464c1418768e7efbec22758fd728eb970", - "static/images/blog/appwrite-auth-methods/cover.png": "361513d8b59de8fde7b294dcc6688aada30c46e11933070c529733e486784690", - "static/images/blog/appwrite-backups-and-restores/cover.png": "369b5d91f3dc515e7fb86588f8871aa5ffd788b40023e8373ac694840479c1ab", - "static/images/blog/appwrite-competitor-comparison/cover.png": "e0b98679795c00fd6d2d304b17273eaa6847bb1fc5706efa6cc3f3040ec6b4bb", - "static/images/blog/appwrite-custom-domains/cover.png": "f1f52235c259731f28241259c66e6e5f3b27940e7e00c9ce67b60e4afb572ec0", - "static/images/blog/appwrite-decoded-bradley/bradley-cover.png": "73577a2104024a2df85be14a397ca81f8f6130ff4206358b14547a9758dbf344", - "static/images/blog/appwrite-decoded-dennis/dennis-career-update.png": "0a99617d99b92c60ef9b3d168dd09dc8e7dae167c6d494d9f2f6a845134e1a67", - "static/images/blog/appwrite-decoded-dennis/dennis-conference.png": "67758d4b193af922d05ee1dd8744a289d2dcdfdf9e2630f19dbf06d62e66fa92", - "static/images/blog/appwrite-decoded-dennis/dennis-cover.png": "1aefbdea56590abf8f92e704701c377050e2a563afa091d510c0debaf74cac1d", - "static/images/blog/appwrite-decoded-dennis/dennis-github-universe.png": "58a764728bd71d6e90bd7dfe309d7bee5b0612893caebb846341bfbab1994a05", - "static/images/blog/appwrite-decoded-dennis/dennis-nextjs.png": "3732223a050f92649032de85b11f3d3977218f78d0dcfeede7e0eb28fd1220c3", - "static/images/blog/appwrite-decoded-dennis/dennis-post-devrel.png": "d71da9ffa335039e562499c1000452c79d238507d25efec55579d3e1b2daec3a", - "static/images/blog/appwrite-decoded-dennis/dennis-post-github.png": "62829cbf6620315aa2f4891537e093e4ecccb5e4c43a10083968bd465e618154", - "static/images/blog/appwrite-decoded-dennis/dennis-post-team.png": "e6b1af93423c70d8f1638c966c9f56ecc09217727007d69fce917be52fd80192", - "static/images/blog/appwrite-decoded-dennis/dennis-remote.png": "2a5de13c46c3b8df67d185613755b5a90a28acbc802e5093fdfd9f3bf75d6271", - "static/images/blog/appwrite-decoded-dennis/dennis-setup.png": "683ff78c30d532149f073bf4d63329c9d28f18fd68d32d1c3590f02f40ee76dd", - "static/images/blog/appwrite-decoded-dennis/dennis-team.png": "2893039d22a0d52395809a7dfa55486203361a375d78fdc5fc9722fffa8d2a1e", - "static/images/blog/appwrite-decoded-dennis/dennis-youtube.png": "81061f223eb44e511f027922d151d88efd79bacb15c84ee5a043059a3f43665b", - "static/images/blog/appwrite-decoded-dylan/appwrite-decoded-dylan-blog-cover.png": "285496008c68c0b8e46159ea94359d6a1a7aa211fbe223fef05ad8053d69d569", - "static/images/blog/appwrite-decoded-dylan/appwrite-decoded-dylan-camp3.png": "b288475553981758e0472397f378f73469558930e85e6e5a81eb6fe06ba0e4af", - "static/images/blog/appwrite-decoded-khushboo/khushboo-campus-expert.png": "3b54cddcf731709d09d7f23fd2860e6f86bc584e4057207a1f657810380a5e93", - "static/images/blog/appwrite-decoded-khushboo/khushboo-career-update.png": "4ac65853e056c1c9148ef593430aef17c5304078ebfc08bc60fa5a9ea73b1236", - "static/images/blog/appwrite-decoded-khushboo/khushboo-conference-appwrite.png": "2d414875a3e7d75bd63bcb74387f2d4b43dca1334f36eb0a92c9aca406a5b4cb", - "static/images/blog/appwrite-decoded-khushboo/khushboo-conference.png": "b7906f7a909fd249bf249adb3ac75c7e75cc861d86190b5f07aa63c69b85959b", - "static/images/blog/appwrite-decoded-khushboo/khushboo-cover.png": "af52011287a2113cef0fc23035e57dbfaf2921ca55157124035ae5fba416506b", - "static/images/blog/appwrite-decoded-khushboo/khushboo-git.png": "f1b210850be334121e5f6430e82297f8fb0d4157d6e427ca50b2acefba6ed205", - "static/images/blog/appwrite-decoded-khushboo/khushboo-hackathon.png": "8d0ee17bff1d19314a43a92392149839292870658db4ddd89d43d05fa20cb839", - "static/images/blog/appwrite-decoded-khushboo/khushboo-post-network.png": "db39f3da027fb77fc4ee2abe53003728f781ae3a746c07f9ce4c4d94dbf31bc2", - "static/images/blog/appwrite-decoded-khushboo/khushboo-remote-setting.png": "41845bb8f6db14149f392194c26a0033a9da9a4aebdf9fb4971a82957f42a481", - "static/images/blog/appwrite-decoded-khushboo/khushboo-team-engineering.png": "9df687c8c684808285b0ac011e1ff95d379996f2b066e91502f11fffb2a30db6", - "static/images/blog/appwrite-decoded-khushboo/khushboo-team-two.png": "ff3fb065a92750d3e70730da8e1650264ff6a71f1c082e68b98bee13082f3934", - "static/images/blog/appwrite-decoded-khushboo/khushboo-team.png": "5a0f3aed315760da6411f89f6d17ca5d84739fee661d472b91510930ff0936cf", - "static/images/blog/appwrite-decoded-khushboo/khushboo-tech-interviews.png": "c54715b658aa52f4c7139e7a1398b9a0e0cb55bcc3aa3dd9101f6164e0bd3379", - "static/images/blog/appwrite-decoded-khushboo/khushboo-with-eldad.png": "b358b6a53d2c5de662b7ddf66aeeb6886478d98c5585a5e2f7068422986cba60", - "static/images/blog/appwrite-decoded/cover-sara.png": "03ef95d81d475dde4caae31c0b442271c8ae904f8655013a2dfe2f8878b97e44", - "static/images/blog/appwrite-for-hackathons-build-fast-ship-faster/cover.png": "2bc48224d8baaad8cfd4eb5667754984e02bbe4cf941a3a52e110672672f417f", - "static/images/blog/appwrite-for-startups-ship-faster-without-backend-headaches/cover.png": "02e52496f4ed5a1526d16b7fd98e0b3b5ebc2ed8bcdca9cda84fe68609abb5d6", - "static/images/blog/appwrite-functions-guide/cover.png": "0f5ee2b51cc0082d1049be19ae8ea6e77f6082c6293a7df6406d53966043889c", - "static/images/blog/appwrite-generate/cover.png": "01770d4d6124b317a5103ced1d69b791ef0ce1f1e3a47e4b5072a5fd33c4953d", - "static/images/blog/appwrite-homepage-redesign/cover-image.png": "bc09d91c421f5967c8986eeaae6f7f001380bee686cd3371fd63a8392484647e", - "static/images/blog/appwrite-homepage-redesign/iterations-top-part.png": "713613e719366db8d271ab58815ce5f6db476c0b6a764ce53b4884ddd483f66c", - "static/images/blog/appwrite-homepage-redesign/new-homepage.png": "e58cdf775e1f23ab71e205e0a9d1f6a8573d6e55d673b1a6190be6a79e4e43f0", - "static/images/blog/appwrite-homepage-redesign/old-homepage.png": "78e71a9a71f59c9f872afbfca91eca73dcc932e25cd83ef22505d314d636a26c", - "static/images/blog/appwrite-homepage-redesign/summary-vs-deepdive1.png": "fbfed43d56afacb1eb3bbaffa26c002e4bd27a072d25783ae823de123b7d71f2", - "static/images/blog/appwrite-homepage-redesign/summary-vs-deepdive2.png": "9f18d02a03cfe1f5646e6b585bbeafde584d89cd8a55bef72f1137df73c47b73", - "static/images/blog/appwrite-indexes/cover.png": "176c9662476a854a6d5aa655b562ec761c8c14d31d6ed7ccbbeca1465301448e", - "static/images/blog/appwrite-magic-link/cover.png": "d69b6ee225594af2fd84ded6bf43275f8c9105d2610ab851e0cd0b1270989841", - "static/images/blog/appwrite-messaging-push-email/cover.png": "f2f338968087d91ec10d248d37d41ba36c91dce31eaa9bc6c69822986d82cf05", - "static/images/blog/appwrite-mongodb-partnership-self-hosted/cover.png": "46f60983dff4ce8ade2ac8be6823bfa296bd176381334516eb94506fa7b9bf80", - "static/images/blog/appwrite-oauth/cover.png": "43963cbfb499a3db937af52d822662cde32fb2a67bab2f7b24b16f7d24342c90", - "static/images/blog/appwrite-permissions/cover.png": "c63059c6f879d07312905807371fea29b23459cf757539956de4dc3bdcdc6d89", - "static/images/blog/appwrite-pricing-update/add-ons.png": "7f7cf75b41114b5f14bda99087e6d9a6d3b39667fb4fc4479389ae3b1a666fb7", - "static/images/blog/appwrite-pricing-update/bandwidth-project.png": "a34a4914fc6eff580267159cabc3110869c89c64bfd9a9ecb93fb3a6335060fd", - "static/images/blog/appwrite-pricing-update/combined.png": "e0bdc6025ca29acc57423acfa028a3324a3478937226a5e06cf2ef501a320e4a", - "static/images/blog/appwrite-pricing-update/cover-pricing.png": "6ebfc20da215e51653885c0bb186751dda9e56cd77722952203afabe97a48d3b", - "static/images/blog/appwrite-pricing-update/large-project.png": "05ef34992cd56650ee121ca00a2ad666b6b65971058c53043afb0ebbe5dccfbd", - "static/images/blog/appwrite-pricing-update/one-subscription.png": "70f5e8590a9fa96afb90ec24a20bd94fed8acecd07c2c342e08e0215a7c15773", - "static/images/blog/appwrite-pricing-update/project.png": "862597aa4be7cb9f4dedebc924432882708ff227ae7c2f73d74c1ef60f60049d", - "static/images/blog/appwrite-query-api/cover.png": "487c4f1c2d7a4e6c06a66afd5f87e63b5bfaaff34cc091e8ca4d6cc03d0bdbb3", - "static/images/blog/appwrite-realtime-with-flutter/1.png": "15165041f76b8d59f2f4313519a23d9e1a3820d8e1760b6394971babaa8b9709", - "static/images/blog/appwrite-realtime-with-flutter/2.png": "44740ca35567eb456c922c1af4a4a44a7e22ff3cd5c53e38e83e32518326561a", - "static/images/blog/appwrite-realtime-with-flutter/3.png": "c4304f0fa8c92e8a6b473e684139034df94ab2dc7732d1c9dccf9240a712f4f1", - "static/images/blog/appwrite-realtime-with-flutter/4.png": "ea7d6dd933e62fdbd3b1913ce50de91ef3ddc4173915425d5d4db56cb77aaa70", - "static/images/blog/appwrite-realtime-with-flutter/5.png": "49fe7599941b7f5702c310047d96ac6f664b498001cdd66a5ac335be96f580c0", - "static/images/blog/appwrite-realtime-with-flutter/cover.png": "99376d2cf9983874f7e9238dee186f5098c9b7a23d6f8ea3550d518580c8bb6e", - "static/images/blog/appwrite-realtime/cover.png": "db1c1110935b9ad2a5675e80242914ec38e919004011b0e1060c4d8bc93db5d5", - "static/images/blog/appwrite-server-sdk-vs-client-sdk/cover.png": "3b674e35218dc6f203824b8ee53eb367e79c33755f64a5456f290768ad5db96f", - "static/images/blog/appwrite-storage-file-manager/cover.png": "11698e50fb864b4ff99d850290556143b281a988c7fabd23c26b98f653b9b305", - "static/images/blog/appwrite-teams-roles/cover.png": "34f333eb8ec3ef92514f67d365850a2054e9c9990671f6647ea575533e2954d1", - "static/images/blog/appwrite-vs-auth0-b2c/appwrite-vs-auth0-chart.png": "bba9245370213f15d1d2066260b22a07fccc054b2847596ad66f57bd968e2d63", - "static/images/blog/appwrite-vs-auth0-b2c/cover.png": "97e405da84a457a567b552dea23f10e2e4cc5894e90c36d386efb414623a1d9e", - "static/images/blog/appwrite-vs-cloudflare-stateful-ai-agents/cover.png": "a24196757a99639dbc0c825b5be683107effbff5e85947fc15c5201c27258401", - "static/images/blog/appwrite-vs-cloudinary/cover.png": "ce7d9211396f334c7d165458fe07ffa5fa124dd3e1441e8c993fd60126adb04c", - "static/images/blog/appwrite-vs-convex-ai-agents/cover.png": "78cf998ed3d4e52c68cae3422bee3ded600669e4c5afac0dace39ba647a78824", - "static/images/blog/appwrite-vs-firebase-ai-development/cover.png": "cd47646f739766371a25b179f85558218efc0d2f3d26d9ce32efc92f72226221", - "static/images/blog/appwrite-vs-neon-ai-backends/cover.png": "3398e51226eff72303b6b13199bda8a57ff81258d80163b05b1821e53d0959fd", - "static/images/blog/appwrite-vs-replit-agent-backend/cover.png": "acfecd8d097efb3f59abd867ebfaf5ef9dd757d1e0bda279db070f2116276431", - "static/images/blog/appwrite-vs-supabase-ai-apps/cover.png": "3f38661cc9041201ca3a5f6dfd58d912584f0c5887003d4b73795b232f7d4e04", - "static/images/blog/appwrite-vs-vercel-vs-netlify/cover.png": "dbe40ef9cd2308555771129b95a6bfd7c7d6aa31fb88dab3a9071ad8a415284b", - "static/images/blog/appwrite-webhooks/cover.png": "3dfed85fb2fbe79c894b9f3808ba95a9533d9c3307879582e1e84d842e3d620f", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/1200x628-2.jpg": "18b6765fbe3676c49abf70a62571b368e54b8a1a492dc7117c72e36b708ca3e7", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Claude_plugin_cover-2.jpg": "ff663e670691d9d68e4d59e8194a2661ff7d8a37acd0d07ebb948314e5752708", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Image.png": "207e8acd544ebdd118f9aafb9d049dfa7fbb87868947d3df8b0fe86288848df0", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/LinkedIn.png": "1d765e0401ae5ba117d2c735cd77576b4e018cec2758587077f22da57917cf38", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Twitter_LinkedIn_Facebook.png": "1ff4ea62e7e51e03f86fa7aeb84787cf56046fd3d68f3745095794a6809e12bb", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/announcing_appwrite_mcp_server.png": "1460f7953971cd5f4da04118d16dfb90187e50b5ceef65b020562ef9a1172e00", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/app.jpg": "9dcbecfdf0a02f17e1ccc8126d220652c1820b1c451e13436b62b37f54a524f3", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/cover.png": "0afd1bbe27193389c7951b8ec4be470b79169bf9ad2c5f97b3dbe1e1eca82169", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/hhhhh.png": "86eabc07d32ba81802ad46cd4a4727511f3f47989796aa085be686cf2b4874a0", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/realtime_subscriptions_final.png": "26f3c24f5184967256bdf6f85d0c56b50eb106b6d1aa106588dd4941a24d4857", - "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/ttl_caching0.75x.png": "45102679260700d191c2c1827d248e6a6eb82840c9a9eddf4e359bdf03f7c6e8", - "static/images/blog/arena-june-2026-update/arena-leaderboard-without-skills.png": "f164ccde7cad0a8316104fea77d841b3b08d453b31489e00b383c1275b25e885", - "static/images/blog/arena-june-2026-update/arena-opus-4-8-detail.png": "4008cb53a904cdf919f0fe7bf8820f6c9b6f46892c6fdda3ea7157633eb89b85", - "static/images/blog/arena-june-2026-update/cover.png": "e6f5d1d1f405a7bf42499cec7a8044ef80ac7d5dc83ae81a3cdfaa5bd5913023", - "static/images/blog/avif-in-storage/cover.png": "23c26ec1a8f23f5bf6c55b19407d0738aa41cdc502dc3eef14a78f430a14447b", - "static/images/blog/avoid-backend-overengineering/cover.png": "c586c235dd6d3f992980748ec7b15cd3411edefe2e71dffc080840540f6d3ba3", - "static/images/blog/baa-explained/cover.png": "a7b144c7549498760cc2bfddda186b8182766ef72e308abc637dc4cbb5a2c853", - "static/images/blog/baas-backend-as-a-service-explained-when-should-you-use-it/cover.png": "e7ed4c0d0879bf5846206c466a4e8f00b201c8ea1961b368033ddd7095674941", - "static/images/blog/baas-backend-as-a-service/cover.png": "8679b01846d480f96a39a07dee1aa999428cf100388ee80fb6c026b042a90761", - "static/images/blog/baas-vs-custom-backend/auth.png": "c37a6f98da53fcaddba5c71fff4bbfea6d3dfd504e7c682fe0b812665c616084", - "static/images/blog/baas-vs-custom-backend/cover.png": "283bab3078862463b82b6d55654b50fa5034a3b0dc981eb7e6240b22c44ecf33", - "static/images/blog/baas-vs-custom-backend/database.png": "a8f57687f49ef08f87d52a0ea11fe1bde2ae0e86988d5fb7f67d0efa958d6746", - "static/images/blog/baas-vs-custom-backend/messaging.png": "54a574317afa9ed22728aa3e10aa1ca1157a29bdfea61909a5260ca1f79d4f4f", - "static/images/blog/baas-vs-custom-backend/storage.png": "6ed39797b1d5f67299c55b1be3944912860811564c38e849adb31a0d4a23ec46", - "static/images/blog/baas.png": "e5353595cc9c6c8037a7b9b3a8ff25552cb39f61a120ecb867c63de46f14aa74", - "static/images/blog/backend-checklist-vibe-coded-apps/cover.png": "266738e6cc39ad295a0e0a2bc454c5c99770fdf80015b5bdc76cc0d61d8cd170", - "static/images/blog/backend-for-claude-code-apps/cover.png": "d69e29230482959e7019ebce906ea32a3c69e7f9c0a7aa714914bc8d84b0ac4f", - "static/images/blog/backend-mistakes-that-quietly-cost-small-teams-weeks/cover.png": "c804b93ac334b4224c612fc5c177469f30a6a6e548db1c93e90fb95b35544bda", - "static/images/blog/backend-platform-longevity-what-to-look-for-beyond-features/cover.png": "234650617a90c69a898eb456ae2d807f3a1d0f627376ac6481074b24c1712196", - "static/images/blog/backend-platform-security-responsibilities/cover.png": "030e20752d00612ff677b28c2fd30665ed34fcd77ee80a6efa89d9d789cb9d94", - "static/images/blog/backend-that-scales/cover.png": "1d6ee39bc41387024bb9beded27137e7f135293c654add113ca9ee3fd4b8c9cb", - "static/images/blog/backup-encryption/cover.png": "4a3b2f9f2acc75681669c1dcefa407455e6f7ee29f2dc04bd4e9cae5f9d646c9", - "static/images/blog/badge.png": "2d1852c6f826d55c40cb848cc3813f25a4d3d982a6f56d2738c9e5b3d0ac9694", - "static/images/blog/best-ai-productivity-stack-for-developers-in-2026/cover.png": "d55d9f7e24e0283266e2ea605b8600bec85f42c9c43cd54be158c5865f31e53c", - "static/images/blog/best-backend-for-lovable-apps/cover.png": "579bcfe22908eee951880652a4075c0a26d34b661ab27e4f2c3708bdf717ceaf", - "static/images/blog/best-backend-for-vibe-coding-apps/cover.png": "ee1433142c86983c47bde8a99329c0a774ebe5fc8a530b34e1c3944053334a90", - "static/images/blog/best-free-hosting-platforms-you-probably-havent-tried-in-2026/cover.png": "2f9d3db69fdc1062457abcacb87a962cbf472a2e60acd59e17b84b96aaf90f80", - "static/images/blog/best-free-static-website-hosting/cover.png": "022f31c5c5897d77ccfbfc2149ee81ed6f8a7bbaca91b5c3c09cd2b2e9432450", - "static/images/blog/best-frontend-frameworks-for-vibe-coding/cover.png": "508261b8b8c5e3b27396c4e14e7a093f67c98060106068b8464b1f3f620b6397", - "static/images/blog/best-image-formats-for-websites-in-2026-a-complete-guide/cover.png": "e7190d4b8ebb3929cd3e92c365c3e2b4e95321b6ffce8f27d0082fe61d167eb6", - "static/images/blog/best-ios-android-app-development-platform/cover.png": "68aa7d27a6c8265fc254663fb470f4ae1a436a34b85a0c06faa0776fedcdb2b5", - "static/images/blog/best-pagination-technique/cover.png": "6c1cdf54285c0c181eb08f888d924e64919113d7d2fa85b24c8b5a44bd47e52a", - "static/images/blog/best-pagination-technique/graph.png": "f62bfa341f17178991d50d40e62ff0c928cf2e62da13bd14648fa6d00a07d3b9", - "static/images/blog/best-pagination-technique/graph2.png": "f255336a0b2352ab3665735cab0b0e7f8e0a4351c3fe020e793d3aa55a371394", - "static/images/blog/best-postman-alternative-options/cover.png": "c55b7135fda0f895563b0c6b751b879e0639bd42ad8aab8540f7b6de5735ecf9", - "static/images/blog/best-push-notification-strategies/cover.png": "18d7e0f8374ec092f1102180326600246bcd9c08ee0495f3d3adbe24f982e0f1", - "static/images/blog/best-vibe-coding-tips/cover.png": "31a4e02feaf78b71b1c76f2be833dc80fe719bd6541721954ac0cf50b31b8b7d", - "static/images/blog/best-vibe-coding-tools-for-beginners-in-2026/cover.png": "d80b4be2c2029b467b7483ff01e24060e7d8c39778bc00ca9bf65d20d6a20e5f", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image1-post.png": "13ee7fc9962455d1d1a9494ffd591291ccbd00fc4de26968365c648ce323c233", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image2-billing-tab.png": "db3b90b709f9fbd20ff9db59fbe821b143ee2a0403809a0d74601194967e8150", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image3-usage.png": "044df46b6a3474f669dbcbb62f73013b0a386acbf4c1bd05fae43adab25e0378", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image4-budget-cap.png": "dd554470a4f5043bb39433a97bcf33d4c6f40a9483247f10ff2ca853f8b217e4", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image5-billing-alerts.png": "c6fcae410d2151517e6c554886c28c8c85ccc2a3119174c8b798ef65b5ae385e", - "static/images/blog/budget-caps-stop-unexpected-cloud-bills/cover.png": "13fe5d58b6acf5fa8205ef72867f7cffe9411faa70d45418547098ace327f59c", - "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/api-creation-page.png": "a239ddbec8f14fc9ec8fb3dd4487f3b298d412ab13b4bcd12d052eb0cd43343f", - "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/api-key-generated.png": "caf216a983b539eae37a6aab6ddcb2b07e0206808f875858d977688a243a30a7", - "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/appwrite-function-details.png": "650b6f82df5bb6c3cb172e73c4d2457878db3c0fb61bfee68fca07882b9537bb", - "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/cover.png": "4b01192265ce2c7f160655b3453967e707c434576f5b80cbf771389e2da44152", - "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/google-ai-studio-dashboard.png": "92cd6273f5561e57926566c558b066dccc6fb2e65aff67bd718567104f1c818e", - "static/images/blog/build-a-currency-converter-with-deno2/cover.png": "388a10b55407bcdb9df395bc0d4f20a0a760c59d3d7bd3b89bbcd2ea3abd83a9", - "static/images/blog/build-a-currency-converter-with-deno2/deno-create-function.png": "7aa64a32c4561b745da0cea4bd3ad8b844c8e7023a11d72200dd68ce343e1aa8", - "static/images/blog/build-a-currency-converter-with-deno2/function-overview-page.png": "4c2546c93698fe0077445fa8dcc3f25d0c92306b53a5a14638e14ef6e66ef2ad", - "static/images/blog/build-delivery-store-locator-spatial-columns/add-store.png": "deb3e9fd3c914fe0513bdda21d22cdf31f206fe6bed285ac7b2655fffb6ab462", - "static/images/blog/build-delivery-store-locator-spatial-columns/cover.png": "86948c48d009185c30cf2a675c8fece7fc6c3b22dfc646a27578b3c33e9393d6", - "static/images/blog/build-delivery-store-locator-spatial-columns/finding-nearby-store.png": "1442700d6b7898860201e551a4ffd1dc44e0b0a14620a8565aad8f244c6c8210", - "static/images/blog/build-delivery-store-locator-spatial-columns/overview.png": "bfabdf4d66cbc2c4ee1649f503670f937a94d3e98741248604bf581f578b7786", - "static/images/blog/build-delivery-store-locator-spatial-columns/required-columns.png": "6e1c67910870fc24218d2cda88530632677a9f30e7f2c96ee48280679c299162", - "static/images/blog/build-delivery-store-locator-spatial-columns/two-stores.png": "71e48cf2a1f5a76960a3af85ffeb612206f32b6b1c5fcff3538c1e31ec0dadf6", - "static/images/blog/build-from-scratch-productivity/cover.png": "4c4ecd8ada862180acca285f8dad81fb33f079917ddceebbe36f77d35a0342eb", - "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cover.png": "8e1f4d60895bab2fb08bbd27c3bc478060d524743a1aa20246000fc5a7505b99", - "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cursor-mcp-settings.PNG": "f3aa10f8c2dfd84d824ece177c3c6d9c83469591f6e30d2f8379dce1a208b936", - "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/tanstacknotesapp.PNG": "9a3047c5e849c70d96a7df269e2453f0bd32321aafe26f1add43044d65431e54", - "static/images/blog/build-fullstack-svelte-appwrite/cover.png": "8546e5be90d6c7492366135c26594c57a9b0164b5cb410a3b6c28b3a5c58ff7a", - "static/images/blog/build-fullstack-svelte-appwrite/expense-app-final-look.png": "d375e8e6093e58a4d3e687f877c4536e5b753d0b16f5542524501366a65e2564", - "static/images/blog/build-fullstack-svelte-appwrite/permissions-document-security.png": "2921c151824fe91450f0bf2ac821b90a0ee7b533b6e6dc37d032cea68bcf5fef", - "static/images/blog/build-internal-tools-quickly/cover.png": "e04d776ed2b9e74c485ecef8f77920d9ae92cd4bc6875641b6ccc24e96712130", - "static/images/blog/build-personal-crm-sveltekit/cover.png": "7249afe9a63373551b51fdcd241fc448a8de30ddf86eb0ca48fc614e1877e074", - "static/images/blog/build-personal-crm-sveltekit/personal-crm-demo.png": "5cb8dd79c440cec12d28a6637a2e6ac1a8ac8ede790facbdab308fee10c01f9f", - "static/images/blog/build-saas-waitlist/cover.png": "9dcc46821ac78f7f756022ed953c6ab0c45fa0f02a7a685edd095afbc808c673", - "static/images/blog/build-saas-waitlist/project-overview.png": "041c3be8f8876509ea9b61819828b30652c83b324c8e40c693826adedf09aa11", - "static/images/blog/build-saas-waitlist/table-columns.png": "1f71eb0aef5a85618ca76739662da5c6b6279308859e0121907e39abe926e6ed", - "static/images/blog/build-saas-waitlist/table-permissions.png": "aa815a929fb11b5706da79b55ed49a392113417f67dc25a1e8013ea650242464", - "static/images/blog/build-saas-waitlist/table-rows.png": "3976d150154dd9a032bc418c5f9f08056f29b88562c2031e81772a5e5e132005", - "static/images/blog/build-saas-waitlist/waitlist-initial.png": "7d0555b2271360b3c2ca3235318dcf064940880b34162ac1135596af3220abb4", - "static/images/blog/build-saas-waitlist/waitlist-success.png": "022f75bb96281be2666c0597f14e43890a557b79ce110788287dada2d4cf7763", - "static/images/blog/building-a-production-ready-backend-with-appwrite/cover.png": "805c65cff935d555f01ed4887c46dc513d816c16bc056bb2a40c9af50316b8f8", - "static/images/blog/building-apps-with-bun-and-appwrite/bun-cover.png": "b716728404ff3e19902e7cd2302520d06bd2bdb7cd8cb0c2cad03c44734a6b75", - "static/images/blog/building-apps-with-bun-and-appwrite/bun-functions.png": "1748b4bc6ca448cfbb221ae0fe42e7c8f93f3cf17988e532fe1f277dcf6edc14", - "static/images/blog/building-apps-with-bun-and-appwrite/bun-output-two.png": "e71ed8d12f0494e510ec21f0c0969cae2e5afa32ee37a357dacd27d467151fa5", - "static/images/blog/building-apps-with-bun-and-appwrite/bun-output.png": "82ae71fa60f3f9e8afb0bd113377db3a6aee9b72d66c7d13c80ae8f48977b805", - "static/images/blog/building-apps-with-bun-and-appwrite/bun-start.png": "d61407ee01c19afbb58917196095050a314feff9e207438fa8fe1376f2c3b77d", - "static/images/blog/building-custom-auth-flows/cover.png": "37fc5d174a410a5b8ae51469876c737b0cfb7b6e5a4bda0a33e6e4130c7a6838", - "static/images/blog/building-init-giveaway-app/cover.png": "7bca74ffe592e2ddcf7dec3c8955801bc0a1138776b515600d82ddaa8d6e8798", - "static/images/blog/building-init-giveaway-app/discord.png": "7cade9cf9f5ce29a8784cf708cf4e8effd896622ebae27ea55bfe1d8459a8f64", - "static/images/blog/building-init-giveaway-app/signin.png": "bbbac7e132df35d68eb2ddc8f657206e46368422ddcf6ff1fb9cafe06a4b41ab", - "static/images/blog/building-init-giveaway-app/winner.png": "0916bade8aee31c8461a1656ec298b58dc1e586d2c85cd43271d4995f2f6262d", - "static/images/blog/building-snapchat-clone-with-presences-and-realtime/cover.png": "5983eafd4f37966994dca6ad5c198df964172b01623d3ffb84f1460e6eef2e1e", - "static/images/blog/building-with-ai-function-templates/function-templates-overview.png": "e6b8ef2c632c1fe92a14ff4b58b8be542f8824b8cae9fb2081d70cc175b5b36e", - "static/images/blog/building-with-ai-function-templates/function-templates.png": "73546bbb744b9b79ed308e22307ceb55b32f49bd82effa13a944b7d7885bc65d", - "static/images/blog/building-with-go-cover.png": "bd7e8f0fe775d797c7f7ba8bc07009bd2f4faa9a5937fc4fe039bb1c1fc1f40c", - "static/images/blog/bun-function-resume/appwrite.png": "d4a544fdf67bfe89e9bcb72c540c4491a751a06344c4157d04f15cc2c5f5c05f", - "static/images/blog/bun-function-resume/cover.png": "c6c473692e809ec23b554145999a06c31db60186b8bcf1801f74e19ec7673a62", - "static/images/blog/bun-function-resume/deployment.png": "03e1062edacad630ad93f0cb3376e382f69ee0169a4d445b338fe824232ea499", - "static/images/blog/bytedance-lynx-vs-react-native/cover.png": "a351660ac6f07ce0b6337dd1323cc79cfb4ca94c68fcfa95ccda01162260fb53", - "static/images/blog/camp-5-barcelona/1.png": "3b3b70c21a157e8f3e0cdcdb77b52cecd4ceffccd5b9bdadd3ec12bc035d3786", - "static/images/blog/camp-5-barcelona/2.png": "3537d587fdcd7ee3bcb970a04762d4c2a651f9f8713907255b9427889a78e427", - "static/images/blog/camp-5-barcelona/3.png": "66fb840dadb0b3390f3b2b68d4126174a57d2532af06221842448bac0504f8cf", - "static/images/blog/camp-5-barcelona/4.png": "d5bca4d42b2294a469640084e1a3b23e5da8c5e7b2bdee281e20f4c74da0e31c", - "static/images/blog/camp-5-barcelona/5.png": "964b3b9bab96e3525e7c7bd8e8d02eceb33f136001a6dc8116dba17b7b8af361", - "static/images/blog/camp-5-barcelona/6.png": "1596e8eab1aff7159fdb908b2a437509caa2a68fc97a3bbe3915ac50817b59eb", - "static/images/blog/camp-5-barcelona/7.png": "4f1c87b922c2b5cb627066f50f557ee6f64c6632b4d647db49cf02d0dc555fd0", - "static/images/blog/camp-5-barcelona/8.png": "af0875e9995d205531d42a67bb21f569e5cf677d5a00f3cfbb74280d001c36ac", - "static/images/blog/camp-5-barcelona/cover.png": "4e92cec8cca906399c57464576cbda5f549f7879eb6fe1bf84831d160a49a2f9", - "static/images/blog/can-vibe-coding-replace-junior-developers/cover.png": "741dc095303f9ec91572986452fc8ec3ce062acdfe2bdb84906fa7f58045335c", - "static/images/blog/card1.png": "1d21440fde0e1cf722ce4940919e38afbcf92acd96138e7c7009cd72c969bd5e", - "static/images/blog/card2.png": "b6dfff0e1e749f7e00e7e5f7d9652431d0b050f31955df346ed0a8f28257e89b", - "static/images/blog/card3.png": "71058e9e838ae8c10a1a99babe541a5898c6063c3ec73f643990d7e99042432d", - "static/images/blog/case-study-langx/cover.png": "e570ca2ab16141677460b730c452589ad50d9dec375c9e6c799173418eb05b3b", - "static/images/blog/case-study-myshoefitter.png": "d9c85d4eac33469e1de86c9d1a3293f4d6fc46ab92a32c4bee72180fdedd6c70", - "static/images/blog/case-study-open-mind/cover.png": "a21c67df888f3a15241c3f5f27462da0345d70af486dfd67902661c25bacc06d", - "static/images/blog/case-study-undo/cover.png": "190c899f9cca29df742d8b83af1ef169560c6431ff602ba62637c6653dd77f2f", - "static/images/blog/ccpa-gdpr.png": "e2cfbb043feca0a9f797868ec4fd90180bce3afd4fd0a79658c8f0d2383c202b", - "static/images/blog/ccpa.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", - "static/images/blog/cdi-cover.png": "41406404913c4619ec046d4268929ec3fc6b2a73db23fd9ccee37e1a88eb1ebf", - "static/images/blog/celebrating-1.5-contributors.png": "44f53c5a2db03d9cad17a2bc26a4f41074d10f4216bda95f3ab722d183d6b3e2", - "static/images/blog/change-regions-with-migrations/cover.png": "3d0ad2a650a18ee1a5303e3788c37b05dcefdfb931f47269def5f65a1e431f16", - "static/images/blog/change-regions-with-migrations/create-api-key.png": "6cba1af02bda6b0d340a2a9edca1e6219b9b987b19e63fe0c9716b00ce38b651", - "static/images/blog/change-regions-with-migrations/migrations-complete.png": "00c58a3d1e71defac9dd9e3a911bbe857bdc84dcdca6fe204ceb59a66846ff79", - "static/images/blog/change-regions-with-migrations/migrations-screen.png": "3787f0c461e8b9a595011fc6c2c7ef4fdff8fbf5333be5eff99f14816279fe73", - "static/images/blog/change-regions-with-migrations/migrations-tab.png": "eae736d3d71e0f2a34cc43acf2f0992273f08d2e1d3412f965818d3d6cde9f4a", - "static/images/blog/changelog-alert.png": "cc9310673d022150de98d93155b45f060aa6439c1dbfe24a6be022506e18139c", - "static/images/blog/changelog.png": "6e6ec12cbefaaeb1cad2f728b42ff1ae7bd75ed44ea3b3e6c74364001cf4d4c2", - "static/images/blog/chatbot-with-webllm-and-webgpu/cover.png": "6065c257169e4514ca0bb64147547e83faba2823448e5737b9ad1e898ad20eb0", - "static/images/blog/choosing-a-backend-when-you-manage-multiple-client-projects/cover.png": "20234ca83dce3242371dfaa77c53712e1302af849fda5608556e6e6b2cd049f0", - "static/images/blog/choosing-the-right-ai-database/cover.png": "b03deaf2b99a69b72b3e9db2821e465514734f2506439d55a5baaa5b6fef36f6", - "static/images/blog/choosing-the-right-baas-in-2025/cover.png": "cd270c87508c7bd0d1500200af97a80c2c4d33f5a248281819700d4c4af232ac", - "static/images/blog/choosing-the-right-database-for-ai-applications-when-to-use-mongodb/cover.png": "9fa9dcbdbed6746f75a4c6b0b270c4314c36d78f43524aef6e4dec4dce853f12", - "static/images/blog/claude-code-tips-tricks/cover.png": "df329d51541267d46b2b913c376cca27c7ddf12b6a2a36986d418ec41253ddc9", - "static/images/blog/claude-design/cover.png": "7530f6d1c1a999089f2a68038d6a17d9953435afb1535d09b462b485f77ce1df", - "static/images/blog/claude-fable-5-and-mythos-5-access-suspended/cover.avif": "f6c50bbd5f1eaabef50803b5b76792f8f5f7a2fb009ed8670a08cd9ad1f23971", - "static/images/blog/claude-fable-5-returns-with-stronger-jailbreak-safeguards/cover.png": "bfe441fb7c04a21cb431119065ae05f2c1b044d9885cba7ef3651290f2ff3bb3", - "static/images/blog/claude-mythos-preview/cover.png": "aea7b0c45c492939048fbf04a9b001b96c7bf727bcf7e5afc8274f84644dd35d", - "static/images/blog/claude-mythos-release-date-what-we-know-so-far/cover.png": "0197caa87f00bc03063fb2b1872052cf02733298b2991871852762f32fcfa202", - "static/images/blog/claude-sonnet-5-is-anthropics-most-agentic-sonnet-yet/cover.png": "15a3350966c037f6747c4b3626e9770ba4ee8065439702903ee3cde13a4573e2", - "static/images/blog/claude-vs-gpt-vs-gemini-for-developers-who-wins-in-2026/cover.png": "b931411d483646bcc79649dfc518e86fa4768504b13dbd3d03885c9a2bbde531", - "static/images/blog/client-dashboards-internal-tools/cover.png": "d758f2f517487e24037cef5b3e9036ade6c238cd2f216ef6c76ce5467c665d92", - "static/images/blog/client-vs-server-components-react/cover.png": "b7ae8b7614902c8b4dd7826d59cfdb36db9abbe27bde99b3deb69c4bf178f425", - "static/images/blog/cloud-beta.png": "7e44c7c7108d43bfcc77ba0c9910bfb14ba208bf559863d91610b29fc07da87c", - "static/images/blog/cloud-pricing.png": "2018d3cd01b12c289c3f66b780ff8518a13fc44da58efb19420fc67e367dc8cf", - "static/images/blog/cname-flattening-for-appwrite-sites/cover.png": "612a77f799df64b9407ba37f64ca4acf2f4772b5e883de00102b0b606b60e674", - "static/images/blog/common-appwrite-mistakes-and-how-to-avoid-them/cover.png": "c1d0620fa048cfeacdf4b55ebdc176acf3587e9effe7bc5be88599624c343f45", - "static/images/blog/community-pr.png": "112e1637eb62a95da227bb45bfe18a474cdd86b078877e21ae5ee57bfc959e29", - "static/images/blog/community-pr1.png": "22362832160073257e59cec48d4bea2bdd92139a6d1ee409c66a51cb1e2ccc47", - "static/images/blog/comparing-functions/1.png": "0c1add3fc0112aab08dc28188f8f997dcb20338e516db685284e6251145d5cb0", - "static/images/blog/comparing-functions/2.png": "658e15c287920d6aa010abcd5eaa6cd36650f4431d5f3c0989c9150c0bcad9bd", - "static/images/blog/comparing-functions/3.png": "36f8dad043afdb201890fdf3f49f9d8d69ed812b3f612446a776e1c99da7f7c7", - "static/images/blog/comparing-functions/cover.png": "83cee09e08597dcf1d93e04f5ebf4f169d99b3021f07d69218cea19fa52b3aeb", - "static/images/blog/comparing-vibe-coding-tools/antigravity.webp": "a05423ebf9f488d08ad3d20d5d22d3c0b174546d61d4decfdd3e5eb1396b064a", - "static/images/blog/comparing-vibe-coding-tools/bolt.webp": "76b9fd984623d864c158d9508efd8ab2320a36170df21b2ff520717a694033ec", - "static/images/blog/comparing-vibe-coding-tools/claude-code.webp": "603193dc5a1fd98084199216e647a8322842552065a5792453e371415e06771f", - "static/images/blog/comparing-vibe-coding-tools/codex.webp": "ec7fe0f0e6c91d9035a6cf0a48641079f875c47a266e25ca53186d68f92ee46f", - "static/images/blog/comparing-vibe-coding-tools/cover.webp": "143fd3d239b1b0266dcbcd0ff73d16de30f8cccfb5ac8900bcaf243138f3d763", - "static/images/blog/comparing-vibe-coding-tools/cursor.webp": "9e84aad6f33566158e0081c13d90f572fcb5393cf827317b9252542fb731fba0", - "static/images/blog/comparing-vibe-coding-tools/lovable.webp": "024fc114752e0d43b269832a8137d4f28cc745de1e4cf9ad41d7d25ffa6cbc4e", - "static/images/blog/comparing-vibe-coding-tools/opencode.webp": "19163ec98c957074a3b8417bdca2afccb29b5da35873729c728be058abe2bc21", - "static/images/blog/comparing-vibe-coding-tools/vscode-copilot.webp": "2b8af6ac485d06dc316f47ff9815425b63edea515350fcaf4aabb181ac860666", - "static/images/blog/comparing-vibe-coding-tools/windsurf.webp": "e00041c611e996acfdba4f8a9a74e5b5d3d5c82f76208eaa8bb34c7d1efa09f4", - "static/images/blog/compliant-architectures/cover.png": "8e50584cef01d5d9face2314212b6fddca6cd0428a02ba3da76d88dd9b4508da", - "static/images/blog/context-engineering-intro/cover.png": "c4169932b1c9cebb2bd73daa81173f42977bf006fc6a1847a81eac650cdd71b3", - "static/images/blog/contributions-2023.png": "117ff827b22f4746fb38377e997e180ec7eb0ef34ee21c6587e262b780e65c06", - "static/images/blog/contributions.png": "ed105301c5f55733963f958b4737465ee7580e7daa3b4a76f3aeef0c45863a0f", - "static/images/blog/contributors-16/cover.png": "b837ab849d3fc58fb08588322f88b73d6750ec8aa148c92bc92582b0b5e4b7b8", - "static/images/blog/contributors-post-1.4.png": "8ee8db0cb2118771db1d642338c1583d40bcf5e55ff3cb615d05d6ef45ac9b2c", - "static/images/blog/cors-error/cors_cover.png": "7cb80bacb7edebad6497cec23407f9ce2e5e5c76e6f9abc8b4a53bd840ac05f0", - "static/images/blog/cors-error/cors_error.png": "233a13bcbf4d2d6aac23a0ebf92c71c4442b3bea2848d9f927ea6ac38171ccce", - "static/images/blog/cors-error/cors_example.png": "2c033efbf55a6269bd5f70abdf4b72fb355276e96bc08b03f09aaa18604779ac", - "static/images/blog/csr-ssg-ssr.png": "cd07b21c221d97a59a9384aa86644886c27670f6d339d4f1696d331d93bf1e88", - "static/images/blog/cursor-3-parallel-fleets-appwrite/cover.png": "33061608299b5fb82dce8db7215ba78dec2a4ec78153c7cec4c8d8da19d833a9", - "static/images/blog/cursor-3-parallel-fleets-appwrite/cursor-agent-appwrite-workspace.png": "0d728a6011d81e166ccca1ecad4ba5abf3aa0835226146532b840b03a81d33fd", - "static/images/blog/cursor-3-parallel-fleets-appwrite/cursor-slash-skills-modes.png": "d9a7fae8bc996ef7522a9e8930c3a24301f29ecdc4d1d70cc5b62890559dd3a8", - "static/images/blog/custom-backup-policy/cover.png": "2fa12083bced8c44c2c1af68167ffacc8cf4332a46fb193355a8b4d5170b59d6", - "static/images/blog/custom-domains-with-sites/cover.png": "ecd4c9621a67621b3a785ddcb04ef15cc5d3858ce2d9062867fa8dae2b29594d", - "static/images/blog/custom-domains-with-sites/dns-records.png": "8acc1fb22263b50fd226c1ec2fb74957536545a20b6981d65037fe9f52aeaad6", - "static/images/blog/custom-domains-with-sites/domain-verified.png": "63db3b41d9e1b4ab24caf1f037f60b8530e91cb42ebf79a2949e03ed1a7da7bf", - "static/images/blog/custom-domains-with-sites/ns-records-namecheap.png": "e32379e593ce425ca16638474f94cb1ebfd5e488940bdc9abbf8565244206d72", - "static/images/blog/custom-domains-with-sites/organization-overview.png": "992a870d8037ca191f6933066ceb4458aaa697cff92b1375f059cb20f1116e2c", - "static/images/blog/custom-domains-with-sites/retry-dns-checks.png": "c7fa3092906d8808e76ca71798a4cbee8052adf9d745f31459f98cd14b160dc3", - "static/images/blog/customer-story-radar/cover.png": "17f4c901da2f03ba25a7e9b3d3d43978b41ebece2abbdc01d55da0bb6ad26fcd", - "static/images/blog/customer-story-radar/product-hunt.png": "21985a959b483ea0ca574266a387230805fa5ff84ace9bcc9357a0c60deba97a", - "static/images/blog/customer-story-radar/radar.png": "ffa66f12e5e421699f3205dc35ee943c517f562bf3ff32d2d69999f2d9e37b7c", - "static/images/blog/customer-story-socialaize/cover.png": "ee236e591013aab83781aed73f9f0509d5ba56b79e13443245a0ea95152eaa97", - "static/images/blog/customer-story-storealert/cover-menu.webp": "9b02dfa9d7275b6558d0afafea1947bacfcf06a5d4a72730ce69477ccdce2e5b", - "static/images/blog/customer-story-storealert/cover.png": "c0411c90b1f25560f1322f8918e55df28eea0c7d07931bcdbbf342e762923083", - "static/images/blog/day1-cover.png": "af9685568bbf61ddeef7ed8df237e978ef71d4c374157cc6713f3d674c97f25a", - "static/images/blog/db-operators-overview.png": "4c6b3e571a094db50eb8a6a146d1d582549d34188303df804dae58d0e198e7d0", - "static/images/blog/defying-the-laws-of-web-animations/cover.png": "8a5fdf6278b0cf77ab5f52966c1fef3a127687ae8f305c239a0db946d7fd261e", - "static/images/blog/defying-the-laws-of-web-animations/design_vs_frontend.png": "5127f23345f9adf61a2d40b1fcd87ef94e19d53d8f298335910fad90d4c0519c", - "static/images/blog/defying-the-laws-of-web-animations/excali_viewport.png": "1c06dc22ba78be5ed33c89ecb695eb69ad7d9f3ab62de9e0c422fd67b48327dd", - "static/images/blog/deno-2-appwrite-functions/cover.png": "685d3d81404ed700c347bc432f21e99ec2d1f0f6e9edc882f04a47864c7d8d4a", - "static/images/blog/deno-runtime-announcment/cover.png": "86efbfc1a7db90234cb4fa34d36a209ee29bf3ef8e7b1f13c6faa006a41afdbb", - "static/images/blog/deno-vs-bun-javascript-runtime/cover.png": "84bb0ae844699fb226884e4c81c12c59e73dc3329ebc338ce66f4905f553836a", - "static/images/blog/deploy-nextjs-app-to-appwrite-sites/connect-repo.png": "30f80a7b177317952bdfe21e048ccdca410af835c544313c60fac21c56fde063", - "static/images/blog/deploy-nextjs-app-to-appwrite-sites/cover.png": "ecd249acadd427fe945fb0a3fd7c18e3bd1cf135002550e6b08b3a4e466ea153", - "static/images/blog/deploy-nextjs-app-to-appwrite-sites/site-config.png": "3fe1a6f996a054988aacf5ca9c978dfb7dfdad92fe360c6438448719145e5a2a", - "static/images/blog/deploy-nextjs-app-to-appwrite-sites/site-deployed.png": "81392fcfedc93901d63c20b7ae1802dcf85819a5e3d6f8c1fb21a65c6bee75b5", - "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/configuring-site.png": "9026a7232d03adda7fc084b15c7b53692e42f8a656c9cc9167ae4e734616dd7b", - "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/cover.png": "4a35c5e6577c52a2b13413bdbf25e990084570816d511e7b420757296abfd29a", - "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/deployed.png": "c8359daee78412da75fb70b4ce754bc13c798861a89954267befd37f72b41bd2", - "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/repository-selection.png": "5b9b389682ba39f34b86771fed70c993aedf2d81590e4736714f98ca2ac4684c", - "static/images/blog/deploy-vibe-coding-projects-to-production/cover.png": "618b550db308fe15f9405a505f3751e714763b278f17efc6dcafaa1d0a7c89a9", - "static/images/blog/designing-init/cover.png": "069ffd2c62cada87502fbd35d1b3bdf39e38eb20168b8f2cf24cc58782e2d391", - "static/images/blog/designing-init/day0.png": "bc3321f6883469f86b05343b111469af8fa755517757da0c1a234e4c1d381783", - "static/images/blog/designing-init/day1.png": "d3ee8acf1db4a1a4e9985cc721db53a61c4bf59410751a24ccc453ad55c48d37", - "static/images/blog/designing-init/day2.png": "dd737e28beb36dbeaf7ec9e627e85795759896ceaac984e7788339b3f3969d79", - "static/images/blog/designing-init/day3.png": "33feb579c16a6712c091ed28975750766cd21c27c8ba18d868e043d1fdd1a836", - "static/images/blog/designing-init/day4.png": "3af102a73645a304aee50e907901f3ac3d2e78b25735bce561ef4539c76a4958", - "static/images/blog/designing-init/figjam-1.png": "7c6af487187c245a6f217b168e247248e4a960df4c9d91b1943f23b855410f72", - "static/images/blog/designing-init/figjam-2.png": "d8532267d730c50e40092c6c3ed289949a660f2aab6ea1cbd88f70aa8a224935", - "static/images/blog/designing-init/saras-pass.png": "7f78d3827357c80e3dfd345018dfd1598a6a3d4a478ac8dff31422e5b3ec7992", - "static/images/blog/designing-the-new-appwrite-website/cover.png": "5b4ce8f3ebe1cd8340796159567624b6c413a9c8e4d9f888f163c9e19c2fda50", - "static/images/blog/designing-the-new-appwrite-website/plans.png": "58c4cc17af8c58c0fada71c834828b68f3d7f8e3d97426397a1956bd645999f2", - "static/images/blog/designing-the-new-appwrite-website/wireframe.png": "0d72a156924105f9798d3db5631ae9b416694e1177632539cd751f8034778a32", - "static/images/blog/dev-keys.png": "fd979256158fbfcf5b30cd4375050b81f74ebb010fa147db2b01e5a626a8f3f8", - "static/images/blog/dev-tools-for-agencies/appsmith.png": "ff2b5572d9f825645ca23bddd6b5c981fc5ef9d80c5606013912972aa7792599", - "static/images/blog/dev-tools-for-agencies/appwrite.png": "a3c4e44a4762779938b2f2518276fdb36eea69af5664ab42429b797d55c5e27e", - "static/images/blog/dev-tools-for-agencies/asana.png": "68f3d3991d7147af6c070d0c08cbb7fb4f871f2383e4a347b8d789bcfd62db5c", - "static/images/blog/dev-tools-for-agencies/basecamp.png": "a8094546d210b2519590b393193b638da6d6d97382fe879e2fccdff56c935a2c", - "static/images/blog/dev-tools-for-agencies/beanstalk.png": "83be30d49702c15c443a344e86d68bd9675d038790aa067ab1a06e45ace537e4", - "static/images/blog/dev-tools-for-agencies/bitbucket.png": "a5fd7ce8d5e7b87d27250d29dcaaf33936022c9dd2b1ea9505cbefff5558b371", - "static/images/blog/dev-tools-for-agencies/browserstack.png": "16a158c41b8d439546e13ebf3301126d1631f2fb14c493dc545adac7c98d3af0", - "static/images/blog/dev-tools-for-agencies/clickup.png": "b37f5968070e44ee4d84ada70f73173cb7d0cc7f6f23a8c0d13376ef0f6dab08", - "static/images/blog/dev-tools-for-agencies/codesandbox.png": "5649e36c1195e821a1ff226062ef3f8e86b0d68aa0c18bf63aa7d745674dc551", - "static/images/blog/dev-tools-for-agencies/cody.png": "0f63148b2137eb3ca36a373c31d9c1ceb362a5024efc8ed8f33d14ce13f363c7", - "static/images/blog/dev-tools-for-agencies/copilot.png": "f379eeb52b3525f33dd7ed72578f613b128af90e0371196bd075b3ca3d683a15", - "static/images/blog/dev-tools-for-agencies/cover.png": "2ae16e3809fd3050c78d064577482ba88c61f5793379bbd23de90cae973ed9c7", - "static/images/blog/dev-tools-for-agencies/cursor.png": "926dda4154b080ae811e0463d87bb4b52c3ba67363481e53078837a729704673", - "static/images/blog/dev-tools-for-agencies/docker.png": "cbd95924323a18c4d831c56b662585d9cf43fe2e15d34b992e200de974cf191d", - "static/images/blog/dev-tools-for-agencies/eclipse.png": "e0898078f6a520994ccd032811555113366ab14cf87cb0be80978b1b76bd76c9", - "static/images/blog/dev-tools-for-agencies/github.png": "09c17177bfc678100c672dbab21263010a7fb22a053b77d4a0fc088c378e8c11", - "static/images/blog/dev-tools-for-agencies/gitlab.png": "44ba604037aa7ec3f0bf0e137e856a09808372d13d63bcd2e81b88be826f08b1", - "static/images/blog/dev-tools-for-agencies/helixcore.png": "d68f92613d0b7d3427c04ad143fe8ca654e35a2cf5a6073f633bf51f38d7b78a", - "static/images/blog/dev-tools-for-agencies/intellij.png": "60a5a1b741f38e2a45415a7d1ee27c28b417cc86a871c49af75c595389e4f2fa", - "static/images/blog/dev-tools-for-agencies/jira.png": "ff8611079fd1174ac21d6c0e95282154c2a29aa7119495d95fec0096e7602d8f", - "static/images/blog/dev-tools-for-agencies/monday.png": "d3607ad8ec63f99344c6163a3d07113f5fb84420f12b768ea20818a1d0241939", - "static/images/blog/dev-tools-for-agencies/netbeans.png": "f8bd6f361905eb2f7c3257db9c5842e4c6d4cda09208a4388c29cc1f587d39f6", - "static/images/blog/dev-tools-for-agencies/notepad.png": "bda5f3ffeefd3447baf76a179cdfcfcdc8e76a02fd3812326d09d85336f7724c", - "static/images/blog/dev-tools-for-agencies/postman.png": "a8405e69f06d8e6f38c1bd59ccc68259359c54dafda21370fe99c1ea5282186e", - "static/images/blog/dev-tools-for-agencies/pycharm.png": "d011d11467240d654b95dd3138dda3360e4e62665d3e2b4509a36931ead1188c", - "static/images/blog/dev-tools-for-agencies/replit.png": "eaa173187e3f1d123fc58ea9cb03ae4d455ec5c8a3b23f1d8e35ab23eb6b8dc1", - "static/images/blog/dev-tools-for-agencies/sublime-text.png": "95eb4b794ad5eb636cf7ac4cb74f418bbd8dad6832aa021daf9166351f4ab534", - "static/images/blog/dev-tools-for-agencies/visual-code.png": "05fcf210992a5a123f64cf5045a27e9b743b58acaf7cbb420bbc4e23078f9965", - "static/images/blog/dev-tools-for-agencies/visual-studio.png": "07947803583880c77e2f8dc09ce6591381c52ffb38fe50a4d73a20605abb680b", - "static/images/blog/dev-tools-for-agencies/windsuf.png": "d563f91db0ded50e17547665fc6ce2e33ef9e6849d23f0ca8881b38e227bae6d", - "static/images/blog/dev-tools-for-agencies/zed.png": "44a9336304da55de4854a26ba2e1b6702dcc83ee305e11688ef0edc21638ca88", - "static/images/blog/developer-compliance-thinking/cover.png": "9a216e9cc19ed44554c449be076751b90662c9a4cef517ac6289f87e8598839e", - "static/images/blog/developer-tools-appwrite/cover.png": "3732d963d6974d6081ef599fdd640076b77cd18aad17e78272dd9e622132c297", - "static/images/blog/did-claude-design-kill-lovable/cover.png": "55da44b0a3c30e7aa020d2537b228644009b23469e1736a847a22cb0c51db620", - "static/images/blog/document-vs-relational-databases-vibecoding/cover.png": "0cdc8978aae99cb9869111058016d2da5c53a62b3fce23a04fdb06bc3b967de0", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/codefence.png": "caadcb72963ac6b8c44eafaaee62256f196e98ac538704d5ffe3b8e98a1ef511", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/cover.png": "999da2f24dd158a723ffc6eaad743874dd72457fabdce0fdb3b207607aa1563f", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/overview.png": "6f93d726d965a06990b0692d6ff02747d0cd15d29816bff4d8141bc4d2dd0038", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/quickstart.png": "b262aea8fe3dbe692ddbe4c21cd8b9ba568c147b29d26fa6547ec7ea643c3bfa", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/search.png": "1376a135c6725a486ad3471a62fe17418e79f7c888f4acba16df7f8fc5a92d4d", - "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/tutorials.png": "bba6c4ec0f9db120a9bdac69a0e67b2ffd2f407b064a4cc57968df91b14b9c62", - "static/images/blog/easiest-file-uploads/cover.png": "9a89e694ca357194c1018efbc68fd75d89e1ac6824fec4d0e2a5257cb88e2dbe", - "static/images/blog/education-program.png": "d7d0b3d7e763ed14affeb50191ca15b7aa383eae4126c17917103e5be0d13ba3", - "static/images/blog/email-otp-auth-sveltekit/cover.png": "963be52d9cc5db346adea6a5d8b28dce4d2f3398473f969df3268feaf476fa7c", - "static/images/blog/encrypted-attributes-for-sensitive-fields/cover.png": "845912f31ba440b97c601988e9701169616f26e5cc03b11381fa5c996fb68ef1", - "static/images/blog/encrypted-attributes-for-sensitive-fields/create-attribute-modal.png": "98624e923be40bea0dad3246c7757f1347d290ce1046eeb97668000686b4b5de", - "static/images/blog/encrypted-attributes-for-sensitive-fields/encrypted-attribute-screen.png": "643804770a30a32f95925da6cc6e472162c637224b29e2ad576ce5477bbcbe40", - "static/images/blog/encrypted-attributes-for-sensitive-fields/string-attribute-modal.png": "2e36f1647ffaf95a21fa0dc0b905701a1b6e1e2fed415855b020be78e9df64f1", - "static/images/blog/enhancing-type-safety.png": "596a409a9bc6585a0170306e420924e1c818e7d477ff0e3bfa7a98c6987c63eb", - "static/images/blog/ensuring-security-amidst-xz-concern/cover.png": "0dae9e58ae845f2a38eecdf4564345a277bb89c5b410c5eda40ab77a1fa718dd", - "static/images/blog/enum-announcement.png": "21c2d2c26e93368f071071ab80264c01b4a417f1e0a50849d02e02c755c4b3a6", - "static/images/blog/enums-api-design.png": "53ede4432044b015baad949cc75fab6d3e1e4d4b1248dc8a061f91e7d31ba636", - "static/images/blog/evaluate-backend-tools-no-lock-in/cover.png": "b9aa16469eaa1391e202e2b8437680b0e43153367d748e09f300c70005bdf9cb", - "static/images/blog/everyone-can-do-devrel-but-should-they/bridge.png": "b0e7c6b9db43e8828fa702cde29d961c54e56f35b4f2cc77f4ec8278366cb991", - "static/images/blog/everyone-can-do-devrel-but-should-they/cover.png": "3158e08ba15aee405cbcd51a86aeb1c9bbffe949d7cae0a9d35a408993a05304", - "static/images/blog/everything-new-in-nextjs16/cover.png": "b8642d004e60051957f5495d3c4669f450e96810db8977e1bc9a3e10549835c8", - "static/images/blog/everything-new-with-appwrite-1.5/1.5-recap.png": "1d3c646f6902757152d98861630c1952631a54f222af7f8476f53f4d0d3c59f2", - "static/images/blog/everything-new-with-appwrite-1.5/messaging-console.png": "769b7df74c9107a5ccacfe87722293adbfbd91ab702c79b03838c2368e9971ac", - "static/images/blog/examples-of-vibe-coding/cover.png": "745d0e65c7981fe852b2e1797c3163cd4e4c147227b906cf305019137cb4624f", - "static/images/blog/faster-storage-uploads-parallel-chunks/cover.png": "4565a9b19b4cafad3ed9ca3f2d4c6e4437379c5d10de6bad64dc1fb85590e49b", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Announcing_Appwrite_Skills__Give_your_AI_agents_Appwrite_expertise.png": "f6556f4786b55f53d06ca4c1a74ce0e488fa898099bf6458cab3e525f0a05d54", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Announcing_Realtime_Channel_helpers__Type-safe_subscriptions_made_simple.png": "a937f5b617fcbaa1d8d6af38f061f132a7590b85f93b104ee22119e80d5ed6d2", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_Appwrite_Arena__Which_AI_model_knows_Appwrite_best_.png": "c6c4f0f36879e2c435850c8c53335f019343070f95ae37fa14a27212b90f575f", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_Realtime_queries.png": "0b632e9ceac3a763f5ba2ed50ab54fffe389fde34fcdfb7ad99599ec7ae83b9e", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_new_string_column_types_for_Appwrite_Databases.png": "5aa681d51622083c5a65407af76385634765a17959e501b862fd083bdb825cec", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Relationship_queries.png": "2d9772691f05b1be3ec6cb954d77babc10d5666c9994fe3975d2a078facc87b8", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/comm_recoggg.png": "207e8acd544ebdd118f9aafb9d049dfa7fbb87868947d3df8b0fe86288848df0", - "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/cover.png": "2865a738023403b258d20ea711ab714fd85f8a4371d58994376767e67803e785", - "static/images/blog/file-tokens.png": "23d2fa4a88db2d9548f43f95df15b5ca60d512481570ed2d1b3d66ce1b1f504f", - "static/images/blog/firebase-vs-open-source-tradeoffs/cover.png": "1be4185b4fa90c5f37e96003a74b8b55c31956d0258c70000fdec0990f2496eb", - "static/images/blog/first-pr.png": "f369419a756ccb2c784dac916d79a1cc33317fa4c43f37c7f41ae62bf0a603dd", - "static/images/blog/first-pr1.png": "256144fd88d0564c239cb73c16882113e4fe2cb23156fcbc4f15f6f70437faaf", - "static/images/blog/fixing-oauth2-issues-in-appwrite-cloud/cover.png": "011ea5d6b346fe8883e1acf8dec66a372781430b2a39b059e58f91fecf09c69b", - "static/images/blog/flutter-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/blog/flutter-starter-sites/congrats.png": "f2b1e6d44683a4fda454a9bac9202997a1ef688c45b74a16a0e0d814eb78e2fb", - "static/images/blog/flutter-starter-sites/cover.png": "918365f78e6186c0edbfde063c0a08e25d0b53f5b6c4b0157c7731b9e240646a", - "static/images/blog/flutter-starter-sites/deployed.png": "2947bdbc43fdd5b15842b2e03760a101a8e8475b6e483fc722ee21018aad863b", - "static/images/blog/flutter-starter-sites/template.png": "69e5c85c5aca44f280997792519f98fd7484bbfcea385679490eb46cce6d1976", - "static/images/blog/flutter-vs-react-native/cover.png": "d1e8c52af115da91ffbc449f87c029718cb875034eceb306547222a47c2d8718", - "static/images/blog/free-angular-hosting/cover.png": "59a27dfa4598c64a9f38413996916c8ec1fb1aa7b6e93c8c607fa2c622bb8049", - "static/images/blog/free-astro-hosting/cover.png": "588e67ef5cb8901ff2036bc0617d40ff6e4372004741c82ed4b068616404c457", - "static/images/blog/free-flutter-web-hosting/cover.png": "c70a94ed29e99afb07b5263dc0f1acabd84b92e1527dcc8a22153cf91cd31479", - "static/images/blog/free-hosting-2025.png": "1111d3b1b9734458af63fb35204c393d18b5d299c31321a3a563bcb1d1011144", - "static/images/blog/free-nextjs-hosting/cover.png": "ad0c18cae7bee745bd7dc0bd62b73c62629cf49551e2c7f38dacbce53a9960e7", - "static/images/blog/free-nuxt-hosting/cover.png": "e162e6f93dacf7d81cace9de016b0cacba31efa843231af3d6d57d62130a8d63", - "static/images/blog/free-react-hosting/cover.png": "9d3eeac6e93c5f81b2f05ffec3315898174d203fdc6c168353e9e3157c8f07a9", - "static/images/blog/free-react-native-hosting/cover.png": "314656562e2c558aed059c996108a420f8ab11539b84aa8eb3cec47c15f89d53", - "static/images/blog/free-remix-hosting/cover.png": "a3161619d6dbb099df307eb21b0300c0fe8191fc0c9634d28fa2cebb7d4790f4", - "static/images/blog/free-svelte-and-sveltekit-hosting/cover.png": "2875d70cbb2e77955075598b5217acd3ff5c34b212dd16dff3a588d92e202705", - "static/images/blog/free-vuejs-hosting/cover.png": "18edbe82f2d4b760990a09f3e58b871d993761b85a4a34107e9a8e7f6047786a", - "static/images/blog/from-prototype-to-production-why-ai-teams-prefer-nosql-databases/cover.png": "a994fc12b07f3fcc5e4d8770b355e52e6f0e20f921232087ef32b4214579174a", - "static/images/blog/from-student-to-developer/cover.png": "3c55e035f7bde3c7d697a43845440e401e1b4e759a9751ca3f4d3b7ef4039fbf", - "static/images/blog/full-schema.png": "a20b47b967eae829e663720a0eecdd36a3811278a644f918c91666a1c2c31252", - "static/images/blog/function-chat-fictional-character/cover.png": "f15bb7a3fea8b4f88faa72a0932877bd5f66d98baa16650d45eb052d177176dc", - "static/images/blog/function-chat-fictional-character/functions.png": "7de7beeb4ebffc840db35fe1277fcf339ada031062ce608b0394f47e2a2b93d0", - "static/images/blog/function-chat-fictional-character/http.png": "7de574fe155766f618ac17383557a0b681a66cb3b602c76be6ed4a69c094747f", - "static/images/blog/function-chat-fictional-character/openai.png": "1f587ed8d9aa0370169e8592e408087595335eb0deea7eedd75612c5cc51724d", - "static/images/blog/function-chat-fictional-character/prototype.png": "0b3c262355c96a6cb5ea84e70bab82d79d7c761af647fd3815c5e9bb07c51408", - "static/images/blog/function-template-prompt-chatgpt/cover.png": "25267f259f462620f56aed6787d3883221b5c68cfe495cbea20774f690f06ab2", - "static/images/blog/function-template-prompt-chatgpt/domains.png": "7fb032775ad2307fc6d0e8a0baaeef861fc35d8a2f4519f7100c31ea47d84931", - "static/images/blog/function-template-prompt-chatgpt/openai-api-keys.png": "b7b758b3b356db8d22887863078bfa5772318e3c498d99e00e449e94cb6067d2", - "static/images/blog/function-template-prompt-chatgpt/postman.png": "eebe7254df010062741c630d098e74a934f2f8b84b426fc3552003b4049d468f", - "static/images/blog/function-template-prompt-chatgpt/templates.png": "49cc4ee7731ee99e2afcc8f4fe175697716ea4bc6ad5c795268bf4eea3c8c05f", - "static/images/blog/function-template-whatsapp-vonage/api-settings.png": "e9a91ce8f30470449f99ba71f18f2474401fbf9cdf5f5370eba4d4111c886b69", - "static/images/blog/function-template-whatsapp-vonage/cover.png": "f5f429b5b7e83dbbcb89d78e5713cc22859602a05dfe0c617ae9c438a95afb9f", - "static/images/blog/function-template-whatsapp-vonage/domains.png": "e51043bde13e44aab3517e738b5b6581579f4fa24bf70e3a8b54b3a4c1dc5fb9", - "static/images/blog/function-template-whatsapp-vonage/messages-sandbox.png": "99693967383fab64adb7e3983afec5944de117b96d7c0dda1a924fcb7474fffb", - "static/images/blog/function-template-whatsapp-vonage/templates.png": "a9d6de7ac36c82fc55965c69fbb5801f1b0243c4e413d2e46a8ab8cb1b182697", - "static/images/blog/function-template-whatsapp-vonage/whatsapp.png": "dc1840e491016d32ddbd58c5251daf54b19a5e4f46eac7376289c39db8ae1d1c", - "static/images/blog/gb-hours.png": "bdb4c05497abf91a48ba8a3458c975c5ecc0078358faed8b64d59e183315aadd", - "static/images/blog/gdpr-mobile-apps-guide/1.png": "d3521c227ad9fa7fce40e66caa3e3f5fc982cf95086c590cc0a326031f6646d5", - "static/images/blog/gdpr-mobile-apps-guide/cover.png": "11d53b8884d5ca45e7d9ba8fb904633795886d30cff6cc06a6af6b9fb7d1225f", - "static/images/blog/gdpr.png": "e253390207e4d3e0ff28d3a4b94bee549aa6c8dc040bce604f5c6ff746dd9a1b", - "static/images/blog/gemini-3-5-flash-deep-dive/cover.png": "6b9257a7ba879bc37e7f81ca7d5c014e8760260dfd0d53d089016ed5c2f27f39", - "static/images/blog/get-inspired-for-hackathon/1.png": "bdb21244945f4c483d23f84e5c429f548a45047a34d24d9c7f263cfca951ec3e", - "static/images/blog/get-inspired-for-hackathon/2.png": "cec920ba9aa9996041e2b9134c52fdb09f91db307035334d458e47f6f116146c", - "static/images/blog/get-inspired-for-hackathon/3.png": "87d6484adbe6049ab39bead992ffb57ab13bf1e1b3157b736f0bb5ad3ef1dde4", - "static/images/blog/get-inspired-for-hackathon/cover.png": "6d912323fb3097b452a586fb385a1e952013720b2f9d55cf1afc18800015c5e6", - "static/images/blog/glass-elements.png": "1f9ce71178f56a66e9e0111bb4f3b356c3a41691d4679114ada713ddbace079b", - "static/images/blog/global-community-2.png": "b4b155d3f7eb9971ac0821b93f642abf05f9683b02c3c685d3000598f6429a4d", - "static/images/blog/go-cover.png": "a714e0fd56a624e22c098969307a634930159aab90a7e4b6dcc8db3233450268", - "static/images/blog/go-function-benchmarks/build-size.png": "aa7c2120fc77df885824ae78719953d4d6d0fce9a7baf0b5382834e24059ed3b", - "static/images/blog/go-function-benchmarks/build-time.png": "756f295021ba284df18aa3400d4b965a0bd7edf15f0e790631fdfd1372a03c2e", - "static/images/blog/go-function-benchmarks/cold-starts.png": "6ec084914d17486c29932edd64503af0cb7cf1089bf9f79772533534d3d1dd51", - "static/images/blog/go-function-benchmarks/cover.png": "89a0bf5b5eb936d8d310d119f4355370ed6462d73ca00125e4708b374cc5dacb", - "static/images/blog/go-function-benchmarks/memory-usage.png": "22057218710fbccb992ec999bd7ada70c6b66feda72a4e9ccfb973ebf3274849", - "static/images/blog/go-function-benchmarks/requests-per-core-fibonacci.png": "3e3b9f664586487d4d7563e7aa114be93020b233686c63095019ddba93e22133", - "static/images/blog/go-function-benchmarks/requests-per-core.png": "d1115cd58c882ca0c6462f2fa04805d4cea2c34eb766960f912e5d4eefb6bccf", - "static/images/blog/go-function-benchmarks/total-requests.png": "c9808b40b07f216e5e2436ec85d26a29df819f0546e87892e58c43e5752940f0", - "static/images/blog/goodbye-plaintext-passwords/cover.png": "484932aaa63fd9192bf10276586f2d0aa5bf4bb32e305dfd1a421e2a80c3fc2b", - "static/images/blog/google-oauth-expo/cover.png": "1b544f1212ae16557e69c10b03f34e33f62ce61d0056929278325d9e7b5c9942", - "static/images/blog/google-oauth-expo/login-screen.png": "f70d5c07790bfb2a87ada0aea5cfedd4ce7fa75124c3521422f98e8df9e6434d", - "static/images/blog/google-oauth-expo/login-successful.png": "441ef69e3ba8716c4ff4c20dc8c31f8f3f418010a11ff1e74585645bad414f74", - "static/images/blog/gpt-5-5-launch/card-problem.png": "9cfd1fa44c5f8d76a54904d1e656595f1580721d498952a96105dd6f9ddc82fd", - "static/images/blog/gpt-5-5-launch/cover.png": "768138556cc8a3c1645ff1c602ea1ac5ba2eb373f8f642d2c023e6380950ec08", - "static/images/blog/gpt-56-is-here-openais-efficient-frontier-model/cover.png": "2156c5047fa2630e148ea0fd5189c4d08579b5c96e92530c4ae45b642acb6589", - "static/images/blog/grok-45-coding-model/cover.png": "b40f87952b940767f393a93a7628f8277119862a3a3ac7b7d40d7ee5679213ff", - "static/images/blog/grok-build-open-source/cover.png": "b6550e801f952ba0446227c7f9295d3e5beb12e5d7f9e62547c5a3ffa78e674f", - "static/images/blog/hacktoberfest-2023.png": "e0521ba26e59dacf91072391f7eb0df0e724457961fec4cb04a4914b31dd0024", - "static/images/blog/hacktoberfest2023-swag.png": "7a0af270f7fe24c53e2497ca59bead84255d2d2e882dd38473b1bc6bb0a22d1f", - "static/images/blog/handle-cors-in-serverless-functions/cover.png": "9db00c07cedfbc97f7c4a1a79d1ce1f0d31adab3ea246935ac9bdc9f47fc1e4c", - "static/images/blog/hf-2023-journey/cover.png": "06be00339e12ff26f9a4656fdd5c97e58c8384cfc60837f0c9707db2afd215f6", - "static/images/blog/hf-2023-journey/kickoff-blr.png": "2b5d68282f769411fdc055ab39c32cccac9c0a274a2d6654ec1bbfc9621f4c8e", - "static/images/blog/hf-hackathon-24/hf-hackathon.png": "b362912129d0e718c5dbc0cc80b42fb5174ac7e2efcc2386916eb69bb3e13645", - "static/images/blog/hf-hackathon-24/prizes.png": "002988709aa990a4912206872ad28c14e92eb2fcf3e7cb693c5cfc2867e39e92", - "static/images/blog/hidden-costs-of-vibe-coding-platforms/cover.png": "de4a875c6a5f65598838efbd877a3dc8b004362111447a63f85e640a71e85bd6", - "static/images/blog/hipaa-compliance-for-web-apps-a-practical-guide/cover.png": "9aeedd01af7440a10220c53dbfa4355018000d2661d733fdcf7d047e04adbd11", - "static/images/blog/hipaa.png": "251c39f22b8e7657db751351366d81a016d57643b45eccfa53eb5faa7baf3e24", - "static/images/blog/hooks-appwrite-databases/cover.png": "9c3b307c3cc594932e513aad1023a982647d6c9fced513e46c61ba5669379154", - "static/images/blog/host-ssr-web-cover.png": "cd07b21c221d97a59a9384aa86644886c27670f6d339d4f1696d331d93bf1e88", - "static/images/blog/hosting-flutter-web/cover.png": "298e3730bf2943ccf6761ccf6d7af1e83316ececa9cdf4f008592344478427b9", - "static/images/blog/how-appwrite-makes-auth-easy-for-ecommerce/cover.png": "9f1a43d52b038e76d7d34e06429abf186eed3daa0fe8038a7ce8740b55f7e75f", - "static/images/blog/how-appwrite-simplifies-backend-development-for-frontend-devs/cover.png": "b339f5eedaa53b1758243280263d2a65cd3dffd580a337b46462a960bc2737b5", - "static/images/blog/how-can-you-rapidly-build-an-mvp-for-your-startup/cover-image.png": "745711bf15cb060d8d6ac0b7a3ae5a32203ad7ba87a6dd3f12a8d2517fd77d52", - "static/images/blog/how-developer-tools-are-evolving-in-2026/cover.png": "6f50d7cbd1506e5a91b16eb6ed033c68942c266034abde4cbcad878ddc4c6566", - "static/images/blog/how-developers-are-shipping-apps-10x-faster-with-vibe-coding/cover.png": "14a0089ddc28a99977d23df35ef486e703ccc558a6edd2a69c1605267a4852f4", - "static/images/blog/how-modern-developers-choose-tech-stacks-today/cover.png": "e628c346309108fc213e527ef7318519784b1799ef83740bea16603f92ee00c9", - "static/images/blog/how-nosql-databases-handle-unstructured-ai-data-text-images-embeddings/cover.png": "b592526f25fcb8e8bf0f9411bee2db50aa436a318237ee06e44ccde938ec4df4", - "static/images/blog/how-open-source-developers-use-appwrite/cover.png": "bf24f648ede305cddd7e19365c05292712ccfeec260049b66f74749e414f42fd", - "static/images/blog/how-to-attract-users-to-open-source-project/120k-users.png": "bb4be13cecf761a7d277ec253bc0447e4955afc0ee75760d0619afce891c5b85", - "static/images/blog/how-to-attract-users-to-open-source-project/42k-stars.png": "807975e5404f4b731695d33df325be32797064fbbb4694dce5ccb07f95b2152b", - "static/images/blog/how-to-attract-users-to-open-source-project/Colby-1.png": "feecbc7d0568e2a167c81073ac69fef7082f79eb05fa9599bb50b5450cb6fbae", - "static/images/blog/how-to-attract-users-to-open-source-project/Colby-2.png": "5962956fbc7e32dbddf221440ad86a34a5a242c906bc1b7995457dcb59f17a27", - "static/images/blog/how-to-attract-users-to-open-source-project/Eddie-1.png": "d8fc6b4f2090c8a43e6900a9307b6c8ca8485a078c6c110ff829e7786efde820", - "static/images/blog/how-to-attract-users-to-open-source-project/How-to-attract-open-source-project.png": "bb7366709004ac394a6322ac6e95ebe75808cf6706e9ea495da342739332ace2", - "static/images/blog/how-to-attract-users-to-open-source-project/community-recognitions.png": "9729fa963fc520425d8658a90f07d0a49497bacdeb28c51f8b7723d2e26cfeb5", - "static/images/blog/how-to-attract-users-to-open-source-project/get-started.png": "e0932e82f86e818ec7c6894ef72621a88bb8c985ad1af1306d5dd807409df76c", - "static/images/blog/how-to-attract-users-to-open-source-project/open-hours-screenshot.png": "9055f034ad62e258314792df1ef165caa9fd9b8a82b511fc61f9af32c6f3c16c", - "static/images/blog/how-to-attract-users-to-open-source-project/render-atl-team-photo.png": "37d70da5b89286422a566aead5d19cf364ad5430ac666db2cb3d0421b26a8c2e", - "static/images/blog/how-to-attract-users-to-open-source-project/support-discord.png": "d3c4cfc87a3517b44beb6a1d82294263611b50379a136d6d3e3a46187f4e52e0", - "static/images/blog/how-to-attract-users-to-open-source-project/swag-twitter.png": "b4f128cf606f0587d5eca29a13d9ad8eff8fadc94e7e4698c53d8f25133262b3", - "static/images/blog/how-to-attract-users-to-open-source-project/tutorials.png": "89da3e654bf3de4b670d490ee51414798e8875ecef352bbca679beb054fd0896", - "static/images/blog/how-to-attract-users-to-open-source-project/twitter-poll.png": "5ccf09d5a1ba425db7303844ed9fdbcdd512228f00565f2588ef4baa201da77b", - "static/images/blog/how-to-build-remote-tech-stack/1.png": "5c7a132f303345b4be898568c7ee194ea35df3a16a8636544c9367044ea7ba0d", - "static/images/blog/how-to-build-remote-tech-stack/10.png": "3ecd41734ef650176ade1db64433c3d86da8a484c2791379f8ebf510573f691b", - "static/images/blog/how-to-build-remote-tech-stack/2.png": "72d1cf92690007293bfe8d377e4315d17117fe53dcf3d0d90facfe18a4d32212", - "static/images/blog/how-to-build-remote-tech-stack/3.png": "38c5df35419bbc06b28078458e97738b89ba47a92c7ae7adb7de3a38decc604b", - "static/images/blog/how-to-build-remote-tech-stack/4.png": "b94e491ecc4a10cda336cc13bbef104196b889fa977d7c0e84fd89b900097fbf", - "static/images/blog/how-to-build-remote-tech-stack/5.png": "92783093eca0d641534edc0dfb8ee9fe26740c6a3c696e96e370b80dcc5c6792", - "static/images/blog/how-to-build-remote-tech-stack/6.png": "83dbed92d077389dcffbfb5972a50e5a29435dda5e74d7236551238b38e33392", - "static/images/blog/how-to-build-remote-tech-stack/7.png": "9559fad0500a72dd6a445f48a853b542d973b850143960f23f3cab7465215fae", - "static/images/blog/how-to-build-remote-tech-stack/8.png": "f12c97de435dd9c2ee75fa0f20c4c8656f427e2d7152da397d591bea28d44670", - "static/images/blog/how-to-build-remote-tech-stack/9.png": "58eee849e77fe9dba8ff44ccf6684287da8fb70ba35c21d180895c6f1068d04f", - "static/images/blog/how-to-build-remote-tech-stack/cover.png": "6fe081cb2fb1a6201707a2af0141c6cdb8805a6e2fea00a79d1ed1d81bfafed8", - "static/images/blog/how-to-evaluate-open-source-maturity-before-using-it-in-production/cover.png": "b4bb31d2054e5db2a874c7495cdc3eba03e0778d60db7ff9b01b1c7f7e1f55f5", - "static/images/blog/how-to-leverage-dynamic-api-keys-for-better-security/1.png": "fe8b06f98101c69b6d50e71f3d312efff6838ee880bcedd1dab9ca1ce9234a1f", - "static/images/blog/how-to-leverage-dynamic-api-keys-for-better-security/cover.png": "bee9d6ac2b5a0b18835dcca25ded91087722724daafe10c1579a4f35e3d3a9f2", - "static/images/blog/how-to-migrate-database-with-cli/1.png": "bc2168b4d96ad07d844fd0599bb87b3235cc612ca96246780b817933d6e30b79", - "static/images/blog/how-to-migrate-database-with-cli/cover.png": "ef68dae311c813dd23e9e86411a178018c840f472d29aac67368d766a0955dd9", - "static/images/blog/how-to-optimize-your-appwrite-project/budget-controls.png": "48114d7136082555ea4473dc39882281449912d18b8235567aa91e475e7424df", - "static/images/blog/how-to-optimize-your-appwrite-project/cover.png": "3c55e035f7bde3c7d697a43845440e401e1b4e759a9751ca3f4d3b7ef4039fbf", - "static/images/blog/how-to-optimize-your-appwrite-project/resource-monitoring.png": "2535e224f46bfed6e5f7ed468d95034c55e2fc8cd580fcc1c42ea3f18c20f37b", - "static/images/blog/how-to-reduce-cloud-latency/cover.png": "9e0028f3d1ea804e95a6178549f034887e48a809e126365f8522629f5f6766af", - "static/images/blog/how-to-set-up-sign-in-with-apple/Image-1.png": "bc2776831c6c50975d696445c23bac8f8383aad782c0f20756170f12efbfae6d", - "static/images/blog/how-to-set-up-sign-in-with-apple/Image-2.png": "88a6c0067983569ce4e7639161bf77b172c34b9eca29a58ac2333dfad279c9bb", - "static/images/blog/how-to-set-up-sign-in-with-apple/add-web-platform-2.png": "723741046d7c01c292d9537d6d3ad11de07b259a7cf4892f3fea4e6297442df5", - "static/images/blog/how-to-set-up-sign-in-with-apple/add-web-platform.png": "e0ad95413e93f06bba82bf55cc5b554c446d9632c157cf2e4fb6aa2fcbb20a3c", - "static/images/blog/how-to-set-up-sign-in-with-apple/cover.png": "f441873215bfd8ac38c569d4838761d7fd12d925f9292a29a69f49e4d693254a", - "static/images/blog/how-to-set-up-sign-in-with-apple/create-project.png": "9819b5ed531cd7c8bc978191f31ba9e4d1da155a60a35e843c615070bf50b7c4", - "static/images/blog/how-to-set-up-sign-in-with-apple/enable-apple-oauth2-2.png": "03c26724fb170aca607b8fc67d185511f969dbabec52f6ff9cd7dfc5a506a914", - "static/images/blog/how-to-set-up-sign-in-with-apple/enable-apple-oauth2.png": "f44dad97466f0d1c1f59bf99098b3ad6ad9111d71d11a9d127830bad5111a502", - "static/images/blog/how-vibe-coding-is-changing-software-development/cover.png": "d71da5d087b1435c8f80f700cafce466fb7e381a24507e5e8af4a516f00d89dd", - "static/images/blog/image-classification.png": "7bc26761d3cf940a19911b23c8c309114e36b870dcf5259edbd24c8cceaa2df6", - "static/images/blog/image-transformation-with-appwrite-storage/cover.png": "3885e03ff1f853f5e7e70dea1000018b7c74c47a7e28d3aa634ecc92e1c90ff3", - "static/images/blog/implement-sign-in-with-github/cover.png": "e7e2433175cfa528ad63cbe5824e938c95057132c014caa148e08912d613f4db", - "static/images/blog/implement-sign-in-with-github/image-1.png": "63e37b1ca156178fa69fad7d40b8d15a4b1e3cd1855fe8d2bc7cecef30cf95fb", - "static/images/blog/implement-sign-in-with-github/image-2.png": "1759321f3a9c6bbf334880cbc399f184c13a005ce6304126fe44e1698f3d955c", - "static/images/blog/implement-sign-in-with-github/image-3.png": "dc670620b52fcb1af427190fd14cb25d16067396cef816df654d38bb9f8a2f20", - "static/images/blog/implement-sign-in-with-github/image-4.png": "f44f62829d8beb8d99f3402e38779585811a65eedb338502cfeed20537b710f7", - "static/images/blog/improve-devex-dev-keys/cover.png": "3f3df59cb611d371a48534542b9472e5b42ad7f23f54dd1db580c85ac9841467", - "static/images/blog/improve-devex-dev-keys/dev-key.png": "47dbea47c31cab2726dc268d0ead8da49774da5c82c7246faf2e88c8ca16344a", - "static/images/blog/improve-ux-passwordless-auth/cover.png": "cb3aff15f7cf1bf36d1052e382f4eae423f9d675f58bd6d5fe9ca34587e596e3", - "static/images/blog/indie-hackers-shipping-faster/cover.png": "e912d3b61ba4ea93c98aebd9d298608d1cb5def395cdb0932d6b45d9e97b4808", - "static/images/blog/init-announcement.png": "0078cfe6dd5b2e3522cf0bf0c38648a200ee0aa432bbcb8e81ec3ad2d53a39a0", - "static/images/blog/init-day0/1.png": "f87cf934e337e18e3d34a4e127e81744b796d15341604755d435f218c35e0c31", - "static/images/blog/init-day0/cover.png": "c7c9bba16678ab61089c17ff3b0b6bc6ee122989e5acc0d647c89fe630e332dc", - "static/images/blog/init-day2/1.png": "2d5fd5095914baba85774a3460a9acb2e0bd9771f201238eec7ab59faa76ef34", - "static/images/blog/init-day2/2.png": "574541cd5a28b4c1d2f0db3bb372762a317562231655b34c5c1e4d6bf6bd0412", - "static/images/blog/init-day2/cover.png": "b8fe7fb1417074fb654bc1704dbb065b1a78cd1d34e075d80b7a2bdbb0aa858f", - "static/images/blog/init-day4/1.png": "2ad9f45332e95ea3f17c09b4838dbf379a8b603bb3ad94928c83860841ac779a", - "static/images/blog/init-day4/2.png": "2f4bf3f93c24ae007ad593f2fb2cfb7d3ce591c2133d00120626545a9cb685e7", - "static/images/blog/init-day4/3.png": "89440b5ea0912159a6f339320e4cb4d6308df77d431fecf1f3c1d510b5fb66e5", - "static/images/blog/init-day4/cover.png": "99bacf4ceabb34d9c6f3a127c4faabe8f2a174ea5c50664363440080fc7f36d9", - "static/images/blog/init-may-2025/cover.png": "21bf4a899c82f3301ba1a7bf4cfb7c64fa86b382a389d24e44dd2db20384843c", - "static/images/blog/init-may-2025/init3-swag.png": "5ed956d2021af93e150bff40f1ad5a965d7b0cb86acdd1f08faf14d557aab21e", - "static/images/blog/init-may-2025/ticket3.png": "803c58afdaef3aa2a074a126eca55d17c4cd697ccfc0bf537e9577e0463817a5", - "static/images/blog/init-recap-august/functionseco.png": "8df2373478ab3c2969957ef809f7c6cd44dd4cecc6c4f6075fd5bd213483390f", - "static/images/blog/init-recap-august/go.png": "8571a211bac32cef65ddd1045c5cad0e08f38bb0cd11409d93f11b0b7e3d7f29", - "static/images/blog/init-recap-august/localdev.png": "d936475acd0abfab89fa32f35c751220be654a86cf8016adbbd6234de38215c8", - "static/images/blog/init-recap-august/mock.png": "f52891f9947197d42bc0058879f209de3eeca89a0a6f66574e06103da622acf2", - "static/images/blog/init-recap-august/newcli.png": "d25380abdf625bddd5ee4c87ba2eafce19a075fa7cac7a47aa9d5b50302d3ea0", - "static/images/blog/init-recap-august/product-update.png": "5e4f3c3bc35310dfd17d8623d8f6b803be1d74f696c340e1a843a39e99103690", - "static/images/blog/init-recap-august/release.png": "8adb887f7db7cf6d72e1a828a3568036420e27210bae506261353ea9e120938c", - "static/images/blog/integrate-custom-auth-sveltekit/cover.png": "9d4f5a28e04678300566038a11c91021b806eead6b9ecdad870f968cf09aa9cf", - "static/images/blog/integrate-custom-auth-sveltekit/overview.png": "a13879174eece52967372d0312725cd2f360a9e312425b68cba50aaffcd12558", - "static/images/blog/integrate-resend-smtp/api-key.png": "75edc5610ca8f571a70396f9e25c6132f26065440cc837af95102de4b8408708", - "static/images/blog/integrate-resend-smtp/cover.png": "576ed4d27f79f222fc231eb2757c30e2676a3e6a3a66dcdc32166cd660be7ae8", - "static/images/blog/integrate-resend-smtp/domain.png": "dfcf15479b10a8a38a29f150030c509002351567eaf3a17f463767a628aae72c", - "static/images/blog/integrate-resend-smtp/email.png": "03d72f4eac29c493cf3d71cd4db56ea568b86ac57eb8fa0bb25a5c81d40aaeef", - "static/images/blog/integrate-resend-smtp/provider.png": "0669e1036113ae2cd6e8ebe1da66e0d4ec61690f3685ce31eaa556a1e74d6646", - "static/images/blog/integrate-resend-smtp/smtp.png": "ce8e96b7a45f5ee2e14048b4932c9c44a9021aad4c88a3424675f47ed574f3d6", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/cover.png": "b7f82a20067f3d86a3c5d6f21f18e2e781461ab19fc669034f772c77e5d5a81c", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/mongodb.png": "e7cc33a7b039a5cab14a2bea0d69b7fe73bd2a5f099fccc07ad13399cd5009a7", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/neo4j.png": "66a6607f4950692ba99564369eeba653d6a15530e45ccc835f277126971bf39b", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/neon.png": "3d96319f3c23d192dc725536f13b5fd61f7d367f3ff23c0cdfb3700e34c66857", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/redis.png": "e911bf485bda1a105a8a2b2ca4a05aab8e10064759d654c9baff3e5653b02dd2", - "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/vector.png": "573726b6770a33ff8a1d616c3e08c4aa75a6febc976afb42e0f723c118ea8209", - "static/images/blog/integrations-catalog.png": "041534fd991c48d36fb941ca097283d456c025aabf249a7e311739b7d8fa21d0", - "static/images/blog/integrations-messaging/1.png": "bdf540c04dfb0ca039deaaf97ebed27cc2890b619d0fd18fb0c6393d1580067f", - "static/images/blog/integrations-messaging/2.png": "21852ca2f9449d199dcaa8141bd7433e543e44d35e3b7cced23cded9c8e57f38", - "static/images/blog/integrations-messaging/3.png": "3897147f557853e88e5a6b6ff3a5f9394bd829d52be294e71e95a092c864bea3", - "static/images/blog/integrations-messaging/4.png": "02f4a64fb28b8825dc725cd75a6b25e14aea3275eea4a3fa1100614cd7591ad6", - "static/images/blog/integrations-messaging/cover.png": "22f32d8be6585e781214a9c083c86d7d5021babd7604f6e9c8819c2c91e2dfe0", - "static/images/blog/introducing-appwrite-react-native-sdk/appwrite.png": "fd428e8859e29c7698a8c7193e7efb8af4ed80c0bfc24418cd9446a96b75fba4", - "static/images/blog/introducing-appwrite-react-native-sdk/cover.png": "7a45ea7049ee661e9143c89998060638d20c1242162154550ec7fe1127c08242", - "static/images/blog/introducing-appwrite-skills/cover.png": "4e106084bfb0e22b9833dfdc9cfd2e10a32de21d37fe45a132286e9848357054", - "static/images/blog/introducing-database-backups/cover.png": "0513bcc80f2aced49c5acc4d634883c860940196c914c309f3517b97e003affd", - "static/images/blog/introducing-imagine/cover.png": "f43476c4b5609960c00245c814c7ea9555dcbd0b1e638a58b06ebb8524850492", - "static/images/blog/introducing-imagine/imagine-1.png": "58c6e736e8c5a5cae752097defce06b30482057dfc56096ce827dee68e9b7fdf", - "static/images/blog/introducing-imagine/imagine-2.png": "69925ef81dc7e0bdf5ad302ee5619b72e996196944e9b3f55fc4e9d0c4b8ac9f", - "static/images/blog/introducing-imagine/imagine-3.png": "3d736355031b8438dda6e3855ab2077982148f7ef4f51e6b05bcc074f9ff6f5d", - "static/images/blog/introducing-python-machine-learning-runtime/cover.png": "2976f7c650ab992ade016df1767c8b783da8173f8a3bbe10549fe4d3e4767536", - "static/images/blog/introducing-python-machine-learning-runtime/create-function.png": "0728b8ed66cd81e826d2d0a5b70e9f572d415f995065cf44feed2e22ce50e492", - "static/images/blog/introducing-python-machine-learning-runtime/settings-timeout.png": "84214c72048b9911dfb2b9b40b62dd715f856c01badae58b148066be137fdfb5", - "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Appwrite_plugin_for_Claude_Code_is_now_in_the_official_Claude_marketplace.jpg": "f8679e1c03a01ccc2a3a1d3709d609ee8dbd9af63e9548cdcc336059457dae3c", - "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Introducing_the_Appwrite_React_library.png": "f69d9adae872ab44368fd32159ece9daf621cdf002ab78461f7f1d07b66dba73", - "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Password_Strength.png": "bc6a351aa59b845d6a9513ec4a4993c393b3059c9a7d324c999bea52142d8648", - "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/cover.png": "b636e349b4ecc0d569967d449ddb665e3ae1a6ed554224b1a643e4efab18d251", - "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/introducing_self-serve_baa.png": "4d4ed038ee7e94249857342f6d317b31dbb5b44410941fa14f6280e0bc8d938b", - "static/images/blog/kcollect.png": "d044d69e18de7dd4af75213b7f4cf131529f43875352d7db86fe80c274466242", - "static/images/blog/local-development-guide/localdev-cover.png": "07cce5e779991c560d2e8c58b280803ea8ebcfc8775bcc75e959d76b01409fa7", - "static/images/blog/logo.png": "6df582f74767156f37ced895ebeb6b5a656858301dd09539cbc84157a6a54ed3", - "static/images/blog/lovable-appwrite-backend-pairing/cover.png": "fff78ea4f16953fda8c6e617448bfb0ddde26eb2f5891f9d35b2e53345eba677", - "static/images/blog/majik-kids.png": "8710ac967fd8c60ee387a8f9ec75c27cd7eff25ab70d8ccbcb7ecc7ed7c73f72", - "static/images/blog/make-best-use-appwrite-mcp/cover.png": "a1807e11b41f422028a161742aa5cd94e1e8192d87eab3c7e4f55ae9461f309f", - "static/images/blog/make-best-use-appwrite-mcp/csv-created.png": "d5e4d5f352da6923748ceabb3e0657bb85c9212ca3f468bc0c676fdd84cf4f7c", - "static/images/blog/make-best-use-appwrite-mcp/db-replicated.png": "ab8df4b9c8c929bbd32a6ddf85789f04afa2a0a8819d3a8c2b86e041003ab190", - "static/images/blog/make-best-use-appwrite-mcp/doc-generated.png": "8728a37bd6803e06613529963a1ef934bf5ed552658da5297bc2dda37d23a04a", - "static/images/blog/make-best-use-appwrite-mcp/table-created.png": "cd48ddc127a27dc5b93cbe74160184c86085ecf5cccf91bb68c2966438cc032c", - "static/images/blog/make-open-source-healthier.png": "e66f695812a6fcc8ea7caf32972c433092d423a6704e3a22a602dc22c4b182c1", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png": "a2c9de548f5f1d3d4a82bcbca0462397cea67a6e58ff4639ab8e104d6dd88e9f", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels2.png": "fb90cf6b989474d3e7a12a908df13dcc329b13fdc7b71d7f1e4ea1912777801f", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png": "bb01a2a43cd4f0f38308df4979dfa4c14c147656da7ac782fee1309355946b67", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png": "b5b5d3c2be622e9c096d5977559e3a26ca2b5fa7ed3b0f81a5ab24e4b1fdc88b", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels5.png": "bee498d03d3391524aa5ee6c574febfd3f881e3a4cbfe9498e7e8389574025be", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png": "02bd833be8556be4a2b1c557a495339fe74403b2254781b43a5e04ed1431f71f", - "static/images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png": "a4bf289c9c5729e31c13bd49678ab90d19cf695fd05220424396f10260da991a", - "static/images/blog/managing-website-assets-repo-cold-start/cover.png": "ff11c54070d4662b6cde70e1b95c8a944e382e353928a68dae5e2baa45ba3b73", - "static/images/blog/master-prompt-engineering-tools/cover.png": "4ca1cedae3df550ee8b3613ebbd4643f02f1ad60fc9bf46a5d06c344497d5662", - "static/images/blog/master-prompt-engineering-tools/langchain.png": "3366f36adeb0d73b75aa0ead5d8f47ae26a19bbcceeb4ed89b6d9ce66dd8c57c", - "static/images/blog/master-prompt-engineering-tools/promptappgpt.png": "4b9c9b8a3b89f62b172d554e349049b3bde46464bc2d11791917997ea16dd03f", - "static/images/blog/master-prompt-engineering-tools/promptlayer.png": "f864a8b06d97e3f46b831791762c1cd34a48d24a1d9d6c2259db1cdea9e36aea", - "static/images/blog/master-prompt-engineering-tools/promptmetheus.png": "db2dba37f7437a4e640cf6d99d1a7bfa0205a012ee4af7e94359c631f66256ea", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/Bun_and_Deno.png": "fb464e4ec0de83c6201ef573af3670d7eefe65cc25107f32355617562f1f6652", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/Image-6.png": "03c9902c84508c940a14713a6bdf73545e2286faa5375e68e0fb426e9571287c", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/comm_recoggg.png": "8d283036fed6936412dc93d2e3989c27ba4ad9c1324b87669d832b29f26d13ee", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/cover-4.png": "ebb9101583ca85e7c2fcbfbebb6eeb46cb6ce0673b4bfc643fcd5dd373954317", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/cover.png": "252d887977dbae1d4b5b0869b6177a94062d419b9a31b9348e74f4eede49ffea", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 1.png": "9f6741620b5255b9adba09b66a867254079f082e53932691d41fabc786ee771f", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 2.png": "260c9d69eebcf828ccc209995ab9ba2300bd2f450f8bbefca07cbf3ac103974e", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 3.png": "4498be8798d7a4a150156a56c89ccde7088bf49ac038188fe5a1c1ff04f78874", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 4.png": "a0be93d4870a8237ce55a531f5ea592041fa0dee32a9853d842d16e39b78611d", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 5.png": "15b9cdc16b16a3412458abde886e2dbf60753bc8e82d6fc1d0a5e08ca1f14e7e", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 6.png": "41e154c52c8d8cd1321515f5d27eadb4b06ce6ae801e01ba02ed0d86eb5a0ea8", - "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image.png": "726a0a1bf2571bb9fd707d714ebc99d931a332ad63b78b888563499b071157e0", - "static/images/blog/memberships-privacy-announcement/cover.png": "db8bc0f478655e59c9773447cb844b9c9bcdecc0fbe018ac0dbc099454866b9d", - "static/images/blog/message-overview.png": "2239fd7c47124ac0f154d4569727215a9bec485fcbffedcc012d8883929d968b", - "static/images/blog/messaging-announcement.png": "aeb5d1cc4182d96d0466f85b051c8c77f0a2610d5c7debb9fc735211ce491b3f", - "static/images/blog/messaging-explained/cover.png": "9217fe55413a6c258304a1b9d83692cd72a9c9b28ddea8db3ffb9d2bdbe0d655", - "static/images/blog/messaging-explained/preview.png": "78349a4f5731e358845ded38e06bdeb7e06f241c9f61e78d8e4d5f9a18f4edf5", - "static/images/blog/messaging-explained/targets.png": "8fe9e8706c9e32065468d43148096d1c2a990eaa03845950513f9361f595b448", - "static/images/blog/messaging-explained/topics.png": "a61d7f1e00e2e74be1c658e4b62682f04b0c38d04bce0b23412b72ae20d9239b", - "static/images/blog/messaging-pricing.png": "3a97b31eb9ab601b9c5a90fea657d3f6b6eef59cd0ff436b97bf859cd636101a", - "static/images/blog/migrate-firebase-projects-to-appwrite/firebase-key.png": "0893635c8824d818de24344839bf3750b7bd90964fee5a98b43c6f60f588f288", - "static/images/blog/migrate-firebase-projects-to-appwrite/migrate-firebase-projects-to-appwrite.png": "3cd5708064a1dffd4349b72fc72648fe90cac044cf0b2ed8912ec089808e2cf5", - "static/images/blog/migrate-firebase-projects-to-appwrite/migrations-overview.png": "3288784ed3f0978699f28f1122639e2b30cb8fd060310ef1621c156a8dffc7e1", - "static/images/blog/migrate-from-vercel-to-appwrite-sites/cover.png": "7e925ff61df1b8337d012f34ba3fa26bedd0278464d57a398ed142092a38246f", - "static/images/blog/mock-numbers-use-cases/1.png": "f1d42326a6114b7516d2c1374b8499df14f071acf70c0cffd24b29476dfa0880", - "static/images/blog/mock-numbers-use-cases/cover.png": "daa1080f9cba114e960ea939496f85d7ef20351ae6228bd1969764dd0883f9d2", - "static/images/blog/netlify-vs-vercel-vs-amplify-vs-appwrite-sites/amplify.png": "72b86a2da2fa403cce2c975b1f829549a6d397bd48c1ce93caca8e0b30f03a82", - "static/images/blog/netlify-vs-vercel-vs-amplify-vs-appwrite-sites/cover.png": "c87ba5b38f55f7ed248283ac945fb5c0ec9b9c66f78207f870fe9e5e19fe098c", - "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/azure.png": "8fc911f395e01d70b665670bb494ca16671c6980af3721e931d9e266a5e2043f", - "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/cover.png": "41bedd4cb48456889481d1a93e55129ca9db86e1f444a6c1df2fe4c000fd6f84", - "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/netlify.png": "a4b62ec34780a1c7672287d7d4061c257468cdedf505c759772e83d67f3932ee", - "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/sites.png": "3d6c098ed0e39c6181f9f14e542834f1ad78b117bce67041e7ed9d181cc29569", - "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/vercel.png": "b44adad115279964cf17dbb91d21c37a0a1fdad2c3227d40ff5dff3f58c41f64", - "static/images/blog/new-image-formats.png": "a8ef400c006647ee3ae0d307553b51d90ede699935d7602ffa75fd2e59312846", - "static/images/blog/new-logo.png": "6c0b06522f926e9f05f9cbdbb24ac641a605aa764fb0f61f3f51255bb1e54a34", - "static/images/blog/new-roles/console.png": "177070ba0a364ff0a6e1f78874adaf66f58e2b6faf662a5cd42e8142829eb224", - "static/images/blog/new-roles/console2.png": "101f592e5776f64e0d5f5273631879412103efaa4f1943b58d689893a2f08b45", - "static/images/blog/new-roles/cover.png": "d1148cc754a43599dd7b28760389d0fa2f366b912f3f9c31f237b96b87036900", - "static/images/blog/new-string-types/cover.png": "431debf3c5b326220ebed21b835f6e3d8f38b7cfc2b71f320cbca5773e524b40", - "static/images/blog/new-website.png": "14b68b0d3b3bdb953a2b2c59af5f041b8bdab28f68a1757895cc2ec0a4b6a011", - "static/images/blog/nextjs-output-modes/cover.png": "d4eeb4585955564b37c9e65e3b9be50e2109e4c9f546dbe207c27b55838d7e06", - "static/images/blog/nextjs-standalone-builds/cover.png": "873360c0097ee41bac5fb3fdcab5329f73ca991a53b15e03dc6ed22449cf247e", - "static/images/blog/nextjs-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/blog/nextjs-starter-sites/congrats.png": "6bf96a42be41f3d97a10b16420974bec5ada05c508de27c6dce2344ea04e6379", - "static/images/blog/nextjs-starter-sites/cover.png": "4545183b7546fe429ce7588297267d3a07b19e3b9feb2d35030f6097a0a9ff81", - "static/images/blog/nextjs-starter-sites/deployed.png": "f3b309dd4747796f1a8272635096a29e01314fbced8f26222afa60185b3af16d", - "static/images/blog/nextjs-starter-sites/deployment-logs.png": "2873669c7ab6b816bf574d190a8a51b0c1edfd35b28423022fbf64055d97cac2", - "static/images/blog/nextjs-starter-sites/template.png": "0138c956f06c8275b87d103c1b5bdf54b6cf31d42285c43f5caec5b5d497421c", - "static/images/blog/nodejs-v25-whats-new/cover.png": "49e3fa3a669bdd6d5d1aa1eea54693ea75c9c98aa8a1e3035e1c19c97598f007", - "static/images/blog/nuxt-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/blog/nuxt-starter-sites/congrats.png": "5dfa4f03b67e0110936126f36329a17aa37bdfc4f148d61deb9aacf5d10d0981", - "static/images/blog/nuxt-starter-sites/cover.png": "3d2e1cc25774b983ce93ed35e3f0b4e78751a87ba09c7fbaff391318efc27eb1", - "static/images/blog/nuxt-starter-sites/deployed.png": "17a68d48ea9767adf8b1a13d505c46ce7ef61170800de7982d6723bcb9ac48c8", - "static/images/blog/nuxt-starter-sites/deployment-logs.png": "cfda32328bf663dc9dac32c503730d0790aeeb35190dd201947ce18f59bd026d", - "static/images/blog/nuxt-starter-sites/template.png": "c881577b5a1b1edb32aa08a42afc0ba3cd1fe084a64c347b1dd6618312b56c44", - "static/images/blog/oauth-openid.png": "5228f7be3e0acd3d5c3f3f0ab4d2589a2cd6aea43508cecd9624c777f97fa909", - "static/images/blog/offline-first-journal/cover.png": "be142679d30a9144f0623b78dfa2810048b46c5cbdea83d0e2d7f36d61233c5d", - "static/images/blog/offline-first-journal/demo.png": "55e48ac98bc1d8f9add353b034c22c17cc158d951a31e7df4cb23a2e3d7efaf2", - "static/images/blog/open-source-baas-alternatives/cover.png": "1ca9d44ab5faf6199fe782c5c833cd75d54acc7ad5cb18f46dea06b62abec5c4", - "static/images/blog/open-source-backend-for-ai-apps/cover.png": "c5007bf5f067f9eafbb792909ae3ec9b882a8bd5017d5c4b4fe6182599567c2c", - "static/images/blog/open-source-backend-vs-managed-saas/cover.png": "5046fc4e3f3fa605c22d00ecb4b5156734c7d94000b49cae66a9e3bc49f81984", - "static/images/blog/open-source-firebase-alternative/cover.png": "e0b98679795c00fd6d2d304b17273eaa6847bb1fc5706efa6cc3f3040ec6b4bb", - "static/images/blog/open-source-regulated-environments/cover.png": "bbb57f0f8dc70f31923f34b5007f089a8539bdbca193c6f3a2594502bca551a2", - "static/images/blog/openai-just-shipped-codex-to-the-chatgpt-mobile-app/cover.avif": "32abc0a488d7b7b8f2a4f5661801f415bb1cc1dc148768159bead6e5815c4bde", - "static/images/blog/openjs.png": "4129893c1ea043b82af755a462fda8d78a7a5199638f84da549b2a2b29fbe976", - "static/images/blog/oss-netlify-cover.png": "166487672a542d051b029ba285b703fc7f6c49d2fa27407f22c8f1848725120f", - "static/images/blog/oss-vercel-cover.png": "9f3073b5dadc5d87532bdd49a699e03f6b2c4d439469b88bc3a4fb2bab8a1d9f", - "static/images/blog/overview-react-native.png": "fd428e8859e29c7698a8c7193e7efb8af4ed80c0bfc24418cd9446a96b75fba4", - "static/images/blog/partners.png": "3c3d082bb76a507f22ea5ff3aa2bb5c0646b4315556190d6789a3412605dd021", - "static/images/blog/password-hashing-algorithms.png": "dfd0bd32a04ddc78ca6a7a7958d8a931a7d82cea2c3597c7bfbc2b8951dbaf70", - "static/images/blog/password-protection-2fa.png": "de4246c673947d907972acbb9ddf72a45d79bc2891caebe0f4e62e030ac00db5", - "static/images/blog/password-protection.png": "9b962f9b1af1e715e278c5ce0da153855ca2c34fb13ed4c990c388df9931c300", - "static/images/blog/pdf-generation/create-function.png": "f122f98e92a17ad61b435de152b18bf5768835bcb408bdd06b8fbadfbac862da", - "static/images/blog/pdf-generation/generate-pdf.png": "98bda17bb63ac202720dce83d9ec27b90ace67fee82856f6a7deffdea4e38e1f", - "static/images/blog/pdf-generation/pdf.png": "18ea06a5436155dfb16c6558d9131efb9923a008ac721eb18fd3d6bbd5ea2799", - "static/images/blog/pdf-generation/sample-invoice.png": "f0d2fa6ba513d59fcaddb7f972f79384e1361b41defd7edee29fe18609333bb0", - "static/images/blog/pdf-generation/templates.png": "27fccfbb88eb812e646a5862da179818c0d208578bc25707ca24e767560f39da", - "static/images/blog/personal-chatbot-gpt-4o/cover.png": "fe56f7ce91b7b5d5679aa1c27a145abd23539ea953fce48d9ededd058446841a", - "static/images/blog/personal-chatbot-gpt-4o/deployment.png": "d76f209d024499457bf584e91ac23988fccf0dd546c7d359f406da43e0c2aad6", - "static/images/blog/personal-chatbot-gpt-4o/final.png": "c45b0b1fae6495248745256bd0dd7893927bfd4c3e074a5ee3bd45cfc9c49501", - "static/images/blog/personal-chatbot-gpt-4o/functions.png": "288fd5f116007d513df5f7750d1263a7b8aa93cce4fbb177cdda1a41ebcade47", - "static/images/blog/personal-chatbot-gpt-4o/openai.png": "d363fac9425cdf05d5c83c9970307ccdec0a1165befa6dabd82aa49c08ac7ae2", - "static/images/blog/placeholder.png": "fabe2155f3bb5819170defb4d3419a52e1ccade4e0f7e4f758f026474823c571", - "static/images/blog/planetscale-databases-alternative/cover.png": "173cdb49df6c3176bf4127c106229ac6f1d3685f9598598617ceb9d7c13c1bb0", - "static/images/blog/planetscale-databases-alternative/pricing.png": "0f78421919ab620d9b5bf503103f50fb6cde0255453299acf6b826e5451a09ee", - "static/images/blog/portfolio-template-sites/congrats.png": "12ab010e16135558b0166acdd9f923e661527b7ea5ad653d398d5588f9c65041", - "static/images/blog/portfolio-template-sites/cover.png": "db9ed92a1a1c383857d606a19f6316c25fd12e1ed2485638e6c44b43ab9d4798", - "static/images/blog/portfolio-template-sites/deployed.png": "06286c5abc6bf98df43c54f2871db8d1f842f12e91bd340e9606ab0c0d67565f", - "static/images/blog/portfolio-template-sites/deployment-logs.png": "916da01874368cc6b451310f0533f94c5b9daf5a42e329375b12998a1ea0e3c1", - "static/images/blog/portfolio-template-sites/env-vars.png": "62f81d5f45ddb50dac9524b99bb627ffa4f7ed0ccb228e0da9fa2eef3ad11863", - "static/images/blog/portfolio-template-sites/get-started.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/blog/portfolio-template-sites/resend-api-key.png": "8edd95da6e772e3e0e55ebb6907d7190a8c59007a7b9d1b13741ad762cf0a241", - "static/images/blog/portfolio-template-sites/templates.png": "a41a36779555b2fcf5a41b88039e1e45c7ddd14de1f92a7807c85c16375d28df", - "static/images/blog/preventing-password-sharing.png": "657c2bc0040fe2cdd3d8248dcf6faba886c2ed0c9023ee2608560a7163869089", - "static/images/blog/pricing-plans.png": "3cf977e6fd7e9b49769220b19a435bb7e85ce273b5f0afaf7399c111c18f0d3c", - "static/images/blog/privacy.png": "522269a98a6246a065ef2abaf6d39abf1b6c4ca7c0b8882286659135bd95f207", - "static/images/blog/product-update-april-2025/FlutterFlow.png": "1fe21674e05ce2e85c072031cc2df00b59dce4197ba0170090669de95673a563", - "static/images/blog/product-update-april-2025/PH-comingsoon.png": "7d823a693e578854ef6c26af85205a1aa4bac012977e5a44a4e6ff5f877fc6f0", - "static/images/blog/product-update-april-2025/RxDB.png": "418e61b2b81786eac8d981218900b1e4034aa6f006b0b16559a8a81f8ebd5eba", - "static/images/blog/product-update-april-2025/community-recognition.png": "cee3c3677e5000bdaa87fe17ced34bb3401f56334e877460e205c36c457dd5f3", - "static/images/blog/product-update-april-2025/cover-image.png": "9787a1c8bd6eb582f36385e21d7ceae5e31cc81ed0ebb987af36bf7ec411c7a8", - "static/images/blog/product-update-april-2025/the-appwrite-network.png": "3f023b32e95932be9e9a7d9ee7122ceea6274afcaead3a146d60efcb11fddcd2", - "static/images/blog/product-update-august-2025/atomic.png": "bef9e2a6360ad01348e9bb5bc51733e876c643ba51833fb473c59200ad31f791", - "static/images/blog/product-update-august-2025/community.png": "828124d9bb8fe39552cc08ebfa4d5aed5e59787180529ee2ee7b2db5ad716661", - "static/images/blog/product-update-august-2025/cover.png": "8d30ef6804646e7e047d599035388c484fac37e944b81fee27d3418a86611711", - "static/images/blog/product-update-august-2025/ga.png": "8de2ca85c31b9a2a31084bef640baf2cccfa6de64068d5216d2c8999b9d958eb", - "static/images/blog/product-update-august-2025/hackathon.png": "28992146150cd8593ff687d238aca7353743160084345180c40eff831a3d71e2", - "static/images/blog/product-update-august-2025/new-region.png": "be962c8797bf7e2807d67a79be60140d006b232d15cb68afb86a890583ec2f5c", - "static/images/blog/product-update-august-2025/new-ui.png": "d8f91728fd92bcad362466080d9cc2985f24282d5d090daf2275c3c7da8fb651", - "static/images/blog/product-update-august-2025/terminology.png": "882a3b8bf7f9872b0da131297f387273b4a5919144e9923ac4984a1fa5c34091", - "static/images/blog/product-update-august-2025/timestamp.png": "ad18c57ad55420c29c5f94b10aed2d5abd4dfe27f697164d8e4ebf43d5302250", - "static/images/blog/product-update-december-2024/community-recognitions.png": "4788c28873bb5ef0156b0de83ec539163d10957d7327b7a1805a229b47427af6", - "static/images/blog/product-update-december-2024/cover-image.png": "6b9505e3b2bd7ad12627ad77f3536875c99746503d18d5bad3be2dd5d8420ae4", - "static/images/blog/product-update-december-2024/integrations.png": "7068dc0318c09c599ff7ace56f79d2a28ad5d78f2fa872a3290a5b60e287f569", - "static/images/blog/product-update-december-2024/products-features.png": "795d983c943e35a908ad434adb4fe42c0d33e0e5d5f558f858264e5ed2fed351", - "static/images/blog/product-update-december-2024/programs.png": "bb2cf13f5f47fbdad8fab4a4267bf2260103fbbf6983d4bc3d1cd4fd0d8c41d1", - "static/images/blog/product-update-december-2024/runtimes-sdk.png": "20b9f135e5bcc221ae669e801afc1961a4823fb73953f806158eb670f2520836", - "static/images/blog/product-update-december-2024/runtimes.png": "2db52b3b6b4ab884c2ed66a6c9e3ef809da381a10215b86883e87260c58f2e5c", - "static/images/blog/product-update-feb-2025/community.png": "6ad8e516270d1a6cea3a20e095218e923b584b98246a4abd359a999d660db12a", - "static/images/blog/product-update-feb-2025/cover-image.png": "8c1704f883723793b8c5a34e855cc2dc444f7cbef5569cd55973255b455341a8", - "static/images/blog/product-update-feb-2025/new-version.png": "bb559c8d6279bcd764eb8106f3996e7e4a923fc869f61423d4ce1c3a4f2315cb", - "static/images/blog/product-update-jan-2025/community-image.png": "f23bc09c03432cfefd306b289f060fc4c9084a73161757b24e0f749d6ad5e009", - "static/images/blog/product-update-jan-2025/compute-image.png": "7d0fbd8ce743ef589c95367c214e81f0419878ebfaee8a36716ae26b18fd3217", - "static/images/blog/product-update-jan-2025/cover-image.png": "52847112b10ea20bff66297daf4ae3fd4e23a6b1b9d9e640f70de52fd8863c1e", - "static/images/blog/product-update-jan-2025/partner-image.png": "8ac56494d7c307a5934f5eddff0b52b6adbe5bbc66dd3e5cdc8075ab33473e0e", - "static/images/blog/product-update-jan-2025/push-notifications-image.png": "3f6826fb8ac5664af655a144f3168c2022a85f401b6c3287e8eb7b11f244c4c2", - "static/images/blog/product-update-jan-2025/scale-image.png": "2db3309abd7f302037bf069ffd9a10cd39cc8e16a8d590a67ebfeb26adf0d01c", - "static/images/blog/product-update-july-2025/community.png": "a7be4e1d1a64425a272dbf5010775b1c26a0e9006ea006647d15a8cb818c40fa", - "static/images/blog/product-update-july-2025/console.png": "f8aa56c2c370bb8624c397d477dfb089c725be9940a4d2e5d2f131df0ba6ced7", - "static/images/blog/product-update-july-2025/cover.png": "a54c4c2a0d3b33bab33162e1e6144527b312bcaf54a74f058bf2bdc13dc375c9", - "static/images/blog/product-update-july-2025/increment.png": "af1669507a2c5fbb40f553ba939e6ad9540761724f7b4194e45c99f709d1d4bd", - "static/images/blog/product-update-july-2025/otp.png": "f2dcb9370d5268c90d0b77058ab119d2d1e713bf42dc4716fa258d6af44b13b8", - "static/images/blog/product-update-july/1.png": "e8d71c8584d1885bf5218309ae0f69c19c2be0117e9d828ba256ea7c03c6431b", - "static/images/blog/product-update-july/2.png": "c69fdc687770e5562097fb30bf3f82ba54d7208faae9805faf3677480ba73857", - "static/images/blog/product-update-july/3.png": "294885600936e8fac5200ce0c4e6dc7608877d2c51ad50cf0d02827fe4c43d6b", - "static/images/blog/product-update-july/cover.png": "51ffb9350bd701c6f6d8e66dba5c1b77bac2265f91e98e095d30d3cdeaac6b00", - "static/images/blog/product-update-june/appwriter-testimonials.png": "760c638084086945e4a3f485172b9582146ef8b40e8b4c0b657b547564f07fb4", - "static/images/blog/product-update-june/messaging-page.png": "e54fc2e1a401bafed8ebbfe2e6f2c6fb2154517b2ee140bc65711e9e7cf0a5a7", - "static/images/blog/product-update-june/product-update-june-2024.png": "e959114fd6a805a7b9993231d01a99f7830423705e62fc867466ed98b47ab549", - "static/images/blog/product-update-june/public-roadmap.png": "b3e362a46df4d3615d855e141f8935d962e95bf6320243091512b90c64453427", - "static/images/blog/product-update-march-2025/cloud-backups.png": "b8a24ab38fd88ce1711eb1b3ae092cef79e27308c76cedec576fd8667337fa77", - "static/images/blog/product-update-march-2025/community.png": "c80a86aac99c2842405f759bd18dbe21949deafd64d7d8d6d8bd062758b8daa2", - "static/images/blog/product-update-march-2025/cover-image.png": "8af5de49ac4d254d0c065dc6db20e359b82c3edcc0c8a5e11cbf39879c29d201", - "static/images/blog/product-update-march-2025/mcp.png": "b8a35421c162e2f8732d48bd1c4068b082760060e3fa0e0b321a1812fb7a7748", - "static/images/blog/product-update-march-2025/ph.png": "7acaffcf4e340f32e87ba6700a868556d60d20d3739c4a9c24370e60fe6a2b10", - "static/images/blog/product-update-november-2025/ai-suggestions.png": "9ce22aa108acd74eafee9ad3a1ced5a621a9ebe363317f737de7f5fc9dc05bc8", - "static/images/blog/product-update-november-2025/community.png": "1e4bb826c9f59f8f25227c9f66abc352eeb2b05d5931f78a55b13923e5e82abb", - "static/images/blog/product-update-november-2025/cover.png": "5b86054f0667071bf55e6472d42a8f9595223ab30a4881b632c24a2ee1e4260f", - "static/images/blog/product-update-november-2025/db-operators.png": "5a47c97c7b9375a4f092dad0c6e4e00af3fcabc3e6ee50b69a453c671abea9f6", - "static/images/blog/product-update-november-2025/elevenlabs.png": "738f42a1d23c052ff640628cf3b5f7a86a60b108b9c76c2f6e27e0df15b92e88", - "static/images/blog/product-update-november-2025/nextjs.png": "b26de9e699301b57679586039325a025418cd5a112241aa612fa6932b310e083", - "static/images/blog/product-update-november-2025/open-letter.png": "379be3baa6c4951e339be95a1527c7933a13f49b398e084f4731467084172893", - "static/images/blog/product-update-november-2025/skip-totals.png": "4442eca1e09f7af94f42e43e31572481c2fd4be11952dd7befd0894b1ff5fc5f", - "static/images/blog/product-update-october-2025/cloud.png": "0fb6384648cef7d66bf95f38a4f8aa6bb53ad8b4852d315c1735d569c8003f21", - "static/images/blog/product-update-october-2025/community.png": "dad71034799e12ce220e43720cf17363b584421ac642e940f4ddc08f9398fdcd", - "static/images/blog/product-update-october-2025/cover.png": "226ed96e936bf2fe127aa2d1790138e48eff3b29812c9c85d85aa1dd986bdb0c", - "static/images/blog/product-update-october-2025/nextjs.png": "ac5e947cc9958a8a0c2a9ccd69dd87316a1f04100c5b08a5a89acfe535ed6130", - "static/images/blog/product-update-october-2025/sh.png": "77c2d221a62628218351df772d0b984ea6bc736f18025248dab3f9c53f75ff86", - "static/images/blog/product-update-october-2025/sites.png": "9729bfc28bb54a6ea863bf3dfe712ad9d28eea4b466d1d4a531098394476e3b7", - "static/images/blog/product-update-october-2025/tanstack.png": "818995a6039dff01bbef175b5aa78a2a5d5fe0e1f50155e1ee837b4093f58bbf", - "static/images/blog/product-update-october-2025/transactions.png": "3c270d858a9c889931a2d60602148f2fe858e65d8994ea6d44f7b9304747dbf0", - "static/images/blog/product-update-september-2025/community.png": "a311760d0241e179a1ee76ff2019c6c07157ac74afef841a646d22f5ca1416f5", - "static/images/blog/product-update-september-2025/cover.png": "4ef2ef59c01d848bdf6c23ae607ad13422972eafd7e2b2464ca9923bf42752b3", - "static/images/blog/product-update-september-2025/hackathon.png": "2c81ccfd82f89033d2ce7299bbcb386745d94392e0399b54a3dbd4c601c2f833", - "static/images/blog/product-update-september-2025/mcp.png": "75b4a125edcfcf16bac6ffc1e5f1187afe2fbf621caa4bbbf93599b700e27450", - "static/images/blog/product-update-september-2025/queries.png": "cd9e7c241b62a760c0bda18b68c4d15da818ef0d9f8a658fca8d0e1c3bfaad3a", - "static/images/blog/product-update-september-2025/spatial-columns.png": "5084be564f227e0c08da346b55df5138afa498f37bca273ffad462e4bf2452ee", - "static/images/blog/product-update-september-2025/turbopack.png": "a8f79653315fb94995126ab7362bf2071a0506567b03543baebe0c464b8d8db8", - "static/images/blog/product-update-september/1.png": "fd7cc2a82a3bf5e76b0f9d13b5627b259f3b658133e9531c3c84ee4d397b9a0c", - "static/images/blog/product-update-september/2.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", - "static/images/blog/product-update-september/3.png": "88d88af3bddbf105f069222f490a8df5150c23a1824182129fca002e090a5c31", - "static/images/blog/product-update-september/4.png": "3926cb595b03bb7f8cdc20ffa052f09417b703b8e196277527c2940d97e7680b", - "static/images/blog/product-update-september/cover.png": "1b290f4f7dbffbe1eafd820226e9eed64000ebe7a4c644f5df1c9255038d1f7c", - "static/images/blog/public-roadmap-announcement/cover.png": "d583db33c033125140fbcd31287572441d95a51d23f594ffc2feb3c8592cce33", - "static/images/blog/public-roadmap-announcement/framework.png": "04238693280f342e3c195a8fc503c83e6eee16181b4ef9342538bd05b448138b", - "static/images/blog/push-notifications-best-practices.png": "64a386549ddf9f28ea1635696f30b57e3c1272b59792ecb8c1d3bf603b302af6", - "static/images/blog/race-conditions-db-operators/cover.png": "6fed62916e9c4625093fb22ee70488744d17d1933fd0d29d6916b63c67c25333", - "static/images/blog/react-admin-template-sites/cover.png": "bfbc39ce6f458ca9930f144ba519d15b6ebedb4988bf912d3fa8682f7f45dd94", - "static/images/blog/react-nativecross.png": "25fb3f55f8dec1e4e1b07d4995d695c1f53579b2e283fe9894fe932591f01896", - "static/images/blog/react-protected-routes/cover.png": "0b9257f28c839295b8f31f382cb71e151729abb0ce02625b4f0bf2a67899a005", - "static/images/blog/reasons-to-run-your-ci-pipeline-on-appwrite/cover.png": "acc0bd5633739773a0641e8adaf2cbf0b3f88f504c5407801d155b507f055fbd", - "static/images/blog/receipt-scan.png": "475fba54e52031f8b05a759bfe65ed54c1aa52a64283a47c27fb20c8dfbf4b3d", - "static/images/blog/reducing-cold-starts-appwrite-sites/build-output-sizes-nft.png": "19f7c37c248fa871786fd8a47064475520e4dcb1df36c996871f3983fcd72495", - "static/images/blog/reducing-cold-starts-appwrite-sites/build-output-sizes-non-nft.png": "8b814c3736045e286e95e0866f7d61ae589ab8492985edce7c6b23e18d84dc7e", - "static/images/blog/reducing-cold-starts-appwrite-sites/cover.png": "17a950964dddaaafab1461ee0dbecd6170f4002d357ecdbd7e2152028a39f63e", - "static/images/blog/relationships-are-out-of-beta/cover.png": "7f2a8e8044de859606f69191ae3fded84ad2211180a5183d9b5cc2f5d2d60e9a", - "static/images/blog/remix-3-whats-changing-and-why-it-matters/cover.png": "258303cffbe98e2b76642220c091492f0c77cfedcd1989167a92683709f5f38d", - "static/images/blog/rest-vs-graphql-websockets/cover.png": "74e82a5592d964caac5425b6846c0c361e5f516867f8feaf5b2baca9b7e69860", - "static/images/blog/rethinking-saas-authentication/cover.png": "0240c259c4ab551f07c6a3c7ace5768fe6842b33e6509e34ae624e47d9308d40", - "static/images/blog/role-based-access-control-with-appwrite/cover.png": "9ebc0f8f111d54fe081d93ec5fcda8a27de5c36f2f338f544a23307033caea4a", - "static/images/blog/runtime-functions.png": "db81dfb18e4a8640e6fabb5045240e63cd7af6159039256d66ee8fe5c3bba70b", - "static/images/blog/runtimes.png": "ef87c9f81144bdb94469d65b11c921a44e7ca332e12723374750223adcbca503", - "static/images/blog/save-weeks-managed-backends/cover.png": "3f1d7e5013fd73db2a8b4e85f73f3d9cf64dc1aa2af80c81ba97131907a4c9c1", - "static/images/blog/scale-plan.png": "b4d945f876c918fb008aea7ce4dab52a98a354e86d9fdc60f3acbebbffd44995", - "static/images/blog/scaling-ai-workloads-why-mongodb-works-well-for-high-velocity-data/cover.png": "c675217e206df1c704665bc2831e5cc550b6e418af505a3b8ac7167e7919693c", - "static/images/blog/scaling-applications-with-appwrite-what-you-need-to-know/cover.png": "798f8c59a54818a0117ef75bd677b09801c22b2c2e89497e96e7a329a752a046", - "static/images/blog/scan-receipts-with-appwrite-functions/environment-variables.png": "9282cc7fdd201939e274c67421ffc796a818fbe9309c1b75a624bdc662be6fa6", - "static/images/blog/scan-receipts-with-appwrite-functions/events.png": "e7901570861d7497c7b2088d4c655c5278ba4e52b914188c34e05ae0eea136fd", - "static/images/blog/scan-receipts-with-appwrite-functions/scan-function.png": "1223d882682d8c34406526e5764968f0de32a5668bd6339cffd4bff0efb75485", - "static/images/blog/screenshots-best-practices/cover.png": "85e3a467827c2f52541feaaafeac90e411252dad0ff3a0b9688e31e782836160", - "static/images/blog/secure-user-data-non-expert/cover.png": "763c1181c63cb099f1fc19da5044287690d9ce5d7c80005f368c36b650928b80", - "static/images/blog/security-is-a-revolving-door/cover.png": "1c9bc30487829ceb8659da7920bcb9d90cea6201e9b1322bb0f6cdc68eba4627", - "static/images/blog/security-update-regarding-the-axios-npm-incident/cover.png": "8f05bcaf2aad7786b043d17421f69fbe19f49b11c4c10a576898c2438076e130", - "static/images/blog/self-hosted-vs-managed-backends-a-practical-comparison/cover.png": "9a819d76faf91a78fc6116b4202f08290d24a6002bcdd737dca2f85bd2546793", - "static/images/blog/self-hosting-appwrite-with-coolify/add-appwrite.png": "b1efadc68d075357c32698569856f7cb106ddce6caf3b88e50698a1ef97e283a", - "static/images/blog/self-hosting-appwrite-with-coolify/add-ssh-key-to-digitalocean.png": "0eb128b8cdfde988da008385254e1c49621e4b98072f3959267a32b5765df827", - "static/images/blog/self-hosting-appwrite-with-coolify/add-ssh-key.png": "8bdb1b8751fbdc89cb9f5b07af9c4a8c4bc825c7035899e9fc5f2ba1ac7700c2", - "static/images/blog/self-hosting-appwrite-with-coolify/container-health-checks-failing.png": "e0004ca690af0625ce5e11092e3938fb93c2e37a3f1a0509918ea58d629ce47c", - "static/images/blog/self-hosting-appwrite-with-coolify/coolify-dashboard.png": "aba66450b2978490f2b712475e67c39615ffcfc79a6fea235ca155c3c5f882a9", - "static/images/blog/self-hosting-appwrite-with-coolify/cover.png": "ef2ee53a0dffacc4a25d5012267a124718dc6664d15457d7ec56bec9526360aa", - "static/images/blog/self-hosting-appwrite-with-coolify/create-droplet.png": "33382b0e16e5ad34a6df88db61677d617bbc7fbbb0dcd7e0197ac2675f302ce5", - "static/images/blog/self-hosting-appwrite-with-coolify/generate-ssh-key.png": "9c4ac49fdcae8d1004aec5246e95182026aa62677881de1984578671ca56fd22", - "static/images/blog/self-hosting-appwrite-with-mongodb/cover.png": "76c2df27f2a364ac71ae0935cd77539ee576235617703a97a0a806111905040f", - "static/images/blog/self-serve-compliance-what-teams-expect-in-2026/cover.png": "602d334f21add74866c8b2089dbef96c88cc2c9b7b5d6409fca2978d61c59ded", - "static/images/blog/serverless-functions/1.png": "65f0b27672db8ef96297826faac64462a94ec242742d970e9ec31165d4cbbdda", - "static/images/blog/serverless-functions/2.png": "cc910cbce07637d514f2af3144be469be5d50ef4f03c30cb09d8071edd317a70", - "static/images/blog/serverless-functions/3.png": "500f8b99aa7dd677fe44d61ffb2fb864b04fbeea1e554c5eb9e90dca8c756375", - "static/images/blog/serverless-functions/4.png": "97a632ac80a7865ffa71266af64d74f100ab6434c40b417647c75e9aad864cce", - "static/images/blog/serverless-functions/5.png": "c0ff3048d7ae371e7c08dfe561708960c685f09c5963d97a11e50872ef3c4571", - "static/images/blog/serverless-functions/cover.png": "b36d7a21f715bacda40dc581c71cbc9a9070c30cfe687d83374018cd65a418a6", - "static/images/blog/set-up-google-auth-appwrite-react/appwrite-google-oauth-2.png": "b2b1de0b89e7987525d7345eaf000c29f55c6101281490755bab3828d5ba180b", - "static/images/blog/set-up-google-auth-appwrite-react/appwrite-google-oauth.png": "2299e7d346c5d5e7613e75ca7854eab549158ca6d9fdab3c74b437aefd98ed47", - "static/images/blog/set-up-google-auth-appwrite-react/auth-page.png": "20b08978d29d8406f57afb6be971d26b6679c38556e7870625709d3f5803439c", - "static/images/blog/set-up-google-auth-appwrite-react/cover.png": "0aa3d3141ae9c2ba9c75bf5e38318d7794726cb3f25f7c71513074b655709546", - "static/images/blog/set-up-google-auth-appwrite-react/google-cloud-create-credentials.png": "1625a4cf8e47ccdf7016aa4612ba33189ac908825b21c0437687595bf6330f23", - "static/images/blog/set-up-google-auth-appwrite-react/google-cloud-view.png": "b5a21ca5874bb4b3e807fed311726c61418c068bb34614edbef430081af7b9b2", - "static/images/blog/set-up-google-auth-appwrite-react/google-credentials-id.png": "2f49f2d3627d68e858e4e6e586a9afd279b609fb042ba0dbe0312f7f5af05a0b", - "static/images/blog/setting-up-google-signin/appwrite-console.png": "099275f71a18213a75668e859d0f323b7b2dee412595ee98ba803f4be37ce730", - "static/images/blog/setting-up-google-signin/appwrite-google-oauth.png": "ab87322f7462e29af331d1aeb65061434a7703c0e2474cade7f1ae6862fd18c5", - "static/images/blog/setting-up-google-signin/audience.png": "3f4f3907a41bd5c6d097be5c8a30855a29d98cbbf2762468178fe9b7bee6ea29", - "static/images/blog/setting-up-google-signin/client-details.png": "427ab1d7ec864d240ad3d9ecbd3884915d29523cc750bc60b5336f31160284cb", - "static/images/blog/setting-up-google-signin/client.png": "2b6d7c396656496b2166b28960d707d335615910777fa71c9cd666f5044c4b4e", - "static/images/blog/setting-up-google-signin/cover.png": "d622ddb9a0caeac69f642b57a2db337143bad94200cd0fa145f84a615441fe54", - "static/images/blog/setting-up-google-signin/google-console.png": "baf500b10376bfd2f73090bc3e10748f04c67c648d1f22ed0bc04868ee17b331", - "static/images/blog/setting-up-google-signin/scopes.png": "b869f5a93da19ea378dbd640abc69ddc664105e317534645d2b691562b260e27", - "static/images/blog/setting-up-route-protection-in-react-native/cover.png": "4fe0cf00adb5616042fe6284832738496ee167e6880a586a8a18a19f57e4f268", - "static/images/blog/setting-up-route-protection-in-react-native/thumbnail-1.png": "04e1109e882cc058fbec11c5abcc38acdbcd302ca4507950488cbd15ee65584d", - "static/images/blog/should-you-stop-using-otp-sms/cover.png": "99f46c16e5fcbeb72c2458edddbd6b579ad51495439e7b57ae1ac7b85e1f30ce", - "static/images/blog/simplify-messaging-twilio.png": "7027ac2d6ca5289f568ca0be260d0b670445a1eeaef058d8fef7964768466ded", - "static/images/blog/simplify-your-data-management-with-relationships/cover.png": "96f7f4b69ca911140d7b92fa919816a07250d513ebc4f5d6a161686a6b8cf618", - "static/images/blog/simplify-your-data-management-with-relationships/many-to-many.png": "c165776d863ce9baacd4a48cf01b64ece027fb23e58ec8a4971ce806445b7a28", - "static/images/blog/simplify-your-data-management-with-relationships/many-to-one.png": "656255e5ccd16c9c5b82857544d5e9b32162e473e11798f5f6fd71357cb3041e", - "static/images/blog/simplify-your-data-management-with-relationships/one-to-many.png": "7c61c920352428959796a23dbfaa52a69d5bfdf696a721510e5200fe7f5e4b78", - "static/images/blog/simplify-your-data-management-with-relationships/one-to-one.png": "c8baa424f8ddc24d3ba4c768a0c9acce89fa7208172c22ce734b973d7f457b0d", - "static/images/blog/sites-announcement/create-first-site.png": "f8533eb166c15a1acbeee7b2ba2ff3427682419be6f4ef80ebf1a17d97acbd55", - "static/images/blog/sites-announcement/sites-console.png": "3c9ff1dab9e15398ffd0b5d30376372bfa6fc0fba261069f951426a08e63426a", - "static/images/blog/sites-announcement/sites-cover.png": "d29c4fd070a75cc1417f7fdefc7d8c7e7f05977a2966c6edf5f39e2ac3d79bc7", - "static/images/blog/sites-announcement/sites-templates-add.png": "8667c6a812936b305f97e90119a282f43b057de9112d2103d66745cd6e9ffa58", - "static/images/blog/sites-free-plan.png": "8d259af9f107f60569fa2b1913262e5ec060f94cb6f9d3bc498d59251ac0b327", - "static/images/blog/sites-templates/sites-templates1.png": "3cd394485e6741609054866131a16bf8b655f1a5c1fe13abea85662173208705", - "static/images/blog/sites-templates/sites-templates2.png": "8db70809ed87553940827222504ad7db564787054ec482422de59e7a2382680d", - "static/images/blog/sites-templates/sites-templates3.png": "ae9c934f4bfe9a0019e92cba473f7430e068f78514fa252861fe786e08fcfc37", - "static/images/blog/sites-templates/sites-templates4.png": "28038dd9e64422909833f932d3c4bb8b94e4f8a42c1ef18c57c26faeb64f0e66", - "static/images/blog/sites-templates/sites-templates5.png": "264b5e1ad9f135c4e81f4eb94acf79d18fccd97c8a0a963e9d18ecfab0d314e9", - "static/images/blog/sites-templates/sites-templates6.png": "3a76eb5616e3c1d6e7b53564773629562e3af14ac75a3282215c680b65a68986", - "static/images/blog/sites-templates/sites-templates7.png": "b084811d5a122b706f06ff6fcd09c48832c1e8f7869f2df49e6d21fdcbab65dd", - "static/images/blog/sites-templates/templates-cover.png": "2a8fdc745cef0f84ee5b334c33cbf72e1664d1593626e44e40fd6d5aeb1852c2", - "static/images/blog/slogan.png": "d16486efecbe17bca9b836260288e76a7af3f32121bfbd8216c39b661fdbdb94", - "static/images/blog/smartbee.png": "15fb2e10cee3d17fc5bb0c34a940ad088afefeee4542f690fe32a8246d5b1cab", - "static/images/blog/soc2.png": "95c353fe82170f28bd0ac61676ac3fcf0dfddcfadf9bdf8d13144bde68a57a0e", - "static/images/blog/social-media-auth/cover.png": "d67d4b4315ada4fd04fb9b2d4f34ead222381f8a87d26ed84b4c1b7a1e063e4f", - "static/images/blog/socials.png": "bf3cc28994b58f92324fee5b35226ff54b114399f7d719480910d29371ca74f0", - "static/images/blog/solving-the-headaches-of-screenshot-automation-and-why-an-api-first-approach-works-better/cover.png": "9e34877fdbcc3439de5a858704c8d18ced08236ac8e3c46ba3bdba275f2b365d", - "static/images/blog/sound-null-safety-for-your-dart-functions/cover.png": "73fb957b009391b97b6498acb6747cfb44f1ec21a3d465d7ba2716c807891fac", - "static/images/blog/spacex-acquires-cursor-in-60-billion-ai-deal/cover.png": "885a59baa3e35ae43daa9d48db40533e7c11305411d9df6016da4240e9bf1fc3", - "static/images/blog/sql-vs-nosql/cover.png": "34afe294601659597c290ce1f2766eb2cc0b968775bc23dfe58dea3807339621", - "static/images/blog/ssr-announcement.png": "c96acddc105a9d8dafaba838f3400766ab0f95a130eac7bc52f20daa325ef2c9", - "static/images/blog/ssr-how-to-create-sites.png": "903b06eff29c30d05e51511902bb315b388324a69b11ab322e699727a6d00296", - "static/images/blog/ssr-vs-csr/cover.png": "ed920be5e77c9bbe55d766c41fdc0ba775b01e110405ab7a52c6292d91d156c5", - "static/images/blog/startup-accelerator-guide/500.png": "efe53e18dc264270169a03d78d5a819eca1a40860609f1fdd2e088917b2ef367", - "static/images/blog/startup-accelerator-guide/angelpad.png": "e9bea2175d041b799cd9cdd65533dd1063ce96e97ebeb20695b006ec6af939f3", - "static/images/blog/startup-accelerator-guide/cover.png": "da7b17bb46a5c7030ebf2db8e48c21dc6209c333ab01e8db0cc0f8a387429b37", - "static/images/blog/startup-accelerator-guide/entrepreneurfirst.png": "cb9b3bc9b2c2951a58970e0df20a45d9e7fd557029be0c730dde0f69db2129ea", - "static/images/blog/startup-accelerator-guide/masschallenge.png": "71dc8f327b05441a4174d98f3db717f44bc1b8fa5c80f619706608dfd9ce524e", - "static/images/blog/startup-accelerator-guide/plugandplay.png": "13e0f63304b07153ec4b03e2e008540855812dbc7c82d7cdc97bed593d67ef63", - "static/images/blog/startup-accelerator-guide/seedcamp.png": "afb90d411d3e63235fe6bb8f984368d6034a88d7f807bb00ef01d21266710eb0", - "static/images/blog/startup-accelerator-guide/startupbootcamp.png": "309c0da53e450c510f67e99f134da0784dbf4f90aac1709a2e8417368f2f4697", - "static/images/blog/startup-accelerator-guide/startupchile.png": "0e4fdb93daecb68655e5723a180ba7fdadbf6695aca0b7a322541f0b1e46c856", - "static/images/blog/startup-accelerator-guide/techstars.png": "c5598af2c3d4f6e0b8b33c674940f1b1cdde2d9d7dadb1fc67954b087aee3d3f", - "static/images/blog/startup-accelerator-guide/ycombinator.png": "2b1e95dc199d8cf9f76807d5efe1d98fce95c94dfad9d481d98ed8c3c7d32496", - "static/images/blog/startup-dev-tools.png": "a14e2294d6a0205ca3050d19b80fce58806b339dc5df0126471f65d7d286dab6", - "static/images/blog/startup-incubator-guide/1871.png": "c0b3419fb33e5e4655dc197a9c2b977620ed0e846e014ab0247e6453e25b4d95", - "static/images/blog/startup-incubator-guide/antler.png": "df585ccdb67c3ca9f3ca6ad951d0d964d198cd61ea86407ef1d5566520eb89d2", - "static/images/blog/startup-incubator-guide/capitalfactory.png": "b0152587a8be4f57c925292505165dd3ccfbf6db85682ace5a47973991eeb74b", - "static/images/blog/startup-incubator-guide/codebase.png": "101e0e41da0649fac4367877600103583163457164bde5f25501ec236b119b0a", - "static/images/blog/startup-incubator-guide/cover.png": "3e3bc1763c5fc6477035ac3f4ad5ba1e3d012f32da9f52677be493eee4c090be", - "static/images/blog/startup-incubator-guide/dmz.png": "bbcbc9199b4acf9f7c860d216815322c92e33b6d12c8323adb2a92ebd022bcd4", - "static/images/blog/startup-incubator-guide/idealab.png": "836810a537d6df976a34d92ea4aa96420ac3e6f2b86f0a7543406b282da6fda9", - "static/images/blog/startup-incubator-guide/mars.png": "396cfbacce58bc6fdec1fb9436a1a9a476c0f2a39ef0f911566b13e8a238778a", - "static/images/blog/startup-incubator-guide/plugandplay.png": "a480a6ea903b03992ebf29805330d862dbe1bb4a8ab379bb48389d3e8375b033", - "static/images/blog/startup-incubator-guide/setsquared.png": "ee3f4cbe7123d0fe1dd2e94fed92ef0c38c9b1c3a66410d80497ac0af58809e9", - "static/images/blog/startup-incubator-guide/stationf.png": "597669c0047f30acaab5585e8d229611b0466ecfefb654ccb26b9f1f596b820b", - "static/images/blog/startups-benefits.png": "0e5806050824dc102cde396e1a57a3bfb2f3b01aa937922cdf5dd7611cadfcc5", - "static/images/blog/startups-ideas-2024/cover.png": "3e8856e6fe312352525a2627dc6123e22b6eaf0715a76901e4eae67ceef4be3c", - "static/images/blog/startups.png": "37f079b565bf469f288d61206a21e91abfcee224556160acfe0942bf4f370955", - "static/images/blog/state-of-audio-processing/cover.png": "852a75d9644ab2420fa56b2859f85e3ae8cc857736671cf3dd2df127739b5260", - "static/images/blog/state-of-audio-processing/fourier.png": "d18d8e91ddc55a17361c7bacaf2f6d3df1c692181287257ff9dbd936b0fcc54a", - "static/images/blog/state-of-computer-vision/cover.png": "3566f4685a9d9e242d2d93e5ac0dba17669f8252616c449b0b21afc7da909c5c", - "static/images/blog/state-of-computer-vision/kernel.png": "e17954c3cd0be5b67061d8989eaa8348cdd99bbc5d6ed4e3cf34d4d045ea08cc", - "static/images/blog/state-of-natural-language-processing/cover.png": "a2884b41746777e3d1aebe5a36e63dd7d66237310237e23d95a21024dc1e249d", - "static/images/blog/storage-previews-vs-ssr-image-optimization/cover.png": "f39343c285b729bbe56b88c1b41b6b9653d2b10a2a56ed137df80cc11b561ff3", - "static/images/blog/supabase-alternatives-lovable-projects/cover.png": "1ce2b47a11901ea6fe019d8cd41a3e19a4086e748e8d6a3447e3d16e59058bae", - "static/images/blog/sveltekit-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/blog/sveltekit-starter-sites/congrats.png": "337bf14abd2050425541426b9f9b982b63e4fda79b66c7af4753587a5f71c877", - "static/images/blog/sveltekit-starter-sites/cover.png": "444e99829fa6f1642a1fe497d10f09d6f00c8a553ea56287fe6644e33b8f3777", - "static/images/blog/sveltekit-starter-sites/deployed.png": "5e3f0b120f9611b495ee3e85c67eaa63496c22a9453068dadadd44060e7c7639", - "static/images/blog/sveltekit-starter-sites/deployment-logs.png": "3052945334ee267ed3a54e79ab782b8e91a9b96a963ede74eb9ac769239d28aa", - "static/images/blog/sveltekit-starter-sites/template.png": "8d1e7fe52725bff2804d43e38c2cdc06b73d29072ceb25c321e8aa18a3751d00", - "static/images/blog/swift-101/cover.png": "d9ad9fd4e8c4b12216bb6b0c7d1d40c75afa0642aaedb66d89d0dc9a6f85e096", - "static/images/blog/tanstack-start-npm-supply-chain-attack/cover.png": "3d3bc9e64849b2777371a7da00982afb9cc591afc09572593415a700e3df1a89", - "static/images/blog/tanstack-start-support-in-appwrite-sites/cover.png": "1e01e95acb829ec3e29c709d4a49e81346d47fe96bc12a0c0e48f209a0d88fd6", - "static/images/blog/terraform-provider-appwrite/cover.png": "faf8a32b84ed48402fa6a771993fedcd136b024896a1833c0f91a15196d8a393", - "static/images/blog/the-appwrite-network/cloud-regions.png": "bfda330a650bcc4295d1b6bdec9d72287522061ebbbac8b0828d29088fa30563", - "static/images/blog/the-appwrite-network/network-cover-image.png": "b865fc4e14fbcba8e4b68ba5025d5999ac01e40422e18369a9e0649bdd99b2e1", - "static/images/blog/the-appwrite-network/regions-edges-pops.png": "0cf9a1dc9cceafc9be34004396e171b20168ae333efc0d557c8268a91cc83053", - "static/images/blog/the-complete-vibe-coding-guide-2025/cover.png": "da31e0f7574dc2ef96fe81b11969195f3ddd7b5cf0993e0d9d60e36b830a2e46", - "static/images/blog/the-developers-cloud/dev-cloud-cover.png": "6db372e6a9f0a6322eb6737b62a593a75ce415585e92e9e739577b879d17342a", - "static/images/blog/the-developers-cloud/graph1.png": "5b043d1cb19861ba53b75983839676a803042e0cec1372e0bcd6187bfd8cee61", - "static/images/blog/the-developers-cloud/graph2.png": "658cc29ef0a4911f6552ab97aeff2c1655d5b31818dc35c7f1f85e2a47618c2d", - "static/images/blog/the-evolution-of-team-appwrite/andrew-red.png": "9caca01d9945c8550d90302ace445f81a8db3d5d1cbfc11f1a13409f20244a40", - "static/images/blog/the-evolution-of-team-appwrite/cs-dojo-tweets.png": "20ea717bd8edf77fd839dbd3aa843da421487d7eb6e255dddddfa6016c7556ea", - "static/images/blog/the-evolution-of-team-appwrite/eddie-jaoude.png": "333d49c3cd39d42e3b11c13bbce329b6a4e80664d4489fa497f3a563a3abd793", - "static/images/blog/the-evolution-of-team-appwrite/hiring-cover.png": "c9a76fd149e9d6b7733cc0f23d406071f45c9336c4c60cf4abc94bcf2aeb0070", - "static/images/blog/the-evolution-of-team-appwrite/team.jpg": "bd139e5fc9f71de22c08d07e0d09b91761d9f3b63852454203f53bc015695e53", - "static/images/blog/the-fastest-way-to-launch-your-next-side-project/cover.png": "520c900fbf50be39555514f30ab6e5d467f22fa6c0b45ae0681ed83704d3ddaf", - "static/images/blog/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/cursorappwrite_cover.png": "33061608299b5fb82dce8db7215ba78dec2a4ec78153c7cec4c8d8da19d833a9", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/break.png": "a0da422099faff15de9f3995f6bc3ac9513784f1848918e14be698b86f951c60", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/cover.png": "374782c41e19e07f65ed89f069d398a0eabedcb79251debd28629a8ca03d8eb9", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/drafts.png": "fb8836eaaba040c82b133b5c411e7516495054a334c77f4ba1be6193ce48b817", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/lines.png": "99df0e374c0f9a29d3f964d71790741ed3b430af78dbc1bfff3f7a7096ff292d", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/new_logo.png": "9831dd57d2f8d93d6cbdc1974444767e9bd5a7270229afb93da01a1597c4c87f", - "static/images/blog/the-journey-and-meaning-behind-our-new-logo/old_logo.png": "0690abbd5e2720df68534729973ff0155c383900d64bcd297e1c67e517c785ce", - "static/images/blog/the-shift-from-SaaS-to-Vertical-AI-what-startup-founders-need-to-know/cover-image.png": "e4030cb8b735baa8f4f6eec9d0d32233011759b160882015738cda2e79da14d6", - "static/images/blog/the-subtle-art-of-hackathon ideation/cover.png": "a4007fb895ed8cb284e2409897282a784b803c199b91d58e90a2dd69f367ba33", - "static/images/blog/the-top-3-claude-features-you-are-probably-not-using/cover.png": "429930ed746a8d47a42358c99c1eba6ee0d33531d4270ac4f24594438f65f503", - "static/images/blog/the-ultimate-guide-to-vibe-coding-in-2026/cover.png": "7ef566133387995330f9b6d5df85d880279da4104aee30624b2f243ebff433cb", - "static/images/blog/the-underrated-value-of-great-sdk-design/cover.png": "9440e4f5a69b01d20796926ef3543dbba61fd1ba66e114713cf4ee503bc1d4b9", - "static/images/blog/threads-cover.png": "fa44d6cd70000ac7a62d3b9446b171f8e9fe1b27f157cb6ba2f98c1f8c043526", - "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/3-important-steps.png": "5a3ad677a3aff5f27f0ceb8b751ba830fb6e11ca5edca126df34777f378b15a4", - "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/add-platform.png": "8f055abaa1fa38a447166f712903c297ca966dc22316e864bcbd9acc45195e55", - "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/hostname.png": "e7e382b34dd86c588de0c8b8dac43b1664e322381b7f3ba448ce4042968242e6", - "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/permissions.png": "ab351d5062aa4724f1d031ece46a56d7b72d82da3d630ee60a44a4190292c7a8", - "static/images/blog/tickets-blog.png": "d6fd5a1cdbb9bcabb006847a223ee0e925484fddcc9ccf2293450bdcd2677981", - "static/images/blog/tickets-blog2.png": "ea2a12d9e520c8019fc6ff9f56f3eecac9f268b268c2c29d1d429ed7c6c93097", - "static/images/blog/tickets-cover.png": "693ce9df58aef051edb1b6779011f9295543ec6b39e70d8b08144b0c67336b91", - "static/images/blog/tooling-checklist-for-hipaa-ready-applications/cover.png": "95066aeb080e860c2f7ca34dbc0524bbf048db41eb9ebe6626e83ebf12af74e1", - "static/images/blog/top-25-vibe-coding-tools/cover.png": "ce7108cb2918ddcad9e04955172c301f02593d4714a37eac5a31c2f1167691df", - "static/images/blog/top-5-tips-to-build-an-AI-agent-startup/cover-image.png": "edaeb08b23398fd35e12b176a5b487e64804bcf884c5cf18ff49568050af650e", - "static/images/blog/top-6-vector-databases-2025/cover.png": "89150f1319bf3c66182c34304ee2b9847eddbfd9768ebe55d93d34979fded034", - "static/images/blog/top-7-prompts-every-developer-should-use-to-get-better-results/cover.png": "2dd4eb55c0c2d13b6d8a25ba63606e3047f5b50d36b450e0a8cf0e5dc6e5ed86", - "static/images/blog/top-australia-incubators-accelerators/cover.png": "42ad622b49db1044a7106aad2bbc963ceb003b3d5818b40dd738d1fc915d8988", - "static/images/blog/top-auth0-alternatives/Appwrite.png": "cc920e9920561fd7b452cb46838eec63c1cab47bdbb4f4de17b23a891fcbee69", - "static/images/blog/top-auth0-alternatives/Cognito.png": "c10f2bd1786b47af57f03ce442b50603a15dff2d33d03ffa6fbfa51c9ca95d20", - "static/images/blog/top-auth0-alternatives/Firebase.png": "51f1a4e5834e73c30a52d9466eabb53efe9a6ba4208cb261d3b7954284df33a5", - "static/images/blog/top-auth0-alternatives/ForegeRock.png": "2fda4c67857f42950b9478e2dd5d7d430338181e6bf2f2a9a278e99ef1f944c0", - "static/images/blog/top-auth0-alternatives/Frontegg.png": "b43a403df558559f583e789f6a9738da6002063b103c3859b9a33d15014635b2", - "static/images/blog/top-auth0-alternatives/FusionAuth.png": "1464a3ea07290e0231491bf6c85bfef1f7d036889fc73aa1372875dad08c88ea", - "static/images/blog/top-auth0-alternatives/Keycloak.png": "2e6587589d2a08c81a6cc936207939424b0c73d2efb274061ec18b2ddc378b7e", - "static/images/blog/top-auth0-alternatives/Stytch.png": "f93d6c321fddd79e4199776d3d970b8009224c4a0a8c849064fe5f13b48478e3", - "static/images/blog/top-auth0-alternatives/cover.png": "1852498d0a93aab981d61dfa7d1dbdebf19c0ab2b08a30fad8d088c4ec957615", - "static/images/blog/top-eu-incubators-accelerators/cover.png": "58abfd5f8bc9fdbdcac48962eb544e6dd0236c79b0d1a9eb44653eb7c00f77d1", - "static/images/blog/top-singapore-incubators-accelerators/cover.png": "23e0920dd0d94008c42bfc81fd86dcf33a497f137734098b326851878280974e", - "static/images/blog/top-us-incubators-accelerators/cover.png": "62ccae87dafd874879df0d99efc23e309817de1aa7a93e27ebee1c675207f5c2", - "static/images/blog/track-document-order-with-sequence/cover.png": "9039c2abd26cbc66aa2261dab0325e73927594210ff8a3f72e1a42709d6b2157", - "static/images/blog/track-document-order-with-sequence/support-tracker-demo.png": "20b2dfe37a112c3f8698f82626cb3bf57de28f7a97af77d2170eb70794f9884f", - "static/images/blog/ttl-cache-performance-benchmark/benchmark-output.png": "98c7ddd97079bda569d24eda0a6d1b4d484ecd8ba04512ba3add218d1f188db3", - "static/images/blog/ttl-cache-performance-benchmark/cover.png": "fafae7b6bc5ca56b697071303d46a8bd73a30c2d0ccb9f495edf8017ef897113", - "static/images/blog/turbopack-support-appwrite-sites/build-settings.png": "1e81ea56abf0e40cf486b3d91bec2821431d1952c0d3c1ac08bcd1a1ad4c0271", - "static/images/blog/turbopack-support-appwrite-sites/cover.png": "0284d5ceaeee67af91a89191893ff1fd597e8da26e4a4dad90fe817dfb9018f8", - "static/images/blog/tweet-hitesh.png": "f7a33874aa703133e28b303bd8f5ce38d610218032b454291d4738935bca1f1b", - "static/images/blog/type-generation-feature/cover.png": "c5ca682b5abf9fb719b3d0056aed821255d961a547fc83e1d27a0044d3dc3f5d", - "static/images/blog/type-generation-feature/workflow.png": "bcd3c053c900e19a7cccaadde9d94a9d6c743e52fdb778617bb7b7623cd2c711", - "static/images/blog/typescript-7-faster-with-go/cover.png": "cb9e838dd23e53a2e7d5776c9faba11ae5c6366ac27281e358885649261ddd31", - "static/images/blog/uber-clone-nextjs-appwrite/cover.png": "6cc2b5a1c56bb79d0e3777da31cd22d60459871c94874e5417458f788ae1d764", - "static/images/blog/uber-clone-nextjs-appwrite/driver-accepted.png": "0dae6fcaef9213efcc9f1e80014694f64798aed01517a2d922369bda13d76f55", - "static/images/blog/uber-clone-nextjs-appwrite/driver-ride-request.png": "4efb400863027632dbd4431950f6ac5594e4406fbaca220e2fb21e95005c12cc", - "static/images/blog/uber-clone-nextjs-appwrite/end-ride.png": "0f76a2fd400058b78b9730246e6be108a28f5ca0d36879373cbbfe50777d9466", - "static/images/blog/uber-clone-nextjs-appwrite/project-overview.png": "74bff9573aa1549a7219b148dad16f781d089be8868c8b800256a704d603b5b2", - "static/images/blog/uber-clone-nextjs-appwrite/ride-pending.png": "a63cd3f8956739337d0b43471ce113fdc0059862a0f30c0b0a40108b8921f605", - "static/images/blog/uber-clone-nextjs-appwrite/ride-request.png": "fdf54975a6506af117e7d615c639ccd034337381b3ba899f2935bcbd2de9cc74", - "static/images/blog/uber-clone-nextjs-appwrite/rider-otp-display.png": "12279215dadb14813946bbe09452670fb2e7b04dcdf924ca7e0cd8db5886270d", - "static/images/blog/uber-clone-nextjs-appwrite/signup-page.png": "78d2dd35e3cfa56225bbe0912eac6022a8d92eef59a16cfdda7251aa5c4adf8c", - "static/images/blog/understand-data-queries.png": "e85cb6ce2644feac4242000a6f7a87fb3f8e07c0b954c1cef17f0feab523c2c5", - "static/images/blog/understand-oauth2/cover.png": "f263e8dae70606276f8bba28b74a2521645cf45c969b91b4fd9975d917e050f0", - "static/images/blog/understanding-idp-vs-sp-initiated-sso/cover.png": "2a01d6d18f165d0d684dfa3d4bb5acd4712b2ed6a62e87a46025f264756c058e", - "static/images/blog/user-authentication-guide/cover.png": "b30435919392cb55056d5e82fb7fa64ed1716afcc05507abf5b1b63a16dbc91b", - "static/images/blog/user-impersonation-tutorial/cover.png": "838e47901ff914e4d1d77a0e994ab6efdb0d43fe23d9325817e3df17e2721c1c", - "static/images/blog/user-impersonation-tutorial/demo-dashboard.png": "e5f8d940207f0d3f4f06e16b10311d1b2294f95e65fb055d5c9ed4cc45cfd037", - "static/images/blog/user-impersonation-tutorial/demo-impersonating-note.png": "50bfc457863ab9f08885f4573ba97395fd36b7cb28735c9d7bc06b11e32e623e", - "static/images/blog/user-impersonation-tutorial/demo-impersonating.png": "a33348d28c67c5405d79dfe2dad448a77edb7c535fee6f04ac610b339187af10", - "static/images/blog/user-impersonation-tutorial/demo-login.png": "77ab384fd692fb5b648d507ebdb785c11ba30814aee0b1e1340466fbae744c70", - "static/images/blog/user-impersonation-tutorial/demo-users.png": "7d2bb5df84e9715a360f8d618615010e85ba4f8d158768096ebc07f004595492", - "static/images/blog/user-impersonation-tutorial/impersonator-toggle.png": "e7d3e0670b30d9fc988b6fa5fd875862776c5b685f46d2d80e10a8b51fc2cb02", - "static/images/blog/user-impersonation-tutorial/project-overview.png": "80e9c05ac34a4725bbf77dd7068e44a947b34ca53b6984ccfe3cdfcf9ccc757a", - "static/images/blog/user-impersonation-tutorial/table-permissions.png": "8006587edcb02c3c11326e2415ebe4190720816067a27d35bf50770a77b3d0de", - "static/images/blog/user-role-guests-missing-scope-account/cover.png": "4e2407b36d1975eec9ae211861df6b5841d00df52ff7d4709b599eab11d7151d", - "static/images/blog/using-nextjs-wrong/cover.png": "52805acd1a6a7107d71896271a480dd8608ebdadbc62f9d80a072310f71a8c10", - "static/images/blog/valentines-day-sonnet-generator/cover.png": "0534103f14d66efee62b6953b4b4ac0bf586891135f04201b4142cb8f846b56a", - "static/images/blog/valentines-day-sonnet-generator/deployments.png": "1ba7cfb0c2e875dda37434a4b3ef968bacd9230061dc8474767cc0029bdfcea1", - "static/images/blog/valentines-day-sonnet-generator/openai.png": "6ad3b49c06388f2f3acdc517bd33598d79513e3d30955dbae74881116845f302", - "static/images/blog/valentines-day-sonnet-generator/output.png": "be28db7b263851719a6fb7b72127dbe8578739fe4e02dac4a1805bf5e1a8f6cd", - "static/images/blog/valentines-day-sonnet-generator/templates.png": "e69192c1944e31f086780e91b034797af48bafe4f469631947f73bac50243503", - "static/images/blog/vibe-coding-security-best-practices/cover.png": "b0c69c03743fc542ff384da87d2cd733a85d1a057e654dc3bee1f572999a6500", - "static/images/blog/vibe-coding-security-mistakes/cover.png": "f3cfad1ebc8ea5034df673d0011ee87cfc98d0ef15986d75672988347ec29442", - "static/images/blog/vibe-coding-vs-traditional-development/cover.png": "ed973e32ed844c5bb24dff7946cb531d7cfc74e31fee5cd7208391f4feb6fc5d", - "static/images/blog/webp-support-for-safari/cover.png": "ea4e965ffe21500f3552073bb7ca325d453020cf095d67164329edbda3f1c799", - "static/images/blog/what-developers-actually-want-from-a-backend-platform/cover.png": "0c540d48b12cd7031e3cadaf4223086ded946b42dc283c641cfa024311b2ec36", - "static/images/blog/what-is-an-ai-backend/cover.png": "cb36f49035cbdcd97a70ac658783741f275d3a220b7cfd16b39d4fb86a929edd", - "static/images/blog/what-is-cdn/cover.png": "ef77860288e150c6c22f3950a5eae4c88aefefb6db204f10c2a0544e51548703", - "static/images/blog/what-is-ciam/cover.png": "45a5261ae1bb8a38777f60a21ea60426c0832e3d58bf3164100548400d388ce1", - "static/images/blog/what-is-cicd-a-complete-guide-for-developers/cover.png": "7abddce55b1467188faab83abd58189173bf9aba84de3d9f28fff0be8c6e9276", - "static/images/blog/what-is-cloud-storage-an-expert-guide-for-developers/cover.png": "b7f545dbe9334d60f214e748ddfcea47484530a97f30ecf579d064a053c2821d", - "static/images/blog/what-is-docker-a-simple-guide-for-developers/cover.png": "acd9c50ad749fcf676dd58b38cc6bbffba913bf5d817c6b725bd2c305088689e", - "static/images/blog/what-is-kubernetes-an-expert-guide-for-developers/cover.png": "a7601f375841b143d62511fe3bbfb4bacb6989ddc56613f772b7dcd3d5e90688", - "static/images/blog/what-is-mcp/claude-mcp-chat.png": "26842cfebca3ec2cec89448e1c0d7ddb3f5421cc57acdb8780d48d30a54cad82", - "static/images/blog/what-is-mcp/claude-mcp-tools.png": "3a5ae700867b8671b5c9e3af61b094aeb64611168463db66ff440e0d427ac6bc", - "static/images/blog/what-is-mcp/cover.png": "dc4537990c91d6f1768c5ab8775e5c52239eb901b15e2e74fce8b5a018855c32", - "static/images/blog/what-is-redis-a-complete-guide-for-developers/cover.png": "b7b87a372bbb99421c2ab6df37430da960728b5cf339f1803c432644154c764f", - "static/images/blog/what-is-serverless-an-expert-guide-for-developers/cover.png": "fd88e32613ca877625cd69e0e38ba76c3c2cc73da05b789739928712bdd7b454", - "static/images/blog/when-custom-backend-stops-being-worth-it/cover.png": "d03b13c4e8f3294823a7883cdae89ca18a4030b170c51f597bd139c9ca274793", - "static/images/blog/why-ai-generated-apps-need-backend/cover.png": "8761878c13c51dd8a720a625606b89b93d9c56651aed636fa1b2bd346bd4fd82", - "static/images/blog/why-developers-choose-appwrite-auth/cover.png": "f56c37ebfc25191e113b928ff3cf144563be740159e46d75a427bdafdd11214b", - "static/images/blog/why-developers-leaving-nextjs-tanstack-start/cover.png": "4581dead0651adab3e28e50610efa900956a0d120f222d991c207a65fbd09f7c", - "static/images/blog/why-documentation-is-the-most-underrated-developer-feature/cover.png": "52a9dde70eeefcd7e489305fc30d2d6f6a63142c5bb00ee027a81454eaef4676", - "static/images/blog/why-multi-cloud-is-taking-over/cover.png": "e588be61a1cfd1cd49f5e5268b13cd29d4525a0ff8b6c0e708aec57976a15561", - "static/images/blog/why-nosql-databases-are-a-better-fit-for-ai-applications-than-relational-databases/cover.png": "b36854f6a960adb330e7f0ea0d587e517b849a8e2591a9ed32c43542956e98c2", - "static/images/blog/why-schema-less-databases-are-better-for-modern-ai-workloads/cover.png": "991c2a060d00e35d22c266480fa2c651502408c6820a99c480b813952f50c5d0", - "static/images/blog/why-use-go-cover.png": "a3251fd6f2b87ef968f9d45a7020222649d8472e08ad5fd8442cde70ea17f947", - "static/images/blog/why-you-need-to-try-the-new-bun-runtime/bun-buildtime.png": "69b92a76d4e7935d666da1b010e6606a8b73c009de23e00a891c551fb1d042dd", - "static/images/blog/why-you-need-to-try-the-new-bun-runtime/cover.png": "96d6da52011044ed190620d57510a98964bec3f3339712960acead8f2208529a", - "static/images/blog/why-you-need-to-try-the-new-bun-runtime/ts-buildtime.png": "f1e53206a80937c86b33f615ba6936a8c10266dc01ba221da4a7c2735e806ae9", - "static/images/blog/will-claude-design-replace-designers/cover.png": "f8807ec6f2e1fb686a99d4beb90a5575150152ea6c1faab61ffa3d8f711cc50d", - "static/images/blog/x-oauth2-appwrite/cover.png": "1e6bfcc38f758e57a684a3b092bd8500e45353e7dc164af20753882ecbf8373e", - "static/images/brand/new-brand-grid-desktop.png": "3469b9692f5f8be1a635974c14a3e55c0f311559e499ffe83a145234db93da90", - "static/images/brand/new-brand-grid-mobile.png": "129543e6f56036bbfd3f0e8e12534b179b3202885f687ab71429f7b6c7e95fd2", - "static/images/brand/t-shirts.png": "ae53c30bc47e43ac23ffdcd54a90e5bdf7170e04eeb2e7c3f758e771dfd29e1e", - "static/images/changelog/2023-08-30.png": "81a50278aa2de5ca384212c8306f0b93c047f237c019efc43445e9ae7a0cfee2", - "static/images/changelog/2023-09-21.png": "954c2af56c4725bd12e1d5b7d54282f794edbc851e0770abea5edaf4b6161dc1", - "static/images/changelog/2023-12-20.png": "551a70e45d7f81314f2f19e40c1a97b600134fa1744f208a27b11d6b8352f89e", - "static/images/changelog/2023-12-23.png": "5d22635659acee0eb90739193fca16a116d803cdf4c3d03c4f553aed39d0331f", - "static/images/changelog/2024-01-09.png": "eab35a2da249ccf4b68bb8d0b20b6055e91fcbe8e85ab3ebffafeba40696a9e5", - "static/images/changelog/2024-01-18.png": "77547dd8c7e774f12c1c4f4d1b5ee2ad07037987cd8561f0c92b6a18a60c4bc1", - "static/images/changelog/2024-02-20.png": "87ae555ee1a9449de64ed172c778e8c9a87aa5ccc17f218b4e719957815ed794", - "static/images/changelog/2024-02-26.png": "fa42210f12622379650805622e0b6daa4c646df55700a8d8f40594885dbea5a3", - "static/images/changelog/2024-02-27.png": "9f352c78a931e9e2411052f0ffa7946048cd796a96371f9254ab951f623fccda", - "static/images/changelog/2024-02-28-2.png": "c9db849cbc69a9fb37a56034ebc9f5c9cdb03a0a83a5d76740eb0dd523eae74a", - "static/images/changelog/2024-02-28.png": "bae3197466547028760141cd1a94129e5db26a270e7a7b06d2c151d53664ded7", - "static/images/changelog/2024-02-29.png": "3e50bd799ebb898aa3f54e72e8c567a2a7f97b188437896a7b7696ae0ab34833", - "static/images/changelog/2024-03-01.png": "f647ab7d3347efa13f4454985e106602e959eef9191c1161e3fe0d46639c0c1d", - "static/images/changelog/2024-03-07.png": "a1ef777d724150fb5165b823c7b255e5b7b9418babed629be7ef5da97a2ee679", - "static/images/changelog/2024-03-08.png": "0f7723c28aa7abc65bd1ddae5fa8a5513a69898072174670920e5c5c05e6d989", - "static/images/changelog/2024-03-25.png": "6bc13b91c28177a109cf11166988e247760143a479a0e1d53fc8f6953857eb1b", - "static/images/changelog/2024-04-09.png": "5c0d313ad9a49d722a8b0ea3403705a86e7ecc0094f0a533ac1bbb29d47231ec", - "static/images/changelog/2024-04-11.png": "674cf654ef041402398139ca6e5ddc61b2702d516d9a790850fa999e202b6496", - "static/images/changelog/2024-04-22.png": "78052e4feb0cf42c0e4ac0d5bdccd7a4f06240cf290b5980da3793055bba374f", - "static/images/changelog/2024-04-25.png": "3060cdf5beeeaf6c532f61ba4c6fe5be4b376c0f1e06d7de1da7aa50d4a4bcce", - "static/images/changelog/2024-05-04.png": "22cdb640a19a22d5d246836e78d76bec12023c49ae62134c715f1402fa5e6485", - "static/images/changelog/2024-05-08.png": "0338f50271779ed4707b78782174b3cd5c5a544ce1645eab642d108502f8ba7e", - "static/images/changelog/2024-05-14.png": "bdb7c037335849984790340c7cbd83865e4ed70cbc17addda62469b2f3e2a950", - "static/images/changelog/2024-06-19.png": "bcc2c2d09b36876a9af3f58a5701313990d0fee5fbb012162e5b66f731ab4f55", - "static/images/changelog/2024-07-23.png": "6538096ce5a23ed268c346419cb89f4512745e0fb5bcc3cb75a84535ada6c07d", - "static/images/changelog/2024-07-30.png": "e5abc19850066bc8b1da55cd0a76d7ace8039fcf5d4eb679e1ad910cf2afa87e", - "static/images/changelog/2024-08-07.png": "c260d84e0f5bcc98c752fd444539e1408f1267bc136b4dfde49aff1be0b50243", - "static/images/changelog/2024-08-14.png": "6ec3b187e169e6417ea110141fefd7c664f12caee3867a7f9e59e7cf3f5efb71", - "static/images/changelog/2024-08-19.png": "c7c9bba16678ab61089c17ff3b0b6bc6ee122989e5acc0d647c89fe630e332dc", - "static/images/changelog/2024-08-20.png": "af9685568bbf61ddeef7ed8df237e978ef71d4c374157cc6713f3d674c97f25a", - "static/images/changelog/2024-08-21.png": "b8fe7fb1417074fb654bc1704dbb065b1a78cd1d34e075d80b7a2bdbb0aa858f", - "static/images/changelog/2024-08-22.png": "a714e0fd56a624e22c098969307a634930159aab90a7e4b6dcc8db3233450268", - "static/images/changelog/2024-08-23.png": "99bacf4ceabb34d9c6f3a127c4faabe8f2a174ea5c50664363440080fc7f36d9", - "static/images/changelog/2024-09-17.png": "e427761307c3a9c98763dcf50176ae5f4db4bd3ed8d411e03601646396c41e6f", - "static/images/changelog/2024-09-18.png": "fd7cc2a82a3bf5e76b0f9d13b5627b259f3b658133e9531c3c84ee4d397b9a0c", - "static/images/changelog/2024-09-19.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", - "static/images/changelog/2024-09-24.png": "4129893c1ea043b82af755a462fda8d78a7a5199638f84da549b2a2b29fbe976", - "static/images/changelog/2024-09-25.png": "d1148cc754a43599dd7b28760389d0fa2f366b912f3f9c31f237b96b87036900", - "static/images/changelog/2024-09-26.png": "b362912129d0e718c5dbc0cc80b42fb5174ac7e2efcc2386916eb69bb3e13645", - "static/images/changelog/2024-10-02.png": "ea4e965ffe21500f3552073bb7ca325d453020cf095d67164329edbda3f1c799", - "static/images/changelog/2024-10-09.png": "ca2619a378783a81d6fa090861bc3304ba379410d0f9ddfd164e8f09c85f279e", - "static/images/changelog/2024-11-12.png": "d7d0b3d7e763ed14affeb50191ca15b7aa383eae4126c17917103e5be0d13ba3", - "static/images/changelog/2025-01-07.png": "bdb4c05497abf91a48ba8a3458c975c5ecc0078358faed8b64d59e183315aadd", - "static/images/changelog/2025-01-22.png": "a0c758cf6c8a95e09a0d2ca562b0775a50d34a4d691d675cda70e44ad21805ac", - "static/images/changelog/2025-01-23.png": "b4d945f876c918fb008aea7ce4dab52a98a354e86d9fdc60f3acbebbffd44995", - "static/images/changelog/2025-01-28.png": "3c3d082bb76a507f22ea5ff3aa2bb5c0646b4315556190d6789a3412605dd021", - "static/images/changelog/2025-02-06.png": "a7641c324c281af0d70bd5f6b78cc816afef3881b9091fd22ea8a7fbc8ef1866", - "static/images/changelog/2025-03-27.png": "b3aface6bdf93ed6574744f4403380039745ed6f171243978f467272cbea3942", - "static/images/changelog/2025-04-15.png": "b865fc4e14fbcba8e4b68ba5025d5999ac01e40422e18369a9e0649bdd99b2e1", - "static/images/changelog/2025-05-08.png": "21bf4a899c82f3301ba1a7bf4cfb7c64fa86b382a389d24e44dd2db20384843c", - "static/images/changelog/2025-05-14.png": "20cdbcbda49e75f3bb19716911da09e7c9bec23b6ae0d5d32e7341b1528d8486", - "static/images/changelog/2025-05-19.png": "d29c4fd070a75cc1417f7fdefc7d8c7e7f05977a2966c6edf5f39e2ac3d79bc7", - "static/images/changelog/2025-05-20.png": "298e3730bf2943ccf6761ccf6d7af1e83316ececa9cdf4f008592344478427b9", - "static/images/changelog/2025-05-21.png": "fd979256158fbfcf5b30cd4375050b81f74ebb010fa147db2b01e5a626a8f3f8", - "static/images/changelog/2025-05-22.png": "a8ef400c006647ee3ae0d307553b51d90ede699935d7602ffa75fd2e59312846", - "static/images/changelog/2025-05-23.png": "23d2fa4a88db2d9548f43f95df15b5ca60d512481570ed2d1b3d66ce1b1f504f", - "static/images/changelog/2025-06-25.png": "c5ca682b5abf9fb719b3d0056aed821255d961a547fc83e1d27a0044d3dc3f5d", - "static/images/changelog/2025-07-01.png": "3a1b0f079847af4aa5465688751ea656827986e8233165616d4b57a31f5345ed", - "static/images/changelog/2025-07-03.png": "78a0fdf3b54ce8412bf6be1880eb4a42bcac2cb04420045a60bce888c8999c6f", - "static/images/changelog/2025-07-08.png": "40839c8f5c28a5d78c2507f12e165ac8f176c53b81d8eb6b77b46d1c58f381dc", - "static/images/changelog/2025-07-10.png": "f3d1d0a022771392019c760c6dcf88fc231a7f96d19e2eb61d89b3605e818463", - "static/images/changelog/2025-07-15.png": "83a7b1dd0e31ae86e49fa873cde0b6c0319a552b27dc447b4a214efd7f3fd534", - "static/images/changelog/2025-07-21.png": "e53db7b3b587465b1f7d1dc57324c52bf8ea7ecf0c2461eaf7b1beec6b5b0f25", - "static/images/changelog/2025-07-24.png": "ace33b30d5679c38b3cdaf9b375a914485a73478a47fef9217c5b421f8e1f4eb", - "static/images/changelog/2025-08-04.png": "9fbe339856b8040eb49fb01ca4353b5600609962ab8044dcfc34ffbe0e8a9738", - "static/images/changelog/2025-08-06.png": "7a2df8be11438af37d8972a83fb61f764fc6d395de2c68dee47b4759a5fd530b", - "static/images/changelog/2025-08-08.png": "6ebfc20da215e51653885c0bb186751dda9e56cd77722952203afabe97a48d3b", - "static/images/changelog/2025-08-26.png": "068aabe4cfec94d975ed88f94883873edabbe899c0ce0b2ef492184d03eb7c77", - "static/images/changelog/2025-08-28.png": "be962c8797bf7e2807d67a79be60140d006b232d15cb68afb86a890583ec2f5c", - "static/images/changelog/2025-09-09.png": "3cc94cc74f864c3db693144ad35f3c74133613519d5bec06980dcf4fcbcadb61", - "static/images/changelog/2025-10-21.png": "57ca859952c572108f945573807c91fea1bee593f73de5acbc4a392075f8762b", - "static/images/changelog/2025-10-29.png": "88204210852acd50bc72a9d7de29f088ef81a4c90941378125fa4f662bb61264", - "static/images/changelog/2025-11-19.png": "a152a7c9cd960c5123075aac94098070ce5ac98f10ee88d71e461dce136520f7", - "static/images/changelog/2026-02-17.png": "70a2c577bd927bd3e9391840d7fd030f195e975dfcecad536f6d713e23b60624", - "static/images/changelog/2026-04-08.png": "ad7549efc81af619c7bb1429472d3e792d9e49fd6be8e831027ad64c8da8a260", - "static/images/changelog/2026-04-21.png": "4134ae96f05ac2a603272582d68a2cfad5af0a804d19c414db709ca80e817cfb", - "static/images/changelog/2026-05-05.png": "26c94f354ac186bdb999e31ea1c33a9b5a7bf6312bd30a737da134456330299a", - "static/images/changelog/oss-progam.png": "e50d1c497ac1d07494fa1d40b1f219c8f14770f7b72e1258147f527e86f40eed", - "static/images/changelog/threads-cover.png": "f5599b528f33797f125da1fecaffc70763118d4d420b04f6d67a70bc651cf40a", - "static/images/community/avatars/1.png": "3448e87720fd3f55326ad04f18263f5094b61116c79d7e48e8b692b8012513bc", - "static/images/community/avatars/2.png": "95664afad5f30827ec1b9587e7188f3c199978e54ad3eb642891fd59196e05cf", - "static/images/community/avatars/3.png": "cae5311ccebfb4055f5210176002a6b4587ee0b75ea179effcc7c7fcc4914f17", - "static/images/community/avatars/4.png": "41706f6b7d5e0263bdb5a95b4792a5a24303d1b09c3372e492e7ad0dda700df3", - "static/images/community/avatars/5.png": "5a9e80526d724395b835a6adae78008752adba86f77e82200f6ca17d575b4a21", - "static/images/community/avatars/6.png": "31893530b10daf5b6b38b45390fd737e3a17849f452f6bce2dc1603ece32f760", - "static/images/community/avatars/kap.png": "b25da019c7d16ef0460f9637bce474bed9f708529315b5a3c5d2f4a49d13a11e", - "static/images/community/avatars/myshoefitter.png": "d86b7e523a837cb526b30be1e4eda13ea599d77a1f67843c277d1dcd49a089c5", - "static/images/community/avatars/souvik.png": "28879192a3a4788858db439865210d18662f93b7938ae58d52686244a303256d", - "static/images/community/avatars/stephen.png": "f0297aee5a5d90c98571f3fbeaf6076b10158ea457e64a0a737c8a49cda0cee0", - "static/images/community/avatars/terieyenike.png": "f5ede4d02e3e46ee1b776f511757087f55709d5be03d51b06736817e9b379b45", - "static/images/community/avatars/terry.png": "e558e8025048107604df7e5a74236dd294f1d1206ee2969d9f68fbee87954206", - "static/images/community/avatars/varun.png": "7f934deba664b3058a9dfba55a07eaca102e682696336da40541da6be3423199", - "static/images/community/avatars/walter.png": "d7879d3e01ef89b3c462db678ef2a96a3ac306c6be1cfe97b3da560b65d8b129", - "static/images/community/events/hf-kickoff-bangalore.png": "6a53d63253bb54b22444255dbbacbabaf9aeb894fcf19c866adce4ffb3bf501c", - "static/images/community/events/init-0.png": "41d0a2823a7d45904dde47d50b7ff8363762dae6901cffa671c38ae73d57ab83", - "static/images/community/events/init-1.png": "5a97c60f90f8efd57579a94124a91cfc1bd65c9fc967c00462882a7e20ab629e", - "static/images/community/events/live-coding.png": "0c7d6f8f76684b01c03919aa56a0e26f2d5e23ddbc7fd4d2d215a0b3496ac431", - "static/images/community/events/office-hours-2.png": "de6c4ae6267bab1741e5266502a73ea0cde0b7b41f1dca4dc0e8572765e5de97", - "static/images/community/events/office-hours-3.png": "943cf4a2a5bacfc6f23a7bcbb4e160d0d11f6fc0dc81c576ecf174c2f1480d39", - "static/images/community/events/office-hours.png": "ee398a7fe50a4895e59af98b6abb9db881039143353ec50cf40a0f89cc3b8b57", - "static/images/community/events/oss-celebration.png": "5c1e83e72246f6102393171e068fce6177feb4a0946ff5672e2b81072c8e4248", - "static/images/community/projects/glitch.png": "90daca1053070a03dd24a7718e8b12e8743cf8e697a121e1fd588dec0e3dab7d", - "static/images/community/projects/ucanearn.png": "ede3e5f1a951a6280cb43a9a323c4f9a6727ed9c758be570a4178c9e514cd62a", - "static/images/community/sphere.png": "cd803c1ae7faca976b709c5f4d531b53e54e7308b19358c36a4ef46e91ce9b33", - "static/images/docs/advanced/security/activity.png": "157d7692c824ba6c4fe0c87f5760a0df91c82c02a406521ab292dba9b4a4b3dc", - "static/images/docs/advanced/security/dark/activity.png": "d21e86ec21e43cd0b094fa46a64155d404f5a44169a40edc60b2b91a8166192f", - "static/images/docs/advanced/security/dark/dpa.png": "0272fd0697620c8b38605535ddfee1f8ded6b3f0b6c04bc0e13aad410547dfdd", - "static/images/docs/advanced/security/dark/mfa-modal.png": "6ac0196059a43487401f2094c2188c68be8827fcb3327777827b1fa7733dd438", - "static/images/docs/advanced/security/dark/mfa.png": "03a64072b9a9c40634dbc65a1dda17aebfb39c73d0e3a809c234aa47ab831ee0", - "static/images/docs/advanced/security/dpa.png": "5bfbf7c5654a27d23eeefe49ff70c79861d2734f454c62758978b1a600f1c85d", - "static/images/docs/advanced/security/mfa-modal.png": "f56b55bcb1ca889597bf8cb803fcabe8b66deaf2f06fd4f49a100d9a507cabef", - "static/images/docs/advanced/security/mfa.png": "903def2fe311e439851c1ed0b730bb6c88f8b8b32a8ad53152d244fb48b141e5", - "static/images/docs/advanced/self-hosting/dokploy/dark/deployed-service.png": "5ea12bd592dcebfa14257989174f1ecbd9cdc704cdfedd35e41ecb89dd668b4e", - "static/images/docs/advanced/self-hosting/dokploy/deployed-service.png": "0a4d09ed43507f05c3668723d7df06dfdbe492f9ce23eec2f5cebbb59c871feb", - "static/images/docs/advanced/self-hosting/installation/dark/wizard-account.png": "b7082787919afe0cb0d7975361356438d798927efda8a47c7471f08b4dd8816a", - "static/images/docs/advanced/self-hosting/installation/dark/wizard-review.png": "7d4cebea557f02e9e519390b5c16b2d552f641e8dff2c7c89db9851c8887edfa", - "static/images/docs/advanced/self-hosting/installation/dark/wizard-secure.png": "e558268592865d2ce464e37188b92ff4e1bd54d3c59fd643ad4acac2bcb117ce", - "static/images/docs/advanced/self-hosting/installation/dark/wizard-setup.png": "f16722e8e54da3117350d229ab2c31e955c49a54fa3439353a7c9524a3053bd4", - "static/images/docs/advanced/self-hosting/installation/wizard-account.png": "b3020afb2bb33c7e5258ae94fe8ba70db0446d5818eb859602bef94ca4e02e6e", - "static/images/docs/advanced/self-hosting/installation/wizard-review.png": "669d3b94cddbdc7dd4e4a784512726d83e74aed9a472f43d37812bd34bda8750", - "static/images/docs/advanced/self-hosting/installation/wizard-secure.png": "7730499fae6d0f7eb14d85f4978c2e0a84d2362c507d5cfe474ccc920f8cc1cd", - "static/images/docs/advanced/self-hosting/installation/wizard-setup.png": "a591eb264af97db479c2e34085e8f2bb901ec8dace8de36b089ee4ab623e9606", - "static/images/docs/ai/agents-md/generator-dark.png": "10273d567e8e6527deaeb6f92f0125821a0b2b33b2b0b301ea4d6162830bb43e", - "static/images/docs/ai/audio-processing-dark.png": "90852c361d73240474a316ca089edbc18e33b4665adb7d714dac9a7daea8945f", - "static/images/docs/ai/audio-processing-light.png": "29a92249b7f2706307321d5bb96d4d20a7ac41b6b55e61e374608e9941e9a6b9", - "static/images/docs/ai/computer-vision-dark.png": "9802337f7e7464e987c963a4dac750dbf3971765161049c7470e3ba976f15412", - "static/images/docs/ai/computer-vision-light.png": "bb27aef8648b2188bc52e50a27df6f12b7c3c50dbcc9d47a327fe93f23d4a06b", - "static/images/docs/ai/docs-as-markdown/copy-page-dark.png": "ec3257ec9d3fdef157af6ab58e231507bcb54cd098c24a66b4e7e5ccbcb76748", - "static/images/docs/ai/docs-as-markdown/copy-page-light.png": "9a445794f70859c4c491312a472c825ae44cb5baf24565cd7955b8f3db7d77a7", - "static/images/docs/ai/docs-as-markdown/quickstart-dark.png": "501b13e454dfe52d371b023f6a97a9007035d936262e45579451592913911cea", - "static/images/docs/ai/docs-as-markdown/quickstart-light.png": "b1e0306a50ba1c897a75a5c05fcfda3a3b8b94a10844f2c0716186e9389db5a0", - "static/images/docs/ai/imagine/studio-dark.png": "8627e92e29396ac17ff563121e6d5f7eef01e27b81ddf36e38cebcacd612e056", - "static/images/docs/ai/integrations/anyscale/demo.png": "f32f7040d1a818291726c1e3cda33eeacc91ae5a37aa2da1f2dd45cb3f531532", - "static/images/docs/ai/integrations/elevenlabs/demo.png": "6a4eba73a75c80676d7674d939b06ebcef5b99a8227d0b8c4df455777baa1534", - "static/images/docs/ai/integrations/fal-ai/demo.png": "613c2b5dd7ac8290ee22c69578a609e33805aa1843998f752348676fabfa464f", - "static/images/docs/ai/integrations/lmnt/demo.png": "6f1481d9bc1a0e364b89db3481611168c1865b0b243911b83a3e7b9ce5f920a0", - "static/images/docs/ai/integrations/perplexity/demo.png": "666102a0009f8e01b65bbec969258e1ae3599e8044dfd4dd149dfd537149c7bc", - "static/images/docs/ai/integrations/replicate/demo.png": "2891407eb05864296b71bb508a4934423e9a20f9e26a2547ab1efdfcd4f1b343", - "static/images/docs/ai/integrations/together/demo.png": "28cb8cf5f7496a4f04350a770b241afcd1322172739b8bb0f8016e34d7a12785", - "static/images/docs/ai/natural-language-dark.png": "de2a8a16dad6437634c4b697e22d7eb8d1f8f29502e046630c6452fdb13f9f9c", - "static/images/docs/ai/natural-language-light.png": "b2dcc805bf30011673bb64fc8254a1bc4ed3ffe7e23bcd0994474f7360079fe4", - "static/images/docs/ai/tutorials/image-classification/dark/database.png": "2ebdfc78e0b8a3704bc9e070f131e96f250f68c3e7e064a9272c93a2c7ccfd31", - "static/images/docs/ai/tutorials/image-classification/dark/event.png": "94f692adab2536e404b3cf0230219409574f7e1a7d3516c576ea8ee3db5c62e4", - "static/images/docs/ai/tutorials/image-classification/dark/result.png": "c1cab4ed14b01f0c34ac73a25cf78560dc2783db360216981735a4c90b616a3f", - "static/images/docs/ai/tutorials/image-classification/database.png": "cd44dfa38cebc418acfb921c5a58ed5101f047b398551c5948f9862024daec6e", - "static/images/docs/ai/tutorials/image-classification/event.png": "613260223aa5e4f4d2d471f633e75de442d8f59128732110da3fb6158b3a4798", - "static/images/docs/ai/tutorials/image-classification/result.png": "e8dda3f86f607d6019d7c0a07df3309700f84f3eeb8997723ac87607d961af1f", - "static/images/docs/ai/tutorials/object-detection/dark/database.png": "13fe6970a8bf044f0e231f00a743fb01ae09fe8b8014eb16ad318d1b884da352", - "static/images/docs/ai/tutorials/object-detection/dark/event.png": "f5cebb346fc8e85c93f2c434747427cef5a5148b1926e927eacba85077c8950a", - "static/images/docs/ai/tutorials/object-detection/dark/result.png": "2b95a19e5a42df5aec0f3c413c057b6537118875fa1e184d231602e85a2de126", - "static/images/docs/ai/tutorials/object-detection/database.png": "51fd3ffb6744e49d199c132ae1e3f360035e50842cd08e94ae84e90638e4dfd2", - "static/images/docs/ai/tutorials/object-detection/event.png": "72134e9faa6cc7b1482256b5e897a199976452597af1ecabcca13756d5232954", - "static/images/docs/ai/tutorials/object-detection/result.png": "0f5372337156e4548ea5f0ba1f2cc07e2610742b510c02a804772087653310f3", - "static/images/docs/ai/tutorials/speech-recognition/dark/result.png": "ff932e2b659995dd7b047488db9f2348d279b3d2cb34e472a19a132279dcc0f5", - "static/images/docs/ai/tutorials/speech-recognition/result.png": "d8a99c0a44886fc5c3cc0095a773a3d7e6d2dfb6c3bca42ea8c5477a3ff65f57", - "static/images/docs/ai/vector-db/search-demo.png": "c31ee2582814be34f2e563a595bbc48e58301d588fa3f8156d15bc6ecba222b7", - "static/images/docs/assistant/ask-ai.png": "b2117420f13bc3fc370a925c47c949f7600adb9972e03c11d0e7d060a274c6fa", - "static/images/docs/assistant/dark/ask-ai.png": "6f1a42c688a0bf0890ace1b563422c1273b704febe52c7554739619bc2802ea0", - "static/images/docs/auth/email-policies/dark/policies.png": "6d3a4e03452d34ee8e6bd036db58fb9ec6f3a1a6d76bb932fb29ebef49be0145", - "static/images/docs/auth/email-policies/policies.png": "37e26e5f14d275978e1ca818f46d0daf2a6c56bf15255161ae4c2ac1ac55d5a5", - "static/images/docs/auth/ssr/dark/ssr.png": "3b80b80e061ada103e4f8e4bdf3c0a554db062aaed3f5f3a6b02f5f9c05859fa", - "static/images/docs/auth/ssr/ssr.png": "a9a58a3a053dbfec7eef50894d973049254ac9af4ed7159f93a5dd95dc0faf94", - "static/images/docs/command-center/command-center.png": "4e32c190ab1fbc74040c43b2d85a8404af9b553bb9672c1a842fee92ecd48b31", - "static/images/docs/command-center/dark/command-center.png": "d3c26f78c419d22fa9779baf884561ac117a0597347310e54e6ee14c972c8a11", - "static/images/docs/databases/ai-suggestions-enable.png": "d331d502fb141cf28478cad2b2e96f0e622eae9c97625976c756ff52343dad77", - "static/images/docs/databases/ai-suggestions-review.png": "9796a6afa6164126acdfea67561c560fade3d39e51d2fec6bd9d6cf034ef0aa1", - "static/images/docs/databases/csv-export.png": "978aeeb301b9d7571793a5184fe955dae7a8a3ab7fbd0c613b12ccac73d51980", - "static/images/docs/databases/csv-import.png": "6ee80ce77a3a57b2e11b3887e3397b880472e066c1c6168fe0a633a09a5a8c62", - "static/images/docs/databases/dark/ai-suggestions-enable.png": "ea984bc7665a6e8d5e7dfc6df3281429a277e0c8402f2c7befbfcf96dba53b11", - "static/images/docs/databases/dark/ai-suggestions-review.png": "49d3e2636655ba3b76e271bc4cebdf005aa79f607e9185f3b49288adbc864a20", - "static/images/docs/databases/dark/csv-export.png": "8d2fbffbdc4b1e6e443d61a93fe4a331ecd91c66ae1457270f51f296c406aeb9", - "static/images/docs/databases/dark/csv-import.png": "bdd1e700c747e703ac75b744a8e1caa7e0704ac3439e4ed1077ee0a8e76389d3", - "static/images/docs/databases/dark/databases.png": "2cc14bcda3d289c3fb77f8ee4f432d93b46bd0b9755cbf26a53fcadbca3cf32b", - "static/images/docs/databases/dark/documentsdb-import-export.png": "8e87428ef2f5698bd041d398de165ac5063aa7db951901913ec4b7b1674073bc", - "static/images/docs/databases/dark/manual-backup.png": "539bdf15bf654a1a696951f4447465b286566460b311ce3db82eb010502a7e03", - "static/images/docs/databases/dark/pro-policy.png": "7f74b6eae525187faa9f34a12a0804b227ba9cb2bbd9300f5e8337e9512a6f14", - "static/images/docs/databases/dark/restore.png": "f2605303eba4c528bf0041b0e37bb64e61c66503b2d753716b224f66b8f62ecf", - "static/images/docs/databases/dark/scale-custom-policies.png": "0013e987e9b8b917cb9be4c28048f851f2d188f3bfa5ff17a11a7ac7cf9c3ade", - "static/images/docs/databases/dark/scale-policies.png": "9ca9523f2e20e9aa993f0ad933cdf1dcd12adbaa35ecb2a0b8b3d2fd65877e1f", - "static/images/docs/databases/databases.png": "0278a6bc5672684653f74bcf3c0d022fdd82a08d7a7fd438b28e21bd81b5e5d5", - "static/images/docs/databases/documentsdb-import-export.png": "4456efce983bfe6aebaafde0b119801cf35173a036bd0ddd06be4a74afd14778", - "static/images/docs/databases/documentsdb/backup-policy.png": "913cacbe957847f8a71efa2d2e704754e52cf9c276dce8978f6c473a9ba6595b", - "static/images/docs/databases/documentsdb/backups-tab.png": "231163729496618d26863c6fa7ad88069875f78a3c320033d4bddc3c2f8da376", - "static/images/docs/databases/documentsdb/create-database.png": "49ba017dcec96631a87f924b13b6b93478add7b516cc62947e87230b5a0d5de1", - "static/images/docs/databases/documentsdb/dark/backup-policy.png": "a29fad13b50374b3de55824f1332fa4be9c2c7a0c4c63f550d03306ffd546551", - "static/images/docs/databases/documentsdb/dark/backups-tab.png": "dedb6cfcdd9217e814e58cb14db3d8309f53e3071cb9f12edd9a0d5f9bad1d7c", - "static/images/docs/databases/documentsdb/dark/create-database.png": "fe4c1340226d31fb3fa1d655563c9c8fdd150b4d0aac3e217fdd2af40718c272", - "static/images/docs/databases/documentsdb/dark/manual-backup.png": "880f077a3a598c35c9939a1cfcab4bc82a2a88e730be1b4157359657f0a47dcd", - "static/images/docs/databases/documentsdb/manual-backup.png": "0f3432e170b68503b00fac4cf65ed7c5e5a04f34031b5011fe1c80f1eda2bf1a", - "static/images/docs/databases/manual-backup.png": "a5854158c5350e333ae14b699db4626c5c26e17b529f3acd137cfae8cb08e9c4", - "static/images/docs/databases/pro-policy.png": "b0d35de73c334614dc3f644459dea2bbc56d0da3157db985f24897597ae26302", - "static/images/docs/databases/restore.png": "97611c54c654631d2a86a8453a2ea3603c32e85888c065668e945eeeeb894df0", - "static/images/docs/databases/scale-custom-policies.png": "ff19a1683016de39f42788beebf2417af1688b2d53786ff2667d558e5c5fd488", - "static/images/docs/databases/scale-policies.png": "549c929932a92902c6a17684730a4bffe0c52ed8dd3d9bebc7ecc7818c81f244", - "static/images/docs/dev-keys/dark.png": "137a92c18e9dfb2c000dea70d7fea09895abe2b46a69bdf8b736997e21c457ba", - "static/images/docs/dev-keys/light.png": "7737135bb6c721adad6761d6c00616d3e9f5a88f153c8481ca55cdf481d63c42", - "static/images/docs/functions/dark/deployment-retention.png": "9bd06506317c6e5d609eae5c9214c31bb2dc0a836a0c38ca0266b1ffe004379c", - "static/images/docs/functions/dark/env-variables.png": "0fe62180f8b3b96f7944c91afcc87dda42cf52d8ce10672608c1df009b048b42", - "static/images/docs/functions/dark/template.png": "4149a261979cb36cf74309d1836a3fcd926f2d33587e92080d541ffcbc3ad19c", - "static/images/docs/functions/deployment-retention.png": "3ce7d938378dc5bb897aa4d211b75734971d09a10c645a6b0475c183d400c1ac", - "static/images/docs/functions/env-variables.png": "003c18ef56a95f0784c9ffd609e313955bd83b61ef277c454bb7dd5b2192280b", - "static/images/docs/functions/execution/dark/execute-function.png": "69063c276041e1e8cea09fb7aa27d3df6727fa6806d15101ac291e1b51f14344", - "static/images/docs/functions/execution/dark/scheduled-execution-function.png": "19fd1f34644186c0113f060c4f4b9c42ecd8392e8a86f32df44f90086943ba33", - "static/images/docs/functions/execution/execute-function.png": "9a5abab51d8c144214ecb6ff13ddd9d60c2cfcc7783aa2946aca5256f4bb83d5", - "static/images/docs/functions/execution/scheduled-execution-function.png": "79e95ac910919a77d05892eaeb11eca8205976c4d44a0344d3653b883e96aa43", - "static/images/docs/functions/quick-start/create-function.png": "a1581c7a1658cd24cd674eb161dc78178ca73f592cf7f0cff5919370e2d334c2", - "static/images/docs/functions/quick-start/dark/create-function.png": "4927388368f319005e4a44834b8001a983e1e6e850b2fb69c061f5f62b5a8dfe", - "static/images/docs/functions/quick-start/dark/function-execution.png": "3675fe0e2b533cfb2d117186b911d7363cc63855443c98c0d3ac1f096125d282", - "static/images/docs/functions/quick-start/function-execution.png": "572a3d34bd1a691c68f140e0ccadd843ae85fe263961abed523d1c677ab92aba", - "static/images/docs/functions/template.png": "0721035e8350ec490c1c427e6682e3df6d0961507c386d6461d1665729207c25", - "static/images/docs/functions/templates/dark/templates.png": "4744a780eb10e6eb4fba1e0c4aff86944d47b296505eba02759240ea12a55e8e", - "static/images/docs/functions/templates/templates.png": "dcaa28d5f08af6ad1f2435ec43bc795f477df2dd40c02876a950d95bd1b2d089", - "static/images/docs/keyboard/appwriter.png": "415dd038aea1f5eee651a36d472b925486730e65751af0fc7e5d074e0613f939", - "static/images/docs/keyboard/dark/appwriter.png": "fafce8c98d8f6ac1ce5cb5d4984c85195128491070648c8e3b98309fe16d62a1", - "static/images/docs/mcp/antigravity/agent-chat.png": "6becbb28e94198cc93e2446df90384b627c00cab8c18772d84f0f728e6fb3c8e", - "static/images/docs/mcp/appwrite/appwrite-api-secret.png": "580f1fef314f8eaeee0df5fb4a6af988fe0c381aa5f29aeb3d4b311553ac2370", - "static/images/docs/mcp/appwrite/dark/appwrite-api-secret.png": "424649c12773641f5f7d9c779c6d5be3c20c138a325ee930080c718032aaf512", - "static/images/docs/mcp/bolt/bolt-add-mcp.png": "20d897c74e8cf8fa2ef8d4a13a8bae71b2d6fa4ddc8f72f9c6f58279d5dba0a2", - "static/images/docs/mcp/bolt/bolt-mcp-settings.png": "cf29fc3f9490047eef9758f5c5d24f75148e40fa40bd05de8e6df754a5eae384", - "static/images/docs/mcp/bolt/light/bolt-add-mcp.png": "1b6a5910cf3ff34f239acc03221042101979a8688bccde47f25aba87751c7c7e", - "static/images/docs/mcp/bolt/light/bolt-mcp-settings.png": "1dea0c117e29421a7d32966923bdfbba7dfb8d8bcc825a813329c2ac8d0fc1c3", - "static/images/docs/mcp/claude-code/configure-plugin.png": "6f089ec25a250408dec84e2986681237d29c7ac382740857f155db20b60cc7d8", - "static/images/docs/mcp/claude-code/implement-file-uploads.png": "6e8e6d9b49d5d74d2774ddb332323de608ad0e9ebbef2fdbf3e43644af5cc55a", - "static/images/docs/mcp/claude-code/verify-mcp-tools.png": "7dad588fb8a57e767b4bff323169bc7d99c385232cb6f13eda659e9b722c2984", - "static/images/docs/mcp/claude-desktop/claude-list-users.png": "4567dac118c3744f5b7c00987165f9a10ac2a215463eb65ee172974d8f161dfd", - "static/images/docs/mcp/claude-desktop/claude-mcp-tools.png": "781da78a840dcdb90c2719d3eb38fd7c43d49c7f0735e0d1eef395f2b236768d", - "static/images/docs/mcp/claude-desktop/claude-settings.png": "8c9b574af016f18164e197008fd17b2cc25e0012637c19fc1491ecd364433fec", - "static/images/docs/mcp/codex/test-integration.png": "b90bcf5e2bb9b1901df1e4ee9c61f41c3d1114e14b8faf27fbd12c747c03583f", - "static/images/docs/mcp/cursor/cursor-create-user.png": "1b159f4a4b98fb7c9637524d27f610a3728e2ceb73884e19d047865220a589f4", - "static/images/docs/mcp/mcp-for-docs/api-reference.png": "95363bfe4e9bad552d8eb9a6342beb8183d108ee98d27f323167d1a22ba0862f", - "static/images/docs/mcp/mcp-for-docs/best-practices.png": "1275c41e2247be17d506d410c945ddc192d6e9268b0b42c9f7753a88cf01609d", - "static/images/docs/mcp/mcp-for-docs/code-generation.png": "c300e960b0c7c43128beec929ad1d7ba4448473e8635aa4b96b4d3eb82bdf631", - "static/images/docs/mcp/mcp-for-docs/troubleshooting.png": "d1c321ff920c4c130aeff73e976fbb5b4e94bf4a6906304b66d78b00272a133c", - "static/images/docs/mcp/opencode/oauth-question.png": "af7ba7b7b0808d7c2f50fec2c3158402995a3dba6a0c4d0f664ac451027b485a", - "static/images/docs/mcp/vscode/copilot-chat.png": "62aec2b589202897ee1184e538c2d11639f252b52e63ca28acb874aa3644c993", - "static/images/docs/mcp/windsurf/windsurf-add-mcp-server.png": "c105756cdcb0f5a9a4f979da344afd76f8dc1b7bf6a02313a1ff72165d52ce71", - "static/images/docs/mcp/windsurf/windsurf-cascade-chat.png": "47bafc3f59803b7f7e8dec2e4c9823f5454e268933efbbd9453e8ae5b66233f3", - "static/images/docs/mcp/zed/zed-agent-chat.png": "2f7f8a3403bc0e7299265a4d012da7dd4dbe3c98b8519be8ce9f1b1cab82fb17", - "static/images/docs/mcp/zenflow/zenflow-chat.png": "c4334ccaf33cfdfe707a2592e2010a1832a697e52a0cfd5e5c7377422f538b97", - "static/images/docs/messaging/dark/message-overview.png": "cb33e8c956e4281c9f75c78ed97fd7892f6c03f7af757d33805afcfe9375166e", - "static/images/docs/messaging/dark/message-status.png": "8b280781835ddf6178f5ad88db9a45933aa25cbe0a71a9f8c5eb196c4cf4cbdc", - "static/images/docs/messaging/message-overview.png": "b8bbb63fd99fe5c1d35afe0f584f648d625b199d4779dd5bdea8ea698d3ff529", - "static/images/docs/messaging/message-status.png": "deb5d6d21db4bf78aad3dd48045eeb229cb6d987dea32a2b38938c4237ea0a59", - "static/images/docs/messaging/messages/create-email-message.png": "9fbe18c57eb9c262b800e8542ce5314c0353fa02d37a082a248157600c5e8281", - "static/images/docs/messaging/messages/create-push-notification.png": "b8bbb63fd99fe5c1d35afe0f584f648d625b199d4779dd5bdea8ea698d3ff529", - "static/images/docs/messaging/messages/create-sms-message.png": "265282b46be70144a13551f4023bca9f93b6c135a0db2ca9b84ec00fad85b265", - "static/images/docs/messaging/messages/dark/create-email-message.png": "8c63972c33b8f45e2e0efd54c5d277b28174f2333a15c5790d86463cab935fe7", - "static/images/docs/messaging/messages/dark/create-push-notification.png": "cb33e8c956e4281c9f75c78ed97fd7892f6c03f7af757d33805afcfe9375166e", - "static/images/docs/messaging/messages/dark/create-sms-message.png": "082c917532cbffd3a767632308f26aa39ae0ea960d75d7d7beb7224bf550f5ca", - "static/images/docs/messaging/messages/dark/messages-overview.png": "87dbd7f21ee799d7534209ba5a9dea07bc9730cf807c4997de68be0f61279460", - "static/images/docs/messaging/messages/messages-overview.png": "fdfb6520eae59cb9f6cba4ec22023e711e109bf54b86af686a005ffd7c96af48", - "static/images/docs/messaging/providers/apns/authentication-key.png": "c9dbec50762a87db7e60c8435d3657d29ccad1513c736dfcd60b170e55c6d242", - "static/images/docs/messaging/providers/apns/bundle-id.png": "de4698d38359be1785b3fb9983285a1c3b1101aa0344f2ecbe863a3511d20187", - "static/images/docs/messaging/providers/apns/dark/authentication-key.png": "c9dbec50762a87db7e60c8435d3657d29ccad1513c736dfcd60b170e55c6d242", - "static/images/docs/messaging/providers/apns/dark/bundle-id.png": "de4698d38359be1785b3fb9983285a1c3b1101aa0344f2ecbe863a3511d20187", - "static/images/docs/messaging/providers/apns/dark/key-id.png": "35f8b050f463e4ca7b6d2e818950bec79e17339b9c77e955e845cc26b14775c3", - "static/images/docs/messaging/providers/apns/dark/provider.png": "7c65178ce9f1294722591cdc98fca8cb1f869a626e50036699029642abb85941", - "static/images/docs/messaging/providers/apns/dark/team-id.png": "fade21913d15e7ed007073097ff13460d9a8223f6d082970ece7d88b997cad49", - "static/images/docs/messaging/providers/apns/dark/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", - "static/images/docs/messaging/providers/apns/key-id.png": "35f8b050f463e4ca7b6d2e818950bec79e17339b9c77e955e845cc26b14775c3", - "static/images/docs/messaging/providers/apns/provider.png": "35636188ffff8663ed61882551b264ff409314c12d85dac833dcff922b70d408", - "static/images/docs/messaging/providers/apns/team-id.png": "fade21913d15e7ed007073097ff13460d9a8223f6d082970ece7d88b997cad49", - "static/images/docs/messaging/providers/apns/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", - "static/images/docs/messaging/providers/fcm/admin-key.png": "6fc232db47d0be5940efbc4001d84df174263f9198c0dc5d84d4a2fcfd0cf568", - "static/images/docs/messaging/providers/fcm/dark/admin-key.png": "027edc39a2fae5534daba4ab6ced82d94fb72a3f6ac09f122bfa167caa7f135c", - "static/images/docs/messaging/providers/fcm/dark/provider.png": "7c65178ce9f1294722591cdc98fca8cb1f869a626e50036699029642abb85941", - "static/images/docs/messaging/providers/fcm/provider.png": "35636188ffff8663ed61882551b264ff409314c12d85dac833dcff922b70d408", - "static/images/docs/messaging/providers/mailgun/add-mailgun.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", - "static/images/docs/messaging/providers/mailgun/configure-mailgun.png": "0a82e677c864b7fb83ce3ef1048da1c5bf511191e95ed93a512135056e93caef", - "static/images/docs/messaging/providers/mailgun/dark/add-mailgun.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", - "static/images/docs/messaging/providers/mailgun/dark/configure-mailgun.png": "9ce80a1ec126acd5d1a938450888907ca9e3229122461f0e59f8b04a7eeee568", - "static/images/docs/messaging/providers/msg91/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/msg91/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", - "static/images/docs/messaging/providers/sendgrid/add-sendgrid.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", - "static/images/docs/messaging/providers/sendgrid/configure-sendgrid.png": "bd25a5a79914f921943c785cb71a065f22c216a77559177b9414e0e10dd77cfd", - "static/images/docs/messaging/providers/sendgrid/dark/add-sendgrid.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", - "static/images/docs/messaging/providers/sendgrid/dark/configure-sendgrid.png": "a2aa070f29d566d00ac34a82c7bc5772f35899bcf557e7261ce8d424c84c817b", - "static/images/docs/messaging/providers/smtp/add-smtp.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", - "static/images/docs/messaging/providers/smtp/dark/add-smtp.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", - "static/images/docs/messaging/providers/telesign/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/telesign/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/textmagic/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/textmagic/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", - "static/images/docs/messaging/providers/twilio/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/twilio/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", - "static/images/docs/messaging/providers/vonage/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", - "static/images/docs/messaging/providers/vonage/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", - "static/images/docs/messaging/targets/add-targets.png": "6d556059980c6044bcfbcca9dd3a788668cc5d14aeb8435601b50d88c8c5d445", - "static/images/docs/messaging/targets/dark/add-targets.png": "30a6f8857872afbb039c0b0c49d22125bcfe24ac4ca16977239765aeb6b06d55", - "static/images/docs/messaging/targets/dark/target-overview.png": "fea677a37e9e52ffcaa732b51646c9b94870636ef7f8e60f4f09b0136ab988f3", - "static/images/docs/messaging/targets/dark/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", - "static/images/docs/messaging/targets/target-overview.png": "17b9916836857a5643b0aae6d7cdd262cf5691531424171af7afdcaf2d81a93c", - "static/images/docs/messaging/targets/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", - "static/images/docs/messaging/topics/add-subscriber.png": "1a3c0f3ad789ce234edba36aa1a8629da81cbf6e3fe7e2d7cac101785c004967", - "static/images/docs/messaging/topics/create-topics.png": "c1fbeebb4c87a0d056b0233554017ff956eedadd33d548eb85bb13437ea0ba81", - "static/images/docs/messaging/topics/dark/add-subscriber.png": "f8e15bf09666a3c63eff2d063a0a67bd6179b761321b95d599901ef9ed31eee6", - "static/images/docs/messaging/topics/dark/create-topics.png": "c5edcc9f3520fcffda63037e9ac868630bc0168e0435bd667c2eb6862f7012ca", - "static/images/docs/messaging/topics/dark/topics.png": "384cb364c5e927021f8679e299621277fbfe94870d53ee85ab2ad9a4610bce8b", - "static/images/docs/messaging/topics/topics.png": "7cc9165a3393eaaa4094a26c28801b529b4cdcf4b88c321efd6c6c7b2f2215e3", - "static/images/docs/network/all-maps.png": "93e18e80eddc1e2bf7683fdeeb81de066fe70d74fce52875e89ef1361d4fcb36", - "static/images/docs/network/dark/all-maps.png": "7d94238252c272f2b97405eed0ee8acf9c541b4f3932d70f441c69851becf36d", - "static/images/docs/network/dark/edges-map.png": "081c4a21883848a93cdc9274f06b58bedd3f9e5175eba9bf015f389959bc6d00", - "static/images/docs/network/dark/pops-map.png": "a2c658165d7a5648c736418c59a60ce6373b5e8639502a4f43ed81da5a2a70ce", - "static/images/docs/network/dark/regions-map.png": "6c0e02131ebb9604874316314812d1047742337f70cb47e1afe370d14d35347f", - "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", - "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", - "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", - "static/images/docs/partners/apps/account-applications.png": "85b60bff922db940aafe30a3eb5c1646d66a30f6d7894df2f0c14c65bd79d7e6", - "static/images/docs/partners/apps/consent-screen.png": "5c6875f7d9af0180d0c5859bac2c57bb620a2243aac72530ca122a40f3758b50", - "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", - "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", - "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", - "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", - "static/images/docs/partners/apps/dark/diagram-device.png": "208a3dc343bfd1c4ea16d64b6b19e8efec363855231b0eaf467de1397bc29a64", - "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", - "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", - "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", - "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", - "static/images/docs/partners/apps/dark/quick-start-consent.png": "7b5c60b821ea7d3cc037ba77f97e858429c6a63a99b453ac063fbe9628e458c5", - "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", - "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", - "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", - "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", - "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", - "static/images/docs/partners/apps/dark/registration-publish.png": "e50dd334c7df7d926821ee37c07762e0fea196fd3da8a5bf6ff7b92d21b8b09f", - "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", - "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", - "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", - "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", - "static/images/docs/partners/apps/diagram-device.png": "f620b3b450ca3b34fc9326cb1b4bd9fc7066e4c912b229c211e1ef30ff77010d", - "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", - "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", - "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", - "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", - "static/images/docs/partners/apps/quick-start-consent.png": "43ceef1d6e6a1f4b73ae0150508909f7af903332dc2817ba168fef361b185e57", - "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", - "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", - "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", - "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", - "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", - "static/images/docs/partners/apps/registration-publish.png": "734184fab22320d2c473d25ee8218ee6ebaed5971787d1e1930057d0135cad8c", - "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", - "static/images/docs/partners/apps/registration-support.png": "da585bd47fa71c9277a8f98a2b561c9fd31bc99a11a9169367a82bd3e744f8ae", - "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", - "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", - "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", - "static/images/docs/platform/dark/add-platform.png": "1bb0e7dba22556e64064951882d625532285fa80bed43fd77774f31545a15b0f", - "static/images/docs/platform/dark/create-api-key.png": "f15696f0b28dfc46813d7185be11da8be89da72be66b1894cfcc7227036e4afa", - "static/images/docs/platform/dark/create-webhook.png": "88f7f5c857fe986b5803c7df003c4db55faa79e3fa3135cf9491073d0b2736be", - "static/images/docs/platform/dark/env-variables.png": "da2a73b5d3420063e9869c40050b6168e5b5446a97772a26ca2a894e36021134", - "static/images/docs/platform/dark/execution-details.png": "c0481ddc206447460f9d317ba8d421615066f67a50bc9ef41a8f71766ecffb14", - "static/images/docs/platform/env-variables.png": "16f95151e4f6ee9fb8056f075b9f5027fd91f0c2a28586c5624c3ffe9b7a1ee8", - "static/images/docs/platform/execution-details.png": "ece1364b8b00254bbd982421b6eed6d7f519d34c4e80377fcaaa4cb5d5dd3f89", - "static/images/docs/products/databases/concepts/dark/index-lookup.png": "2866b226af8235d58ee2d6e42fe941cc6648db77210a995cd11b668e43cae477", - "static/images/docs/products/databases/concepts/index-lookup.png": "530acb39218dccdad6388986119b04446fa0769719c120c5c3aa69552ca75cfb", - "static/images/docs/products/databases/mysql/create-database-specs.png": "623282bddd45eb245adb20166fd336089718a91bb7207a4f22b9811e13b96ba7", - "static/images/docs/products/databases/mysql/create-database-type.png": "0ff2c521f3f40f467587954120339572bcac0c6d6f76f0f2e6935e640d7adba3", - "static/images/docs/products/databases/mysql/dark/create-database-specs.png": "41bcda64b5cfac906639e077549c1429ec3701f8af9f49c4d1548e4716a23028", - "static/images/docs/products/databases/mysql/dark/create-database-type.png": "2a212e8322d6475dfdd2a1599021bd94f5fef42414e76ff13d0a59aca431b287", - "static/images/docs/products/databases/postgresql/connections.png": "e3096521fc169b41bed8a01c77afc923d1fd1ef53939940b90c3bbabeb3294b3", - "static/images/docs/products/databases/postgresql/create-database-specs.png": "80c5136b2df7f9636f230cda64efd024e5a0867d283d5d6750b05b1da8514b25", - "static/images/docs/products/databases/postgresql/create-database-type.png": "dbfb5e319e8ff5cdefb2691d0ab8a9a4a97edb94a62e52fedee726b1585f56f7", - "static/images/docs/products/databases/postgresql/credentials.png": "45d224d28771564581ccb4c4ae8d733fa192e3c8121fd4fefd63e28b91b9b764", - "static/images/docs/products/databases/postgresql/dark/connections.png": "c4a9abd58079668afd131627e8625811bc2d9b902a395050720a8cfafabc341f", - "static/images/docs/products/databases/postgresql/dark/create-database-specs.png": "07d067e17932689a9e014262c6315e46dd8bb2edd4e4619bf112dd743eca7936", - "static/images/docs/products/databases/postgresql/dark/create-database-type.png": "de3281805c2193d8f82ec81b53e1031bdcb6bfdfda875832d041e07d8f407579", - "static/images/docs/products/databases/postgresql/dark/credentials.png": "b44c3e27fe3e217ac048f5207ec55cba75a34ffe0a056290899ab62b70536491", - "static/images/docs/products/databases/postgresql/dark/monitor.png": "f8921ca48411bab35403b13894a8cd05216c931c206f86b853a3d236302660ad", - "static/images/docs/products/databases/postgresql/dark/roles-tab.png": "2fa52745b9e2c6e072332aa4050d4995fe10a779af931f01ad22dd280e337b9e", - "static/images/docs/products/databases/postgresql/dark/settings-compute-tier.png": "8efccefed72b6543f5a62ef64990a150425fad02aaecc531c42d51ac900fb210", - "static/images/docs/products/databases/postgresql/dark/settings-high-availability.png": "d8f12ff6c9b1e6ac1911323ec2ad4591e6bbcdc6bc56f0bc96e9344ff9e5aa5c", - "static/images/docs/products/databases/postgresql/dark/settings-network.png": "cd2924cdfa1457338a0f53a5055f62abf13350b722ef4b788693f1d7861e2631", - "static/images/docs/products/databases/postgresql/dark/settings-pitr.png": "773fc9622de3299b5d94c6de1fda0de53233143be5acc032f6eac65f044434ce", - "static/images/docs/products/databases/postgresql/dark/settings.png": "51ecfdd292149a4b010704b2a21d2f0cad00a5bd3aed1f6f88d9efb35be46f09", - "static/images/docs/products/databases/postgresql/dark/sql-editor.png": "128fa75d8518612915df4a4b5de6c096ab05dd7df48bb89414e3330977ea5a17", - "static/images/docs/products/databases/postgresql/monitor.png": "da2160f8c22ae0dba29619672d04adea9e553e07e342931775fb432cd000c69a", - "static/images/docs/products/databases/postgresql/roles-tab.png": "b13d5caaf9a839ee5dabcbcb156fda3594ed38f7c30c4f092d1095bb5a895edb", - "static/images/docs/products/databases/postgresql/settings-compute-tier.png": "a4a7ed1d2ad3fb01ca8adac0497d075fd58cc11e0f53ece7ed2257eca0828fd8", - "static/images/docs/products/databases/postgresql/settings-high-availability.png": "1a84efe9e0132012d009eac1b52a67739fbf471761ff0cce323f7b160f3aff5b", - "static/images/docs/products/databases/postgresql/settings-network.png": "ef685f1b56c80259c944d39033a895bbddf6aa8744964d47677863b9c94f0ceb", - "static/images/docs/products/databases/postgresql/settings-pitr.png": "267a9f4b60667e618f8c6ff09615c19423cfec7e182421fc929339e537d861cf", - "static/images/docs/products/databases/postgresql/settings.png": "ded8f34bcd1b812ea5a9ddcb48a34db8678ae696a9b03ab16c934b29621b395a", - "static/images/docs/products/databases/postgresql/sql-editor.png": "595b73cbd6f712d31b015ac224f6cb606875fe3a98cb7bf3c09ac6cbec25720a", - "static/images/docs/project/auth-methods.png": "caa81b517332b06cf539edf25de91a444d8e19ac212d2dd8d75ba14f74933db6", - "static/images/docs/project/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", - "static/images/docs/project/dark/auth-methods.png": "45421e0c586c5f7dc156e823642ab9667f97950f23ca01ce3b8d993ee49fb820", - "static/images/docs/project/dark/create-api-key.png": "f15696f0b28dfc46813d7185be11da8be89da72be66b1894cfcc7227036e4afa", - "static/images/docs/project/dark/email-templates.png": "8bff7fd71fef2c2a30106ab93dab9daf26ff4ae4b3f1031fb502f2b5cede4a0f", - "static/images/docs/project/dark/labels.png": "b7c5abaa89675ab00356e468bafe159fe690881d9cb01d5eb1fb25c70ffa2d07", - "static/images/docs/project/dark/mock-phones.png": "f26a9cd69f3bc57279cd17109336ea8f55c40f22118b29bd3066afb678ebdf84", - "static/images/docs/project/dark/oauth-providers.png": "4d16fdb37b8f1de8c27a923aa0309e5dfd2bf7666621a11091d6443bed861bc4", - "static/images/docs/project/dark/platforms.png": "d8e1f107a3c9597ac703fa3c98279bf7bb398761c137455344a8cab05857ec0b", - "static/images/docs/project/dark/policies.png": "d51a421b4c57b4f2a0d28653e156325b113816a2ad096a2ff15bb15702362b6d", - "static/images/docs/project/dark/protocols.png": "ff39e7d76dd82d5d13024dd39f589f49ab159c67d1805cb32d3f8ba907b62822", - "static/images/docs/project/dark/services.png": "fd58dd37313629739db739392a287c5bd15cc196ebb9ed0095b069684aaf6218", - "static/images/docs/project/dark/smtp.png": "8ce568291e90b4e46039d9b8e19cc7ba4a57ccbbd452af8138ad68cc313b874d", - "static/images/docs/project/email-templates.png": "2e1c76df90f6337c13c95224254511b6cb27aa1e9d3568ca92d532fa00dfacb2", - "static/images/docs/project/labels.png": "c3c1da1332ce324bc9cc7506979eb62ae10864fc64fa133d011470748a155cea", - "static/images/docs/project/mock-phones.png": "ad8c936aafa4782f44611e1c8be9a0a85578485cff3ab49356355f10c178be4a", - "static/images/docs/project/oauth-providers.png": "14a9497cbfb216bc66ce0ce4709b598de640608c07976dda3261f63186df06bc", - "static/images/docs/project/platforms.png": "7200e9aee04f6fcbc1d232a474b9f80ed406e78ec981c59f69f576649fa8f564", - "static/images/docs/project/policies.png": "1a35fa9333be000e5131e011fa7e7644aea1148e43d238fa51c98366b7d5871b", - "static/images/docs/project/protocols.png": "22bfbe1bc2960244c467d8dc373d4b021a79ee9a9b01e9e1d89c5cf3b0bea385", - "static/images/docs/project/services.png": "b7bb5785e64fdace11e6989a070e326cd1dfc5a67de9a8e17e80ebde20c5fbdf", - "static/images/docs/project/smtp.png": "52a456cd65a8aa9049bbd09168d945b10ece6f80ddf6c15f4ab2fc40affa9fc7", - "static/images/docs/quick-starts/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", - "static/images/docs/quick-starts/create-project.png": "7fdb25def02c5dbdb08cd38c2d03b7b454c930194a900553e3e68d51cb28a1d5", - "static/images/docs/quick-starts/dark/add-platform.png": "b12a85b64b136589268831b9cb26a664ec97418ad25a38be5273baab8253aa16", - "static/images/docs/quick-starts/dark/create-project.png": "0052d287bd84b36962832b3347e322209ad4d25fd5b4c0c65cb01ff6a7a10937", - "static/images/docs/quick-starts/dark/integrate-server.png": "81d3034027024c1939c7c4b8ecce8a02ca36aca573f2062c6865b7a3106e1b53", - "static/images/docs/quick-starts/dark/project-id.png": "9e2af09237c50630355cb74a3ffb923438df18fd1e2ff56efa4bbf2fc15d3442", - "static/images/docs/quick-starts/integrate-server.png": "203b96264e104f06500e645c556b1cdebd1c7abcc29beda898fa631baadc43d7", - "static/images/docs/quick-starts/project-id.png": "500863e0f77e32b5a0c593e2c55b23bd114338948176f866b89f8af10ceaf7ba", - "static/images/docs/sites/add-domain-cname.png": "396a3b24fa4df6954d8ba7991291ee7227a5b049007f1330342d9551a6721692", - "static/images/docs/sites/add-domain-ns.png": "77564b8f3a4a30221e3003e7294f5bfac2c2d531db5a229134d461a13ef6a7b6", - "static/images/docs/sites/add-domain.png": "23f52d29a1a510ec404b97f999cdf146d7d1a3eebdfa859d633c41d76b11321f", - "static/images/docs/sites/branch-commit-urls.png": "ede353ba437785726cbce1a3850f6ed67fe950bfb96798c6c0181f5b2f81d950", - "static/images/docs/sites/build-settings-install-command.png": "6a132e2b6af4faf82ec1833524ceee7b66d63ae14a57038f5a20b0eb10e97cfa", - "static/images/docs/sites/build-settings-rendering-ssr.png": "974041353ce2453d9f1ba5e07171502e992d36c61b8c8940b59ed5e7a90c8d68", - "static/images/docs/sites/build-settings-rendering-static.png": "27f10511e13d85365c86c992f3d191ab62e5cb72ed8254815a257ecfbba133ba", - "static/images/docs/sites/cancel-deployment.png": "7e532109967d43fd74661374d9e4f97647b9c8ac5b0194afa35498f0465843d4", - "static/images/docs/sites/create-deployment.png": "0ef48ff80a34db4c4fd129142b2ebf27d6b558c1137f45b8e8380f6dede597ef", - "static/images/docs/sites/create-first-site.png": "39d14e09887877fc0015b894cf5d6649dab0e05dd9afc74ab43c4d4d53679c45", - "static/images/docs/sites/create-site-wizard.png": "6874dd7e6e1018ed5e277092b9bfabaa54cd76805e26ffee8ac0c23cc00386b8", - "static/images/docs/sites/dark/add-domain-cname.png": "e68464d428c90d3e329bd229109add8fc7462fdf6220b949eeea3d2e91169960", - "static/images/docs/sites/dark/add-domain-ns.png": "c23a3500adeefe2f940b26582a3c44f2c567b27795e7aa6ea85af8ca49cfdbc4", - "static/images/docs/sites/dark/add-domain.png": "39dcdc16a06e1755d87c70329618ae97dd40052723006485d7d05bf263cbee95", - "static/images/docs/sites/dark/branch-commit-urls.png": "ececfd4f560295a83beb304c5740244deffcbd6a66d2861182af2e4da98bbc0d", - "static/images/docs/sites/dark/build-settings-install-command.png": "aeab3da28cc1133b5ba30d70f7b5ef5b324f7007d8a190ba04bceac2b6622193", - "static/images/docs/sites/dark/build-settings-rendering-ssr.png": "11b048b4c2c24b615d743c565d444311dae411f14f3cd62cba01e94ee95d5ef5", - "static/images/docs/sites/dark/build-settings-rendering-static.png": "b544ef0f46e5cf5a559c82bc4cc824e8d0cbff6a5f261317266ad3029c2c5af5", - "static/images/docs/sites/dark/cancel-deployment.png": "a2079bd1215cdfb96912cf6a18a38ea709d29dfbcf55264b2d06d2acfdf147fb", - "static/images/docs/sites/dark/create-deployment.png": "3ee5d50486093881f773aa81c9ee78580a768b53e607c70748e429769bd9830b", - "static/images/docs/sites/dark/create-first-site.png": "f8533eb166c15a1acbeee7b2ba2ff3427682419be6f4ef80ebf1a17d97acbd55", - "static/images/docs/sites/dark/create-site-wizard.png": "ebd1295574354780dc322723c0eebf0318c625541b2d433bf2703145fa083eef", - "static/images/docs/sites/dark/deployment-logs.png": "d0fa8808c1fa74ed1762e1a77842d8c70c6a1d746da467f8c5622b1659d379f9", - "static/images/docs/sites/dark/deployment-retention.png": "e34f3af185354cc9df9392790393a00530fa7a1b790ccc464a1b7f36d71d01d6", - "static/images/docs/sites/dark/env-variables.png": "091fee9e8505df6c1b9b3c20ab59be40b2effe5299ad5202b43cf2cfe7b5b085", - "static/images/docs/sites/dark/git-repo.png": "af8daabb8d6ff48e0a95d45d5a643b4daec8df6301dddc098dd651bdfd1f1284", - "static/images/docs/sites/dark/github-source.png": "2ee329e009f045a879736a39cef8fca262da06c568eb6bac2ff1b7a70269989a", - "static/images/docs/sites/dark/inactive-deployment.png": "efc25a312fb5f3ebd94ad0fd438e33bdb9b1c0ab4b199b12ee257cd32d5473c5", - "static/images/docs/sites/dark/instant-rollback.png": "e58b3db2de0b3033ea04299cdd3872e97414b502ea7494773b1cef105e0b6850", - "static/images/docs/sites/dark/log-details.png": "4a4827ded6d8e10a0e643716c32200152dfbe9c77bef3c57e2b0b05fe06afa8c", - "static/images/docs/sites/dark/logging-settings.png": "67cea3ac62308aabd1dbe64981fa955a5b66c7530a26315414341d4f07284246", - "static/images/docs/sites/dark/manual-deployment.png": "af051ef9f95bbf0e12d76ecd1e0f92adf9fd39aac193427f47aff134693c0faf", - "static/images/docs/sites/dark/preview-deployment.png": "13ae79b4614bf0c29b159217b75a5e61df738c574e52103ae17ce37c65e5a9d2", - "static/images/docs/sites/dark/redeploy.png": "4e6c6c139678e9c8e570097af32184f842e81f5212b7849ea6d41d51ea14eb03", - "static/images/docs/sites/dark/site-templates.png": "8667c6a812936b305f97e90119a282f43b057de9112d2103d66745cd6e9ffa58", - "static/images/docs/sites/dark/timeout.png": "55485f8c89156e37f128725a6dc593be8ddab6e5f5b7000dc6f48500bb90cca8", - "static/images/docs/sites/deployment-logs.png": "e52c90b303ea699d6ac79de5ac07efadf52a8738f49ce3fb1cf8cc21319551d2", - "static/images/docs/sites/deployment-retention.png": "e2c7fbcf9acca5dde18f57d562096e0dc7e83222b188223058ad33b92b5b4feb", - "static/images/docs/sites/env-variables.png": "f51eee95b324f9cc0d7ef995b30ce795f54cb05ffca68adf109c3149eabfee6e", - "static/images/docs/sites/git-repo.png": "123ac583cd78bf0ca56fb045b168059b4292f713f470988077f4101a9b5f37c9", - "static/images/docs/sites/github-source.png": "eb58d2223e2a71c4ed4e91352e365fbc2bc88a3013fa44e3f618e843e26da64a", - "static/images/docs/sites/inactive-deployment.png": "0917682c98d63975de888fd521060d5f86ea967879451e392585ba11172d2cf1", - "static/images/docs/sites/instant-rollback.png": "2b896c4d4b6551004b6d22e4a8da6f5d4dba1f31d9bebbc7310a35584e19cf0d", - "static/images/docs/sites/log-details.png": "f8c36c823312330ac21795f29ea106afcf12009a810d34fbfa57baf5a0144a2d", - "static/images/docs/sites/logging-settings.png": "82567ee93b7507201172bca5e9089fcf375d079c276ce326170fa221fb72f521", - "static/images/docs/sites/manual-deployment.png": "82e50a2387d862c61f83bd3a7d75814bc567c070318728669c61b08ccb3ca2b7", - "static/images/docs/sites/preview-deployment.png": "e85843945aadfd40714d49d7f554c5fc4b0ae05265805af7437a620ca85c2dbb", - "static/images/docs/sites/redeploy.png": "f4a4fe1ba45a02ddd7513c66f966ccc89b747d1dded7ce732858a03952a867f3", - "static/images/docs/sites/site-templates.png": "f6886138f4a6d17b245c4d23dc9e8a2908d5f4eea3a4337d9f73220b4ad3b889", - "static/images/docs/sites/timeout.png": "aef6461e4d4e929f45e435d25378c937e5706cc1ed1faacbb577d815482a43e1", - "static/images/docs/skills/method.png": "980b5054c4aebe443993bb32bb069a532f54c345804f40c36b2901338ef598ef", - "static/images/docs/skills/scope.png": "f031aa64b0d8b5d84bc514f742a9aa4f049aa1ad3366a6fe79eb8281dafaf142", - "static/images/docs/skills/skills.png": "05c95624d7670d39da107c441156eb62fa3b0827f5dbd845ee388163932471da", - "static/images/docs/skills/tools.png": "5e70fc0bd2ead04ce1b8986f438a3af6ba54133ec88295223c59731e969ec964", - "static/images/docs/storage/copy-file-token-url.png": "c3e0636256aa626b9e636794dd9c7beef1e6dd3fef9e879be1d51205dda6186a", - "static/images/docs/storage/create-bucket.png": "910cc635a1df6c523d77558cdf868669ed6e244584c9f8161dbc258419ce14bb", - "static/images/docs/storage/create-file-token.png": "b96a38c5d335492aa9916a00a58785499083190165f1e47129733dd9dbf695d4", - "static/images/docs/storage/dark/copy-file-token-url.png": "c85415750d1b8690581e6ee7fa4da5503e9f757cd0bf9ca0f7313c35f0fe7eee", - "static/images/docs/storage/dark/create-bucket.png": "f5eb234822a8b60ea837e76c8067de4d7829c37a8f2e75b71a2f05840cb3466a", - "static/images/docs/storage/dark/create-file-token.png": "3c8b8e9001bd6de52bfa370ac7902bacf29eca6e6cace9e4ec862fc72204ad12", - "static/images/docs/storage/dark/delete-file-token.png": "328b010618af595906371171fc331b0c5974503bad2ff0e8aa5427662bb87655", - "static/images/docs/storage/dark/list-file-tokens.png": "9817f2df138dc6f9b7f7d426ec332e643cc4568364120a635cd491b228c90076", - "static/images/docs/storage/dark/update-file-token-expiry.png": "8475610efbb0cc7509dba07abc49db3a915c418eefd9993d31525c1b88f8104b", - "static/images/docs/storage/delete-file-token.png": "a164513305bb6786461634cd52543de1ddf57986357884f2191862e776fd7716", - "static/images/docs/storage/list-file-tokens.png": "560848ab320baad5cf2c86637d31c944af31e5a9d3994be97ebd19ac86d6209d", - "static/images/docs/storage/update-file-token-expiry.png": "75e1e752bb2c69347c1a6c8d0daf3d53a00614d89950fa5e7aad63cbf49046dd", - "static/images/docs/tutorials/dark/idea-tracker-collection.png": "c95349205b8eecb6a79337fc5c248fde5b43ddcf5950ddab84b3e03990a21a66", - "static/images/docs/tutorials/dark/idea-tracker-permissions.png": "b52e26ba4f25eb645b44caff6dbcf5af3ba8f3e5aa8aff52e7b115ae5946eaca", - "static/images/docs/tutorials/dark/idea-tracker-table.png": "98194f16cbd2091c09d7969e6d59a5df8643118c6fec4bb608bd9f6d1d47559c", - "static/images/docs/tutorials/dark/idea-tracker.png": "9820e4943d3eeabf32f1411dbeacf3e7095802c4c12611f3a34f268ab797ea53", - "static/images/docs/tutorials/idea-tracker-permissions.png": "d000be9f6666bfee2c8dd574fd833341c94221a81c8e92cd07990bbdb037fb93", - "static/images/docs/tutorials/idea-tracker-table.png": "71b4b769b2bbb6ec98f6baf6f176287651c542b21476eb9f67e37d373fc4d76e", - "static/images/docs/tutorials/idea-tracker.png": "351a3e01e750b9e3fcae46110d1f58a0439631f746879d38588679ed5c63e32a", - "static/images/docs/tutorials/refine/posts-table-dark.png": "6d9a41cecea26f07ff9ffffea050e0036d86d3af84e82e9b7bfa794948cc45e2", - "static/images/docs/tutorials/refine/posts-table-light.png": "46befbd05fe1a6545f6f752de56a99a4bbabad91dcd003279b78d12d5f93e009", - "static/images/docs/tutorials/refine/refine-admin-panel-dark.png": "d2b0fc755b7ad8b9bcb8a56d971baeac13f6908ea9cf1c68c058aaada29041c4", - "static/images/docs/tutorials/refine/refine-admin-panel-light.png": "339494e7ded1fc6e95b0cd32b912b75759a9e97992e5bb10acd3bbf845ffc478", - "static/images/docs/tutorials/refine/refine-create-page.png": "a92b121aa0166f4567b7c46bd3333cbecec9665ffe0081dc9ba39e54b19e9964", - "static/images/docs/tutorials/refine/refine-edit-page.png": "342fc9a93c13aa51a4805fd3566e9f88e7bb401f88fd465b20cc6d93c04cde5b", - "static/images/docs/tutorials/refine/refine-list-page.png": "ed92355548c0d40b1ded2d519f95cf22ab1c07f778a970e135f1e865643eb93d", - "static/images/docs/tutorials/refine/refine-login-page.png": "0e82a7680fabd4687022b9210a562d9d000590c6a35ffbb8d2e814fa585e34f3", - "static/images/docs/tutorials/refine/refine-show-page.png": "bba0151f23a7e01377fd6f75e5fb60497516f1904e6ffc6bd5cf02c907c7d494", - "static/images/docs/tutorials/refine/refine-welcome-page.png": "15ecc21edb31b7e9a04ab4745d0d7fa1c54c7ddfd99406872eae0c904b8b807a", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/functions-stripe-domain.png": "603d7670db6f9e08597392fc0359f83797bc1de1509178bc1e2c8e0d750f9e37", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-api-key.png": "9fa5bcb77507178cdacf9849a7458ed548a1c12e2dda75af737c362bede6932d", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-dashboard.png": "0ba88f5fea3e72775be24f4ab607f212cfa078b8d42c6c2672d10ab0d0e876cf", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-webhook-subscription.png": "a74388cab69ec80b5dd3baacce12300a3131935f34f9733a6a62c73dcfbc4def", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe.png": "1bcedea982c61a634e8d605ff84cc22d68b9a168c3e3d8f75d3b943c0ff369d2", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/templates-stripe-subscription.png": "42691a8fddb0e8bbd93211dde2abed20ae93cd5ac5e0e9e3b9fb52fda1e53f8a", - "static/images/docs/tutorials/subscriptions-with-stripe/dark/user-subscriber-label.png": "5ad8e71ca458ee2ff107d74c713953f81a9d5957528df1ecf40db88e5d221888", - "static/images/docs/tutorials/subscriptions-with-stripe/functions-stripe-domain.png": "de6b28f0cf676e9140129314e6d6c65bba628e07cb6f2759fdbb458a7a48bad2", - "static/images/docs/tutorials/subscriptions-with-stripe/functions-stripe-subscription.png": "b01342229791c12560bba8ca1ba59d8f0c50d0d3256c8cd210b4711bfb6ae7b1", - "static/images/docs/tutorials/subscriptions-with-stripe/stripe-api-key.png": "9fa5bcb77507178cdacf9849a7458ed548a1c12e2dda75af737c362bede6932d", - "static/images/docs/tutorials/subscriptions-with-stripe/stripe-dashboard.png": "86739ab66d4829174028235aca522e946e85f5c071806f45eabd0e12f6cc147b", - "static/images/docs/tutorials/subscriptions-with-stripe/stripe-webhook-subscription.png": "a74388cab69ec80b5dd3baacce12300a3131935f34f9733a6a62c73dcfbc4def", - "static/images/docs/tutorials/subscriptions-with-stripe/stripe.png": "ede8f97b81331733b20df3a1ae5de1e3aa888e83391d1d134cd1f7dfd36893ca", - "static/images/docs/tutorials/subscriptions-with-stripe/templates-stripe-subscription.png": "93b81057c039c5c681a7a8bc45ea1364a0d14aa59b0ae72b9822bdf42e9cb774", - "static/images/docs/tutorials/subscriptions-with-stripe/user-subscriber-label.png": "63b725eb0691d4a5d2ce6887b4e1502a7d396c4f0445fad46be924d5b9a786da", - "static/images/heroes/avatars/bishwajeet.png": "10eb3279903f1cb9f4192f194b88ed235512f970627f81f64ead5088a0bff697", - "static/images/heroes/avatars/christina.png": "f8861a4539533cf7a20fd869553d2cbad61ec000366954c6e2de2624b7475c11", - "static/images/heroes/avatars/danny.png": "b6af8d55b2ac676c637fa392dd419e1d1984d284f7aa999f74845d2691cc829d", - "static/images/heroes/avatars/demola.png": "e8af0e4ae5f0c6f923cf7fa690f7dc961e7b294e29320d591964bcd35f694fe5", - "static/images/heroes/avatars/diana.png": "2c790598e1109ecc3c69da042ee8f5784aac7efc17fb44977560055685e21cd4", - "static/images/heroes/avatars/emilia.png": "ceb498b667a222a8a271bb248b47e59fb925fdb34c276112b0e5d221f4602e60", - "static/images/heroes/avatars/jason.png": "689aec96efb6be70128a84e9604747c5b5a0864a7dc80c02da8daa0626c26ebf", - "static/images/heroes/avatars/lucas.png": "d6cae3315ed76903ce63b3a38ec6abfce052ffd9ffe650c1e66e3fbb66b81ef0", - "static/images/heroes/avatars/mickael.png": "47e867bb6ecc30a7c6b64b7acda407aecda4869152fac9722414071b5bc29181", - "static/images/heroes/avatars/nick.png": "ebfec8153367d0de809eecdbd13cde19e5f9ee5be1b020088fd47311bf0c439b", - "static/images/heroes/avatars/nishant.png": "7f44d3b861ffae1507477c955dfc86a9c1cec12fe49ceb181ba06cfe778cd65a", - "static/images/heroes/avatars/stephen.png": "60c8e63a4736c9b7fc437e2913429cd7e65d7266e8b9a865586c5a243335f96d", - "static/images/heroes/avatars/tanmoy.png": "b35e82c2087e69db10cfb7166d3b9bf15df716c51be7bbb1d5d441c15904bd6b", - "static/images/heroes/avatars/taylor.png": "27b26e3ab819312f6f2a37b025c927a98d47ec835e54c4968eecf4f24fa278a2", - "static/images/heroes/avatars/vincent.png": "2bd0aa0697e949924fd2b00b3bd5d3b9ab4a87f8a3025af8fa78ef3bb9aebceb", - "static/images/heroes/bg.png": "95ee7e297d9e85d380c6762e7231350b259e5df61e4e2c556b8f878082a10e96", - "static/images/heroes/console.png": "aed7fcea911e6f2131c1d46ffa5b644b74d4f47da2dafdde2378883d454aca5f", - "static/images/heroes/photos/1.png": "55b95ce3703f4c91128f60272bf8dcf0c3992c99339196846070aaaf565cf7c6", - "static/images/heroes/photos/2.png": "7a762137f635f218b8c7888601baa83dc4164372ff82b624460262a74729afb9", - "static/images/heroes/photos/3.png": "ab0382afa9bba8387d7aa02f2d2570aa14cd3cc8e8de5faf243b17ab9000ad0a", - "static/images/heroes/photos/4.png": "880a726970129707ba3fb10808566e370baffc2bbeffe228b0da0e5e11637445", - "static/images/heroes/photos/5.png": "9f40abb412b22598edbce9738eb9991fe2aa37afc016c0f9c4c6ff1b364b4a85", - "static/images/icons/illustrated/dark/auth-transparent.png": "1363f1eeb7f25ed5dfc44a049f008182839b7814a136901a24c86cf4a69d64d1", - "static/images/icons/illustrated/dark/auth.png": "07eea7fc741c44c17b3b0007fe395b12cfc2ea066cf0136efbc2f2a47d3e8b19", - "static/images/icons/illustrated/dark/avatars.png": "b01677ce51c12a6c68be929536a25d6fbe69e2e9e6609f600eff749040588d7f", - "static/images/icons/illustrated/dark/databases-transparent.png": "b4afdac31185d5cb6c7d1d3c9ba29834f0df6a404427597b1fe63f433b6d89b8", - "static/images/icons/illustrated/dark/databases.png": "715f70a7d805b9acaac6e039f58926abeac138c163a41b7c60b4af03a10569c2", - "static/images/icons/illustrated/dark/functions-transparent.png": "6a2e5826d1f635a66a073b84e424388f65c6e51bbe1b2967301361fb87c8f064", - "static/images/icons/illustrated/dark/functions.png": "8786115e312549bde74eaa2b5869fa670d22d26ea21278839a3d5b94907fda8c", - "static/images/icons/illustrated/dark/messaging-transparent.png": "563ba421d477c16fd1f132ee0c3b75ed3896e35ac32819526c157536527df295", - "static/images/icons/illustrated/dark/messaging.png": "7919018b624474335f41d9ccd6e97b27e3d02606ef7dfc6e5685706db78677f6", - "static/images/icons/illustrated/dark/network.png": "54720180cb156cf971a3321a43c6e370f613f990eb5d4bb277174694da35f22c", - "static/images/icons/illustrated/dark/realtime-transparent.png": "ff0e385ebfccf445193f8f72bd9c8783201b95512e8a14e598a953668b5a59aa", - "static/images/icons/illustrated/dark/realtime.png": "4c5d56cac2b05f2e590db31f2adcbfb6d31d7064416de62a60b42df5007e53a4", - "static/images/icons/illustrated/dark/sites.png": "ba30f708370b7f30eb07e7dd177ae711f9d1182a7bb802a47968d9aaceb9853b", - "static/images/icons/illustrated/dark/storage-transparent.png": "29911a4b7453eb952c389635de538e2d082449c715cccf921d1a4eea170381bd", - "static/images/icons/illustrated/dark/storage.png": "14fb99ce6e8b0f51fe4e5191a491b5fc549ee6d1a027d178fabaf4bcea24b71f", - "static/images/icons/illustrated/light/auth-transparent.png": "5c62e06f9f743b813ba1a793b9541fa99b83d79a0ba33c0817c69e4bdf473d6e", - "static/images/icons/illustrated/light/auth.png": "5e8cce3d6ec1a1e4e079cb5fa494ef041ee2fe903401865cdc8e4a54ff637375", - "static/images/icons/illustrated/light/avatars.png": "6af3c8c45a87d795163606de37f4c0d5b27415093277402fd0770e413723df31", - "static/images/icons/illustrated/light/databases-transparent.png": "234eeb5ef2586a8914f6482fd74bdf8d3e7dc4cd54c4dc91be6838fb2cf6424a", - "static/images/icons/illustrated/light/databases.png": "a53cf34a690637943faa99df02ca1b55cb0e9e07ca32d520e0eec87f61f398cd", - "static/images/icons/illustrated/light/functions-transparent.png": "c7c2a11045894d03dde62cbb40fda02ceecd5ad16cbb2add721822bf98b41a93", - "static/images/icons/illustrated/light/functions.png": "f9d92cf63a74f17a4ba4c81716fbfeb5b84039546539510f56ad6f09beaa6d7a", - "static/images/icons/illustrated/light/messaging-transparent.png": "9b9b7949ecff106bba36d4196de6c4b3b016413f38a071dcdc6b4d1ec6f487ac", - "static/images/icons/illustrated/light/messaging.png": "77209a01c299160b0ebe4fb7d31278cd6a72c2e7034e14ec7d007f45a52bb48e", - "static/images/icons/illustrated/light/network.png": "c9cd85573f37d670126be0adb60618ac8083e9bc8d042c1437e2f929a553fbbc", - "static/images/icons/illustrated/light/realtime-transparent.png": "f99cf52544d0d61f42fc6c3e1db49152bfb70d61575f1f03b6f8d39d1dfa12c4", - "static/images/icons/illustrated/light/realtime.png": "1f25c5c7d4d6ffd1761c7bd1351e2329db7d63122f199f9502a9e2b37bd3e67b", - "static/images/icons/illustrated/light/sites.png": "5eded6fe7e1a7af0a6f99e013356ec4ebf7472ab90f65a9ab0e048ff43d40546", - "static/images/icons/illustrated/light/storage-transparent.png": "59b4fce0f87c3e17110e8f66ce82b1d4dca71902e0ba20455ffc7f359d791681", - "static/images/icons/illustrated/light/storage.png": "0948fa242e64c2de90eb9756ad027d6774591b36b11fd25643034525a3e97d50", - "static/images/integrations/ai-elevenlabs-text-to-speech/api-key.png": "349de6ef7125e939ac69bf3bf766e92706a963591fdea54bf2d86f0871cccb0a", - "static/images/integrations/ai-elevenlabs-text-to-speech/cover.png": "9a2ddeae3c107708edd61071dff95ba64b1710a5e2d6951672c852c16f903a0c", - "static/images/integrations/ai-elevenlabs-text-to-speech/template.png": "2c940cd7d844eb488882e891e91cb04f79bbed9deabf4bc37e0d4aef21cd24c1", - "static/images/integrations/ai-elevenlabs-text-to-speech/variable.png": "d8eb8bdccc25b4b3a2ff286c74f142a181e8eb5c5ebe34382116c4528ba93c12", - "static/images/integrations/ai-hugging-face-image-classification/appwrite-functions-env-variables-image-classification-hugging-face.png": "332396312954391aab03957a9c1ccb538f50b79b371decb4d52a64f31db33f29", - "static/images/integrations/ai-hugging-face-image-classification/appwrite-functions-image-classification-hugging-face.png": "f588a52fe55f117a991b2ecfc5229d977fe466cd1a1b8637abb805b2643a3dcd", - "static/images/integrations/ai-hugging-face-image-classification/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", - "static/images/integrations/ai-hugging-face-image-classification/hugging-face-create-api-token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", - "static/images/integrations/ai-hugging-face-language-translation/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", - "static/images/integrations/ai-hugging-face-language-translation/hugging-face-create-api-token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", - "static/images/integrations/ai-hugging-face-language-translation/language-translation-demo.png": "0a3b06aa0774e5963e297ddee5d75dc388dcee71d3284eda353424acd4bc1d49", - "static/images/integrations/ai-hugging-face-language-translation/language-translation-env-variables.png": "6495dc6060289d8c99add95d1768ba190d27033b7e580284765e615ecef9849b", - "static/images/integrations/ai-hugging-face-language-translation/language-translation-function-template.png": "e9da48dbd9951d276fb0cfe402bb3a4a8a3aeffc0d62e10252b5889a57946d10", - "static/images/integrations/ai-hugging-face-speech-recognition/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", - "static/images/integrations/ai-hugging-face-speech-recognition/template.png": "4914d434fa4326bb34aa81b01929a77e531032abb0d93f640544b3a79f86576b", - "static/images/integrations/ai-hugging-face-speech-recognition/token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", - "static/images/integrations/ai-hugging-face-speech-recognition/variables.png": "332396312954391aab03957a9c1ccb538f50b79b371decb4d52a64f31db33f29", - "static/images/integrations/ai-openai/api-key.png": "5f0fc8fd936ab6989ba1089cfaaa8c92ce0e3559f7839b4298af2397eaaa12ed", - "static/images/integrations/ai-openai/cover.png": "1745cc475b398cfa874362040f3779d6b2f3a25c24999f530fa38882adc66f14", - "static/images/integrations/ai-openai/demo.png": "2cef089f20c64d283ed6d520c48fb6806462c169f8899b6fdb2832393d8e04a4", - "static/images/integrations/ai-openai/template.png": "94eddb788a5ffc0ac8f806184a673f294186248c4d1210a8dc8ecae5d19ba8ab", - "static/images/integrations/ai-openai/variables.png": "6acf7704d4300147822314ce39ee0bfe143d58ee8c2fcaa0574b92d77aed350d", - "static/images/integrations/ai-perplexity/api-key.png": "328a4cffa2aed103137b6e615354db730d1be80b5e765a3aee315e4c7ac32500", - "static/images/integrations/ai-perplexity/cover.png": "07fb526fe9dbd9940b4a5fd160805902f57c8721704ab8e494cec345f0fd331c", - "static/images/integrations/ai-perplexity/demo.png": "14f4b3c2672f3dab927f1e51189b04b780fd914cf5d9c43c4eb15f6cd5b87fd8", - "static/images/integrations/ai-perplexity/template.png": "6f9db94a286dbdc97b197d2a644cc59f6966cf7da0ab5b16879a99f56858b75f", - "static/images/integrations/ai-perplexity/variables.png": "87b25e232525f650bb0dc012bd8b58efe5729075da3f160210951da9afd46025", - "static/images/integrations/avatars/algolia.png": "189d978c59eab8fe8dd8777f39650ae34818018d733176f013f7987ff725be39", - "static/images/integrations/avatars/amazon.png": "6d74fd32ebc7e6291ac7b84cfc2cc4f0ca973bde188864e7052d7ce1bf3e3fc1", - "static/images/integrations/avatars/apple.png": "27b70bea90a23f8d0271c1f12dcfcfb7aa496b6bba78671e27fc5d836c9c0e56", - "static/images/integrations/avatars/appsignal.png": "69e569f5c89b86a073f4f6ad8c2c33119a1de5e7991353d8be345c11bcdf32c0", - "static/images/integrations/avatars/aws.png": "7306ef5be26cf0d3fc0d9a50512828af4e69d6c7d53b835c17982d7db554cb65", - "static/images/integrations/avatars/claude.png": "4cf4f4c37eb4c306bade50c50529bb8d00a16b5b888693190c2e2988f3bbf8b8", - "static/images/integrations/avatars/cursor.png": "2d78f88bf6d0793dc40f98061077e9e5220ff4f521c07aa8274585c25806b3bf", - "static/images/integrations/avatars/discord.png": "d938bfc4096a6f50c4dee4360d48b0b3df63ea5eb3830049f11053aac15bd4d4", - "static/images/integrations/avatars/docusaurus.png": "01ed9efa99e62547546c9725cd96a08c8d866535d00a75e49fed0e00acee8a1e", - "static/images/integrations/avatars/elevenlabs.png": "ffec825739c2058c2cd592f503b6c0d6eff6f925546e438a6efa8fb8b1a3ca79", - "static/images/integrations/avatars/fcm.png": "21b184d127efc726724693fc090d1780d1554fec8841ac76c494a88cc94ffb4a", - "static/images/integrations/avatars/flutterflow.png": "b7dc391b3dd8b0c2a12f42c0d366472a1be90d53a46ba4fdd00df63f724b3a7e", - "static/images/integrations/avatars/github.png": "2ebaf78e05511c53293fc5119c327a0e0e136a7e43c68010febbdb286b72caa5", - "static/images/integrations/avatars/google.png": "3777c503e6007f066d226a838209e7b37b7246a837deb55102eef4e3f6f3d05e", - "static/images/integrations/avatars/hugging-face.png": "8cdc20f1d4d387de6cbe670c1f6bc7ab0dece6da32690b20a66d2e28312e6c6b", - "static/images/integrations/avatars/lemon-squeezy.png": "d76c0c04b8c0518de03882c10c601fabe77c4e30fdb3fade928b8cfff2b6c1f2", - "static/images/integrations/avatars/magic-portfolio.png": "fac810df4bd0e62618cb1295588289f13197bac4805c8232211335523f9812c2", - "static/images/integrations/avatars/mongodb.png": "16fb2fcfaf3a8e1c1f007c81b1bccdfb2463f971c641f1e3a54278c4b7e07513", - "static/images/integrations/avatars/notion.png": "04f581fd7f20af3351e808c1714d66b8cb78546913e6de42c3ecaf51042297d8", - "static/images/integrations/avatars/nxtlnk.png": "ff3b1907ab894fb8fa204a418325fa62789f4bd1b46b876f488ef9c284889f0e", - "static/images/integrations/avatars/openai.png": "8e2a950f55a705708a71c4a813046050e5a199f1098db20562fac93591e6d3f1", - "static/images/integrations/avatars/perplexity.png": "1aeff5375655bf397465f7824c9baffbfc867669a80dafc475091c55b17c199b", - "static/images/integrations/avatars/raygun.png": "dffa2cf7b4e6717b9fa578c22dd1f9e919952fb32ee76de8a0addc052fb4f183", - "static/images/integrations/avatars/react-admin.png": "8e89fed781a54d8a5dbfa9116f8dea0d83dfc273a482d28bd627ec32517642a9", - "static/images/integrations/avatars/rxdb.png": "b46c8cef0d75139add85308998ff3f27379f080df0afa8dbeb48a49155be6b9d", - "static/images/integrations/avatars/sendgrid.png": "05f61b2f798f705bb13435cc3a97e0b910cc0cdfbc1b55663cf0769c104d3ff7", - "static/images/integrations/avatars/sentry.png": "870368b5a1734068f681892434a6d50714afe7ecc4879d71cc39ce53398da28e", - "static/images/integrations/avatars/starlight.png": "724254111931867a9348a75a951f74c269b4934687192d6d22bb809528e61fd1", - "static/images/integrations/avatars/stripe.png": "d6a0919aff3e53e2f55022749daa63e5dbe6b5c7ea095a0d72e2ad5006246ae0", - "static/images/integrations/avatars/twilio.png": "35ee999626e2179cd643eb89a3e1b425894b420da9fda8656239ca20d2fedec9", - "static/images/integrations/avatars/upstash.png": "c404ea0c7f2d2bc28bdb37e6019f8ac9d706d3b7f0b7de2d3e1c0b90dc4b10a9", - "static/images/integrations/avatars/vonage.png": "b9d22975cae0fc7234c761b8ea5d92260db73cc027e756ede9aa47cc2efde44e", - "static/images/integrations/avatars/vuepress.png": "7893861c4fdb3bc037381962aa4ada05156d8df276d5300925c8fd8d66063e23", - "static/images/integrations/avatars/windsurf.png": "41d48db8811ebe2c5bffb965615ede43bee55ef73cb751db4ffc7499e576033c", - "static/images/integrations/avatars/x.png": "cd24d39505021b078939ca05fba4ddb5d0e67afedc2a02c29837b097abb1904e", - "static/images/integrations/deployments-github/cover.png": "c425b990a458a660eec087677bf4ce81cc9a188115654ef56bed4791f6c03d03", - "static/images/integrations/deployments-github/create.png": "64477b19f98d50a3648fc9b5e2587a45a694297480277e2806dd30c60b7f7e67", - "static/images/integrations/deployments-github/installed.png": "14cb46d5dcca35a8df915c571505a6198adba52afb24968a75a248fcfdb416f4", - "static/images/integrations/email-sendgrid/cover.png": "3822b48eb800ee55ceb2a44077fdc68e35caf2a7229b0dc51223f49489d9c926", - "static/images/integrations/email-sendgrid/email.png": "1de5d9bea2d47030eef44a5c1581ff6ea5a2ee8851e3410f3a41a6b7017d6cdf", - "static/images/integrations/email-sendgrid/provider.png": "d37ab3b9783701d6395991fc6fee7af8a843cc1dee4d851b0295ae8370a94700", - "static/images/integrations/email-sendgrid/welcome-guide.png": "1adc93fc152692a079a78b27777c3aa105d8f596e7fbb2cea347d380faa2519f", - "static/images/integrations/flutterflow-auth-kit/app-screenshot.png": "bfde4c870b261a3a999521ecac843c2d247986fdeea9f7f97b2c2164e58a7c1d", - "static/images/integrations/flutterflow-auth-kit/auth-login-overview.png": "9e386cb7f81f4a7e1bcc5def31c861dff78a56efde0c02bf4875e6361187f1be", - "static/images/integrations/flutterflow-auth-kit/cover.png": "752de80babb818827156e011eaf372f116ccd927b363df06f1a4580d1ca376f1", - "static/images/integrations/flutterflow-auth-kit/dashboard-pointers.png": "3673695c9ecca0894258a5f91c04e963c320345c2c60ef80f0c10a0b52122459", - "static/images/integrations/flutterflow-auth-kit/featured.png": "07d6f64d247d9831aaac25e136b92b03a76576c00ad845a6e50a7caf8189ea8a", - "static/images/integrations/flutterflow-auth-kit/flow.png": "2c97de97b4c5656f7f751fcf848ec612d871a125ce156a184ae16709fe45f20a", - "static/images/integrations/flutterflow-auth-kit/login-pointers.png": "34f76a87c6d445b8b33cca4d6feaa405e02103f247f50108b22ef7deb7728c19", - "static/images/integrations/flutterflow-auth-kit/screenshot.png": "fd8d087f2af95d3464c9459f3b7c29c5a015691845a630d2e4f45b44f6e40b75", - "static/images/integrations/flutterflow-auth-kit/welcomescreen.png": "34ea21b07039ebb3031e81df664e564f7f595247a5418c8e74b85f9da3c92adf", - "static/images/integrations/lemon-squeezy-payments/cover.png": "84887d8a21ac8d69a5759288ff84cef6257168c0a26fdc13824bbec1a0cf117e", - "static/images/integrations/lemon-squeezy-payments/dashboard.png": "25736097b762f8ae9670ea417cb9ce7a715864db67878db22134a621686564f1", - "static/images/integrations/lemon-squeezy-payments/database.png": "61ef9165a5f43bbde975c21fecab72ccd3b7d2e03c41338dfe981c9cfa53e521", - "static/images/integrations/lemon-squeezy-payments/demo.png": "7f300a45f98bf49e1f79284d6ad6e470c563d3c66b36e055d4edcfa73edf0183", - "static/images/integrations/lemon-squeezy-payments/template.png": "205334048ae7c35377a36f28ce742fa9569189bcd2953bf41c8c2294201fd5ac", - "static/images/integrations/lemon-squeezy-payments/variables.png": "14c0e3977c12e0fe2ed5a354d16fc22f39c584322469b0586a0c11f23dd0f510", - "static/images/integrations/lemon-squeezy-payments/web-platform.png": "94709f344854d126ad258ed3317d830c605a555030776557ce0eb89d81d43efb", - "static/images/integrations/lemon-squeezy-subscriptions/cover.png": "84887d8a21ac8d69a5759288ff84cef6257168c0a26fdc13824bbec1a0cf117e", - "static/images/integrations/lemon-squeezy-subscriptions/dashboard.png": "25736097b762f8ae9670ea417cb9ce7a715864db67878db22134a621686564f1", - "static/images/integrations/lemon-squeezy-subscriptions/demo.png": "d6d764f0e7f59969d4e620d3a4f27db3a7f5d98f177fad85123bc2167ba087d1", - "static/images/integrations/lemon-squeezy-subscriptions/template.png": "6abff7bb5e4a06464767617d14f69e6180c2359220428d2615f380cb66fc586a", - "static/images/integrations/lemon-squeezy-subscriptions/user.png": "e7634d9c99776d12fbe6e19de75d705d79f28f817e21eb76d888a80f86b3c265", - "static/images/integrations/lemon-squeezy-subscriptions/variables.png": "14c0e3977c12e0fe2ed5a354d16fc22f39c584322469b0586a0c11f23dd0f510", - "static/images/integrations/lemon-squeezy-subscriptions/web-platform.png": "94709f344854d126ad258ed3317d830c605a555030776557ce0eb89d81d43efb", - "static/images/integrations/logging-appsignal/api-key.png": "a4d1d4bd31954a1aeb2051030e28034578589e19a567a7eaf1e234a2b3e083f1", - "static/images/integrations/logging-appsignal/cover.png": "0ba1dd48e7b39bf4f818018b38eb9189bdfba72069c6f07cc569f5622ff467aa", - "static/images/integrations/logging-appsignal/error.png": "82ca25c21bf33b3faef9cf924092ba093f79ac67b7bdda046af4493b493cca6e", - "static/images/integrations/logging-appsignal/errors-list.png": "193c04d8d4603716834cb0a1a370a390632923d537ac59b2af662cda425d7a17", - "static/images/integrations/logging-raygun/api-key.png": "c8d18e14b32ec9c2d24b737dc8a77b7b2bf53f616ab13d71abd3edcaf214c799", - "static/images/integrations/logging-raygun/cover.png": "dc9f22b0e01c06051a20284734f2c27d7cc2040b80c988e8117d2171d00118f9", - "static/images/integrations/logging-raygun/crash-reporting.png": "ca48b4c6d219ef20703441fd14e3ba3de36d29b74a35acd886268e2ca75a8251", - "static/images/integrations/logging-raygun/error.png": "65110e7274e753c5ab85dc502576fcbdf02bd7d2d37efda46bd07cb430e4d1f8", - "static/images/integrations/logging-sentry/cover.png": "932dd5af088011a798dc957de47b4fa1f8228f4d846289d0200a441157a9d99a", - "static/images/integrations/logging-sentry/issue-details.png": "73490bf13d359aac114a30df1a7e26aa4af552da03d82a679ba0a0629a04fd52", - "static/images/integrations/logging-sentry/issues.png": "c8f00622fa74f23fb4b691f5eca5f7d8b181295a08b46bec56c8731c6ea78d52", - "static/images/integrations/logging-sentry/project.png": "1c229fb201ca566cde1988eb13fa8e7436e32352f09eb0084e2cbe74f348359e", - "static/images/integrations/mcp-claude/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", - "static/images/integrations/mcp-claude/cover.png": "09f52fd542a87c109b5dd07f48b1e47a07b7df939598683f8454b3b6a17bc542", - "static/images/integrations/mcp-cursor/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", - "static/images/integrations/mcp-cursor/cover.png": "48b860cced7cc075c0fcaf9d547e3b9df9f5f480d7b27c9dee60159b3b5cd85f", - "static/images/integrations/mcp-windsurf/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", - "static/images/integrations/mcp-windsurf/cover.png": "f9bf0304da630548e0ef63b2b0c1ea60a9c3c5e7b6ac4df41800928b652745e3", - "static/images/integrations/native-auth-apple/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", - "static/images/integrations/native-auth-apple/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", - "static/images/integrations/native-auth-apple/template.png": "7e9f1105cadd93f09041e77f7b09ed4c40779b0f1a5a9a6829e400f6d42e5750", - "static/images/integrations/native-auth-apple/variables.png": "798727e10a77a2fe0596f0321d18997903e48bff5f36af042c8707fbf43a5c24", - "static/images/integrations/oauth-amazon/allowed-return-urls.png": "b092ffd113714231193d10b39fb46835b1e921b20aac6c981ec94d95e5ab3b47", - "static/images/integrations/oauth-amazon/cover.png": "893075c608b921b697e8a8769d8e821a1a68123fa2831ad650f32d253daf0d25", - "static/images/integrations/oauth-amazon/provider.png": "3e481065acd9924c4ac8df860c4e9b27fa12a27fdaa7c68dc35f6176b06d7aab", - "static/images/integrations/oauth-amazon/security-profile.png": "259ff4ed899a746f07624822b5520d845a98d33e814abb08423bf7d649783e53", - "static/images/integrations/oauth-apple/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", - "static/images/integrations/oauth-apple/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", - "static/images/integrations/oauth-apple/provider.png": "8ee843daff9e5b908a11af784f0d138ca638ed44f3c7eaaa26b14a4e27ff4e31", - "static/images/integrations/oauth-discord/cover.png": "00ecb98a4ddb3383e83b2fdc9e41117a862777042b4269d9bc2eb92d17fe540b", - "static/images/integrations/oauth-discord/new-app.png": "94f04f601bc3dfee67abd9a1f7b22022c5a536f632c90848ffbb0172c11414b0", - "static/images/integrations/oauth-discord/oauth2.png": "5809eb59ef2ed7f78d58a5729071f132e947a60c287475eeb91402d0cc84ab88", - "static/images/integrations/oauth-discord/provider.png": "fc3dc026647f0900b6308cafd62920160f0aed32e418c86762d1d6b5706e6a7c", - "static/images/integrations/oauth-google/client-id.png": "a5c0023dd9aa233b3d4c05c360fb9952f5d52f6ce31fd186011965ddc1e74c59", - "static/images/integrations/oauth-google/consent-screen.png": "924b58f79c1d8642780d10b4b6dc99a95e5ebd448ec94b1570653eaca0364863", - "static/images/integrations/oauth-google/cover.png": "4b16d560487d876690fcd5807dd0501dac9239325cd6d7306be7b0bc9a3ad09e", - "static/images/integrations/oauth-google/provider.png": "07d4501c7ace44cbd108372f0fbdc62abd06eaf73aabb3587ec14bba4077c26e", - "static/images/integrations/oauth-google/redirect-uri.png": "fad6243bcccc02f62680fc928d664afac32d5fcc60fccc311fc0fbd0f3256570", - "static/images/integrations/oauth-notion/cover.png": "aec19c2bbf983e9f6d35922771627a291527a3f98a5415b53b92a7eb6fe26848", - "static/images/integrations/oauth-notion/new-integration.png": "57a8cc8b3fc5f5ae221ac3a985af020aaedb3b33056a554874103d0969128b32", - "static/images/integrations/oauth-notion/provider.png": "cbe618d08defc00beb58350b8f4c7e2d0d3bbe64f4ecb000e74f26c2c8cc7f69", - "static/images/integrations/oauth-notion/redirect-uri.png": "2d02a9c29a75784055ed10e385fa8262935eb218e7a4c1f14d908699dba10570", - "static/images/integrations/oauth-x/cover.png": "fb6577a5bb5f067b6a5f2bd20d6f9cdcb5c02c5fd7d2e73f9fcc7402ddcaa121", - "static/images/integrations/oauth-x/new-app.png": "17542433411284fba2e859357094fda7da33c4790b38a7608f4e67f3cfab5151", - "static/images/integrations/oauth-x/oauth2.png": "c6ba6f6f84d042c1acac2470f794f53a855b775373feebdee852fdd0683ac99f", - "static/images/integrations/oauth-x/provider.png": "d53f59c3b3caf263bc77ca3c5490f7b501d5e4befd7c904341f446bd463685e8", - "static/images/integrations/phone-auth-twilio/cover.png": "e46ab3a1a8b458b69e919219e35de4a15b2bbd0ea9c0079c0c99e005acf3a295", - "static/images/integrations/phone-auth-twilio/twilio-console.png": "bd3081b13711088c437ed10553709ca4af54f80c81571b30b6cc9a4a1fab1799", - "static/images/integrations/phone-auth-twilio/user.png": "a526a9621c30de2ba4b6b08508d15bcf588b7de5cafadaf3ea7a8198485cf53e", - "static/images/integrations/push-apns/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", - "static/images/integrations/push-apns/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", - "static/images/integrations/push-apns/provider.png": "16332791662d979d11880e229e15a9356ddcd5488ac48bb7e7b90eed04c1e10b", - "static/images/integrations/push-fcm/cover.png": "78fc36b29f2125a77ef63125bbdde996b013eb9846934988c17c6e0a2d963d07", - "static/images/integrations/push-fcm/private-key.png": "349aff5cf8a14be1054298273d91ca4650399316b6b3f2b6dca283159aff46d2", - "static/images/integrations/push-fcm/provider.png": "7bb9576b842dd46fd0383bbf9b2511cf7ef148c5ae08acb703bc5640a9cbf981", - "static/images/integrations/query-mongodb/connection-string.png": "d75b28ce52fc76aa77fb44b5a4f1a1f39ac9847cb6daf7b3fe7709030315a6f8", - "static/images/integrations/query-mongodb/cover.png": "670d2fdc0c86c28adfe519b87ea17ee9ec5d7861c076a8135f5c48a22fca24bb", - "static/images/integrations/query-mongodb/first-cluster.png": "cc1b5a92e7251b152c2256e8f449a7442ed4c0a48e11765c2e0cc0440565168e", - "static/images/integrations/query-mongodb/network-access.png": "ae2a588287270f1122bf4b2e5ea81b413ef9625a850b287bee0f6a2b12e7e898", - "static/images/integrations/query-mongodb/template.png": "1146fe50eb34ae489b1cdb59f73e133e4ff37a6848f893ac2e1b6740a07356a9", - "static/images/integrations/query-mongodb/variables.png": "42dc1cdba1a373669072809061a6efcec874e561506a16da16cdaa65a256a1d4", - "static/images/integrations/query-upstash/cover.png": "c395da8f4bea179f5825782f6792d8f3c611fb727f13d2ef7ed952ecddd268f9", - "static/images/integrations/query-upstash/index.png": "aed85ab642a476168f77692b0d5474356981726d9f3c591e9969f6c9c431fcf2", - "static/images/integrations/query-upstash/template.png": "b7e853d3813e5803fbf2b8d336fba80f7b42a1ca546b73f61da39bc342a89301", - "static/images/integrations/query-upstash/variables.png": "f201fafa9b2f7e1adf86f030019ae812cea40b624cafd17e98783d79f3c86024", - "static/images/integrations/replication-rxdb/cover.png": "ecfbeec103b81cdc6fe709e031f014d238695f81c4c8a0b90702f6a52439acbe", - "static/images/integrations/rubiks-cube.png": "200afc7c1b50fa3a515b95dc95290efc2b056d837e7b61fbc734ac4da5f7458e", - "static/images/integrations/search-algolia/cover.png": "ac70d8c2bc40831b69afbe433ef6e36ac7c76bff1ba277100400759600a3fbe8", - "static/images/integrations/search-algolia/demo.png": "bdb63d0324eef2d71ee2b9b5c20886c574c8304c0dbff898575f26364007144e", - "static/images/integrations/search-algolia/index.png": "157fbb7d4c9371b38043348bac7daf8682916b840701baec4680ff6ecf7e7402", - "static/images/integrations/search-algolia/overview.png": "1af7563e109cf1d46faaea58a0eb01917ecfb5d12f5ff15742df4ef35cdcd399", - "static/images/integrations/search-algolia/template.png": "922bb906654bd8ddc679bb4aa18f8129af93e7766743a88fc357fd9e50246f87", - "static/images/integrations/search-algolia/variables.png": "9eadfcab5e38a77dae8f0be3696f4128f4bc5a53e09be5f49ad68da60e220e24", - "static/images/integrations/self-hosted-mongodb/cover.jpg": "28effa4317c8f268634ef3a166e93d478bf65372650510e5160379c111a90355", - "static/images/integrations/sites-docusaurus/blog-page.png": "6586d1910d0b9fcf0e884a2105486c23a08bb5215fbbd4b607d25aaceb5acbb8", - "static/images/integrations/sites-docusaurus/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", - "static/images/integrations/sites-docusaurus/cover.png": "9717dc118675c2d3ffeb1f2c894d090464f4a8df80957e9743baedd2f8bf3a41", - "static/images/integrations/sites-docusaurus/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", - "static/images/integrations/sites-docusaurus/deployment-screen.png": "fc4be122953b0ec5c00539b0c9adc469cbbac25b1d4bedf7120ce6cfc0d0e64a", - "static/images/integrations/sites-docusaurus/homepage.png": "d9471b3b5028fa5c81a490b7282968059303d784ea76c5eaa75349caf6f2af1e", - "static/images/integrations/sites-docusaurus/search-site.png": "14fdb8f5a6da3fc326562c576ec9b192da5224cc6d0e4b0842663b27650988c7", - "static/images/integrations/sites-docusaurus/site-details.png": "692f45d943e8df7f5003a10588b74f4d459749b4c19f8ba50268c361d51b2ac2", - "static/images/integrations/sites-docusaurus/success.png": "fc518e7e113cadfcfcc9ef3567b7675989406b310af99fd5db167d12c65055da", - "static/images/integrations/sites-docusaurus/tutorial-page.png": "bff60145dc85f2f50c1c81e78d85b56eb23d79dd95f8eef089ed18091e412d8d", - "static/images/integrations/sites-magic-portfolio/about-page.png": "1041490080fcc5feda4f9f7c1ac7d28279aabadc0bf0b30d69c133d0e4c035f6", - "static/images/integrations/sites-magic-portfolio/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", - "static/images/integrations/sites-magic-portfolio/cover.png": "019d5abdc91304b90ac041e628a9be51e082d1797eef496b1149028a6a3b66c9", - "static/images/integrations/sites-magic-portfolio/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", - "static/images/integrations/sites-magic-portfolio/deployment-screen.png": "9c29a45b837f5b22e7d87aa56f40f411d7b5f6400de3d43800d53ae3238c8d0e", - "static/images/integrations/sites-magic-portfolio/homepage.png": "2bdd69105c6fcff52fe5c564a85e18fcdbd7f3577dd1e5821da3d757efe03d5d", - "static/images/integrations/sites-magic-portfolio/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", - "static/images/integrations/sites-magic-portfolio/site-details.png": "0b845a032a57c3d62ecc5b956626739246421f2a540cfc8192306dc0135c38b2", - "static/images/integrations/sites-magic-portfolio/success.png": "4bb978f79627e0588f59ce9c4638122aa3f026d07b0a3b481baa84715c0945c6", - "static/images/integrations/sites-magic-portfolio/work-page.png": "e13a8d8cc0ea915355d7a68d45a76ba2259d471788479c320bdc44530a48a4bd", - "static/images/integrations/sites-nxtlnk/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", - "static/images/integrations/sites-nxtlnk/cover.png": "c850905a084659c48c71eb5491af0d214dbb1fa616e2d733aec07fad6e9b5e45", - "static/images/integrations/sites-nxtlnk/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", - "static/images/integrations/sites-nxtlnk/deployment-screen.png": "e8caef547145e9dc87eeedd243836051f09c213d08b8cb326fde4009a9aa8e69", - "static/images/integrations/sites-nxtlnk/homepage.png": "df03ce7ecd3a7ad4045a18adf4fbddaab57551b43c18cd7519cd9f3d33d296c2", - "static/images/integrations/sites-nxtlnk/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", - "static/images/integrations/sites-nxtlnk/site-details.png": "d5bb4e13a0e173d4a089e12e163cc4cbb1af0d11f77750d770f13c78f3697116", - "static/images/integrations/sites-nxtlnk/success.png": "75ff7b8f988fab62e6bbe1711940f6189b5bcab84fe12203c64ac2e34adefdaf", - "static/images/integrations/sites-react-admin/clone-template.png": "935ace26282811b8db06e4340e483471a954bb31f07c71d9dead06dc5a0eab95", - "static/images/integrations/sites-react-admin/cover.png": "39fa3933185ff8e56647314c00a0cc45c3a4a806e58d4c353b801f41a6c5de17", - "static/images/integrations/sites-react-admin/create-site.png": "7dbc51ab426e90619d4c958ddcdd7e03e92492f2c91faec628cb2a30a7700dc2", - "static/images/integrations/sites-react-admin/deployment-screen.png": "8f9e606688628d481e23dc27b775e8693d942b3709fb0af10646939df596737d", - "static/images/integrations/sites-react-admin/search-site.png": "bb6174a7db0871ff67484917a4d3474e2e7819651b6b43ce4f380a8ee0573a8b", - "static/images/integrations/sites-react-admin/site-details.png": "d5f7f33b06a7749d150af418880ede4b69dd5c0df179f67ef26c07ee2e820115", - "static/images/integrations/sites-react-admin/success.png": "80030228266667175e6b19f5103e1c23e0de61e037aac4395f0c3989990908df", - "static/images/integrations/sites-starlight/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", - "static/images/integrations/sites-starlight/cover.png": "b3bc447ff28204c769051fca0f15967c9ce32a02b4bc744715f0343f17044902", - "static/images/integrations/sites-starlight/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", - "static/images/integrations/sites-starlight/deployment-screen.png": "56bfbf2742ccdae4dd00de57849b60024bf9422d6bfc976e2e86893daff5ead4", - "static/images/integrations/sites-starlight/homepage.png": "2f08b9ee8cbd51e63bff11496c75efc3021a6d667b1290bdc154d15a63aa8895", - "static/images/integrations/sites-starlight/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", - "static/images/integrations/sites-starlight/site-details.png": "6de6bff6613d6910a9dd5b9aea137296322bfa07a8c291aed9343a5382aa8a5c", - "static/images/integrations/sites-starlight/success.png": "378bce2587b39cf58d4e0a14502a5d20b8beb43c52af78b3fcd5e6d206767a10", - "static/images/integrations/sites-vuepress/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", - "static/images/integrations/sites-vuepress/cover.png": "7e3579bdb0ae9df43c29cbc33e86805f0c21660629ceaf763f52271d38b5339d", - "static/images/integrations/sites-vuepress/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", - "static/images/integrations/sites-vuepress/deployment-screen.png": "b1d5cb179f325e14d1c1d7eec99307600eecb8302aeb85af1e0aad2a1b8d1ecc", - "static/images/integrations/sites-vuepress/homepage.png": "e31615af4c2091fa273fdbba66117ce3652cb7436ee97e3a13121467288b8131", - "static/images/integrations/sites-vuepress/introduction-page.png": "431e3693357b30d3259c8e4b4f7d208c88acb4d37714a0d81c9a6bd96071cedc", - "static/images/integrations/sites-vuepress/search-site.png": "14fdb8f5a6da3fc326562c576ec9b192da5224cc6d0e4b0842663b27650988c7", - "static/images/integrations/sites-vuepress/site-details.png": "64bb48f81113adb12e0f3c1a364bc05f8721bf5603cbaaa491515a819863d715", - "static/images/integrations/sites-vuepress/success.png": "30d028da27f4350cbb9d04f70ed644b642a8aea4735568d0f1a6b35105820c61", - "static/images/integrations/sms-twilio/config.png": "ad6baf384421b5d21d68b3561698afc3abb50949eb71d39c587edca2d14dafba", - "static/images/integrations/sms-twilio/cover.png": "cd05f51ff3c0dbac83ecd54bf76ec9b11d99819071268c5c2a8f0ce979dd4397", - "static/images/integrations/sms-twilio/sms.png": "3034b0d76ee6e75ba489e0808b028f107cf9273bb25c2935eb264b943ce1b750", - "static/images/integrations/sms-twilio/twilio-console.png": "bd3081b13711088c437ed10553709ca4af54f80c81571b30b6cc9a4a1fab1799", - "static/images/integrations/storage-s3/access-key.png": "75ad417b49e470c949c060f008124a20f281c37377fa6559eb5638ac199d123c", - "static/images/integrations/storage-s3/appwrite-file.png": "bc430efc73dfd45dfe086f3d305af7babf1fabbe5f832ee0ceb4da3665450ab9", - "static/images/integrations/storage-s3/bucket.png": "ecccad23880ce38bcb9059c9e6c7f8cc549aafa2f186bad90d97277049b76366", - "static/images/integrations/storage-s3/cover.png": "23285a3eb75a45523aab97c62f31bf74ec9a8826e79c4527ac71ed1a3ad4d92c", - "static/images/integrations/storage-s3/s3-file.png": "9c0a0f35048d7125d4948d23506f8148705886e9d8a4517eb09fea961f48fa6b", - "static/images/integrations/stripe-payments/api-keys.png": "ed6c812307522fab2f8a3f5cc1e1c91372bafe876dd3764b5fe9478df9125d15", - "static/images/integrations/stripe-payments/cover.png": "62c7929f0ec30748163657a3ddac608776157025880e23dd83ec575de015e98c", - "static/images/integrations/stripe-payments/dashboard.png": "46d71a4468a573aebfe20c7166e4e1ca3bc6c8d98b2dff8b54016650793870b0", - "static/images/integrations/stripe-payments/database.png": "bf471874bc480b3730f2ffa81a049abb0eae0cd570c3de0ae77a6c03790a221b", - "static/images/integrations/stripe-payments/demo.png": "43bc3081f77ac8f49a658eebac974095e0fd5e40a4c06a6ee26f11556fbdf9e6", - "static/images/integrations/stripe-payments/template.png": "794538a75364739740b1385096c462d1de9b8caba1a9940bc2295d7b8607dfbc", - "static/images/integrations/stripe-payments/variables.png": "119ff7fe2b3c18ebb1f1d162318aac7c42ae84d1bf967048db7c6a77e93c7e13", - "static/images/integrations/stripe-payments/web-platform.png": "4fa7e4ef19d6417f49d651deaf62e158173aec5da2d21e150de679bfc25163b0", - "static/images/integrations/stripe-payments/webhooks.png": "641cc545aa64d137619a7768c553f9aeb30507cd7209cf33bc08f476b95975eb", - "static/images/integrations/stripe-subscriptions/api-keys.png": "ed6c812307522fab2f8a3f5cc1e1c91372bafe876dd3764b5fe9478df9125d15", - "static/images/integrations/stripe-subscriptions/cover.png": "b3b8382361a0e38753b0bf6f6301d05093dcecfb1c82ef5a5bb5d9eb96883a68", - "static/images/integrations/stripe-subscriptions/dashboard.png": "46d71a4468a573aebfe20c7166e4e1ca3bc6c8d98b2dff8b54016650793870b0", - "static/images/integrations/stripe-subscriptions/demo.png": "4900fab315d829d44508c4c0a781a6b878142850421d5cd2072e2a2ff7640df5", - "static/images/integrations/stripe-subscriptions/template.png": "23ee97c1ef20ffc020b276e318a162a4593ec84ccda97b76d4c869f3b3e1f7a8", - "static/images/integrations/stripe-subscriptions/user.png": "e7634d9c99776d12fbe6e19de75d705d79f28f817e21eb76d888a80f86b3c265", - "static/images/integrations/stripe-subscriptions/variables.png": "36d35f5c554e658862d8f8981cf04ee157c2282c97a89282ef91b1346005316f", - "static/images/integrations/stripe-subscriptions/web-platform.png": "4fa7e4ef19d6417f49d651deaf62e158173aec5da2d21e150de679bfc25163b0", - "static/images/integrations/stripe-subscriptions/webhooks.png": "641cc545aa64d137619a7768c553f9aeb30507cd7209cf33bc08f476b95975eb", - "static/images/integrations/terraform/cover.png": "43b4f901f490adab9f018c600882132192c29092f44154226fc72196e2d5a3fe", - "static/images/integrations/whatsapp-vonage/cover.png": "c445579cca51fcafa1a0717abf51386e1d86a5909951a7a05401b0e77dc506d4", - "static/images/integrations/whatsapp-vonage/demo.png": "34ffa1310f6d01e2c22b0d4473d8f89f4306610d8db1d01f53771da6628023e6", - "static/images/integrations/whatsapp-vonage/settings.png": "57dc4bb24aac093bdd115c60d350de19a14d87fc5ed08d8bf833889a95414570", - "static/images/integrations/whatsapp-vonage/template.png": "2653cc0736f87c04a3196ca47d301d27184784459ab714e7840a66fbc80bb665", - "static/images/integrations/whatsapp-vonage/variables.png": "b6d03b3ad1fab7939589fbe474a4fb4de6959ab0d6517dc5f503fc97743c819d", - "static/images/logos/icons/apple-touch-icon-120x120.png": "344a3a16bdf84e1f0afcce0b4ffb22339be28677903915272212c56063978107", - "static/images/logos/icons/apple-touch-icon-152x152.png": "9fa7f1b1932f0bc4975d0dfd353d6e0568a96271b8c74580a95d6cb971bc60a2", - "static/images/logos/icons/apple-touch-icon-167x167.png": "abe37838768031660bb8ced0937730470e662dcf1dbfee62de330f50f8a71986", - "static/images/logos/icons/apple-touch-icon-180x180.png": "5f1e29bf9cf65af5c5b4902e042efc4385c85aa05d2c3ffd9fa533e3236d5b38", - "static/images/messaging/auth.png": "b102e5955551102cb23c8eda94d5f19ebd4e5aeeaaf8f6be8c2e1b479f48fbcc", - "static/images/messaging/database.png": "783dd3b6f6872e7674bee2da8c2dc61e1c22ec9e2746fdd9f5fa004cda579e85", - "static/images/messaging/green-gradient.png": "a57273503796795f13a7b1a3e8c5ef8f16704c0948bd68960d1457fb439b5e2c", - "static/images/messaging/pink-gradient.png": "f2778a9dd659a0b45ba9d6052f24d887353603e10d049091524efbddad68fe5e", - "static/images/messaging/realtime.png": "e4a31302239a55a3712460fc3519b671514519d65fe018ce4dc7d77c631fba98", - "static/images/messaging/storage.png": "64b593484e479f7de0d775afe4a7d86ed5dd5e1c27a9309d0c5381b3d1310e42", - "static/images/messaging/stripes.png": "0cb80b6b47150dc1003cf6c736f224a8895ad6f8be12c787f3d1a08f28b7965c", - "static/images/open-graph/blog.png": "268a2acf3e7bbe471e89973392262dfe58d37a09cb72ae1ba7862637dcc2fc65", - "static/images/open-graph/docs.png": "b935ba5c5d8bb1d7f1c307bf781865fdc7b7db020fe17598ce35b8975fec9a5c", - "static/images/open-graph/website.png": "f0a15cf822ed8e0bed92caf73523a4b178c084693b7bf21cd36ba26a7699f492", - "static/images/pages/brand-lunch/box-1.png": "a4f88121638045f68a26f6d138d46b492e63a9a484190ac5db7b6b43eb006574", - "static/images/pages/brand-lunch/box-2.png": "e312073b5f56db87a27ee7aabc90d75bc57767d6a3342e573f46385019c60423", - "static/images/pages/brand-lunch/box.png": "24eddc760122c76651df1e11eaecaa892eb84bca34b8cd4472cb33d503f689f2", - "static/images/pages/brand-lunch/left-side-top-brand.png": "40736fa1190e10f7f65fdc7f08ee9762cd8744c6379410a9747bbd9c85ab4f58", - "static/images/pages/brand-lunch/right-side-top-brand.png": "df8dddfd31d422d24f8aabe59734a3e62d1878b9d825a1e0c3a2b67aecd9b214", - "static/images/pages/integration/integration-bg-top-1.png": "7a1f2d26277ae1dc21a15519c4ef28c2d208b9bdac6a90a5ee304ed2e52a46ae", - "static/images/pages/integration/integrations-cover.jpg": "1729e9f2575a22abd57e7cf829cddf6a127e7279019b499bf333f315b27f6a7e", - "static/images/pages/integration/net-desktop.png": "5f163530461662bc69b029f0a32cf3f7d6eedfa006fb952391d1318a164b6fae", - "static/images/pages/integration/net-mobile.png": "d02a7c2afbdc68dbdb6f0c4d2f68e1e31093e388c8695a4810914a92652a55dd", - "static/images/pages/storage/bg-section-1-left.png": "180a792f6ce8fa09d931b38e7d6908a13a22c329a2ca77097401057185e9a20f", - "static/images/pages/storage/bg-section-1-right.png": "766e6754663efe80b3484a6edbd8e96ec56a135a3a5e44907b4d1b353a3d2e15", - "static/images/pages/storage/bg-section-2-right.png": "c3eaf1cb3d0ba92b09e6195d477ead24f1e9072a12121a65e305c7f375d50ab9", - "static/images/pages/storage/bucket-modal.png": "00fea38f7f09b56e651c2f039f2e8f3e40ab63d6d2c0b43379bf776ecc9a419d", - "static/images/pages/storage/component-dark.png": "a5a722df3a8b750cf8285db934d552e2b3063f8220901d590589860a46aa9d96", - "static/images/pages/storage/console-illustration.png": "98b0df644eec7071eb8df6a5387092bfc87235b3bdc7ca332045db2b79dbebe5", - "static/images/pages/storage/exploring-the-world.png": "ca3d781a4d964f18051b3516229ced28286607977f384c33bd4f01f8f91a3ced", - "static/images/pages/storage/file-1.png": "21491640745ed0d9416cf2bf893768c2dc695799805f64d200ae03d376eb005f", - "static/images/pages/storage/file-2.png": "6a47a07a08ea3215c64120a062779bb35ac5058bf2390c204ea8d98724ab27cc", - "static/images/pages/storage/file-3.png": "fba8fc710b9786cb71eddbabfcd7c5e5a4d10b2a52ae10c1b9e1d7c8f28009b6", - "static/images/pages/storage/file-4.png": "7de039709c0c945630189f7263df071112ba05442440f6421a144dab7d3732b1", - "static/images/pages/storage/img.png": "98716b1450849208b87d9d94370abb14b6d0757dbc3df880ca1ea63c11ddbbab", - "static/images/pages/storage/pattern-1.png": "08b5ca15e307ca4fc238b8516ebabb1532d512578a29c5932642b694651360c4", - "static/images/pages/storage/permission-modal.png": "7de039709c0c945630189f7263df071112ba05442440f6421a144dab7d3732b1", - "static/images/pages/storage/photos.png": "b397af6515085095e8c4452a0b51da8da17630978e5d9599eb28bf5a22167513", - "static/images/pages/storage/product-shot-2.png": "10f9c4bd30cb900146d765fecca69545fd796fcc40fee991c58504a92fecfaf4", - "static/images/pages/storage/product-shot-3.png": "6b8d94844c814c27b5e96fc10cc4be3797df27258d4079617bdee231ee03d5c1", - "static/images/pages/storage/product-shot.png": "d43d5ad2d0a897c1f0730186ef3d5de6026142c2ae3407cbc631477fa9f698ab", - "static/images/pages/storage/purple-gradient.png": "03c5232e6b44fbbde7d149efc213034d284e7150f156f5d0e199c1ac3236ae27", - "static/images/pages/storage/settings-mobile.png": "a9bbd7ea68651f54f6827b9bb38226342224873b0c455463899125c7a736477e", - "static/images/pages/storage/settings.png": "fdac25c54b3b86a0a3aaf01ecf12d26112a4cc0bc7aea5ac7e21e53b8ecfe1ce", - "static/images/partners/avatars/aligned.png": "c17da789c5f7616b0f43d47bd91419e76c114964a0b42ac9485a77abb9977b47", - "static/images/partners/avatars/appbisweb.png": "7ad01408e793bbf854980e8e8ba9037a605e1d86f3e77b5c4ae14127027dc2bf", - "static/images/partners/avatars/bld.png": "f79b71cf0e6e48cc8f714a8b0bf64d1bdbcb5d564a315f905aaa0befbf30b3bb", - "static/images/partners/avatars/cookey.png": "7529b1190639d899168f047ed8f6827e63b2d922010ed4ca7ce6ae57833f048f", - "static/images/partners/avatars/devkind.png": "67bb1da3f06dd51e8215e5022c2f028423e7bc99c8dcf870288a42389b396224", - "static/images/partners/avatars/fraqtory.png": "3233461b1aea9ae6595f55e30afbcda1fba770375dbcced8dd36c44ace94882a", - "static/images/partners/avatars/inellipse.png": "7385cab0f547607c4bf64dcc04e87cb3a150881d2b9bebfca99d0de6de26d508", - "static/images/partners/avatars/makeshyft.png": "d439fd5c55a98ec69cb3e2047f299f2152bb4cc08da5bc6347bde9172c599275", - "static/images/partners/avatars/mohesu.png": "e32ed4a5bea262f6168731b780f199c8fc63ab3918adf075fad9d1df54e5241a", - "static/images/partners/avatars/nanornia.png": "9e29042a15e4953deabb4a37b9b4f2abbce98339dc581acf88525eacb4b4fde8", - "static/images/partners/avatars/panara.png": "6315b3f6f3964a2fd91374ca4ce16ce44d3908b76488e96504383fb58080422e", - "static/images/partners/avatars/sayone.png": "b1f887b52a4ce85b84dd1b79d0f0c36505fdf7db72d95dc97dccaa65e6a364ec", - "static/images/partners/avatars/simbalabs.png": "657e3ed076eb0a5568c1671f36235aa57ab3abd5c44ad8d56a3294c81935ed32", - "static/images/partners/avatars/studioliddell.png": "cdd8c9f236001a2ba40a6e450c1ee270b7d09f26f48380b6cfb633a5aba39ea1", - "static/images/partners/avatars/transverse-digital.png": "a6a28cb0dfa19cc0cba698cba0509d5217649d3ca3ef3d5f448402d91c1c647a", - "static/images/partners/avatars/white2net.png": "8f3c3f6d761edd0e5f65dddbcd6a159515f72704e2f2ab53c95115a176302393", - "static/images/partners/covers/aligned.png": "c051535e5665feb5e84ff9cb17a41d3bb8004d5f9d930572ff626362c1d11cca", - "static/images/partners/covers/appbisweb.png": "bd83c10d23d32e8d6cb9445d42c9b6028fdaee852cabd39505e8108cc895cd63", - "static/images/partners/covers/bld.png": "0aedba55265ab72b6eac704fe64636e0fca718500cb98a66b4c5f823b30a4385", - "static/images/partners/covers/cookey.png": "f3aee1719d3a7d6f74ea885075e47029399d05f33ea702142050ec5d3a6f0f52", - "static/images/partners/covers/fraqtory.png": "6e32b3624adee6056744ca0dfa5808b13a3ba01086a866a5d7e22c576e44f4af", - "static/images/partners/covers/inellipse.png": "951ca1b8022e74100254342a025d9e9ed7af35cfbbe9692da191741e6ab3f146", - "static/images/partners/covers/makeshyft.png": "3106273ce51fab8ae7f89dc0bab993abf9968c2cc697c3fac45408028f2fbd98", - "static/images/partners/covers/mohesu.png": "7bbb47eecc6e001cbc49b184c1806e671eb5fe35a26ec3e4413116d352333537", - "static/images/partners/covers/nanornia.png": "0e3b7b13cc4523d7640314137acc67826bbc4ea6e00ec6880dda45ae8c276535", - "static/images/partners/covers/panara.png": "31448e6c0ec1bf94f6b27cec1a79867c68d717e343403b124860ecfbbd06e0bd", - "static/images/partners/covers/sayone.png": "8010ad3caecfc31b0a7e6d559da4d49b8fb3df2c79bab2d3344edaa6ba2041cf", - "static/images/partners/covers/simbalabs.png": "9bacd2a46f4496cc9b352ccec1ca5d8ad05ac001468bdc776960aca38a581069", - "static/images/partners/covers/studioliddell.png": "774736136e3f4b8b93002833d96b0b641705be61afe17cc2c2baf7419cd42f7f", - "static/images/partners/covers/transverse-digital.png": "1e2bbbc1834a4e24253a9dd88e7a73353f0659b7584bcd450bb2127e21f8aabb", - "static/images/partners/covers/wakka.png": "c7f7e06abef36e4285154dcbaaf1189931f27772099faf0b0b304f3441ae1eb7", - "static/images/partners/covers/white2net.png": "2a7e32084bf3989fda33d3b06bfee7f7a3c83eb4f9d52a993ee0b6110688ca1e", - "static/images/products/auth.png": "913586dc964f45f7db85eebfca690ccc62678a81b81f17182aa6d35a1904f7c5", - "static/images/products/databases.png": "bed2a6557272315c3fcc3e9337c09b51b5a0f0f54636a56aba0f94f2895000a3", - "static/images/products/functions.png": "b44aff720fa44538ddd075ba8a9efb2b04df8c2db5a27fd228f3efc09c8c67aa", - "static/images/products/messaging/blur-left.png": "f2b84bc9498d64715ed403cbe52e791578ba1c6ba535f7eda0c3a363224be1b6", - "static/images/products/messaging/blur-right.png": "abe9a37b572c6ba83d4f7749eda243653d0a3791920c6a68226d1808beb593de", - "static/images/products/messaging/phone.png": "64bfc690dc126e914c4b4144a4a9204f303cf643d23dc37ad1356e2087b4b08d", - "static/images/products/post.png": "208e95f69aa5d8784f1afa9d26bdb44e29726606fba606b5c65b65de8030cfb6", - "static/images/products/realtime.png": "dddab2874704a0464599ce205949155077e5495367dcd4a6f945b4e1ff938455", - "static/images/products/storage.png": "70a3f12e362515cd2e5d0f47f34472376548bba009c70625c2461710b29a1bda", - "static/images/temp/bg-side-2.png": "06ebd3fe4d022a4d3128351ff5d05c09eb0559ed380a5297f05ca76e1c88c396", - "static/images/temp/bg-side.png": "d06bf4e7feaa3bbfd9bf6258f888dd8a8cc2f06e00e9875acf7bab47280fee67", - "static/images/testimonials/alejandro-morales.png": "dea52cca9da34c9daba3062cbeffac4b44b2a60a58adc90b3ce379363b7aeb4e", - "static/images/testimonials/david-forster.png": "a78113ba9e2b716e8b538dcf46d8088c8c4cf650bfeb5ec74fa3b124be412007", - "static/images/testimonials/diego-ferreyra.png": "8fbddd0bd73ab2d9e3d1f2da72981f437fc1a0d66bb6d3ff7337a8dbdc4219e3", - "static/images/testimonials/eddie-jaoude.png": "01e0bddd00a33c39020ce5218d7cde2aeb88272becbff21afe124c38b8fa4799", - "static/images/testimonials/gilbert-gonzalez.png": "fc5c0ca87b262e0ca6927e078088f36a9c444d8eabbe71d03eb032cfabdcb450", - "static/images/testimonials/hassan.png": "f1c4b86ee778cd52255e142d96729328f7087b592b035921cb78c7f91eeae927", - "static/images/testimonials/jonas-janssen.png": "113119194954333519ba7fd9474344a580871555c34ce672872f74789ffbfc04", - "static/images/testimonials/jonas.jpeg": "a979cc4db4a9a66a12793c9dd300f3b0fe6bfc5932a94e1e4def8ac428ab3f1c", - "static/images/testimonials/k-collect.png": "784a16031082e6f88fa0ebdc2f35102c71ad58d3024798f9e3189cf5a746ab2a", - "static/images/testimonials/majik.png": "1e11ec1d1f8cb6609dd8d2292383995c537707e2da7b0f5aa689496354c8dcae", - "static/images/testimonials/marius-bolik.png": "8f70e297cf6c83da914b7f3431c30fb368388ae4613044777fad8e7caa2b8e8c", - "static/images/testimonials/marius-bolik2.png": "c91a0a7ea79421e3dbc2eeabbf9cbd4b020c06dad1d3998d3ea4b439430e8445", - "static/images/testimonials/open-mind.png": "668c276f700c7e5f9ce1fa77d84968ff80f2c325efc85f57672e9f8883c41610", - "static/images/testimonials/petto.png": "ca940762cc8f95caeccedbb8fe16606fa42dc0cd1621cbe3b2e1c6d28c4de745", - "static/images/testimonials/phil-avatar.webp": "43f4449964b48c8b7d9f858f99008b115cb9e4a00b987404517264586622ced8", - "static/images/testimonials/phil.jpg": "148b64d2178b6b4be165be46ee86151b94b1b2b19fd45bed9833c87dce3d672f", - "static/images/testimonials/ryan-oconner-testimonial.png": "67802e87e2960a3c659bfd5128ca4a56cbbc38df73321c5cb822f66a0526757c", - "static/images/testimonials/ryan-oconner.png": "39761d9293bc29d374628404d1b8da511aff7bdeee948c7477dc99de16acda55", - "static/images/testimonials/ryan.png": "a06729dcc748410064948e3dc8c48699579fa4eac517421fd7cb507fe95aa186", - "static/images/testimonials/shoefitter.png": "221dc7c97d097276da8aa3da5b0ebcad72f2cafbacd6eeb3287e28d6ce11470f", - "static/images/testimonials/smartbee.png": "2232f437bd24f1814228e3baa47959ca31b9e16c70383f09e8208448bfb30fa3", - "static/images/testimonials/souvik-sarkar.png": "ee08e9f68f47deba8cb6cf0d32c46b79500532e3167b7e24fdc925a4b40f51a7", - "static/images/testimonials/xue.webp": "105b72435190bce6aa3a49c6b99bf732bc89a88a9eed2327511b0564a089b640", - "static/images/testimonials/zach-handley.jpg": "d00935146ec612a00403d46cbd7f6bf2a0b51a195f74338757f4db4a005b053d", - "static/images/tribes/android.png": "5cdbb72776c691eec2c82cf89c08c24fbe11cd85644788fabd590ea5a5b587fa", - "static/images/tribes/angular.png": "065559996dc1a40b3fe0b5040e7b70082f56f7b432d1e9c6ab3079f1de40b1d5", - "static/images/tribes/apple.png": "5fc20775e00f55c6f3a363c654b3c377b953e3d464dac81afbb7591891b86a07", - "static/images/tribes/appwrite.png": "7f877b798201848475eed43fd1c42d3f909c4d6ba17cd530eb50a5d0040a3651", - "static/images/tribes/astro.png": "63ac68901774c2029fcb8db72a1349d52926249daa84f486a039fc4c446b1055", - "static/images/tribes/dart.png": "8c56cddc29f48f0ba73c911562332d8c7e9a21eae7f06242089f213555aaeabc", - "static/images/tribes/flutter.png": "d7bfe988e8cbd54aa704e7faaa40693794376068f339eff9e906568a34c911ed", - "static/images/tribes/linux.png": "b453f9faf76ed5e7e9219840aecd6cc146ad8b87ece58faed2b894993d97b482", - "static/images/tribes/net.png": "3086e0f9e16f9f6dabf4d66cd9f1ea68a3024f4e629e978edbbeeb4d38108ccf", - "static/images/tribes/next.png": "6ad7ba34e4bfc74fedc6b8fa20f32a35e200532852cfa7066a1e937fa59e8c0e", - "static/images/tribes/php.png": "8c00cc30ff0d397f2879958f96b031322a4056f520140e3acdf11c2d630e4951", - "static/images/tribes/python.png": "3253cdb6e963e0e50d08718e8fccb5858b8ba53d008318f3a8e06927faf865e7", - "static/images/tribes/qwik.png": "5d05206b49deb9f3fdec652039edd64a54e6d27039263dbbea02d890ea491bd2", - "static/images/tribes/rainbow/android.png": "e8186290839494e6ca4ba64b2a2323328202a12fabaa54fa112a4436bcea3c1d", - "static/images/tribes/rainbow/angular.png": "b0d2a26a39cbf6a5a1ea5972ac9fa365ae9d737f984f38b2560a26911165936e", - "static/images/tribes/rainbow/apple.png": "17000c4b140e6e0233e9580a79053c867163c653425f34d2f91011267ac33a56", - "static/images/tribes/rainbow/appwrite.png": "074ceaf9cac2c83129380f3f1a45fc4cd26240dff7d2e4c8080481d00187239d", - "static/images/tribes/rainbow/astro.png": "21ac4ae77a52854946ad468df0ed627465a556f5f78a7b6562be2d33adf87c69", - "static/images/tribes/rainbow/dart.png": "795c7204577774d47382ab3e8745844ec75362f32818a86967dfe293680e6384", - "static/images/tribes/rainbow/flutter.png": "354b2e2260104a6c393c86b0d8558c56af8eddc888a72842919411e918f4ed09", - "static/images/tribes/rainbow/linux.png": "e7265c5d6aa6f22b11e1cd828fdc20577b98915bc280409acb19640955c53c25", - "static/images/tribes/rainbow/net.png": "dc2bed4e93eb4a95fc782de25d51ef4bb48203daab2232ae22ab95a52f0e4954", - "static/images/tribes/rainbow/next.png": "cd3428259a6fa02db49a32bbfafd5586435f6b5afbf08615a772e091d7ecca5c", - "static/images/tribes/rainbow/php.png": "c3faa835cb72f02957717a30dfd5401c1e22dee21bffd4073140d05547bdc619", - "static/images/tribes/rainbow/python.png": "a959ef8d734f5dcecc4d3a2cc8177820fb1f162ab7fd8d8d6d3510e80d47e38d", - "static/images/tribes/rainbow/qwik.png": "a9b49ef052b3a780f625b5d74fc49e8dcf8d514f02f75a66c08edc1a61684dcf", - "static/images/tribes/rainbow/react.png": "d0cc5e3a073d7efa868235766610751a25e317ccee11fc60d70c52e193e817c1", - "static/images/tribes/rainbow/ruby.png": "9b024aac94d37e2f9a66bcd350509e484d7983107f70b33a1ca9a221f0d55858", - "static/images/tribes/rainbow/svelte.png": "b3a50ee430fc4387c30209f0b7445cb0c42e48ebedcd18a0e69461436854ab51", - "static/images/tribes/rainbow/vue.png": "123324c993407f3f3ff134e164fcc15a3d758384431dab987e03ec20980f35b3", - "static/images/tribes/rainbow/windows.png": "b8f9add3878fa7a90b5ff5406fd0251a8ce962c1ce5db41841dc26b39e855a02", - "static/images/tribes/react.png": "3d474a2d1e950fcf366e788af45b322d793a184fa5e2087e662612d02b84b135", - "static/images/tribes/ruby.png": "0acff4e26cf5b248497f770d45384dbce737295758c4a9bbd1397fee39873257", - "static/images/tribes/svelte.png": "d638345fd75663c45413996146a8fc776c893e1fd5e8f7afde30cf11eacd47f0", - "static/images/tribes/vue.png": "36ec55aaee58f2e9648e65d8b33f6663a9b5e64eb4e3cf6e3a33a17bf5f7e7ef", - "static/images/tribes/windows.png": "6d66dd98b850986a958324c5a3504d3742d0f838db9f2f7a12b54a0c6636c829", - "static/images/tutorials/android.png": "a051666b96e62cf82c2cffa61f06d7f0c2737e4b1cec61dc91af03ec8086d3fc", - "static/images/tutorials/flutter.png": "7e777adb2d6ba3056f6093223167a9075bb12a9caa21a6b5132b222df4ad1101", - "static/images/tutorials/nextjs.png": "336bbad92a788531831c2a06263439514c6223ae2fe27e39acf9cdd18b057c77", - "static/images/tutorials/react.png": "eee88dfed6ba8fefdc469984ef56dcdbe3a7a9120f5e16cf202bf67f880cb2da", - "static/images/tutorials/svelte.png": "85c30745f3eb6c18f9c4f612592778e2fd107fe1496112a3dd8f9aab510f296d", - "static/images/tutorials/vue.png": "4af1dfd097c67724a9335b64c8403aef0c80bd61cd77006f364da62ad4489efa", - "static/src/routes/(init)/init/(assets)/avatar.png": "c8a57de95fd25aee51e528635344dfeaa0c24195fc19267dcd01fba5c9c643ba", - "static/src/routes/(init)/init/(assets)/eventBuildingWithFlutter.png": "6ceeeb5ab2daabb18bdc3bd4656ed29cff2486b2b07e03ac497a7a851b84c04d", - "static/src/routes/(init)/init/(assets)/eventClosingParty.png": "c35eb96d428cc5555a4fa9e9aa7a13c6bc6d844efa7f56633c903da85a7204c5", - "static/src/routes/(init)/init/(assets)/eventFutureOfAppwrite.png": "5659aea5c088555783655ae739c640dcc2bb982e7ecd84723c8f16bf3febb1ae", - "static/src/routes/(init)/init/(assets)/eventIndustryPanel.png": "2076db9e8e5ec7b7325bbf094985b45109efe2d4f439d6e6f3490ddc64c2bec3", - "static/src/routes/(init)/init/(assets)/eventLiveDemo.png": "6eb77c803267542105ca7ca35a3e9c19064eaed0e6553c109025819273d6c584", - "static/src/routes/(init)/init/(assets)/init-giveaway.png": "da4e6855b00c3e4afea99e5f9ced054ab2c45f2ebfde1ebe51e79c3ef04d9a51", - "static/src/routes/(init)/init/(assets)/lockup.png": "aa74cc6685e7e0fc1ee9739d8324e596c1d99524053105b8f99877336d9fc710", - "static/src/routes/(init)/init/(assets)/poster.png": "e97222a677a61b6007c00da7aa9f68725a89d3dde93dbb07cde4ce1f51d8ba86", - "static/src/routes/(init)/init/(assets)/posterDeploy.png": "ea74cf68552b049a1a2550334dfc5d5873a68b9bf8d2a9162a9fd4edec40f91d", - "static/src/routes/(init)/init/(assets)/posterFileTokens.png": "e528005340bc2ce16356c843d607c6f906db316bcec30a4fdf15ba22db51dc64", - "static/src/routes/(init)/init/(assets)/posterFutureOfAppwrite.png": "64a6f0100b028329b477b556afb704861bfa5226a7e8c381bd3461b13a79f90f", - "static/src/routes/(init)/init/(assets)/posterIndustryPanel.png": "3978e11aca9956c071c030299dad58b8fdbac406ce8527e5e2b2fc6cc1f407b5", - "static/src/routes/(init)/init/(assets)/posterNewImageFormats.png": "e0e3a252d332cccbf6b469728dc2894a0ca70e02ed9686ddf50f1d7b5c502173", - "static/src/routes/(init)/init/(assets)/small-lockup.png": "ebe73aecfbf8902046fa567a5455ab0b0dea6250f370cd3eaa8a72f10e5decf9", - "static/src/routes/(init)/init/(assets)/stickers/devkeys.webp": "fdd5fa46eb8478136c078a46efe9a98748f9a674ffc01b49978f4b29bcbafb8b", - "static/src/routes/(init)/init/(assets)/stickers/flutter.webp": "3204dd6b9077ba190cd283df8af976a6608c6e22b898218f04f282c676af4a39", - "static/src/routes/(init)/init/(assets)/stickers/formats.webp": "05932852e0ca85a21e270e155660bfde31a8ed7df449554e0a6b4a5f5699d15c", - "static/src/routes/(init)/init/(assets)/stickers/sites.webp": "415d5f88b3eb2cbe431e120dc97ca9c9cc92913778f87753f2cd088373b229b8", - "static/src/routes/(init)/init/(assets)/stickers/tokens.webp": "ad63489309f66640d6b9dc7c4a97cf2b269bce00a7db54873edb2c0da1f813c8", - "static/src/routes/(marketing)/(assets)/images/site.png": "de05c755fafbd893f9567eb3559c70441295b63551167a33e7609ebd85b70ae2", - "static/src/routes/(marketing)/(assets)/images/storage.webp": "d59a4f1220c4e60e321c7642572b7596540e4d0be39527c87c33af8b824be8cd", - "static/src/routes/assets/bg.png": "fdd84e2e696facb0897e890bf5b28da1a6fd2bd5bafa41e89c414b76834ed8a8", - "static/src/routes/cloud-ga/(assets)/placeholder.png": "fba76f6e4bace3e2431dc105bd70df614f20b851ebc03ed0821d03b5a20a76e7", - "static/src/routes/company/bg-left.png": "e9157670f0b11490cad3d8dc069106b87e9a5e47cc62fd443fed2c3dccffc648", - "static/src/routes/company/bg-right.png": "e159b7b3527e3486dafe14e9312afdec5de11b8b5d46979fad487feccd3426cb", - "static/src/routes/contact-us/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", - "static/src/routes/docs/blur-1.png": "8660a40adda51a9b6f2cd92fa7f3817c1db58c03136632d9c67062cc655b6cb0", - "static/src/routes/docs/blur-2.png": "25d7906c49a4daed9a5efa2861d9924d0c4eb6e2457b7ab120ee5469f94f1952", - "static/src/routes/heroes/bg-pre.png": "6d818ca64e37fa3c5e9660ea3c1477a0b902191593f544081f576fce1516ea5c", - "static/src/routes/heroes/teal-blur.png": "19856cea7a3b3c3775a758efd00625b5a4b415457f445aca93308d37cdc4c888", - "static/src/routes/integrations/technology-partner/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", - "static/src/routes/integrations/technology-partner/blue-bg.png": "b7f286f65909bfc53b7603112febc511d66ef5eb1a9051910f9ce1f725e77bd3", - "static/src/routes/oss-program/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", - "static/src/routes/partners/(assets)/icons/avatar.png": "cfafc3a89cab24b8f468edd6dc03f184026e55be7904d86f03013d95a3398558", - "static/src/routes/pricing/bg.png": "2f7e5bcc2d48987a81e73d9e7348fa450950cbc534e5fef231f836e1cd2b788b", - "static/src/routes/pricing/sites_icon.png": "551440f85d22d6263035936802d6e13a37188c87caaa3661edb985ad097d9ec3", - "static/src/routes/products/auth/(assets)/hero-bg.png": "a2e69ce29d53a7c494ce7b2fa86f969074a545da60950e4be71efe3378177824", - "static/src/routes/products/auth/(assets)/identity-bg.png": "0e20c46315b8b53b1369d650737d100c9fe70c8a223e986a6318868ad52cf228", - "static/src/routes/products/auth/(assets)/permissions-console.png": "fc766bb1ff685e31d7cab571638cca48cdcb5483e27248ecbf496c4c439ad639", - "static/src/routes/products/auth/(assets)/phone-mobile.png": "1a0a4644df95be910f28befae192cd7d6508df20098294bc4631e451538f1c19", - "static/src/routes/products/auth/(assets)/phone.png": "498bfd6cfa4acd42576dc209f084eebc66deb3735040b5b8230ab15ebe982098", - "static/src/routes/products/auth/(assets)/teams-console.png": "57f68b5341f5a4ba7e0794a6fe620767eedffee191ef11e7f7cf6ca7d5bc8a23", - "static/src/routes/products/functions/(assets)/avatar.png": "cfafc3a89cab24b8f468edd6dc03f184026e55be7904d86f03013d95a3398558", - "static/src/routes/products/functions/(assets)/checkout-window.png": "fd9ea23c77f26743273a06bfefb7f964898ea6a020fc2464b61238e65910e7c0", - "static/src/routes/products/functions/(assets)/deploy-window.png": "14f6a7d309883c88c97ae66482e3ec7f4fb32606b1ff06e54ba03eec022ea2bd", - "static/src/routes/products/functions/(assets)/hat.png": "c77aa1e76df876839284c6347be276d326e039ef0fd4f46599e5b9465061bd68", - "static/src/routes/products/functions/(assets)/hero-bg.png": "b9032e16403556e469cc189708653d5a6967f03074772b7efe2b9a18a9a20cc1", - "static/src/routes/products/functions/(assets)/identity-bg.png": "0e20c46315b8b53b1369d650737d100c9fe70c8a223e986a6318868ad52cf228", - "static/src/routes/products/functions/(assets)/local-dev.png": "fd9ea23c77f26743273a06bfefb7f964898ea6a020fc2464b61238e65910e7c0", - "static/src/routes/products/functions/(assets)/phone-mobile.png": "0c27023f2dddc6826347f93d236dcba6e2284a4d8a25c8ab0b6d2ba5b0ad95ba", - "static/src/routes/products/functions/(assets)/phone.png": "ab691f94c519bd02daa2cd970ca4a32e379edb97428abce6738a2e2addcd47d5", - "static/src/routes/products/functions/(assets)/shirt.png": "f20af719efc8e23152d785b30f2fdecef32461454f9946e1d6e964032e1f0d53", - "static/src/routes/products/functions/(assets)/templates.png": "b9a4e9b3627272166f373b309f181102718a1028ecc3d39d8acfbd862c27f13a", - "static/src/routes/products/messaging/(assets)/appwrite.png": "99702aa7860a411083fe231b50f336e5d3a0836984dc24754f334b3bf4695769", - "static/src/routes/products/messaging/(assets)/draft.png": "e65ac055a7c2e9102418a6fb101e89baa5ab136dad32f94d67559c066b401449", - "static/src/routes/products/messaging/(assets)/gmail.png": "c2f24d7ea2d9554d8788395bac1ae39c7593b8bc8a4cf9d1f4b792892706b847", - "static/src/routes/products/messaging/(assets)/message.png": "921d899aba09bf869fdbbab5aaab720bcd25f9396f18d8b5892e11e23254f2dc", - "static/src/routes/products/sites/(assets)/icons/ddos.png": "e10abdd966443d6795aec23cae0f37d3d92129061fb7a8edc66be30a6804d814", - "static/src/routes/products/sites/(assets)/icons/domains.png": "8bbd5df69259270414603a6409829c4a76725bb7cd65fe546e6f8da40b0dd3b2", - "static/src/routes/products/sites/(assets)/icons/ssr.png": "56f67c0039fc22bb0f0ace351e7db16bc1752fbcdb93ee86f4081254f7ae52a5", - "static/src/routes/products/sites/(assets)/images/illustration.png": "0789be5d03bd45ca9ee896e1803316e7534557fe4188e849104603f4feb887a7", - "static/src/routes/products/sites/kcollect-ryan-testimonial.png": "69022178703ac81404fc40a7516f7c58e9e817cd3adaf911737b5e6ee6b0918a", - "static/src/routes/products/storage/(assets)/hero-image.png": "f3cffe70e83e507733382a3d35a63b79c3640b054c773e219c4ae8f88a5c6831", - "static/src/routes/products/storage/(assets)/product-preview.png": "17de3d327cf977a89ff08dbdafa67b89c3370a30439a75e4a0be9d4734e54990", - "static/src/routes/startups/(assets)/bg-left.png": "e9157670f0b11490cad3d8dc069106b87e9a5e47cc62fd443fed2c3dccffc648", - "static/src/routes/startups/(assets)/bg-right.png": "e159b7b3527e3486dafe14e9312afdec5de11b8b5d46979fad487feccd3426cb", - "static/src/routes/startups/(assets)/project-timeline.webp": "f5e4f2e0e22ba908d54859f8394539111e200e6118cd1831f2ec28f9c48d5467", - "static/src/routes/startups/hosting/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", - "static/src/routes/threads/(assets)/empty-state.png": "1fe774546385abc92037ad1ee25ea9f2850ff47252c0d96891f5152687a3ef7e" -} \ No newline at end of file + "static/assets/logomark/co-brand.jpg": "43b3e6e84acec3e52a627f9a19a530a7e2f148f002f06bddca933c8b3db0d32a", + "static/assets/logomark/co-brand.png": "bdbee41505fcc16f5d1b46e1f999857b330af42f0ad33b6d8daffc0f173387a7", + "static/assets/logomark/logo.jpg": "d814c71e13033fd8214c63781b84b173390b57debafe5a2e549adc0b7b7e845d", + "static/assets/logomark/logo.png": "8db57dc55ef3ed0623babf5ea7a94dcbe9ae99e18c759bf84326852434a1f961", + "static/assets/logotype/black.jpg": "ae432871231b591e4c991516b0210cd496e25bffebe387833135c8447ca28c93", + "static/assets/logotype/black.png": "a0f914500f2fdc013b1e1dce9d5ecabfb9fbc9f4136286e8541ba58792216986", + "static/assets/logotype/co-brand.jpg": "2c0753168982ac72dfca6fc9f1d9851411803c53eae5aa74c3cd569106192a84", + "static/assets/logotype/co-brand.png": "d93727f2abd173b1d4a02630c447e89cfe1441a78cf8b8ebb8b9c19d2318bd79", + "static/assets/logotype/logo.png": "8db57dc55ef3ed0623babf5ea7a94dcbe9ae99e18c759bf84326852434a1f961", + "static/assets/logotype/white.jpg": "8ae411a3f2a1dc1762848d5271a46c8509c42e653c9f84dbb5fc8bdef3c5408c", + "static/assets/logotype/white.png": "a6c0a516cafa38798b578597a50e1edc967494e986ee1a74e9170e3fa45c67fc", + "static/assets/visuals/auth.jpg": "a310ed768b63e73eb09452352ffa5a59638b4223aebbcaac80bdb232b24de64f", + "static/assets/visuals/auth.png": "6634419bdf4972706d08a03a148fbf2f0053377dca85ffd7d95ecc3e016a009b", + "static/assets/visuals/dashboard-screenshot.png": "931eec1e7232b5754684e2652999648f3fada876b3d39351360a5bb87008367c", + "static/assets/visuals/dashboard.jpg": "fbb2bae3d39f500337d6c4bca64ddaaea163a177ab3db77641ecd7050c43c10e", + "static/assets/visuals/dashboard.png": "931eec1e7232b5754684e2652999648f3fada876b3d39351360a5bb87008367c", + "static/assets/visuals/databases.jpg": "0de2e6b470f9903db803120d03e1b3abe21728802564d2702989a48128bd0abc", + "static/assets/visuals/databases.png": "d50ce8119e31f7b8099e9b98fe38a7066adcf421eb061756db900b5e60f257fe", + "static/assets/visuals/functions.jpg": "cb9dc9f434329949a8a0bd1302033e4106d4e6f16e05dada696529800e7236b3", + "static/assets/visuals/functions.png": "b7996d1c9270207489fef94aedbd75ac1e49d9b42123c2f7036257c63974dc29", + "static/assets/visuals/messaging.jpg": "a42131dff41bce5714237794e5cb330d595e723398371e63f044c99a872d3f75", + "static/assets/visuals/messaging.png": "5b43e5f9c9d6b75a92701196a13bcd82ede24e37d5d10ad9fdd2261deb7fe259", + "static/assets/visuals/storage.jpg": "82cd0fd62727ebad45e5a869fdbed54baa056db5461fb307711178fbbd60e874", + "static/assets/visuals/storage.png": "617f55240fa9a1eedfd8b61b6fe7aed384d51894514f144c147bed4b669c27c8", + "static/email/discord.png": "69bf5fc0d3973e75cea7a2e650428a7049e506dd5d3258854a20a59b379a063a", + "static/email/footer.png": "835d583d34cb72d573a0a99828ca505e34c4ab957cd3afdd44113f01031c4148", + "static/email/github.png": "d0175509e6e303c9ce8ea4610fdcebee1bdf3d46c8e153dd43352f91e7850a9c", + "static/email/x.png": "9a479c86458031bca300e710135983521929e008bf453915057b3c5590df7e6f", + "static/favicon.png": "a779da8b6e1ee4f2591c0058a34302ab027648f7ec064fdd223e66f4660df4e7", + "static/images/animations/mastercard.png": "71b0d7ddfe71903b697d8085864712c2e7f085c9fc9b9b22ca4424458ce3f7b9", + "static/images/animations/storage-1.png": "ddf90715a4d515b201ce5d97dad5326c4e9528375f865795c596aea4a55a9d02", + "static/images/animations/storage-2.png": "2a2d352a1c5370ad2b0eccfa56b24c03b09ea1255bd18d9e4f02835b3ab569cd", + "static/images/animations/storage-3.png": "4cdd2966f28e409e1f2bc8c7a178f74f6a486f0a0dd1f73b5585436001c27219", + "static/images/animations/stripe.png": "733874f3649fcdabf6a4bec92b6cbf8448c52785c11912ef31ff229e339fb33f", + "static/images/animations/tech-dark-transparent.png": "391da4ae4f6967fec8f1e11d186fc68838485ee9cc13e2e0914f052abfb20433", + "static/images/animations/tech-dark.png": "ea4081e1ab34551317074541a62dda8c10c71e8255382e5e955bdfcd13186bc7", + "static/images/animations/tech-light-transparent.png": "6dcbd4f1b4a627c0a6781db0567391c7487f7d6c45d091ec1d15a51e24e8a3af", + "static/images/animations/tech-light.png": "417a9173413b1b8f0e2b32b9c5dc58eafbc4c7dfe68068b41a20b3327ab22d76", + "static/images/animations/visa.png": "583ca129a0ad39d8470184a224567bfe3905348bd2af057f3d100697335e3258", + "static/images/avatars/aditya.png": "3ebc1876c64c2f0b5d37961b292211421169b7cf9e56cb42880de7e3d8394e26", + "static/images/avatars/aishwari.png": "39010e039821bd3ef5845cf38c8ad1cd8e256034136314d7300caf905479fc7f", + "static/images/avatars/ariel.png": "53fb1b13612e29a3930289f8cdc7cccb0259bad794cc622418e4586043e6e55a", + "static/images/avatars/arman.png": "4a5bfa2b79ba7c1e30b4478e433d9d3f3e62359f5c0f480c4053938ea739fa0a", + "static/images/avatars/arnab-chatterjee.png": "a29c833cf20eb1586cf8d87d02b65c2127bef49c897fa753da9007fa688bc819", + "static/images/avatars/atharva.png": "8e71be7d9607d99e4f1a2404b4a18662742d6c22b2cf7ac5e0866428615fbae3", + "static/images/avatars/binyamin.png": "dd5f2d3d9ee4c3bfec778e02bfd4fed977cf0002724cf3790fb3f737c6382f68", + "static/images/avatars/bradley.png": "fb84bc6d4fb67cadfd534afefaf9268bec238bd7c8d544bd26b205bef9852a7f", + "static/images/avatars/caio.png": "9617c053d3079225491d0d314ae84cfde03c91840bc2518fe999f85655b45052", + "static/images/avatars/carla.png": "1f307b4929c8b82331c0eedef41e2cc645610359bb93902d7963a8fe646dd004", + "static/images/avatars/chen.png": "d255d98ccc9388391b058ed6056532bdf74993c00b6182a34f0c979e66fde94e", + "static/images/avatars/chirag.png": "bfb7f9339880749b8850459587ebcff4f899243402c2ce09ad25edc53713d8c7", + "static/images/avatars/christy.png": "b8df189de17db2640955fe6552f626141d74289d14fdaa4acb02cebdaffbe0b6", + "static/images/avatars/damodar.png": "d9c95c30cd04477324dae2775513df3135498aff1b491bc869f633571c530b30", + "static/images/avatars/darshan.png": "1e78fc1d3b8b45e1d26703fb2371ec50df911105352f9f8aa573ffd0c7c93e81", + "static/images/avatars/dennis.png": "3390295ec0a763e5289004632afaef0c1fc44c74a0ed7d9cc120e3a31d77f3d4", + "static/images/avatars/dylan.png": "c92b77cb11a412b2f3bb91624e3c9fb42c5444882875ad7c693b14c83f0ffcee", + "static/images/avatars/ebenezer.png": "847eb062be6a6c9c82d0ad6e3b4077af517fd529c38c2b07ad3ec5c498e02ed6", + "static/images/avatars/elad.png": "94ef181aa73e627ecad3eaf94d03130da8f9edd39f2a57ff2fdb39d9964761bd", + "static/images/avatars/eldad.png": "556dcfdff5babae663891a702d78d44ef93baddde04588fe6218222e966de10d", + "static/images/avatars/emma.jpg": "1dc762ca4571ce93fe79a8dcad13f8ecdaee7bb40b4e3635fba08fe77b916984", + "static/images/avatars/emma.png": "32e49536e4d61d1b6cdf40fbe72227bf1218bccf2cc1f36c164489195c82b2be", + "static/images/avatars/haimantika.png": "c32f906690dccbe5208a322abd0946137999fd65de7cf325ae420386dc343b6d", + "static/images/avatars/holly.png": "21b4d551e5275d03212494ea59e16257ec66eb5d3c2a2176f7e2cee196a31961", + "static/images/avatars/jade.png": "477be82025d52e0b32c1c7f8c70ae605c16a315e768601ebb197e4b58db902ed", + "static/images/avatars/jake.png": "6a9640cf0aa2d15c23d4b454195ee84ff30e060187759547648f49178033b7d0", + "static/images/avatars/jesse.png": "99f96274279be20c2bf6c97feeef9f61b7fb8bde6404b4f2472cfd63b44f6cdf", + "static/images/avatars/kushboo.png": "b64531c4b946dfe64c542c7d400a431c8b6634b1bfafda5cd293ba14407a80b6", + "static/images/avatars/laura.png": "608a5ca230d0dbd4fbedac4c9f3b6203f1e70108c3da697d79e2f13a607d7d33", + "static/images/avatars/levi-van-noort.png": "42aa314246f4adde1a3db59b9e227f6f216fb99888be8e60b50bd3af7a66253c", + "static/images/avatars/levi.png": "10d2a7a99d47a969ed74aa0ddc014f985e3d3904f086e83abf56978482b2d8b0", + "static/images/avatars/luke.png": "d3945fa606673bcef524da2736fa27bc4a4ee75e8b188a80b1e7d511f4def350", + "static/images/avatars/matej.png": "5b456bf1472486f98610cb8f76c3aacc1fa413b8486b5b119639d2dacc700187", + "static/images/avatars/may.png": "b060895e3a13de66ba4834177643fec8ec700a18eaeee56d5d12ad58ff103f7b", + "static/images/avatars/nishant.png": "dbf79f4e543008e3022b7b3ef8bc446a001fd16f87396c68fdfb5ae65ae54158", + "static/images/avatars/sara.png": "d05b819fb0465ca5d1c2b40b3057c5376ed3c97d4eee484a7ceb79725168869f", + "static/images/avatars/shimon.png": "be4818ee829c4e53da05f21e2607ebd523d1361999670f811ab2e45624ddcaec", + "static/images/avatars/shmuel.png": "c14857b3aa115c841879d5e48c7b776c7afb74b728ddd3b9cd00f8a41034d610", + "static/images/avatars/snezhanna.png": "838adc665f3494e76b9144f645592da68f624b51a1158fdab647ce1acf2843a3", + "static/images/avatars/steven.png": "bfcd8524b034f6f23425a622df79ad7f219ebeeda514cfc47cffb64536b2765f", + "static/images/avatars/tessa.png": "25975c0b69dacc4d0f1e0a65372ebcbd96887187601fc879574a34ed2ad9cc84", + "static/images/avatars/thomas.png": "348a183298059975356737a9296a5676eeedd9ac739c044ad1e014933ee10e67", + "static/images/avatars/torsten.png": "347853ce5da6a1b3b2966ffcf099325950d43df123f6a8bdaf90b484f9fae9c4", + "static/images/avatars/veeresh.png": "c37fbfacec8d147c26308d5f654d748ce431af2acc3a05170321cf7facfa2b89", + "static/images/avatars/vincent.png": "492ada1a745fe6f5f94e8732a01d7e6b5b7b4d6dc6d7e1db92e024db5396874a", + "static/images/avatars/wess.png": "48590e95c7d515a00a4e6455b26e0069df0196c84ae8d0670886d6ae431b36d5", + "static/images/bgs/auth-hero.png": "e8b36120ecf4c81318aa6b1005008a563e5322aef9802d8397922f423459fc8c", + "static/images/bgs/building-blocks.webp": "1ab8f41e83b284ee1e32c920787df1b2baa6e284693f3752cbf94523d4005cfb", + "static/images/bgs/checker-bg.png": "2678e23dcba15db50efb6fcdc154031a683718ed33efc04bd5259ad7eac10d36", + "static/images/bgs/contact-us.png": "914ba3ac3d2cce181356035c34f68f9da58714ef4914dbcbb8bf0c700e849f51", + "static/images/bgs/diagonal-lines.png": "fec1ae8c3df19ce7ba7f04e02fd475e686ce262fad8b7ce22b82a15a1148aa70", + "static/images/bgs/footer.png": "3d5b8c35a456c1529d053ed2778d714a1f7158e1b65abe51b4b6b9bde85bfd95", + "static/images/bgs/hero-lines-1.webp": "42911ccb70af26bc6dab55a7e451ec41458b76e864a01d24595f04442d5157b7", + "static/images/bgs/hero-lines-2.webp": "7790166150c3aa1f8b10360d8cc6f633813c9f9e3ad312fa41b3c0aabb52cc5f", + "static/images/bgs/hero.png": "b8d88d3ebf9dd04d8a1e0adc930f96f8bbc3692a02f3891e6cdedbc2b71157ea", + "static/images/bgs/heroes-pre.png": "5035a999eb75a7f0a1930ad34ef074b9dc8be810933bac186f321989947c1d84", + "static/images/bgs/mint-gradient.png": "03c1db3d28c88ec91d2dc48430d2b90be488ec5e96384cd29fecc01f2d679591", + "static/images/bgs/mobile-auth-hero.png": "0f69086c12acf66ccd56c2a9d48f45127d7884ebd025350c77d25014eb4801ca", + "static/images/bgs/mobile-hero.png": "2630cd9ffe14f825d98dc7debe92536a679bc7314735e3ba56918a7837288b46", + "static/images/bgs/pre-footer.png": "15a941a19cfee8681d73efa75d30fad2274be8b1dd3dd315e01e44c936d324a5", + "static/images/bgs/purple-gradient.png": "2275600ef7cab3442e5ada9a8e934a08bb31589e73a2e797d6c0017fdd24e8ee", + "static/images/bgs/top-bg-init.png": "1bf31c08228a231ded0362965912efe3ad18c87382a7ca561140bd06bbed6168", + "static/images/bgs/top-page-light.png": "d3fc84ba8b77a424a32e83a20afd57231aaead5e0b2aeb07fadc7929df01d892", + "static/images/blog/10-best-mcp-server-client/cover.png": "4e970350fd8f90ac2d4fd4bb2f8fbb2b28772eb1b76f699b9da4f3577ef8026f", + "static/images/blog/10-git-commands-you-should-start-using/cover.png": "714e0283f3d41ab3c41f73be070008d877f4ef4f682083a11acf85dfd95f15ef", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/AppFlowy.png": "ec1cbd2af25df6cd57c5f592c8132b8b17cbcb536cf2df3172285a1a0292a0d7", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/appsmith.png": "2e6208f9a3fd9b95b8a137e124c58fa520eb09662071cf209e3c8be1539a1ec2", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Appwrite.png": "18c1b713797acf348ced23fb67e1e52f06d6d0541b3193c39eb8996484910630", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/cover-image.png": "fa50f1e9b1fec30f865891b8f1ae3106693c643dcd1d1efdf3b696863f88b64f", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/documenso.png": "f61801c225aed64160e33743377952bea17f6d064bb8be3aea47fb26b1e5df1f", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/dub.co.png": "737fb7140dcd99000f93a1f4e92cc004a5e690c10305d0bcc52b289349efc560", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/n8n.png": "e1e0be292f7a40346fe9b6fc1b386976976746dd67a96518bbb00546abe4a478", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/PostHog.png": "eb2b7e51ae96c60dcf9e65a24e8a6f71783723fd6c3547330bb5687294d02bc3", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Sentry.png": "f49408981ffc2a9cb1e02c286a8b6507c4e0936cd937ad00a74f7aa3d9777004", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Typesense.png": "9487a55e01fa138583067914b37c810103616147d31feaef7aa7a5aa25b8afa0", + "static/images/blog/10-open-source-alternatives-to-popular-software-for-startups/Webstudio.png": "e73e63de846c31686fcb05c01c19f7117bb869ee7992326af3207c33e227f848", + "static/images/blog/15-git-cli-tips/cover.png": "701de0be53919ffbf09bca6e1f8f8f21491cb1238060058cc48e8bd55a266aee", + "static/images/blog/25-startup-ideas-you-can-build-with-vibe-coding/cover.png": "69e1328071e894cb70e28d4c0c4eaa8f9dc63b71612b8823e455006bec21e25d", + "static/images/blog/3-things-you-can-build-with-rust-runtime/cover.png": "fc603d24fd2ef803cb1cc81445ec990081c5cf69d5e7bf8143fce4595c2ed454", + "static/images/blog/3-things-you-can-build-with-rust-runtime/webhook-create.png": "b76d6b4fecf5a14960916338580437e5c7b3ded9b7838eb67dae50a048406c79", + "static/images/blog/5-claude-hacks-you-need-to-try-right-now/cover.png": "c144874bf9b2dbce69e1e56caaf6b8f6f8e00ea8c35d00ead7f77fd4602335a4", + "static/images/blog/5-MCP-startup-ideas-to-build-in-2025/cover-image.png": "deab6b0d8461c224bac8094872544cb4ba3833ea238f2f395f7b09ba928d064b", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/blackbox.png": "57aa779e54f0ca6874c92ab59f719b1a9f19c23bde32dae1984430f881d53888", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/cover.png": "b48e8c43ca1a95a0e645936552f5ac0a4a2db16fc5ee84848e5339b92024bf18", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/dendron.png": "9dcab1330d67d549b37bbd980ac9ae8a231dfc96dcf931303451df093723e781", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/error-lens.png": "7aa0d4b1ec7071b4db585f0536ea2e8c04af77dec1c7ea8ea44690db1e566e87", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/thunder-client.png": "4017e48f8c3641d140d26e7f7039c75367345b423f15ecf292cf0c99b25ca43a", + "static/images/blog/5-vs-code-extensions-that-replace-entire-dev-tools/time-master.png": "0088a67ba8de6544ba27961efa93b6ac3b2921f9edde18612133fc9339d73b76", + "static/images/blog/6-practical-ways-developers-use-ai-to-build-faster/cover.png": "df0d7e4c191e7209519f58ecc94cd4a9682d4ef2e99b74e5aedab7b9841206e4", + "static/images/blog/7-prompting-mistakes-you-need-to-stop-making-right-now/cover.png": "eea096934c726917cfa1686a6c23198bf70c4215191101302047aef440404dde", + "static/images/blog/7-steps-gdpr-startups/cover.png": "9894264a71940716de2ec5e09711834791ddd1c510dee9e5bf42a864343c5a2d", + "static/images/blog/7-things-claude-can-do-that-will-blow-your-mind/cover.png": "7bb98ebda77a4cc582b67e5d72db18ee32b94278d17a805ee9a94f1f459db741", + "static/images/blog/7-vibe-coding-trends-every-developer-should-know-in-2026/cover.png": "5831de0b500eb362127df7a21ea63cd27045ac7e9bb5df6a60332f5802d3d70b", + "static/images/blog/a-recap-of-init/init1.png": "446305a616f6ce3ec77b01e5f5ab5dbf0e68f32268a3d5aab7249fc055ff61cd", + "static/images/blog/a-recap-of-init/init10.png": "8f39e8d643d0630ced6f5c96a8bc9dbac72a7759e2e7caf7a09699f03566b184", + "static/images/blog/a-recap-of-init/init11.png": "77ee790eecb99b592884a2c55933011587b965a95bccafd9fbd6cbeec6f81416", + "static/images/blog/a-recap-of-init/init12.png": "60a45eea71b2be12f32c915d4b7fc327de91ccc4490749c81d0aa8d05728cf89", + "static/images/blog/a-recap-of-init/init13.png": "988ce8bb11fd3cc1a29fca01824e5f90e99ac7a1e3c50f439adfc1a68d7c7e7e", + "static/images/blog/a-recap-of-init/init14.png": "af908714adf0a4790a42cb9c7674b3ba46149160ef1c820df0359c7cdcda5c08", + "static/images/blog/a-recap-of-init/init15.png": "6f13f782e437636a8ca90c70a79c2d66337c11250bdf306cfa00ec0fa49f3590", + "static/images/blog/a-recap-of-init/init16.png": "b0b8d762c94f0cdf72add9e90baa25bc83a452975aa70558d2df6746671beed2", + "static/images/blog/a-recap-of-init/init17.png": "693a6ee0c7b846c46ee16472811a50f867ae108ed658386c75827ce1f7751985", + "static/images/blog/a-recap-of-init/init18.png": "d657858c546c3e49e77e0a56fd09e9af4f05a3622a95196574a9503e64a24727", + "static/images/blog/a-recap-of-init/init19.png": "e7e1362a4249a54be52a8f9417f1f7116554a1ddcacc5aee66b365742b933383", + "static/images/blog/a-recap-of-init/init2.png": "8f78ad7adc9e5c4bff50aee77e4cfcafad3216e6924710945f8a25a4ade94077", + "static/images/blog/a-recap-of-init/init20.png": "792c556e0bf74e3d5d19717b33045b4bbdb4fc88422b50d09038341c135c53f6", + "static/images/blog/a-recap-of-init/init21.png": "4de9ebfe6da0046d3c6c82941f8cf300edf10f857e688cf0d880045733e52e04", + "static/images/blog/a-recap-of-init/init3.png": "8dfa8b7a7f135701a4ea09f55185ffa52726251bebb99027ef7ed59301f22121", + "static/images/blog/a-recap-of-init/init4.png": "5608915eba19e986f580f3cd67ba6c4245e1654db04482e0b5c4fad379fc28dc", + "static/images/blog/a-recap-of-init/init5.png": "46c7b87e40c2a9ff2ee377bf27d571b769394488e585ed72077e536fa8f4b518", + "static/images/blog/a-recap-of-init/init6.png": "85302fbc8af72506d73a684039d10dda8d631388277c16bc656ef99c6d6a5d0c", + "static/images/blog/a-recap-of-init/init7.png": "21d2fd0c2d8798f63aa4616f345d8d8d4a9a867afa637fd142077edacdabfea6", + "static/images/blog/a-recap-of-init/init8.png": "91aabc506ae73ff96c779618da027175df52cb9a862deeae3f7845ecf51ae156", + "static/images/blog/a-recap-of-init/init9.png": "8b728ff8a2e11f4581d1d8085e034c05d84af51b6ca4641a06d157458cfb314a", + "static/images/blog/a-recap-of-init/the-recap.png": "70b602c6d257a1ddb0555b291849f595965b241d67609457edf9aade6c654989", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-1.png": "bea79f347ed5fdd63c7d16fc7713c63a7fd0cb30c9b498e005bc2fd92ca96a09", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-2fa.png": "08d07dc09065e7e1ca56a934342923ec2e15a7aaafb12a4b9bfff25c90eb41c8", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-db.png": "c4285105bb782c3ad4428a1ba689075ca3349068706f884e6494f2815f74928d", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-init-shorts.png": "837aa4e680afaddae417fe82b1848d13be732da927d71e878dd9dd41437472f7", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-messaging.png": "41c73ad7ccd604e68313463132df69af094b13b117049a66a96edce5aee64974", + "static/images/blog/a-recap-of-init/thumbnails/thumbnail-ssr.png": "017dfd647ae87c1c3c0a8e48471786c02f64be02836421afbf8ff63de86fe5d7", + "static/images/blog/accessibility-in-pink-design/cover.png": "b8789d83d6b9a75c1c42e85dcad8d6906d1333e416062f19e9a48343b6cc5862", + "static/images/blog/add-a-search-function-to-your-app/connect.png": "5ba269ae7c0e0705ca666327e755d59602e36938d7e935d3d6b8d26b3cd17a96", + "static/images/blog/add-a-search-function-to-your-app/connecttemplate.png": "2b1c603b64056b57dc1b342bfb1ecbdf97a2a4ba5c89c1e533b00af3bc8dcf6f", + "static/images/blog/add-a-search-function-to-your-app/cover.png": "993d12e0242b46c68201e508e99d93736464642a6cd1dedebddf37f25ea171d9", + "static/images/blog/add-a-search-function-to-your-app/functions.png": "1b109daad835f85ce163efa06f44349f01841b2d15f95bf21226dffc9e3460b0", + "static/images/blog/add-a-search-function-to-your-app/templates.png": "27c8f62073bf10b10759d6fde9edefd74528b618df2388f615912f1f19aac3f2", + "static/images/blog/add-a-search-function-to-your-app/variables.png": "80f4f5779fbdddd14cae121a022ce66e3d04bb573f5dd0b1d7f4ee9a0f1e40f3", + "static/images/blog/add-figma-oauth2-appwrite/appwrite-figma-oauth-screen.png": "7d77174bfa2fe88d0e1435a42a1c1c9c6575668c255dd9ccb0e02631eb4fc7d7", + "static/images/blog/add-figma-oauth2-appwrite/cover.png": "02817202a57df22bc6a66035646fee12b3e82e2cc3c492bc9b136197479a2fe1", + "static/images/blog/add-figma-oauth2-appwrite/figma-client-info.png": "dbf9bd52550f58b990a8685c4741b35b0f13af82b411046d310908aedbde9256", + "static/images/blog/add-figma-oauth2-appwrite/figma-create-app.png": "b539e1ef2a6e7604d89494820ac4f43354b425d8675491cae49a94b612e18e5b", + "static/images/blog/adding-url-shortener/connect.png": "5f0f0f5e6c271b7bbad30ae64314aa315c48fe383b45fc67eba2d3800c6365ab", + "static/images/blog/adding-url-shortener/cover.png": "0274174cedc2c2eda55f1839ae8ec8cd7efd79a824ee4d23840ecb1431e8e278", + "static/images/blog/adding-url-shortener/functions.png": "64e977705133028364f8336da706f59d6a3c672a9ea30d16034155c04198a89d", + "static/images/blog/adding-url-shortener/shortener.png": "170a82455ab8bc95ccfcccab0ce3bc7ae194caa79b03ff42a83ea7a921ed1306", + "static/images/blog/adding-url-shortener/variables.png": "9e5135356992986e0c68f84b75da7f71990d882283693d80ef1461ab209b5a84", + "static/images/blog/agencies-vibe-coding-client-projects/cover.png": "98bcaaf0efde370f4903c1f5448a7a0275c6759913825107d3fcede8a17e7fab", + "static/images/blog/agency-backend-standardization/cover.png": "b0f24c2e12e820e8707b1b63dcf11f7181752cd47d4bd142c36bbd29c5018f3a", + "static/images/blog/agent-native-backend-platforms/cover.png": "441fab2ce0c04df6b6569db19d33bd1cd9051614ea1dd7045db87a55e45d19c0", + "static/images/blog/agentic-ai-vs-generative-ai/cover.png": "fcda7c601879683cc380860c3a9403d8d6868cdc3bbf239cd74077f67df830aa", + "static/images/blog/ai-announcement.png": "255c23234eb3bfa441ec1c15939e360afa2127b7172ee8addbdb6c55c14bea02", + "static/images/blog/ai-crystal-ball/cover.png": "c0cb15a8bd1d0637447abf443145a8465f18b57493783187810bf6bd73eda272", + "static/images/blog/ai-crystal-ball/github.png": "238ed65c2ae5148055b51468a9ee440a8f09d26bae31ed49489904517331ee3b", + "static/images/blog/ai-crystal-ball/oauth.png": "b2eb223edbc8d15759ad8504f2af0af1a310bdcd128cad0d834c8dfb628a80c2", + "static/images/blog/ai-crystal-ball/openai.png": "e173bd8e0e5a23be2becd54677869a006d2a549f2736ba8d83f4bb12f337783e", + "static/images/blog/ai-docs.png": "e79a7c650086d5c54d00a6b41acefc8c6f7c8fb4af1760c6c17a7c2c5781671e", + "static/images/blog/ai-function-templates.png": "e6b8ef2c632c1fe92a14ff4b58b8be542f8824b8cae9fb2081d70cc175b5b36e", + "static/images/blog/ai-threads.png": "ee83e6ec3c2778db996c8557587ef8524e56f4d48d38dfb6cf00ae9030a3607e", + "static/images/blog/ai-vibe-coding-insights/cover.png": "05e455d9c7b07c4f8a0b1647435798ad2c6eba2adebcd5cf232bc32bb5de9a95", + "static/images/blog/ai-vibe-coding-insights/tweet.png": "4025c2236fcfc74d6435911a26239a8fef889005908ab83b6ee5f010ad3533cd", + "static/images/blog/announcing-2fa.png": "1df5ba12c2de318f858c36a3804b7170844cb74bdb73e1ea37895d674208b9e0", + "static/images/blog/announcing-appwrite-arena/cover.png": "3934fbf6ee24c468b715b1839bc49c335a47a68f7fc99a763b109b2446f97379", + "static/images/blog/announcing-appwrite-claude-code-plugin/cover.png": "334e890b32c20c3a4c7f0878b5908a71a518d983b15b6ee434f9dabb66ee8ecd", + "static/images/blog/announcing-appwrite-codex-plugin/cover.png": "6328e3c6089bcdbd7b9187b1e77b1b496a2d1e1a092f1375623fb2512e22c359", + "static/images/blog/announcing-appwrite-cursor-plugin/cover.png": "1a2dffe9876e72c571f24e46990b203b450b389afb0f0cf125fbd0e7eca4831c", + "static/images/blog/announcing-appwrite-daily-dot-dev-squad/daily.dev-squad.png": "c69fdc687770e5562097fb30bf3f82ba54d7208faae9805faf3677480ba73857", + "static/images/blog/announcing-appwrite-databases-new-ui/cover.png": "9318e0034f7c069246429429c08cc9f87032c34ad040c1f05f75449c4f28ffe9", + "static/images/blog/announcing-appwrite-is-gdpr-compliant/dpa-card.png": "d458c425437bac34930587234f8e239cd39217c9fcd04f135f4cfbecd90627d1", + "static/images/blog/announcing-appwrite-is-gdpr-compliant/GDPR-Announcement.png": "794f946530f8bb04e844d92ee2ccb53a81e0ba61858ab015123304df69290a4b", + "static/images/blog/announcing-appwrite-mcp-server-2/cover.png": "3596fcf4df169dd7297123d60826b8504a202d28bb874cd46ca86a87f42dedae", + "static/images/blog/announcing-appwrite-pro/credits.png": "285905e1fd8b8282cb45a4f2259debd851812c23665145d865e141f5133c0be0", + "static/images/blog/announcing-appwrite-pro/header.png": "ab709ff45870607ec4472bd4dc9e4a028e320bbfb89009ec04c98ec69248a15a", + "static/images/blog/announcing-appwrite-pro/pro.png": "01427f30610de4d6d19cd9160154d8849ffa75da04d063d12bf3e9bba481b4e7", + "static/images/blog/announcing-appwrite-react-library/cover.png": "db2536faba9c82ad441662e10bf69375c8f6d1716e151324e37b0a5bbca9ee48", + "static/images/blog/announcing-appwrite-rust-sdk/cover.png": "b5b69e19f4fc1ac5eb985016c1b058bb9ed308680197f315f3b9b861f3377310", + "static/images/blog/announcing-atomic-numeric-operations/cover.png": "9fbe339856b8040eb49fb01ca4353b5600609962ab8044dcfc34ffbe0e8a9738", + "static/images/blog/announcing-auto-increment-support/cover.png": "83a7b1dd0e31ae86e49fa873cde0b6c0319a552b27dc447b4a214efd7f3fd534", + "static/images/blog/announcing-bigint-columns/console-create-bigint.png": "21e815c2f7d297ef6f544c71f17680367391e35e36e809b3c71029397c6706d7", + "static/images/blog/announcing-bigint-columns/cover.png": "de0ec57085646427a552f35f0b1ab9a77f9e38b9b20801329ac19bc4bdb069f7", + "static/images/blog/announcing-bulk-api/cover.png": "78a0fdf3b54ce8412bf6be1880eb4a42bcac2cb04420045a60bce888c8999c6f", + "static/images/blog/announcing-bun-and-dart/bun-and-dart.png": "ea94af00a5c035cefb6474a9061441803db0160b7cc194fb5a71fbe05abf0d12", + "static/images/blog/announcing-bun-deno-runtimes/cover.png": "5c739aa57624b990174943108de2433dd9292798d9e488d01351d5f01eba7800", + "static/images/blog/announcing-bun-deno-runtimes/runtime-bun.png": "3ca689b349526e34386ac8dac25eb3ced20952c4493a85800da848a4e81fe319", + "static/images/blog/announcing-cname-flattening/cover.png": "3d79ccb4a7f1bac9e32e0456e31fe09f4475e87368e582591799445a7d4a6f3a", + "static/images/blog/announcing-csv-export/cover.png": "a330a6cc463d94635f905f5b48e6ee8b7c1b3f48b1c7ca0fada2e2b6f62b4ccf", + "static/images/blog/announcing-csv-imports/cover.png": "47b77b504bdb691afcdf7769b70a5edc610ad525364bff8747d813cc674d549c", + "static/images/blog/announcing-csv-imports/csv-import.png": "160d2eaa3aacbfc3dee93ffe909dafd848479079bf47cd4149fd915b2cd9b6e1", + "static/images/blog/announcing-database-ai-suggestions/cover.png": "2965424134174a486c7552ef8beda42ee0aae0d29e74816d6c711876b4b615db", + "static/images/blog/announcing-database-reads-and-writes-pricing/cover.png": "5c9557e393b07822a76cc1c2e20e759742029cd6a0c7623fd4a8085c364c49fc", + "static/images/blog/announcing-database-upsert/cover.png": "40839c8f5c28a5d78c2507f12e165ac8f176c53b81d8eb6b77b46d1c58f381dc", + "static/images/blog/announcing-db-operators/cover.png": "9e0adb9ac1849e40b6a3c30ab4923ac63d1f551be1003ecb9804e4989bb2cf3c", + "static/images/blog/announcing-deployment-retention/cover.png": "e6c59f73d83c1b88aed82a8974df97de83ab653241a5717f20b407809fa46ba9", + "static/images/blog/announcing-email-policies/cover.png": "3b62c98a38e16bbf4446624035e89e4ee2aba0af636c9ff32a0d2d5ab56d4e2c", + "static/images/blog/announcing-encrypted-string-attributes/cover.png": "f3d1d0a022771392019c760c6dcf88fc231a7f96d19e2eb61d89b3605e818463", + "static/images/blog/announcing-git-deployment-triggers/build-triggers.png": "c388a45677ff90b0ff5a651ea6182094a23ae139b4ba068585387dd8b6975779", + "static/images/blog/announcing-git-deployment-triggers/cover.png": "1de5b1715230da3858017c845decdf24f1d30270d851e0412a5b1bbd43fb8009", + "static/images/blog/announcing-image-transformations-pricing/cover.png": "dfdd070a46b5f8c66d7b4781cc3dc61faa10c80307882e206be0ff7d46ca77db", + "static/images/blog/announcing-image-transformations-pricing/usage-component.png": "e24a8b710ea5de5ee2fe7c2c4507f54dccb3530a602027fc7a4265d5fc7b6eca", + "static/images/blog/announcing-init-faster-smoother-better/init-cover.png": "bdb97596d618cfe366d946c49d7791e9bb37062b2033fa7ee6d21329ced5e58a", + "static/images/blog/announcing-init-faster-smoother-better/init-swag.png": "2894ba9370588ff92a0d94ddb410e1700ae368834391603f0bceadf57ac89fab", + "static/images/blog/announcing-init-faster-smoother-better/init-ticket.png": "fe4e16ef27d3fcba378c52882ce3458aab3f1de84cb183d39db577e5264ef905", + "static/images/blog/announcing-inversion-queries/cover.png": "232f806b8b655f469cb5398ba3abce2074e959d2fb49b9782b1889b22f1ee16e", + "static/images/blog/announcing-list-cache-ttl/cover.png": "ca1554dc34d1222b86ccc295252af8e07b2f635b9b10e1227a21fff81138e409", + "static/images/blog/announcing-message-based-realtime-sdk/cover.jpg": "00559db66e7c1333bc9b9acc0784fd4d6fb2fc7c4e1964e3cbb93e49640323a4", + "static/images/blog/announcing-new-push-notifications-features/cover.png": "a0c758cf6c8a95e09a0d2ca562b0775a50d34a4d691d675cda70e44ad21805ac", + "static/images/blog/announcing-opt-in-relationship-loading/cover.png": "e16cc16ea6d968b29af19bcd6274741141584a7efe5e1bb18be19b77c3a380c8", + "static/images/blog/announcing-password-strength/cover.png": "94fc2cb7da6fbe1427ff9e2b421ff52165dd07282dc13ee59a3b2403cdfa1538", + "static/images/blog/announcing-password-strength/password-strength.png": "a7be43cb33eb329eea4d62008d05426d9327cb6fe6bd3de47fa588db5db03458", + "static/images/blog/announcing-phone-OTP-pricing/cover.png": "598d55359ca4cb2b46846a8fd76b1f051be7c5f3199b50ffa92a28e84e5f3d67", + "static/images/blog/announcing-presence-api/cover.png": "9c3600d4014e5eecb59ea2d2e0d84c4ac52bf38357ad465f44631c9421bf5734", + "static/images/blog/announcing-projects-api/cover.png": "ac2de4ff48a10f1d306dd4ab55b9bf7463fc3f271598621aca7c955ba10bdc36", + "static/images/blog/announcing-realtime-channel-helpers/cover.png": "cbcffde3edfb77908566ff6361cb31bb1175d64bb1958a038720c52748dfa904", + "static/images/blog/announcing-realtime-queries/cover.png": "2e11ad5d30399bced1817ce0edb6d266cc57a70955d2102af173d26461c9bf57", + "static/images/blog/announcing-relationship-queries/cover.png": "7e615c0a9dcbb3949d5fb7ed71f36bb44de40ae67c8cd832b96ff5bbd4b0f451", + "static/images/blog/announcing-rust-runtime/cover.png": "a203fe2ef16c40592813ae7efb3c746d4250e68414c9b7d763893dae264f61d7", + "static/images/blog/announcing-screenshots-api/cover.png": "56555006946b9ead5cd4258544b6a9dda44bce6841706749f7539bc31356383e", + "static/images/blog/announcing-self-serve-baa.png": "b66eb0be9b323fb4b28f16218887a463bd1d45f7838c08d6d49e4822a6f95609", + "static/images/blog/announcing-self-serve-baa/enable-baa-modal.png": "b07c61f88fad334847c9c7c918511485fb85d682b2dfde5231f81925bc7475ff", + "static/images/blog/announcing-spatial-columns/cover.png": "b3e73629df86190fb06b715f4fe24aad473631538c1b3e78ae45cc8c5e7cd7d0", + "static/images/blog/announcing-time-helper-queries/cover.png": "0ee1d4d1edc65bf8fc3376b761b08efaffa55dd8ca84860ab3a9c34f7d78c25b", + "static/images/blog/announcing-timestamp-overrides/cover.png": "5bfc2ba16b8ca4a82188c0f67b300ed0a7f38b4abc04b06a10ee52b2832fa65b", + "static/images/blog/announcing-transactions-api/cover.png": "604a7721b7bf0a752460a721ffcaff10598abc5f398e7b16a8a58195c2ebf7ea", + "static/images/blog/announcing-user-impersonation/cover.png": "0d637f5d3a748e033945741a9e926a001b84c51854077ac5de4fedbc8801a40a", + "static/images/blog/announcing-variables-api/cover.png": "e8fb298d6e2ab46b4293eaf7d9414bd83fbbce421d4eea288d17d37f6a4f8fa2", + "static/images/blog/announcing-webhooks-api/cover.png": "a029dca7fc776d3d81ec0502a8fe3fb0d3e170e474a515b4ad9d61c9854ca745", + "static/images/blog/anthropic-just-launched-claude-fable-5-and-claude-mythos-5/cover.png": "45721aba1b005e1b02d2b585c69d3e48227bea22b8c7253aaeda2ce67bb79b1d", + "static/images/blog/anthropic-just-launched-claude-for-small-business/cover.png": "9b89a91dab0f56e4d49777ca4a370c558edca339e573c155d6c1838f04a1dbd6", + "static/images/blog/anthropic-just-launched-claude-opus-48-with-fast-mode-and-dynamic-workflows/cover.png": "0fba6f3f51a4fc24f02ac6c14b1f098277bd8a8d3e555c024b3dca0b29d20167", + "static/images/blog/anthropic-launches-free-claude-access-for-us-k-12-teachers/cover.png": "5af971e028a2acca04c08342ab035a422b5eea67367d0a71c33eeedac50f280c", + "static/images/blog/apply-appwrite-how/cover.png": "d23f45ced245b42c8712c021f5d2068c17aebd94fd049cb90222cb9647a41a4a", + "static/images/blog/appwrite-1-8-0-self-hosted-release/cover.png": "c15a9d88ccd16c2dc8333dc74e715e1f4a6c7818d3b4a05f4d68342eacdc0523", + "static/images/blog/appwrite-1-8-1-self-hosted-release/cover.png": "82f0a396c56b6b299b24133079acc6a317c66b2bf02fd91f4862bd3be0f8f373", + "static/images/blog/appwrite-1-9-5-self-hosted-release/cover.png": "f5958ba97aa507888c54c11ba156bf8a4e0643d129ed900ef1c83915efa31e88", + "static/images/blog/appwrite-1.5-now-available-on-cloud/cloud15.png": "a1df7388572a9f08d0e315e4b6bc8c9464c1418768e7efbec22758fd728eb970", + "static/images/blog/appwrite-auth-methods/cover.png": "361513d8b59de8fde7b294dcc6688aada30c46e11933070c529733e486784690", + "static/images/blog/appwrite-backups-and-restores/cover.png": "369b5d91f3dc515e7fb86588f8871aa5ffd788b40023e8373ac694840479c1ab", + "static/images/blog/appwrite-competitor-comparison/cover.png": "e0b98679795c00fd6d2d304b17273eaa6847bb1fc5706efa6cc3f3040ec6b4bb", + "static/images/blog/appwrite-custom-domains/cover.png": "f1f52235c259731f28241259c66e6e5f3b27940e7e00c9ce67b60e4afb572ec0", + "static/images/blog/appwrite-decoded-bradley/bradley-cover.png": "73577a2104024a2df85be14a397ca81f8f6130ff4206358b14547a9758dbf344", + "static/images/blog/appwrite-decoded-dennis/dennis-career-update.png": "0a99617d99b92c60ef9b3d168dd09dc8e7dae167c6d494d9f2f6a845134e1a67", + "static/images/blog/appwrite-decoded-dennis/dennis-conference.png": "67758d4b193af922d05ee1dd8744a289d2dcdfdf9e2630f19dbf06d62e66fa92", + "static/images/blog/appwrite-decoded-dennis/dennis-cover.png": "1aefbdea56590abf8f92e704701c377050e2a563afa091d510c0debaf74cac1d", + "static/images/blog/appwrite-decoded-dennis/dennis-github-universe.png": "58a764728bd71d6e90bd7dfe309d7bee5b0612893caebb846341bfbab1994a05", + "static/images/blog/appwrite-decoded-dennis/dennis-nextjs.png": "3732223a050f92649032de85b11f3d3977218f78d0dcfeede7e0eb28fd1220c3", + "static/images/blog/appwrite-decoded-dennis/dennis-post-devrel.png": "d71da9ffa335039e562499c1000452c79d238507d25efec55579d3e1b2daec3a", + "static/images/blog/appwrite-decoded-dennis/dennis-post-github.png": "62829cbf6620315aa2f4891537e093e4ecccb5e4c43a10083968bd465e618154", + "static/images/blog/appwrite-decoded-dennis/dennis-post-team.png": "e6b1af93423c70d8f1638c966c9f56ecc09217727007d69fce917be52fd80192", + "static/images/blog/appwrite-decoded-dennis/dennis-remote.png": "2a5de13c46c3b8df67d185613755b5a90a28acbc802e5093fdfd9f3bf75d6271", + "static/images/blog/appwrite-decoded-dennis/dennis-setup.png": "683ff78c30d532149f073bf4d63329c9d28f18fd68d32d1c3590f02f40ee76dd", + "static/images/blog/appwrite-decoded-dennis/dennis-team.png": "2893039d22a0d52395809a7dfa55486203361a375d78fdc5fc9722fffa8d2a1e", + "static/images/blog/appwrite-decoded-dennis/dennis-youtube.png": "81061f223eb44e511f027922d151d88efd79bacb15c84ee5a043059a3f43665b", + "static/images/blog/appwrite-decoded-dylan/appwrite-decoded-dylan-blog-cover.png": "285496008c68c0b8e46159ea94359d6a1a7aa211fbe223fef05ad8053d69d569", + "static/images/blog/appwrite-decoded-dylan/appwrite-decoded-dylan-camp3.png": "b288475553981758e0472397f378f73469558930e85e6e5a81eb6fe06ba0e4af", + "static/images/blog/appwrite-decoded-khushboo/khushboo-campus-expert.png": "3b54cddcf731709d09d7f23fd2860e6f86bc584e4057207a1f657810380a5e93", + "static/images/blog/appwrite-decoded-khushboo/khushboo-career-update.png": "4ac65853e056c1c9148ef593430aef17c5304078ebfc08bc60fa5a9ea73b1236", + "static/images/blog/appwrite-decoded-khushboo/khushboo-conference-appwrite.png": "2d414875a3e7d75bd63bcb74387f2d4b43dca1334f36eb0a92c9aca406a5b4cb", + "static/images/blog/appwrite-decoded-khushboo/khushboo-conference.png": "b7906f7a909fd249bf249adb3ac75c7e75cc861d86190b5f07aa63c69b85959b", + "static/images/blog/appwrite-decoded-khushboo/khushboo-cover.png": "af52011287a2113cef0fc23035e57dbfaf2921ca55157124035ae5fba416506b", + "static/images/blog/appwrite-decoded-khushboo/khushboo-git.png": "f1b210850be334121e5f6430e82297f8fb0d4157d6e427ca50b2acefba6ed205", + "static/images/blog/appwrite-decoded-khushboo/khushboo-hackathon.png": "8d0ee17bff1d19314a43a92392149839292870658db4ddd89d43d05fa20cb839", + "static/images/blog/appwrite-decoded-khushboo/khushboo-post-network.png": "db39f3da027fb77fc4ee2abe53003728f781ae3a746c07f9ce4c4d94dbf31bc2", + "static/images/blog/appwrite-decoded-khushboo/khushboo-remote-setting.png": "41845bb8f6db14149f392194c26a0033a9da9a4aebdf9fb4971a82957f42a481", + "static/images/blog/appwrite-decoded-khushboo/khushboo-team-engineering.png": "9df687c8c684808285b0ac011e1ff95d379996f2b066e91502f11fffb2a30db6", + "static/images/blog/appwrite-decoded-khushboo/khushboo-team-two.png": "ff3fb065a92750d3e70730da8e1650264ff6a71f1c082e68b98bee13082f3934", + "static/images/blog/appwrite-decoded-khushboo/khushboo-team.png": "5a0f3aed315760da6411f89f6d17ca5d84739fee661d472b91510930ff0936cf", + "static/images/blog/appwrite-decoded-khushboo/khushboo-tech-interviews.png": "c54715b658aa52f4c7139e7a1398b9a0e0cb55bcc3aa3dd9101f6164e0bd3379", + "static/images/blog/appwrite-decoded-khushboo/khushboo-with-eldad.png": "b358b6a53d2c5de662b7ddf66aeeb6886478d98c5585a5e2f7068422986cba60", + "static/images/blog/appwrite-decoded/cover-sara.png": "03ef95d81d475dde4caae31c0b442271c8ae904f8655013a2dfe2f8878b97e44", + "static/images/blog/appwrite-for-hackathons-build-fast-ship-faster/cover.png": "2bc48224d8baaad8cfd4eb5667754984e02bbe4cf941a3a52e110672672f417f", + "static/images/blog/appwrite-for-startups-ship-faster-without-backend-headaches/cover.png": "02e52496f4ed5a1526d16b7fd98e0b3b5ebc2ed8bcdca9cda84fe68609abb5d6", + "static/images/blog/appwrite-functions-guide/cover.png": "0f5ee2b51cc0082d1049be19ae8ea6e77f6082c6293a7df6406d53966043889c", + "static/images/blog/appwrite-generate/cover.png": "01770d4d6124b317a5103ced1d69b791ef0ce1f1e3a47e4b5072a5fd33c4953d", + "static/images/blog/appwrite-homepage-redesign/cover-image.png": "bc09d91c421f5967c8986eeaae6f7f001380bee686cd3371fd63a8392484647e", + "static/images/blog/appwrite-homepage-redesign/iterations-top-part.png": "713613e719366db8d271ab58815ce5f6db476c0b6a764ce53b4884ddd483f66c", + "static/images/blog/appwrite-homepage-redesign/new-homepage.png": "e58cdf775e1f23ab71e205e0a9d1f6a8573d6e55d673b1a6190be6a79e4e43f0", + "static/images/blog/appwrite-homepage-redesign/old-homepage.png": "78e71a9a71f59c9f872afbfca91eca73dcc932e25cd83ef22505d314d636a26c", + "static/images/blog/appwrite-homepage-redesign/summary-vs-deepdive1.png": "fbfed43d56afacb1eb3bbaffa26c002e4bd27a072d25783ae823de123b7d71f2", + "static/images/blog/appwrite-homepage-redesign/summary-vs-deepdive2.png": "9f18d02a03cfe1f5646e6b585bbeafde584d89cd8a55bef72f1137df73c47b73", + "static/images/blog/appwrite-indexes/cover.png": "176c9662476a854a6d5aa655b562ec761c8c14d31d6ed7ccbbeca1465301448e", + "static/images/blog/appwrite-magic-link/cover.png": "d69b6ee225594af2fd84ded6bf43275f8c9105d2610ab851e0cd0b1270989841", + "static/images/blog/appwrite-messaging-push-email/cover.png": "f2f338968087d91ec10d248d37d41ba36c91dce31eaa9bc6c69822986d82cf05", + "static/images/blog/appwrite-mongodb-partnership-self-hosted/cover.png": "46f60983dff4ce8ade2ac8be6823bfa296bd176381334516eb94506fa7b9bf80", + "static/images/blog/appwrite-oauth/cover.png": "43963cbfb499a3db937af52d822662cde32fb2a67bab2f7b24b16f7d24342c90", + "static/images/blog/appwrite-permissions/cover.png": "c63059c6f879d07312905807371fea29b23459cf757539956de4dc3bdcdc6d89", + "static/images/blog/appwrite-pricing-update/add-ons.png": "7f7cf75b41114b5f14bda99087e6d9a6d3b39667fb4fc4479389ae3b1a666fb7", + "static/images/blog/appwrite-pricing-update/bandwidth-project.png": "a34a4914fc6eff580267159cabc3110869c89c64bfd9a9ecb93fb3a6335060fd", + "static/images/blog/appwrite-pricing-update/combined.png": "e0bdc6025ca29acc57423acfa028a3324a3478937226a5e06cf2ef501a320e4a", + "static/images/blog/appwrite-pricing-update/cover-pricing.png": "6ebfc20da215e51653885c0bb186751dda9e56cd77722952203afabe97a48d3b", + "static/images/blog/appwrite-pricing-update/large-project.png": "05ef34992cd56650ee121ca00a2ad666b6b65971058c53043afb0ebbe5dccfbd", + "static/images/blog/appwrite-pricing-update/one-subscription.png": "70f5e8590a9fa96afb90ec24a20bd94fed8acecd07c2c342e08e0215a7c15773", + "static/images/blog/appwrite-pricing-update/project.png": "862597aa4be7cb9f4dedebc924432882708ff227ae7c2f73d74c1ef60f60049d", + "static/images/blog/appwrite-query-api/cover.png": "487c4f1c2d7a4e6c06a66afd5f87e63b5bfaaff34cc091e8ca4d6cc03d0bdbb3", + "static/images/blog/appwrite-realtime-with-flutter/1.png": "15165041f76b8d59f2f4313519a23d9e1a3820d8e1760b6394971babaa8b9709", + "static/images/blog/appwrite-realtime-with-flutter/2.png": "44740ca35567eb456c922c1af4a4a44a7e22ff3cd5c53e38e83e32518326561a", + "static/images/blog/appwrite-realtime-with-flutter/3.png": "c4304f0fa8c92e8a6b473e684139034df94ab2dc7732d1c9dccf9240a712f4f1", + "static/images/blog/appwrite-realtime-with-flutter/4.png": "ea7d6dd933e62fdbd3b1913ce50de91ef3ddc4173915425d5d4db56cb77aaa70", + "static/images/blog/appwrite-realtime-with-flutter/5.png": "49fe7599941b7f5702c310047d96ac6f664b498001cdd66a5ac335be96f580c0", + "static/images/blog/appwrite-realtime-with-flutter/cover.png": "99376d2cf9983874f7e9238dee186f5098c9b7a23d6f8ea3550d518580c8bb6e", + "static/images/blog/appwrite-realtime/cover.png": "db1c1110935b9ad2a5675e80242914ec38e919004011b0e1060c4d8bc93db5d5", + "static/images/blog/appwrite-server-sdk-vs-client-sdk/cover.png": "3b674e35218dc6f203824b8ee53eb367e79c33755f64a5456f290768ad5db96f", + "static/images/blog/appwrite-storage-file-manager/cover.png": "11698e50fb864b4ff99d850290556143b281a988c7fabd23c26b98f653b9b305", + "static/images/blog/appwrite-teams-roles/cover.png": "34f333eb8ec3ef92514f67d365850a2054e9c9990671f6647ea575533e2954d1", + "static/images/blog/appwrite-vs-auth0-b2c/appwrite-vs-auth0-chart.png": "bba9245370213f15d1d2066260b22a07fccc054b2847596ad66f57bd968e2d63", + "static/images/blog/appwrite-vs-auth0-b2c/cover.png": "97e405da84a457a567b552dea23f10e2e4cc5894e90c36d386efb414623a1d9e", + "static/images/blog/appwrite-vs-cloudflare-stateful-ai-agents/cover.png": "a24196757a99639dbc0c825b5be683107effbff5e85947fc15c5201c27258401", + "static/images/blog/appwrite-vs-cloudinary/cover.png": "ce7d9211396f334c7d165458fe07ffa5fa124dd3e1441e8c993fd60126adb04c", + "static/images/blog/appwrite-vs-convex-ai-agents/cover.png": "78cf998ed3d4e52c68cae3422bee3ded600669e4c5afac0dace39ba647a78824", + "static/images/blog/appwrite-vs-firebase-ai-development/cover.png": "cd47646f739766371a25b179f85558218efc0d2f3d26d9ce32efc92f72226221", + "static/images/blog/appwrite-vs-neon-ai-backends/cover.png": "3398e51226eff72303b6b13199bda8a57ff81258d80163b05b1821e53d0959fd", + "static/images/blog/appwrite-vs-replit-agent-backend/cover.png": "acfecd8d097efb3f59abd867ebfaf5ef9dd757d1e0bda279db070f2116276431", + "static/images/blog/appwrite-vs-supabase-ai-apps/cover.png": "3f38661cc9041201ca3a5f6dfd58d912584f0c5887003d4b73795b232f7d4e04", + "static/images/blog/appwrite-vs-vercel-vs-netlify/cover.png": "dbe40ef9cd2308555771129b95a6bfd7c7d6aa31fb88dab3a9071ad8a415284b", + "static/images/blog/appwrite-webhooks/cover.png": "3dfed85fb2fbe79c894b9f3808ba95a9533d9c3307879582e1e84d842e3d620f", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/1200x628-2.jpg": "18b6765fbe3676c49abf70a62571b368e54b8a1a492dc7117c72e36b708ca3e7", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/announcing_appwrite_mcp_server.png": "1460f7953971cd5f4da04118d16dfb90187e50b5ceef65b020562ef9a1172e00", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/app.jpg": "9dcbecfdf0a02f17e1ccc8126d220652c1820b1c451e13436b62b37f54a524f3", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Claude_plugin_cover-2.jpg": "ff663e670691d9d68e4d59e8194a2661ff7d8a37acd0d07ebb948314e5752708", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/cover.png": "0afd1bbe27193389c7951b8ec4be470b79169bf9ad2c5f97b3dbe1e1eca82169", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/hhhhh.png": "86eabc07d32ba81802ad46cd4a4727511f3f47989796aa085be686cf2b4874a0", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Image.png": "207e8acd544ebdd118f9aafb9d049dfa7fbb87868947d3df8b0fe86288848df0", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/LinkedIn.png": "1d765e0401ae5ba117d2c735cd77576b4e018cec2758587077f22da57917cf38", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/realtime_subscriptions_final.png": "26f3c24f5184967256bdf6f85d0c56b50eb106b6d1aa106588dd4941a24d4857", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/ttl_caching0.75x.png": "45102679260700d191c2c1827d248e6a6eb82840c9a9eddf4e359bdf03f7c6e8", + "static/images/blog/april-product-update-mongodb-support-appwrite-190-realtime-upgrades-and-ai-tooling/Twitter_LinkedIn_Facebook.png": "1ff4ea62e7e51e03f86fa7aeb84787cf56046fd3d68f3745095794a6809e12bb", + "static/images/blog/arena-june-2026-update/arena-leaderboard-without-skills.png": "f164ccde7cad0a8316104fea77d841b3b08d453b31489e00b383c1275b25e885", + "static/images/blog/arena-june-2026-update/arena-opus-4-8-detail.png": "4008cb53a904cdf919f0fe7bf8820f6c9b6f46892c6fdda3ea7157633eb89b85", + "static/images/blog/arena-june-2026-update/cover.png": "e6f5d1d1f405a7bf42499cec7a8044ef80ac7d5dc83ae81a3cdfaa5bd5913023", + "static/images/blog/avif-in-storage/cover.png": "23c26ec1a8f23f5bf6c55b19407d0738aa41cdc502dc3eef14a78f430a14447b", + "static/images/blog/avoid-backend-overengineering/cover.png": "c586c235dd6d3f992980748ec7b15cd3411edefe2e71dffc080840540f6d3ba3", + "static/images/blog/baa-explained/cover.png": "a7b144c7549498760cc2bfddda186b8182766ef72e308abc637dc4cbb5a2c853", + "static/images/blog/baas-backend-as-a-service-explained-when-should-you-use-it/cover.png": "e7ed4c0d0879bf5846206c466a4e8f00b201c8ea1961b368033ddd7095674941", + "static/images/blog/baas-backend-as-a-service/cover.png": "8679b01846d480f96a39a07dee1aa999428cf100388ee80fb6c026b042a90761", + "static/images/blog/baas-vs-custom-backend/auth.png": "c37a6f98da53fcaddba5c71fff4bbfea6d3dfd504e7c682fe0b812665c616084", + "static/images/blog/baas-vs-custom-backend/cover.png": "283bab3078862463b82b6d55654b50fa5034a3b0dc981eb7e6240b22c44ecf33", + "static/images/blog/baas-vs-custom-backend/database.png": "a8f57687f49ef08f87d52a0ea11fe1bde2ae0e86988d5fb7f67d0efa958d6746", + "static/images/blog/baas-vs-custom-backend/messaging.png": "54a574317afa9ed22728aa3e10aa1ca1157a29bdfea61909a5260ca1f79d4f4f", + "static/images/blog/baas-vs-custom-backend/storage.png": "6ed39797b1d5f67299c55b1be3944912860811564c38e849adb31a0d4a23ec46", + "static/images/blog/baas.png": "e5353595cc9c6c8037a7b9b3a8ff25552cb39f61a120ecb867c63de46f14aa74", + "static/images/blog/backend-checklist-vibe-coded-apps/cover.png": "266738e6cc39ad295a0e0a2bc454c5c99770fdf80015b5bdc76cc0d61d8cd170", + "static/images/blog/backend-for-claude-code-apps/cover.png": "d69e29230482959e7019ebce906ea32a3c69e7f9c0a7aa714914bc8d84b0ac4f", + "static/images/blog/backend-mistakes-that-quietly-cost-small-teams-weeks/cover.png": "c804b93ac334b4224c612fc5c177469f30a6a6e548db1c93e90fb95b35544bda", + "static/images/blog/backend-platform-longevity-what-to-look-for-beyond-features/cover.png": "234650617a90c69a898eb456ae2d807f3a1d0f627376ac6481074b24c1712196", + "static/images/blog/backend-platform-security-responsibilities/cover.png": "030e20752d00612ff677b28c2fd30665ed34fcd77ee80a6efa89d9d789cb9d94", + "static/images/blog/backend-that-scales/cover.png": "1d6ee39bc41387024bb9beded27137e7f135293c654add113ca9ee3fd4b8c9cb", + "static/images/blog/backup-encryption/cover.png": "4a3b2f9f2acc75681669c1dcefa407455e6f7ee29f2dc04bd4e9cae5f9d646c9", + "static/images/blog/badge.png": "2d1852c6f826d55c40cb848cc3813f25a4d3d982a6f56d2738c9e5b3d0ac9694", + "static/images/blog/Behind_the_pull_request_Stories_from_contributors.png": "16d81aff97deaded8b03c33f4498d3bf6f8ec392fee8edff6dc273d0cafbd132", + "static/images/blog/best-ai-productivity-stack-for-developers-in-2026/cover.png": "d55d9f7e24e0283266e2ea605b8600bec85f42c9c43cd54be158c5865f31e53c", + "static/images/blog/best-backend-for-lovable-apps/cover.png": "579bcfe22908eee951880652a4075c0a26d34b661ab27e4f2c3708bdf717ceaf", + "static/images/blog/best-backend-for-vibe-coding-apps/cover.png": "ee1433142c86983c47bde8a99329c0a774ebe5fc8a530b34e1c3944053334a90", + "static/images/blog/best-free-hosting-platforms-you-probably-havent-tried-in-2026/cover.png": "2f9d3db69fdc1062457abcacb87a962cbf472a2e60acd59e17b84b96aaf90f80", + "static/images/blog/best-free-static-website-hosting/cover.png": "022f31c5c5897d77ccfbfc2149ee81ed6f8a7bbaca91b5c3c09cd2b2e9432450", + "static/images/blog/best-frontend-frameworks-for-vibe-coding/cover.png": "508261b8b8c5e3b27396c4e14e7a093f67c98060106068b8464b1f3f620b6397", + "static/images/blog/best-image-formats-for-websites-in-2026-a-complete-guide/cover.png": "e7190d4b8ebb3929cd3e92c365c3e2b4e95321b6ffce8f27d0082fe61d167eb6", + "static/images/blog/best-ios-android-app-development-platform/cover.png": "68aa7d27a6c8265fc254663fb470f4ae1a436a34b85a0c06faa0776fedcdb2b5", + "static/images/blog/best-pagination-technique/cover.png": "6c1cdf54285c0c181eb08f888d924e64919113d7d2fa85b24c8b5a44bd47e52a", + "static/images/blog/best-pagination-technique/graph.png": "f62bfa341f17178991d50d40e62ff0c928cf2e62da13bd14648fa6d00a07d3b9", + "static/images/blog/best-pagination-technique/graph2.png": "f255336a0b2352ab3665735cab0b0e7f8e0a4351c3fe020e793d3aa55a371394", + "static/images/blog/best-postman-alternative-options/cover.png": "c55b7135fda0f895563b0c6b751b879e0639bd42ad8aab8540f7b6de5735ecf9", + "static/images/blog/best-push-notification-strategies/cover.png": "18d7e0f8374ec092f1102180326600246bcd9c08ee0495f3d3adbe24f982e0f1", + "static/images/blog/best-vibe-coding-tips/cover.png": "31a4e02feaf78b71b1c76f2be833dc80fe719bd6541721954ac0cf50b31b8b7d", + "static/images/blog/best-vibe-coding-tools-for-beginners-in-2026/cover.png": "d80b4be2c2029b467b7483ff01e24060e7d8c39778bc00ca9bf65d20d6a20e5f", + "static/images/blog/Blog-cover-oss-journey.png": "0599716142966c9efc71769c4e3dfc4b3e8c0c7aa53eeff94a11dcd30e3bc245", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/cover.png": "13fe5d58b6acf5fa8205ef72867f7cffe9411faa70d45418547098ace327f59c", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image1-post.png": "13ee7fc9962455d1d1a9494ffd591291ccbd00fc4de26968365c648ce323c233", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image2-billing-tab.png": "db3b90b709f9fbd20ff9db59fbe821b143ee2a0403809a0d74601194967e8150", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image3-usage.png": "044df46b6a3474f669dbcbb62f73013b0a386acbf4c1bd05fae43adab25e0378", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image4-budget-cap.png": "dd554470a4f5043bb39433a97bcf33d4c6f40a9483247f10ff2ca853f8b217e4", + "static/images/blog/budget-caps-stop-unexpected-cloud-bills/Image5-billing-alerts.png": "c6fcae410d2151517e6c554886c28c8c85ccc2a3119174c8b798ef65b5ae385e", + "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/api-creation-page.png": "a239ddbec8f14fc9ec8fb3dd4487f3b298d412ab13b4bcd12d052eb0cd43343f", + "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/api-key-generated.png": "caf216a983b539eae37a6aab6ddcb2b07e0206808f875858d977688a243a30a7", + "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/appwrite-function-details.png": "650b6f82df5bb6c3cb172e73c4d2457878db3c0fb61bfee68fca07882b9537bb", + "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/cover.png": "4b01192265ce2c7f160655b3453967e707c434576f5b80cbf771389e2da44152", + "static/images/blog/build-a-chat-app-with-appwrite-and-gemini/google-ai-studio-dashboard.png": "92cd6273f5561e57926566c558b066dccc6fb2e65aff67bd718567104f1c818e", + "static/images/blog/build-a-currency-converter-with-deno2/cover.png": "388a10b55407bcdb9df395bc0d4f20a0a760c59d3d7bd3b89bbcd2ea3abd83a9", + "static/images/blog/build-a-currency-converter-with-deno2/deno-create-function.png": "7aa64a32c4561b745da0cea4bd3ad8b844c8e7023a11d72200dd68ce343e1aa8", + "static/images/blog/build-a-currency-converter-with-deno2/function-overview-page.png": "4c2546c93698fe0077445fa8dcc3f25d0c92306b53a5a14638e14ef6e66ef2ad", + "static/images/blog/build-delivery-store-locator-spatial-columns/add-store.png": "deb3e9fd3c914fe0513bdda21d22cdf31f206fe6bed285ac7b2655fffb6ab462", + "static/images/blog/build-delivery-store-locator-spatial-columns/cover.png": "86948c48d009185c30cf2a675c8fece7fc6c3b22dfc646a27578b3c33e9393d6", + "static/images/blog/build-delivery-store-locator-spatial-columns/finding-nearby-store.png": "1442700d6b7898860201e551a4ffd1dc44e0b0a14620a8565aad8f244c6c8210", + "static/images/blog/build-delivery-store-locator-spatial-columns/overview.png": "bfabdf4d66cbc2c4ee1649f503670f937a94d3e98741248604bf581f578b7786", + "static/images/blog/build-delivery-store-locator-spatial-columns/required-columns.png": "6e1c67910870fc24218d2cda88530632677a9f30e7f2c96ee48280679c299162", + "static/images/blog/build-delivery-store-locator-spatial-columns/two-stores.png": "71e48cf2a1f5a76960a3af85ffeb612206f32b6b1c5fcff3538c1e31ec0dadf6", + "static/images/blog/build-from-scratch-productivity/cover.png": "4c4ecd8ada862180acca285f8dad81fb33f079917ddceebbe36f77d35a0342eb", + "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cover.png": "8e1f4d60895bab2fb08bbd27c3bc478060d524743a1aa20246000fc5a7505b99", + "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cursor-mcp-settings.PNG": "f3aa10f8c2dfd84d824ece177c3c6d9c83469591f6e30d2f8379dce1a208b936", + "static/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/tanstacknotesapp.PNG": "9a3047c5e849c70d96a7df269e2453f0bd32321aafe26f1add43044d65431e54", + "static/images/blog/build-fullstack-svelte-appwrite/cover.png": "8546e5be90d6c7492366135c26594c57a9b0164b5cb410a3b6c28b3a5c58ff7a", + "static/images/blog/build-fullstack-svelte-appwrite/expense-app-final-look.png": "d375e8e6093e58a4d3e687f877c4536e5b753d0b16f5542524501366a65e2564", + "static/images/blog/build-fullstack-svelte-appwrite/permissions-document-security.png": "2921c151824fe91450f0bf2ac821b90a0ee7b533b6e6dc37d032cea68bcf5fef", + "static/images/blog/build-internal-tools-quickly/cover.png": "e04d776ed2b9e74c485ecef8f77920d9ae92cd4bc6875641b6ccc24e96712130", + "static/images/blog/build-personal-crm-sveltekit/cover.png": "7249afe9a63373551b51fdcd241fc448a8de30ddf86eb0ca48fc614e1877e074", + "static/images/blog/build-personal-crm-sveltekit/personal-crm-demo.png": "5cb8dd79c440cec12d28a6637a2e6ac1a8ac8ede790facbdab308fee10c01f9f", + "static/images/blog/build-saas-waitlist/cover.png": "9dcc46821ac78f7f756022ed953c6ab0c45fa0f02a7a685edd095afbc808c673", + "static/images/blog/build-saas-waitlist/project-overview.png": "041c3be8f8876509ea9b61819828b30652c83b324c8e40c693826adedf09aa11", + "static/images/blog/build-saas-waitlist/table-columns.png": "1f71eb0aef5a85618ca76739662da5c6b6279308859e0121907e39abe926e6ed", + "static/images/blog/build-saas-waitlist/table-permissions.png": "aa815a929fb11b5706da79b55ed49a392113417f67dc25a1e8013ea650242464", + "static/images/blog/build-saas-waitlist/table-rows.png": "3976d150154dd9a032bc418c5f9f08056f29b88562c2031e81772a5e5e132005", + "static/images/blog/build-saas-waitlist/waitlist-initial.png": "7d0555b2271360b3c2ca3235318dcf064940880b34162ac1135596af3220abb4", + "static/images/blog/build-saas-waitlist/waitlist-success.png": "022f75bb96281be2666c0597f14e43890a557b79ce110788287dada2d4cf7763", + "static/images/blog/building-a-production-ready-backend-with-appwrite/cover.png": "805c65cff935d555f01ed4887c46dc513d816c16bc056bb2a40c9af50316b8f8", + "static/images/blog/building-apps-with-bun-and-appwrite/bun-cover.png": "b716728404ff3e19902e7cd2302520d06bd2bdb7cd8cb0c2cad03c44734a6b75", + "static/images/blog/building-apps-with-bun-and-appwrite/bun-functions.png": "1748b4bc6ca448cfbb221ae0fe42e7c8f93f3cf17988e532fe1f277dcf6edc14", + "static/images/blog/building-apps-with-bun-and-appwrite/bun-output-two.png": "e71ed8d12f0494e510ec21f0c0969cae2e5afa32ee37a357dacd27d467151fa5", + "static/images/blog/building-apps-with-bun-and-appwrite/bun-output.png": "82ae71fa60f3f9e8afb0bd113377db3a6aee9b72d66c7d13c80ae8f48977b805", + "static/images/blog/building-apps-with-bun-and-appwrite/bun-start.png": "d61407ee01c19afbb58917196095050a314feff9e207438fa8fe1376f2c3b77d", + "static/images/blog/building-custom-auth-flows/cover.png": "37fc5d174a410a5b8ae51469876c737b0cfb7b6e5a4bda0a33e6e4130c7a6838", + "static/images/blog/building-init-giveaway-app/cover.png": "7bca74ffe592e2ddcf7dec3c8955801bc0a1138776b515600d82ddaa8d6e8798", + "static/images/blog/building-init-giveaway-app/discord.png": "7cade9cf9f5ce29a8784cf708cf4e8effd896622ebae27ea55bfe1d8459a8f64", + "static/images/blog/building-init-giveaway-app/signin.png": "bbbac7e132df35d68eb2ddc8f657206e46368422ddcf6ff1fb9cafe06a4b41ab", + "static/images/blog/building-init-giveaway-app/winner.png": "0916bade8aee31c8461a1656ec298b58dc1e586d2c85cd43271d4995f2f6262d", + "static/images/blog/building-snapchat-clone-with-presences-and-realtime/cover.png": "5983eafd4f37966994dca6ad5c198df964172b01623d3ffb84f1460e6eef2e1e", + "static/images/blog/building-with-ai-function-templates/function-templates-overview.png": "e6b8ef2c632c1fe92a14ff4b58b8be542f8824b8cae9fb2081d70cc175b5b36e", + "static/images/blog/building-with-ai-function-templates/function-templates.png": "73546bbb744b9b79ed308e22307ceb55b32f49bd82effa13a944b7d7885bc65d", + "static/images/blog/building-with-go-cover.png": "bd7e8f0fe775d797c7f7ba8bc07009bd2f4faa9a5937fc4fe039bb1c1fc1f40c", + "static/images/blog/bun-function-resume/appwrite.png": "d4a544fdf67bfe89e9bcb72c540c4491a751a06344c4157d04f15cc2c5f5c05f", + "static/images/blog/bun-function-resume/cover.png": "c6c473692e809ec23b554145999a06c31db60186b8bcf1801f74e19ec7673a62", + "static/images/blog/bun-function-resume/deployment.png": "03e1062edacad630ad93f0cb3376e382f69ee0169a4d445b338fe824232ea499", + "static/images/blog/bytedance-lynx-vs-react-native/cover.png": "a351660ac6f07ce0b6337dd1323cc79cfb4ca94c68fcfa95ccda01162260fb53", + "static/images/blog/camp-5-barcelona/1.png": "3b3b70c21a157e8f3e0cdcdb77b52cecd4ceffccd5b9bdadd3ec12bc035d3786", + "static/images/blog/camp-5-barcelona/2.png": "3537d587fdcd7ee3bcb970a04762d4c2a651f9f8713907255b9427889a78e427", + "static/images/blog/camp-5-barcelona/3.png": "66fb840dadb0b3390f3b2b68d4126174a57d2532af06221842448bac0504f8cf", + "static/images/blog/camp-5-barcelona/4.png": "d5bca4d42b2294a469640084e1a3b23e5da8c5e7b2bdee281e20f4c74da0e31c", + "static/images/blog/camp-5-barcelona/5.png": "964b3b9bab96e3525e7c7bd8e8d02eceb33f136001a6dc8116dba17b7b8af361", + "static/images/blog/camp-5-barcelona/6.png": "1596e8eab1aff7159fdb908b2a437509caa2a68fc97a3bbe3915ac50817b59eb", + "static/images/blog/camp-5-barcelona/7.png": "4f1c87b922c2b5cb627066f50f557ee6f64c6632b4d647db49cf02d0dc555fd0", + "static/images/blog/camp-5-barcelona/8.png": "af0875e9995d205531d42a67bb21f569e5cf677d5a00f3cfbb74280d001c36ac", + "static/images/blog/camp-5-barcelona/cover.png": "4e92cec8cca906399c57464576cbda5f549f7879eb6fe1bf84831d160a49a2f9", + "static/images/blog/can-vibe-coding-replace-junior-developers/cover.png": "741dc095303f9ec91572986452fc8ec3ce062acdfe2bdb84906fa7f58045335c", + "static/images/blog/card1.png": "1d21440fde0e1cf722ce4940919e38afbcf92acd96138e7c7009cd72c969bd5e", + "static/images/blog/card2.png": "b6dfff0e1e749f7e00e7e5f7d9652431d0b050f31955df346ed0a8f28257e89b", + "static/images/blog/card3.png": "71058e9e838ae8c10a1a99babe541a5898c6063c3ec73f643990d7e99042432d", + "static/images/blog/case-study-langx/cover.png": "e570ca2ab16141677460b730c452589ad50d9dec375c9e6c799173418eb05b3b", + "static/images/blog/case-study-myshoefitter.png": "d9c85d4eac33469e1de86c9d1a3293f4d6fc46ab92a32c4bee72180fdedd6c70", + "static/images/blog/case-study-open-mind/cover.png": "a21c67df888f3a15241c3f5f27462da0345d70af486dfd67902661c25bacc06d", + "static/images/blog/case-study-undo/cover.png": "190c899f9cca29df742d8b83af1ef169560c6431ff602ba62637c6653dd77f2f", + "static/images/blog/ccpa-gdpr.png": "e2cfbb043feca0a9f797868ec4fd90180bce3afd4fd0a79658c8f0d2383c202b", + "static/images/blog/ccpa.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", + "static/images/blog/cdi-cover.png": "41406404913c4619ec046d4268929ec3fc6b2a73db23fd9ccee37e1a88eb1ebf", + "static/images/blog/celebrating-1.5-contributors.png": "44f53c5a2db03d9cad17a2bc26a4f41074d10f4216bda95f3ab722d183d6b3e2", + "static/images/blog/change-regions-with-migrations/cover.png": "3d0ad2a650a18ee1a5303e3788c37b05dcefdfb931f47269def5f65a1e431f16", + "static/images/blog/change-regions-with-migrations/create-api-key.png": "6cba1af02bda6b0d340a2a9edca1e6219b9b987b19e63fe0c9716b00ce38b651", + "static/images/blog/change-regions-with-migrations/migrations-complete.png": "00c58a3d1e71defac9dd9e3a911bbe857bdc84dcdca6fe204ceb59a66846ff79", + "static/images/blog/change-regions-with-migrations/migrations-screen.png": "3787f0c461e8b9a595011fc6c2c7ef4fdff8fbf5333be5eff99f14816279fe73", + "static/images/blog/change-regions-with-migrations/migrations-tab.png": "eae736d3d71e0f2a34cc43acf2f0992273f08d2e1d3412f965818d3d6cde9f4a", + "static/images/blog/changelog-alert.png": "cc9310673d022150de98d93155b45f060aa6439c1dbfe24a6be022506e18139c", + "static/images/blog/changelog.png": "6e6ec12cbefaaeb1cad2f728b42ff1ae7bd75ed44ea3b3e6c74364001cf4d4c2", + "static/images/blog/chatbot-with-webllm-and-webgpu/cover.png": "6065c257169e4514ca0bb64147547e83faba2823448e5737b9ad1e898ad20eb0", + "static/images/blog/choosing-a-backend-when-you-manage-multiple-client-projects/cover.png": "20234ca83dce3242371dfaa77c53712e1302af849fda5608556e6e6b2cd049f0", + "static/images/blog/choosing-the-right-ai-database/cover.png": "b03deaf2b99a69b72b3e9db2821e465514734f2506439d55a5baaa5b6fef36f6", + "static/images/blog/choosing-the-right-baas-in-2025/cover.png": "cd270c87508c7bd0d1500200af97a80c2c4d33f5a248281819700d4c4af232ac", + "static/images/blog/choosing-the-right-database-for-ai-applications-when-to-use-mongodb/cover.png": "9fa9dcbdbed6746f75a4c6b0b270c4314c36d78f43524aef6e4dec4dce853f12", + "static/images/blog/claude-code-tips-tricks/cover.png": "df329d51541267d46b2b913c376cca27c7ddf12b6a2a36986d418ec41253ddc9", + "static/images/blog/claude-design/cover.png": "7530f6d1c1a999089f2a68038d6a17d9953435afb1535d09b462b485f77ce1df", + "static/images/blog/claude-fable-5-and-mythos-5-access-suspended/cover.avif": "f6c50bbd5f1eaabef50803b5b76792f8f5f7a2fb009ed8670a08cd9ad1f23971", + "static/images/blog/claude-fable-5-returns-with-stronger-jailbreak-safeguards/cover.png": "bfe441fb7c04a21cb431119065ae05f2c1b044d9885cba7ef3651290f2ff3bb3", + "static/images/blog/claude-mythos-preview/cover.png": "aea7b0c45c492939048fbf04a9b001b96c7bf727bcf7e5afc8274f84644dd35d", + "static/images/blog/claude-mythos-release-date-what-we-know-so-far/cover.png": "0197caa87f00bc03063fb2b1872052cf02733298b2991871852762f32fcfa202", + "static/images/blog/claude-sonnet-5-is-anthropics-most-agentic-sonnet-yet/cover.png": "15a3350966c037f6747c4b3626e9770ba4ee8065439702903ee3cde13a4573e2", + "static/images/blog/claude-vs-gpt-vs-gemini-for-developers-who-wins-in-2026/cover.png": "b931411d483646bcc79649dfc518e86fa4768504b13dbd3d03885c9a2bbde531", + "static/images/blog/client-dashboards-internal-tools/cover.png": "d758f2f517487e24037cef5b3e9036ade6c238cd2f216ef6c76ce5467c665d92", + "static/images/blog/client-vs-server-components-react/cover.png": "b7ae8b7614902c8b4dd7826d59cfdb36db9abbe27bde99b3deb69c4bf178f425", + "static/images/blog/cloud-beta.png": "7e44c7c7108d43bfcc77ba0c9910bfb14ba208bf559863d91610b29fc07da87c", + "static/images/blog/cloud-pricing.png": "2018d3cd01b12c289c3f66b780ff8518a13fc44da58efb19420fc67e367dc8cf", + "static/images/blog/cname-flattening-for-appwrite-sites/cover.png": "612a77f799df64b9407ba37f64ca4acf2f4772b5e883de00102b0b606b60e674", + "static/images/blog/common-appwrite-mistakes-and-how-to-avoid-them/cover.png": "c1d0620fa048cfeacdf4b55ebdc176acf3587e9effe7bc5be88599624c343f45", + "static/images/blog/community-pr.png": "112e1637eb62a95da227bb45bfe18a474cdd86b078877e21ae5ee57bfc959e29", + "static/images/blog/community-pr1.png": "22362832160073257e59cec48d4bea2bdd92139a6d1ee409c66a51cb1e2ccc47", + "static/images/blog/comparing-functions/1.png": "0c1add3fc0112aab08dc28188f8f997dcb20338e516db685284e6251145d5cb0", + "static/images/blog/comparing-functions/2.png": "658e15c287920d6aa010abcd5eaa6cd36650f4431d5f3c0989c9150c0bcad9bd", + "static/images/blog/comparing-functions/3.png": "36f8dad043afdb201890fdf3f49f9d8d69ed812b3f612446a776e1c99da7f7c7", + "static/images/blog/comparing-functions/cover.png": "83cee09e08597dcf1d93e04f5ebf4f169d99b3021f07d69218cea19fa52b3aeb", + "static/images/blog/comparing-vibe-coding-tools/antigravity.webp": "a05423ebf9f488d08ad3d20d5d22d3c0b174546d61d4decfdd3e5eb1396b064a", + "static/images/blog/comparing-vibe-coding-tools/bolt.webp": "76b9fd984623d864c158d9508efd8ab2320a36170df21b2ff520717a694033ec", + "static/images/blog/comparing-vibe-coding-tools/claude-code.webp": "603193dc5a1fd98084199216e647a8322842552065a5792453e371415e06771f", + "static/images/blog/comparing-vibe-coding-tools/codex.webp": "ec7fe0f0e6c91d9035a6cf0a48641079f875c47a266e25ca53186d68f92ee46f", + "static/images/blog/comparing-vibe-coding-tools/cover.webp": "143fd3d239b1b0266dcbcd0ff73d16de30f8cccfb5ac8900bcaf243138f3d763", + "static/images/blog/comparing-vibe-coding-tools/cursor.webp": "9e84aad6f33566158e0081c13d90f572fcb5393cf827317b9252542fb731fba0", + "static/images/blog/comparing-vibe-coding-tools/lovable.webp": "024fc114752e0d43b269832a8137d4f28cc745de1e4cf9ad41d7d25ffa6cbc4e", + "static/images/blog/comparing-vibe-coding-tools/opencode.webp": "19163ec98c957074a3b8417bdca2afccb29b5da35873729c728be058abe2bc21", + "static/images/blog/comparing-vibe-coding-tools/vscode-copilot.webp": "2b8af6ac485d06dc316f47ff9815425b63edea515350fcaf4aabb181ac860666", + "static/images/blog/comparing-vibe-coding-tools/windsurf.webp": "e00041c611e996acfdba4f8a9a74e5b5d3d5c82f76208eaa8bb34c7d1efa09f4", + "static/images/blog/compliant-architectures/cover.png": "8e50584cef01d5d9face2314212b6fddca6cd0428a02ba3da76d88dd9b4508da", + "static/images/blog/context-engineering-intro/cover.png": "c4169932b1c9cebb2bd73daa81173f42977bf006fc6a1847a81eac650cdd71b3", + "static/images/blog/contributions-2023.png": "117ff827b22f4746fb38377e997e180ec7eb0ef34ee21c6587e262b780e65c06", + "static/images/blog/contributions.png": "ed105301c5f55733963f958b4737465ee7580e7daa3b4a76f3aeef0c45863a0f", + "static/images/blog/contributors-16/cover.png": "b837ab849d3fc58fb08588322f88b73d6750ec8aa148c92bc92582b0b5e4b7b8", + "static/images/blog/contributors-post-1.4.png": "8ee8db0cb2118771db1d642338c1583d40bcf5e55ff3cb615d05d6ef45ac9b2c", + "static/images/blog/cors-error/cors_cover.png": "7cb80bacb7edebad6497cec23407f9ce2e5e5c76e6f9abc8b4a53bd840ac05f0", + "static/images/blog/cors-error/cors_error.png": "233a13bcbf4d2d6aac23a0ebf92c71c4442b3bea2848d9f927ea6ac38171ccce", + "static/images/blog/cors-error/cors_example.png": "2c033efbf55a6269bd5f70abdf4b72fb355276e96bc08b03f09aaa18604779ac", + "static/images/blog/csr-ssg-ssr.png": "cd07b21c221d97a59a9384aa86644886c27670f6d339d4f1696d331d93bf1e88", + "static/images/blog/cursor-3-parallel-fleets-appwrite/cover.png": "33061608299b5fb82dce8db7215ba78dec2a4ec78153c7cec4c8d8da19d833a9", + "static/images/blog/cursor-3-parallel-fleets-appwrite/cursor-agent-appwrite-workspace.png": "0d728a6011d81e166ccca1ecad4ba5abf3aa0835226146532b840b03a81d33fd", + "static/images/blog/cursor-3-parallel-fleets-appwrite/cursor-slash-skills-modes.png": "d9a7fae8bc996ef7522a9e8930c3a24301f29ecdc4d1d70cc5b62890559dd3a8", + "static/images/blog/custom-backup-policy/cover.png": "2fa12083bced8c44c2c1af68167ffacc8cf4332a46fb193355a8b4d5170b59d6", + "static/images/blog/custom-domains-with-sites/cover.png": "ecd4c9621a67621b3a785ddcb04ef15cc5d3858ce2d9062867fa8dae2b29594d", + "static/images/blog/custom-domains-with-sites/dns-records.png": "8acc1fb22263b50fd226c1ec2fb74957536545a20b6981d65037fe9f52aeaad6", + "static/images/blog/custom-domains-with-sites/domain-verified.png": "63db3b41d9e1b4ab24caf1f037f60b8530e91cb42ebf79a2949e03ed1a7da7bf", + "static/images/blog/custom-domains-with-sites/ns-records-namecheap.png": "e32379e593ce425ca16638474f94cb1ebfd5e488940bdc9abbf8565244206d72", + "static/images/blog/custom-domains-with-sites/organization-overview.png": "992a870d8037ca191f6933066ceb4458aaa697cff92b1375f059cb20f1116e2c", + "static/images/blog/custom-domains-with-sites/retry-dns-checks.png": "c7fa3092906d8808e76ca71798a4cbee8052adf9d745f31459f98cd14b160dc3", + "static/images/blog/customer-story-radar/cover.png": "17f4c901da2f03ba25a7e9b3d3d43978b41ebece2abbdc01d55da0bb6ad26fcd", + "static/images/blog/customer-story-radar/product-hunt.png": "21985a959b483ea0ca574266a387230805fa5ff84ace9bcc9357a0c60deba97a", + "static/images/blog/customer-story-radar/radar.png": "ffa66f12e5e421699f3205dc35ee943c517f562bf3ff32d2d69999f2d9e37b7c", + "static/images/blog/customer-story-socialaize/cover.png": "ee236e591013aab83781aed73f9f0509d5ba56b79e13443245a0ea95152eaa97", + "static/images/blog/customer-story-storealert/cover-menu.webp": "9b02dfa9d7275b6558d0afafea1947bacfcf06a5d4a72730ce69477ccdce2e5b", + "static/images/blog/customer-story-storealert/cover.png": "c0411c90b1f25560f1322f8918e55df28eea0c7d07931bcdbbf342e762923083", + "static/images/blog/day1-cover.png": "af9685568bbf61ddeef7ed8df237e978ef71d4c374157cc6713f3d674c97f25a", + "static/images/blog/db-operators-overview.png": "4c6b3e571a094db50eb8a6a146d1d582549d34188303df804dae58d0e198e7d0", + "static/images/blog/defying-the-laws-of-web-animations/cover.png": "8a5fdf6278b0cf77ab5f52966c1fef3a127687ae8f305c239a0db946d7fd261e", + "static/images/blog/defying-the-laws-of-web-animations/design_vs_frontend.png": "5127f23345f9adf61a2d40b1fcd87ef94e19d53d8f298335910fad90d4c0519c", + "static/images/blog/defying-the-laws-of-web-animations/excali_viewport.png": "1c06dc22ba78be5ed33c89ecb695eb69ad7d9f3ab62de9e0c422fd67b48327dd", + "static/images/blog/deno-2-appwrite-functions/cover.png": "685d3d81404ed700c347bc432f21e99ec2d1f0f6e9edc882f04a47864c7d8d4a", + "static/images/blog/deno-runtime-announcment/cover.png": "86efbfc1a7db90234cb4fa34d36a209ee29bf3ef8e7b1f13c6faa006a41afdbb", + "static/images/blog/deno-vs-bun-javascript-runtime/cover.png": "84bb0ae844699fb226884e4c81c12c59e73dc3329ebc338ce66f4905f553836a", + "static/images/blog/deploy-nextjs-app-to-appwrite-sites/connect-repo.png": "30f80a7b177317952bdfe21e048ccdca410af835c544313c60fac21c56fde063", + "static/images/blog/deploy-nextjs-app-to-appwrite-sites/cover.png": "ecd249acadd427fe945fb0a3fd7c18e3bd1cf135002550e6b08b3a4e466ea153", + "static/images/blog/deploy-nextjs-app-to-appwrite-sites/site-config.png": "3fe1a6f996a054988aacf5ca9c978dfb7dfdad92fe360c6438448719145e5a2a", + "static/images/blog/deploy-nextjs-app-to-appwrite-sites/site-deployed.png": "81392fcfedc93901d63c20b7ae1802dcf85819a5e3d6f8c1fb21a65c6bee75b5", + "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/configuring-site.png": "9026a7232d03adda7fc084b15c7b53692e42f8a656c9cc9167ae4e734616dd7b", + "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/cover.png": "4a35c5e6577c52a2b13413bdbf25e990084570816d511e7b420757296abfd29a", + "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/deployed.png": "c8359daee78412da75fb70b4ce754bc13c798861a89954267befd37f72b41bd2", + "static/images/blog/deploy-tanstack-start-app-to-appwrite-sites/repository-selection.png": "5b9b389682ba39f34b86771fed70c993aedf2d81590e4736714f98ca2ac4684c", + "static/images/blog/deploy-vibe-coding-projects-to-production/cover.png": "618b550db308fe15f9405a505f3751e714763b278f17efc6dcafaa1d0a7c89a9", + "static/images/blog/designing-init/cover.png": "069ffd2c62cada87502fbd35d1b3bdf39e38eb20168b8f2cf24cc58782e2d391", + "static/images/blog/designing-init/day0.png": "bc3321f6883469f86b05343b111469af8fa755517757da0c1a234e4c1d381783", + "static/images/blog/designing-init/day1.png": "d3ee8acf1db4a1a4e9985cc721db53a61c4bf59410751a24ccc453ad55c48d37", + "static/images/blog/designing-init/day2.png": "dd737e28beb36dbeaf7ec9e627e85795759896ceaac984e7788339b3f3969d79", + "static/images/blog/designing-init/day3.png": "33feb579c16a6712c091ed28975750766cd21c27c8ba18d868e043d1fdd1a836", + "static/images/blog/designing-init/day4.png": "3af102a73645a304aee50e907901f3ac3d2e78b25735bce561ef4539c76a4958", + "static/images/blog/designing-init/figjam-1.png": "7c6af487187c245a6f217b168e247248e4a960df4c9d91b1943f23b855410f72", + "static/images/blog/designing-init/figjam-2.png": "d8532267d730c50e40092c6c3ed289949a660f2aab6ea1cbd88f70aa8a224935", + "static/images/blog/designing-init/saras-pass.png": "7f78d3827357c80e3dfd345018dfd1598a6a3d4a478ac8dff31422e5b3ec7992", + "static/images/blog/designing-the-new-appwrite-website/cover.png": "5b4ce8f3ebe1cd8340796159567624b6c413a9c8e4d9f888f163c9e19c2fda50", + "static/images/blog/designing-the-new-appwrite-website/plans.png": "58c4cc17af8c58c0fada71c834828b68f3d7f8e3d97426397a1956bd645999f2", + "static/images/blog/designing-the-new-appwrite-website/wireframe.png": "0d72a156924105f9798d3db5631ae9b416694e1177632539cd751f8034778a32", + "static/images/blog/dev-keys.png": "fd979256158fbfcf5b30cd4375050b81f74ebb010fa147db2b01e5a626a8f3f8", + "static/images/blog/dev-tools-for-agencies/appsmith.png": "ff2b5572d9f825645ca23bddd6b5c981fc5ef9d80c5606013912972aa7792599", + "static/images/blog/dev-tools-for-agencies/appwrite.png": "a3c4e44a4762779938b2f2518276fdb36eea69af5664ab42429b797d55c5e27e", + "static/images/blog/dev-tools-for-agencies/asana.png": "68f3d3991d7147af6c070d0c08cbb7fb4f871f2383e4a347b8d789bcfd62db5c", + "static/images/blog/dev-tools-for-agencies/basecamp.png": "a8094546d210b2519590b393193b638da6d6d97382fe879e2fccdff56c935a2c", + "static/images/blog/dev-tools-for-agencies/beanstalk.png": "83be30d49702c15c443a344e86d68bd9675d038790aa067ab1a06e45ace537e4", + "static/images/blog/dev-tools-for-agencies/bitbucket.png": "a5fd7ce8d5e7b87d27250d29dcaaf33936022c9dd2b1ea9505cbefff5558b371", + "static/images/blog/dev-tools-for-agencies/browserstack.png": "16a158c41b8d439546e13ebf3301126d1631f2fb14c493dc545adac7c98d3af0", + "static/images/blog/dev-tools-for-agencies/clickup.png": "b37f5968070e44ee4d84ada70f73173cb7d0cc7f6f23a8c0d13376ef0f6dab08", + "static/images/blog/dev-tools-for-agencies/codesandbox.png": "5649e36c1195e821a1ff226062ef3f8e86b0d68aa0c18bf63aa7d745674dc551", + "static/images/blog/dev-tools-for-agencies/cody.png": "0f63148b2137eb3ca36a373c31d9c1ceb362a5024efc8ed8f33d14ce13f363c7", + "static/images/blog/dev-tools-for-agencies/copilot.png": "f379eeb52b3525f33dd7ed72578f613b128af90e0371196bd075b3ca3d683a15", + "static/images/blog/dev-tools-for-agencies/cover.png": "2ae16e3809fd3050c78d064577482ba88c61f5793379bbd23de90cae973ed9c7", + "static/images/blog/dev-tools-for-agencies/cursor.png": "926dda4154b080ae811e0463d87bb4b52c3ba67363481e53078837a729704673", + "static/images/blog/dev-tools-for-agencies/docker.png": "cbd95924323a18c4d831c56b662585d9cf43fe2e15d34b992e200de974cf191d", + "static/images/blog/dev-tools-for-agencies/eclipse.png": "e0898078f6a520994ccd032811555113366ab14cf87cb0be80978b1b76bd76c9", + "static/images/blog/dev-tools-for-agencies/github.png": "09c17177bfc678100c672dbab21263010a7fb22a053b77d4a0fc088c378e8c11", + "static/images/blog/dev-tools-for-agencies/gitlab.png": "44ba604037aa7ec3f0bf0e137e856a09808372d13d63bcd2e81b88be826f08b1", + "static/images/blog/dev-tools-for-agencies/helixcore.png": "d68f92613d0b7d3427c04ad143fe8ca654e35a2cf5a6073f633bf51f38d7b78a", + "static/images/blog/dev-tools-for-agencies/intellij.png": "60a5a1b741f38e2a45415a7d1ee27c28b417cc86a871c49af75c595389e4f2fa", + "static/images/blog/dev-tools-for-agencies/jira.png": "ff8611079fd1174ac21d6c0e95282154c2a29aa7119495d95fec0096e7602d8f", + "static/images/blog/dev-tools-for-agencies/monday.png": "d3607ad8ec63f99344c6163a3d07113f5fb84420f12b768ea20818a1d0241939", + "static/images/blog/dev-tools-for-agencies/netbeans.png": "f8bd6f361905eb2f7c3257db9c5842e4c6d4cda09208a4388c29cc1f587d39f6", + "static/images/blog/dev-tools-for-agencies/notepad.png": "bda5f3ffeefd3447baf76a179cdfcfcdc8e76a02fd3812326d09d85336f7724c", + "static/images/blog/dev-tools-for-agencies/postman.png": "a8405e69f06d8e6f38c1bd59ccc68259359c54dafda21370fe99c1ea5282186e", + "static/images/blog/dev-tools-for-agencies/pycharm.png": "d011d11467240d654b95dd3138dda3360e4e62665d3e2b4509a36931ead1188c", + "static/images/blog/dev-tools-for-agencies/replit.png": "eaa173187e3f1d123fc58ea9cb03ae4d455ec5c8a3b23f1d8e35ab23eb6b8dc1", + "static/images/blog/dev-tools-for-agencies/sublime-text.png": "95eb4b794ad5eb636cf7ac4cb74f418bbd8dad6832aa021daf9166351f4ab534", + "static/images/blog/dev-tools-for-agencies/visual-code.png": "05fcf210992a5a123f64cf5045a27e9b743b58acaf7cbb420bbc4e23078f9965", + "static/images/blog/dev-tools-for-agencies/visual-studio.png": "07947803583880c77e2f8dc09ce6591381c52ffb38fe50a4d73a20605abb680b", + "static/images/blog/dev-tools-for-agencies/windsuf.png": "d563f91db0ded50e17547665fc6ce2e33ef9e6849d23f0ca8881b38e227bae6d", + "static/images/blog/dev-tools-for-agencies/zed.png": "44a9336304da55de4854a26ba2e1b6702dcc83ee305e11688ef0edc21638ca88", + "static/images/blog/developer-compliance-thinking/cover.png": "9a216e9cc19ed44554c449be076751b90662c9a4cef517ac6289f87e8598839e", + "static/images/blog/developer-tools-appwrite/cover.png": "3732d963d6974d6081ef599fdd640076b77cd18aad17e78272dd9e622132c297", + "static/images/blog/did-claude-design-kill-lovable/cover.png": "55da44b0a3c30e7aa020d2537b228644009b23469e1736a847a22cb0c51db620", + "static/images/blog/document-vs-relational-databases-vibecoding/cover.png": "0cdc8978aae99cb9869111058016d2da5c53a62b3fce23a04fdb06bc3b967de0", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/codefence.png": "caadcb72963ac6b8c44eafaaee62256f196e98ac538704d5ffe3b8e98a1ef511", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/cover.png": "999da2f24dd158a723ffc6eaad743874dd72457fabdce0fdb3b207607aa1563f", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/overview.png": "6f93d726d965a06990b0692d6ff02747d0cd15d29816bff4d8141bc4d2dd0038", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/quickstart.png": "b262aea8fe3dbe692ddbe4c21cd8b9ba568c147b29d26fa6547ec7ea643c3bfa", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/search.png": "1376a135c6725a486ad3471a62fe17418e79f7c888f4acba16df7f8fc5a92d4d", + "static/images/blog/dont-blame-the-readers-write-the-docs-they-need/tutorials.png": "bba6c4ec0f9db120a9bdac69a0e67b2ffd2f407b064a4cc57968df91b14b9c62", + "static/images/blog/easiest-file-uploads/cover.png": "9a89e694ca357194c1018efbc68fd75d89e1ac6824fec4d0e2a5257cb88e2dbe", + "static/images/blog/education-program.png": "d7d0b3d7e763ed14affeb50191ca15b7aa383eae4126c17917103e5be0d13ba3", + "static/images/blog/email-otp-auth-sveltekit/cover.png": "963be52d9cc5db346adea6a5d8b28dce4d2f3398473f969df3268feaf476fa7c", + "static/images/blog/encrypted-attributes-for-sensitive-fields/cover.png": "845912f31ba440b97c601988e9701169616f26e5cc03b11381fa5c996fb68ef1", + "static/images/blog/encrypted-attributes-for-sensitive-fields/create-attribute-modal.png": "98624e923be40bea0dad3246c7757f1347d290ce1046eeb97668000686b4b5de", + "static/images/blog/encrypted-attributes-for-sensitive-fields/encrypted-attribute-screen.png": "643804770a30a32f95925da6cc6e472162c637224b29e2ad576ce5477bbcbe40", + "static/images/blog/encrypted-attributes-for-sensitive-fields/string-attribute-modal.png": "2e36f1647ffaf95a21fa0dc0b905701a1b6e1e2fed415855b020be78e9df64f1", + "static/images/blog/enhancing-type-safety.png": "596a409a9bc6585a0170306e420924e1c818e7d477ff0e3bfa7a98c6987c63eb", + "static/images/blog/ensuring-security-amidst-xz-concern/cover.png": "0dae9e58ae845f2a38eecdf4564345a277bb89c5b410c5eda40ab77a1fa718dd", + "static/images/blog/enum-announcement.png": "21c2d2c26e93368f071071ab80264c01b4a417f1e0a50849d02e02c755c4b3a6", + "static/images/blog/enums-api-design.png": "53ede4432044b015baad949cc75fab6d3e1e4d4b1248dc8a061f91e7d31ba636", + "static/images/blog/evaluate-backend-tools-no-lock-in/cover.png": "b9aa16469eaa1391e202e2b8437680b0e43153367d748e09f300c70005bdf9cb", + "static/images/blog/everyone-can-do-devrel-but-should-they/bridge.png": "b0e7c6b9db43e8828fa702cde29d961c54e56f35b4f2cc77f4ec8278366cb991", + "static/images/blog/everyone-can-do-devrel-but-should-they/cover.png": "3158e08ba15aee405cbcd51a86aeb1c9bbffe949d7cae0a9d35a408993a05304", + "static/images/blog/everything-new-in-nextjs16/cover.png": "b8642d004e60051957f5495d3c4669f450e96810db8977e1bc9a3e10549835c8", + "static/images/blog/everything-new-with-appwrite-1.5/1.5-recap.png": "1d3c646f6902757152d98861630c1952631a54f222af7f8476f53f4d0d3c59f2", + "static/images/blog/everything-new-with-appwrite-1.5/messaging-console.png": "769b7df74c9107a5ccacfe87722293adbfbd91ab702c79b03838c2368e9971ac", + "static/images/blog/examples-of-vibe-coding/cover.png": "745d0e65c7981fe852b2e1797c3163cd4e4c147227b906cf305019137cb4624f", + "static/images/blog/faster-storage-uploads-parallel-chunks/cover.png": "4565a9b19b4cafad3ed9ca3f2d4c6e4437379c5d10de6bad64dc1fb85590e49b", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Announcing_Appwrite_Skills__Give_your_AI_agents_Appwrite_expertise.png": "f6556f4786b55f53d06ca4c1a74ce0e488fa898099bf6458cab3e525f0a05d54", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Announcing_Realtime_Channel_helpers__Type-safe_subscriptions_made_simple.png": "a937f5b617fcbaa1d8d6af38f061f132a7590b85f93b104ee22119e80d5ed6d2", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/comm_recoggg.png": "207e8acd544ebdd118f9aafb9d049dfa7fbb87868947d3df8b0fe86288848df0", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/cover.png": "2865a738023403b258d20ea711ab714fd85f8a4371d58994376767e67803e785", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_Appwrite_Arena__Which_AI_model_knows_Appwrite_best_.png": "c6c4f0f36879e2c435850c8c53335f019343070f95ae37fa14a27212b90f575f", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_new_string_column_types_for_Appwrite_Databases.png": "5aa681d51622083c5a65407af76385634765a17959e501b862fd083bdb825cec", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Introducing_Realtime_queries.png": "0b632e9ceac3a763f5ba2ed50ab54fffe389fde34fcdfb7ad99599ec7ae83b9e", + "static/images/blog/february-and-march-product-update-realtime-queries-appwrite-skills-and-new-database-features/Relationship_queries.png": "2d9772691f05b1be3ec6cb954d77babc10d5666c9994fe3975d2a078facc87b8", + "static/images/blog/file-tokens.png": "23d2fa4a88db2d9548f43f95df15b5ca60d512481570ed2d1b3d66ce1b1f504f", + "static/images/blog/firebase-vs-open-source-tradeoffs/cover.png": "1be4185b4fa90c5f37e96003a74b8b55c31956d0258c70000fdec0990f2496eb", + "static/images/blog/first-pr.png": "f369419a756ccb2c784dac916d79a1cc33317fa4c43f37c7f41ae62bf0a603dd", + "static/images/blog/first-pr1.png": "256144fd88d0564c239cb73c16882113e4fe2cb23156fcbc4f15f6f70437faaf", + "static/images/blog/fixing-oauth2-issues-in-appwrite-cloud/cover.png": "011ea5d6b346fe8883e1acf8dec66a372781430b2a39b059e58f91fecf09c69b", + "static/images/blog/flutter-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/blog/flutter-starter-sites/congrats.png": "f2b1e6d44683a4fda454a9bac9202997a1ef688c45b74a16a0e0d814eb78e2fb", + "static/images/blog/flutter-starter-sites/cover.png": "918365f78e6186c0edbfde063c0a08e25d0b53f5b6c4b0157c7731b9e240646a", + "static/images/blog/flutter-starter-sites/deployed.png": "2947bdbc43fdd5b15842b2e03760a101a8e8475b6e483fc722ee21018aad863b", + "static/images/blog/flutter-starter-sites/template.png": "69e5c85c5aca44f280997792519f98fd7484bbfcea385679490eb46cce6d1976", + "static/images/blog/flutter-vs-react-native/cover.png": "d1e8c52af115da91ffbc449f87c029718cb875034eceb306547222a47c2d8718", + "static/images/blog/free-angular-hosting/cover.png": "59a27dfa4598c64a9f38413996916c8ec1fb1aa7b6e93c8c607fa2c622bb8049", + "static/images/blog/free-astro-hosting/cover.png": "588e67ef5cb8901ff2036bc0617d40ff6e4372004741c82ed4b068616404c457", + "static/images/blog/free-flutter-web-hosting/cover.png": "c70a94ed29e99afb07b5263dc0f1acabd84b92e1527dcc8a22153cf91cd31479", + "static/images/blog/free-hosting-2025.png": "1111d3b1b9734458af63fb35204c393d18b5d299c31321a3a563bcb1d1011144", + "static/images/blog/free-nextjs-hosting/cover.png": "ad0c18cae7bee745bd7dc0bd62b73c62629cf49551e2c7f38dacbce53a9960e7", + "static/images/blog/free-nuxt-hosting/cover.png": "e162e6f93dacf7d81cace9de016b0cacba31efa843231af3d6d57d62130a8d63", + "static/images/blog/free-react-hosting/cover.png": "9d3eeac6e93c5f81b2f05ffec3315898174d203fdc6c168353e9e3157c8f07a9", + "static/images/blog/free-react-native-hosting/cover.png": "314656562e2c558aed059c996108a420f8ab11539b84aa8eb3cec47c15f89d53", + "static/images/blog/free-remix-hosting/cover.png": "a3161619d6dbb099df307eb21b0300c0fe8191fc0c9634d28fa2cebb7d4790f4", + "static/images/blog/free-svelte-and-sveltekit-hosting/cover.png": "2875d70cbb2e77955075598b5217acd3ff5c34b212dd16dff3a588d92e202705", + "static/images/blog/free-vuejs-hosting/cover.png": "18edbe82f2d4b760990a09f3e58b871d993761b85a4a34107e9a8e7f6047786a", + "static/images/blog/from-prototype-to-production-why-ai-teams-prefer-nosql-databases/cover.png": "a994fc12b07f3fcc5e4d8770b355e52e6f0e20f921232087ef32b4214579174a", + "static/images/blog/from-student-to-developer/cover.png": "3c55e035f7bde3c7d697a43845440e401e1b4e759a9751ca3f4d3b7ef4039fbf", + "static/images/blog/full-schema.png": "a20b47b967eae829e663720a0eecdd36a3811278a644f918c91666a1c2c31252", + "static/images/blog/function-chat-fictional-character/cover.png": "f15bb7a3fea8b4f88faa72a0932877bd5f66d98baa16650d45eb052d177176dc", + "static/images/blog/function-chat-fictional-character/functions.png": "7de7beeb4ebffc840db35fe1277fcf339ada031062ce608b0394f47e2a2b93d0", + "static/images/blog/function-chat-fictional-character/http.png": "7de574fe155766f618ac17383557a0b681a66cb3b602c76be6ed4a69c094747f", + "static/images/blog/function-chat-fictional-character/openai.png": "1f587ed8d9aa0370169e8592e408087595335eb0deea7eedd75612c5cc51724d", + "static/images/blog/function-chat-fictional-character/prototype.png": "0b3c262355c96a6cb5ea84e70bab82d79d7c761af647fd3815c5e9bb07c51408", + "static/images/blog/function-template-prompt-chatgpt/cover.png": "25267f259f462620f56aed6787d3883221b5c68cfe495cbea20774f690f06ab2", + "static/images/blog/function-template-prompt-chatgpt/domains.png": "7fb032775ad2307fc6d0e8a0baaeef861fc35d8a2f4519f7100c31ea47d84931", + "static/images/blog/function-template-prompt-chatgpt/openai-api-keys.png": "b7b758b3b356db8d22887863078bfa5772318e3c498d99e00e449e94cb6067d2", + "static/images/blog/function-template-prompt-chatgpt/postman.png": "eebe7254df010062741c630d098e74a934f2f8b84b426fc3552003b4049d468f", + "static/images/blog/function-template-prompt-chatgpt/templates.png": "49cc4ee7731ee99e2afcc8f4fe175697716ea4bc6ad5c795268bf4eea3c8c05f", + "static/images/blog/function-template-whatsapp-vonage/api-settings.png": "e9a91ce8f30470449f99ba71f18f2474401fbf9cdf5f5370eba4d4111c886b69", + "static/images/blog/function-template-whatsapp-vonage/cover.png": "f5f429b5b7e83dbbcb89d78e5713cc22859602a05dfe0c617ae9c438a95afb9f", + "static/images/blog/function-template-whatsapp-vonage/domains.png": "e51043bde13e44aab3517e738b5b6581579f4fa24bf70e3a8b54b3a4c1dc5fb9", + "static/images/blog/function-template-whatsapp-vonage/messages-sandbox.png": "99693967383fab64adb7e3983afec5944de117b96d7c0dda1a924fcb7474fffb", + "static/images/blog/function-template-whatsapp-vonage/templates.png": "a9d6de7ac36c82fc55965c69fbb5801f1b0243c4e413d2e46a8ab8cb1b182697", + "static/images/blog/function-template-whatsapp-vonage/whatsapp.png": "dc1840e491016d32ddbd58c5251daf54b19a5e4f46eac7376289c39db8ae1d1c", + "static/images/blog/gb-hours.png": "bdb4c05497abf91a48ba8a3458c975c5ecc0078358faed8b64d59e183315aadd", + "static/images/blog/gdpr-mobile-apps-guide/1.png": "d3521c227ad9fa7fce40e66caa3e3f5fc982cf95086c590cc0a326031f6646d5", + "static/images/blog/gdpr-mobile-apps-guide/cover.png": "11d53b8884d5ca45e7d9ba8fb904633795886d30cff6cc06a6af6b9fb7d1225f", + "static/images/blog/gdpr.png": "e253390207e4d3e0ff28d3a4b94bee549aa6c8dc040bce604f5c6ff746dd9a1b", + "static/images/blog/gemini-3-5-flash-deep-dive/cover.png": "6b9257a7ba879bc37e7f81ca7d5c014e8760260dfd0d53d089016ed5c2f27f39", + "static/images/blog/get-inspired-for-hackathon/1.png": "bdb21244945f4c483d23f84e5c429f548a45047a34d24d9c7f263cfca951ec3e", + "static/images/blog/get-inspired-for-hackathon/2.png": "cec920ba9aa9996041e2b9134c52fdb09f91db307035334d458e47f6f116146c", + "static/images/blog/get-inspired-for-hackathon/3.png": "87d6484adbe6049ab39bead992ffb57ab13bf1e1b3157b736f0bb5ad3ef1dde4", + "static/images/blog/get-inspired-for-hackathon/cover.png": "6d912323fb3097b452a586fb385a1e952013720b2f9d55cf1afc18800015c5e6", + "static/images/blog/glass-elements.png": "1f9ce71178f56a66e9e0111bb4f3b356c3a41691d4679114ada713ddbace079b", + "static/images/blog/global-community-2.png": "b4b155d3f7eb9971ac0821b93f642abf05f9683b02c3c685d3000598f6429a4d", + "static/images/blog/go-cover.png": "a714e0fd56a624e22c098969307a634930159aab90a7e4b6dcc8db3233450268", + "static/images/blog/go-function-benchmarks/build-size.png": "aa7c2120fc77df885824ae78719953d4d6d0fce9a7baf0b5382834e24059ed3b", + "static/images/blog/go-function-benchmarks/build-time.png": "756f295021ba284df18aa3400d4b965a0bd7edf15f0e790631fdfd1372a03c2e", + "static/images/blog/go-function-benchmarks/cold-starts.png": "6ec084914d17486c29932edd64503af0cb7cf1089bf9f79772533534d3d1dd51", + "static/images/blog/go-function-benchmarks/cover.png": "89a0bf5b5eb936d8d310d119f4355370ed6462d73ca00125e4708b374cc5dacb", + "static/images/blog/go-function-benchmarks/memory-usage.png": "22057218710fbccb992ec999bd7ada70c6b66feda72a4e9ccfb973ebf3274849", + "static/images/blog/go-function-benchmarks/requests-per-core-fibonacci.png": "3e3b9f664586487d4d7563e7aa114be93020b233686c63095019ddba93e22133", + "static/images/blog/go-function-benchmarks/requests-per-core.png": "d1115cd58c882ca0c6462f2fa04805d4cea2c34eb766960f912e5d4eefb6bccf", + "static/images/blog/go-function-benchmarks/total-requests.png": "c9808b40b07f216e5e2436ec85d26a29df819f0546e87892e58c43e5752940f0", + "static/images/blog/goodbye-plaintext-passwords/cover.png": "484932aaa63fd9192bf10276586f2d0aa5bf4bb32e305dfd1a421e2a80c3fc2b", + "static/images/blog/google-oauth-expo/cover.png": "1b544f1212ae16557e69c10b03f34e33f62ce61d0056929278325d9e7b5c9942", + "static/images/blog/google-oauth-expo/login-screen.png": "f70d5c07790bfb2a87ada0aea5cfedd4ce7fa75124c3521422f98e8df9e6434d", + "static/images/blog/google-oauth-expo/login-successful.png": "441ef69e3ba8716c4ff4c20dc8c31f8f3f418010a11ff1e74585645bad414f74", + "static/images/blog/gpt-5-5-launch/card-problem.png": "9cfd1fa44c5f8d76a54904d1e656595f1580721d498952a96105dd6f9ddc82fd", + "static/images/blog/gpt-5-5-launch/cover.png": "768138556cc8a3c1645ff1c602ea1ac5ba2eb373f8f642d2c023e6380950ec08", + "static/images/blog/gpt-56-is-here-openais-efficient-frontier-model/cover.png": "2156c5047fa2630e148ea0fd5189c4d08579b5c96e92530c4ae45b642acb6589", + "static/images/blog/grok-45-coding-model/cover.png": "b40f87952b940767f393a93a7628f8277119862a3a3ac7b7d40d7ee5679213ff", + "static/images/blog/grok-build-open-source/cover.png": "b6550e801f952ba0446227c7f9295d3e5beb12e5d7f9e62547c5a3ffa78e674f", + "static/images/blog/hacktoberfest-2023.png": "e0521ba26e59dacf91072391f7eb0df0e724457961fec4cb04a4914b31dd0024", + "static/images/blog/hacktoberfest2023-swag.png": "7a0af270f7fe24c53e2497ca59bead84255d2d2e882dd38473b1bc6bb0a22d1f", + "static/images/blog/handle-cors-in-serverless-functions/cover.png": "9db00c07cedfbc97f7c4a1a79d1ce1f0d31adab3ea246935ac9bdc9f47fc1e4c", + "static/images/blog/hf-2023-journey/cover.png": "06be00339e12ff26f9a4656fdd5c97e58c8384cfc60837f0c9707db2afd215f6", + "static/images/blog/hf-2023-journey/kickoff-blr.png": "2b5d68282f769411fdc055ab39c32cccac9c0a274a2d6654ec1bbfc9621f4c8e", + "static/images/blog/hf-hackathon-24/hf-hackathon.png": "b362912129d0e718c5dbc0cc80b42fb5174ac7e2efcc2386916eb69bb3e13645", + "static/images/blog/hf-hackathon-24/prizes.png": "002988709aa990a4912206872ad28c14e92eb2fcf3e7cb693c5cfc2867e39e92", + "static/images/blog/hidden-costs-of-vibe-coding-platforms/cover.png": "de4a875c6a5f65598838efbd877a3dc8b004362111447a63f85e640a71e85bd6", + "static/images/blog/hipaa-compliance-for-web-apps-a-practical-guide/cover.png": "9aeedd01af7440a10220c53dbfa4355018000d2661d733fdcf7d047e04adbd11", + "static/images/blog/hipaa.png": "251c39f22b8e7657db751351366d81a016d57643b45eccfa53eb5faa7baf3e24", + "static/images/blog/hooks-appwrite-databases/cover.png": "9c3b307c3cc594932e513aad1023a982647d6c9fced513e46c61ba5669379154", + "static/images/blog/host-ssr-web-cover.png": "cd07b21c221d97a59a9384aa86644886c27670f6d339d4f1696d331d93bf1e88", + "static/images/blog/hosting-flutter-web/cover.png": "298e3730bf2943ccf6761ccf6d7af1e83316ececa9cdf4f008592344478427b9", + "static/images/blog/how-appwrite-makes-auth-easy-for-ecommerce/cover.png": "9f1a43d52b038e76d7d34e06429abf186eed3daa0fe8038a7ce8740b55f7e75f", + "static/images/blog/how-appwrite-simplifies-backend-development-for-frontend-devs/cover.png": "b339f5eedaa53b1758243280263d2a65cd3dffd580a337b46462a960bc2737b5", + "static/images/blog/how-can-you-rapidly-build-an-mvp-for-your-startup/cover-image.png": "745711bf15cb060d8d6ac0b7a3ae5a32203ad7ba87a6dd3f12a8d2517fd77d52", + "static/images/blog/how-developer-tools-are-evolving-in-2026/cover.png": "6f50d7cbd1506e5a91b16eb6ed033c68942c266034abde4cbcad878ddc4c6566", + "static/images/blog/how-developers-are-shipping-apps-10x-faster-with-vibe-coding/cover.png": "14a0089ddc28a99977d23df35ef486e703ccc558a6edd2a69c1605267a4852f4", + "static/images/blog/how-modern-developers-choose-tech-stacks-today/cover.png": "e628c346309108fc213e527ef7318519784b1799ef83740bea16603f92ee00c9", + "static/images/blog/how-nosql-databases-handle-unstructured-ai-data-text-images-embeddings/cover.png": "b592526f25fcb8e8bf0f9411bee2db50aa436a318237ee06e44ccde938ec4df4", + "static/images/blog/how-open-source-developers-use-appwrite/cover.png": "bf24f648ede305cddd7e19365c05292712ccfeec260049b66f74749e414f42fd", + "static/images/blog/how-to-attract-users-to-open-source-project/120k-users.png": "bb4be13cecf761a7d277ec253bc0447e4955afc0ee75760d0619afce891c5b85", + "static/images/blog/how-to-attract-users-to-open-source-project/42k-stars.png": "807975e5404f4b731695d33df325be32797064fbbb4694dce5ccb07f95b2152b", + "static/images/blog/how-to-attract-users-to-open-source-project/Colby-1.png": "feecbc7d0568e2a167c81073ac69fef7082f79eb05fa9599bb50b5450cb6fbae", + "static/images/blog/how-to-attract-users-to-open-source-project/Colby-2.png": "5962956fbc7e32dbddf221440ad86a34a5a242c906bc1b7995457dcb59f17a27", + "static/images/blog/how-to-attract-users-to-open-source-project/community-recognitions.png": "9729fa963fc520425d8658a90f07d0a49497bacdeb28c51f8b7723d2e26cfeb5", + "static/images/blog/how-to-attract-users-to-open-source-project/Eddie-1.png": "d8fc6b4f2090c8a43e6900a9307b6c8ca8485a078c6c110ff829e7786efde820", + "static/images/blog/how-to-attract-users-to-open-source-project/get-started.png": "e0932e82f86e818ec7c6894ef72621a88bb8c985ad1af1306d5dd807409df76c", + "static/images/blog/how-to-attract-users-to-open-source-project/How-to-attract-open-source-project.png": "bb7366709004ac394a6322ac6e95ebe75808cf6706e9ea495da342739332ace2", + "static/images/blog/how-to-attract-users-to-open-source-project/open-hours-screenshot.png": "9055f034ad62e258314792df1ef165caa9fd9b8a82b511fc61f9af32c6f3c16c", + "static/images/blog/how-to-attract-users-to-open-source-project/render-atl-team-photo.png": "37d70da5b89286422a566aead5d19cf364ad5430ac666db2cb3d0421b26a8c2e", + "static/images/blog/how-to-attract-users-to-open-source-project/support-discord.png": "d3c4cfc87a3517b44beb6a1d82294263611b50379a136d6d3e3a46187f4e52e0", + "static/images/blog/how-to-attract-users-to-open-source-project/swag-twitter.png": "b4f128cf606f0587d5eca29a13d9ad8eff8fadc94e7e4698c53d8f25133262b3", + "static/images/blog/how-to-attract-users-to-open-source-project/tutorials.png": "89da3e654bf3de4b670d490ee51414798e8875ecef352bbca679beb054fd0896", + "static/images/blog/how-to-attract-users-to-open-source-project/twitter-poll.png": "5ccf09d5a1ba425db7303844ed9fdbcdd512228f00565f2588ef4baa201da77b", + "static/images/blog/how-to-build-remote-tech-stack/1.png": "5c7a132f303345b4be898568c7ee194ea35df3a16a8636544c9367044ea7ba0d", + "static/images/blog/how-to-build-remote-tech-stack/10.png": "3ecd41734ef650176ade1db64433c3d86da8a484c2791379f8ebf510573f691b", + "static/images/blog/how-to-build-remote-tech-stack/2.png": "72d1cf92690007293bfe8d377e4315d17117fe53dcf3d0d90facfe18a4d32212", + "static/images/blog/how-to-build-remote-tech-stack/3.png": "38c5df35419bbc06b28078458e97738b89ba47a92c7ae7adb7de3a38decc604b", + "static/images/blog/how-to-build-remote-tech-stack/4.png": "b94e491ecc4a10cda336cc13bbef104196b889fa977d7c0e84fd89b900097fbf", + "static/images/blog/how-to-build-remote-tech-stack/5.png": "92783093eca0d641534edc0dfb8ee9fe26740c6a3c696e96e370b80dcc5c6792", + "static/images/blog/how-to-build-remote-tech-stack/6.png": "83dbed92d077389dcffbfb5972a50e5a29435dda5e74d7236551238b38e33392", + "static/images/blog/how-to-build-remote-tech-stack/7.png": "9559fad0500a72dd6a445f48a853b542d973b850143960f23f3cab7465215fae", + "static/images/blog/how-to-build-remote-tech-stack/8.png": "f12c97de435dd9c2ee75fa0f20c4c8656f427e2d7152da397d591bea28d44670", + "static/images/blog/how-to-build-remote-tech-stack/9.png": "58eee849e77fe9dba8ff44ccf6684287da8fb70ba35c21d180895c6f1068d04f", + "static/images/blog/how-to-build-remote-tech-stack/cover.png": "6fe081cb2fb1a6201707a2af0141c6cdb8805a6e2fea00a79d1ed1d81bfafed8", + "static/images/blog/how-to-evaluate-open-source-maturity-before-using-it-in-production/cover.png": "b4bb31d2054e5db2a874c7495cdc3eba03e0778d60db7ff9b01b1c7f7e1f55f5", + "static/images/blog/how-to-leverage-dynamic-api-keys-for-better-security/1.png": "fe8b06f98101c69b6d50e71f3d312efff6838ee880bcedd1dab9ca1ce9234a1f", + "static/images/blog/how-to-leverage-dynamic-api-keys-for-better-security/cover.png": "bee9d6ac2b5a0b18835dcca25ded91087722724daafe10c1579a4f35e3d3a9f2", + "static/images/blog/how-to-migrate-database-with-cli/1.png": "bc2168b4d96ad07d844fd0599bb87b3235cc612ca96246780b817933d6e30b79", + "static/images/blog/how-to-migrate-database-with-cli/cover.png": "ef68dae311c813dd23e9e86411a178018c840f472d29aac67368d766a0955dd9", + "static/images/blog/how-to-optimize-your-appwrite-project/budget-controls.png": "48114d7136082555ea4473dc39882281449912d18b8235567aa91e475e7424df", + "static/images/blog/how-to-optimize-your-appwrite-project/cover.png": "3c55e035f7bde3c7d697a43845440e401e1b4e759a9751ca3f4d3b7ef4039fbf", + "static/images/blog/how-to-optimize-your-appwrite-project/resource-monitoring.png": "2535e224f46bfed6e5f7ed468d95034c55e2fc8cd580fcc1c42ea3f18c20f37b", + "static/images/blog/how-to-reduce-cloud-latency/cover.png": "9e0028f3d1ea804e95a6178549f034887e48a809e126365f8522629f5f6766af", + "static/images/blog/how-to-set-up-sign-in-with-apple/add-web-platform-2.png": "723741046d7c01c292d9537d6d3ad11de07b259a7cf4892f3fea4e6297442df5", + "static/images/blog/how-to-set-up-sign-in-with-apple/add-web-platform.png": "e0ad95413e93f06bba82bf55cc5b554c446d9632c157cf2e4fb6aa2fcbb20a3c", + "static/images/blog/how-to-set-up-sign-in-with-apple/cover.png": "f441873215bfd8ac38c569d4838761d7fd12d925f9292a29a69f49e4d693254a", + "static/images/blog/how-to-set-up-sign-in-with-apple/create-project.png": "9819b5ed531cd7c8bc978191f31ba9e4d1da155a60a35e843c615070bf50b7c4", + "static/images/blog/how-to-set-up-sign-in-with-apple/enable-apple-oauth2-2.png": "03c26724fb170aca607b8fc67d185511f969dbabec52f6ff9cd7dfc5a506a914", + "static/images/blog/how-to-set-up-sign-in-with-apple/enable-apple-oauth2.png": "f44dad97466f0d1c1f59bf99098b3ad6ad9111d71d11a9d127830bad5111a502", + "static/images/blog/how-to-set-up-sign-in-with-apple/Image-1.png": "bc2776831c6c50975d696445c23bac8f8383aad782c0f20756170f12efbfae6d", + "static/images/blog/how-to-set-up-sign-in-with-apple/Image-2.png": "88a6c0067983569ce4e7639161bf77b172c34b9eca29a58ac2333dfad279c9bb", + "static/images/blog/how-vibe-coding-is-changing-software-development/cover.png": "d71da5d087b1435c8f80f700cafce466fb7e381a24507e5e8af4a516f00d89dd", + "static/images/blog/image-classification.png": "7bc26761d3cf940a19911b23c8c309114e36b870dcf5259edbd24c8cceaa2df6", + "static/images/blog/image-transformation-with-appwrite-storage/cover.png": "3885e03ff1f853f5e7e70dea1000018b7c74c47a7e28d3aa634ecc92e1c90ff3", + "static/images/blog/implement-sign-in-with-github/cover.png": "e7e2433175cfa528ad63cbe5824e938c95057132c014caa148e08912d613f4db", + "static/images/blog/implement-sign-in-with-github/image-1.png": "63e37b1ca156178fa69fad7d40b8d15a4b1e3cd1855fe8d2bc7cecef30cf95fb", + "static/images/blog/implement-sign-in-with-github/image-2.png": "1759321f3a9c6bbf334880cbc399f184c13a005ce6304126fe44e1698f3d955c", + "static/images/blog/implement-sign-in-with-github/image-3.png": "dc670620b52fcb1af427190fd14cb25d16067396cef816df654d38bb9f8a2f20", + "static/images/blog/implement-sign-in-with-github/image-4.png": "f44f62829d8beb8d99f3402e38779585811a65eedb338502cfeed20537b710f7", + "static/images/blog/improve-devex-dev-keys/cover.png": "3f3df59cb611d371a48534542b9472e5b42ad7f23f54dd1db580c85ac9841467", + "static/images/blog/improve-devex-dev-keys/dev-key.png": "47dbea47c31cab2726dc268d0ead8da49774da5c82c7246faf2e88c8ca16344a", + "static/images/blog/improve-ux-passwordless-auth/cover.png": "cb3aff15f7cf1bf36d1052e382f4eae423f9d675f58bd6d5fe9ca34587e596e3", + "static/images/blog/indie-hackers-shipping-faster/cover.png": "e912d3b61ba4ea93c98aebd9d298608d1cb5def395cdb0932d6b45d9e97b4808", + "static/images/blog/init-announcement.png": "0078cfe6dd5b2e3522cf0bf0c38648a200ee0aa432bbcb8e81ec3ad2d53a39a0", + "static/images/blog/init-day0/1.png": "f87cf934e337e18e3d34a4e127e81744b796d15341604755d435f218c35e0c31", + "static/images/blog/init-day0/cover.png": "c7c9bba16678ab61089c17ff3b0b6bc6ee122989e5acc0d647c89fe630e332dc", + "static/images/blog/init-day2/1.png": "2d5fd5095914baba85774a3460a9acb2e0bd9771f201238eec7ab59faa76ef34", + "static/images/blog/init-day2/2.png": "574541cd5a28b4c1d2f0db3bb372762a317562231655b34c5c1e4d6bf6bd0412", + "static/images/blog/init-day2/cover.png": "b8fe7fb1417074fb654bc1704dbb065b1a78cd1d34e075d80b7a2bdbb0aa858f", + "static/images/blog/init-day4/1.png": "2ad9f45332e95ea3f17c09b4838dbf379a8b603bb3ad94928c83860841ac779a", + "static/images/blog/init-day4/2.png": "2f4bf3f93c24ae007ad593f2fb2cfb7d3ce591c2133d00120626545a9cb685e7", + "static/images/blog/init-day4/3.png": "89440b5ea0912159a6f339320e4cb4d6308df77d431fecf1f3c1d510b5fb66e5", + "static/images/blog/init-day4/cover.png": "99bacf4ceabb34d9c6f3a127c4faabe8f2a174ea5c50664363440080fc7f36d9", + "static/images/blog/init-may-2025/cover.png": "21bf4a899c82f3301ba1a7bf4cfb7c64fa86b382a389d24e44dd2db20384843c", + "static/images/blog/init-may-2025/init3-swag.png": "5ed956d2021af93e150bff40f1ad5a965d7b0cb86acdd1f08faf14d557aab21e", + "static/images/blog/init-may-2025/ticket3.png": "803c58afdaef3aa2a074a126eca55d17c4cd697ccfc0bf537e9577e0463817a5", + "static/images/blog/init-recap-august/functionseco.png": "8df2373478ab3c2969957ef809f7c6cd44dd4cecc6c4f6075fd5bd213483390f", + "static/images/blog/init-recap-august/go.png": "8571a211bac32cef65ddd1045c5cad0e08f38bb0cd11409d93f11b0b7e3d7f29", + "static/images/blog/init-recap-august/localdev.png": "d936475acd0abfab89fa32f35c751220be654a86cf8016adbbd6234de38215c8", + "static/images/blog/init-recap-august/mock.png": "f52891f9947197d42bc0058879f209de3eeca89a0a6f66574e06103da622acf2", + "static/images/blog/init-recap-august/newcli.png": "d25380abdf625bddd5ee4c87ba2eafce19a075fa7cac7a47aa9d5b50302d3ea0", + "static/images/blog/init-recap-august/product-update.png": "5e4f3c3bc35310dfd17d8623d8f6b803be1d74f696c340e1a843a39e99103690", + "static/images/blog/init-recap-august/release.png": "8adb887f7db7cf6d72e1a828a3568036420e27210bae506261353ea9e120938c", + "static/images/blog/integrate-custom-auth-sveltekit/cover.png": "9d4f5a28e04678300566038a11c91021b806eead6b9ecdad870f968cf09aa9cf", + "static/images/blog/integrate-custom-auth-sveltekit/overview.png": "a13879174eece52967372d0312725cd2f360a9e312425b68cba50aaffcd12558", + "static/images/blog/integrate-resend-smtp/api-key.png": "75edc5610ca8f571a70396f9e25c6132f26065440cc837af95102de4b8408708", + "static/images/blog/integrate-resend-smtp/cover.png": "576ed4d27f79f222fc231eb2757c30e2676a3e6a3a66dcdc32166cd660be7ae8", + "static/images/blog/integrate-resend-smtp/domain.png": "dfcf15479b10a8a38a29f150030c509002351567eaf3a17f463767a628aae72c", + "static/images/blog/integrate-resend-smtp/email.png": "03d72f4eac29c493cf3d71cd4db56ea568b86ac57eb8fa0bb25a5c81d40aaeef", + "static/images/blog/integrate-resend-smtp/provider.png": "0669e1036113ae2cd6e8ebe1da66e0d4ec61690f3685ce31eaa556a1e74d6646", + "static/images/blog/integrate-resend-smtp/smtp.png": "ce8e96b7a45f5ee2e14048b4932c9c44a9021aad4c88a3424675f47ed574f3d6", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/cover.png": "b7f82a20067f3d86a3c5d6f21f18e2e781461ab19fc669034f772c77e5d5a81c", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/mongodb.png": "e7cc33a7b039a5cab14a2bea0d69b7fe73bd2a5f099fccc07ad13399cd5009a7", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/neo4j.png": "66a6607f4950692ba99564369eeba653d6a15530e45ccc835f277126971bf39b", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/neon.png": "3d96319f3c23d192dc725536f13b5fd61f7d367f3ff23c0cdfb3700e34c66857", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/redis.png": "e911bf485bda1a105a8a2b2ca4a05aab8e10064759d654c9baff3e5653b02dd2", + "static/images/blog/integrate-sql-nosql-vector-graph-or-any-database-into-your-appwrite-project/vector.png": "573726b6770a33ff8a1d616c3e08c4aa75a6febc976afb42e0f723c118ea8209", + "static/images/blog/integrations-catalog.png": "041534fd991c48d36fb941ca097283d456c025aabf249a7e311739b7d8fa21d0", + "static/images/blog/integrations-messaging/1.png": "bdf540c04dfb0ca039deaaf97ebed27cc2890b619d0fd18fb0c6393d1580067f", + "static/images/blog/integrations-messaging/2.png": "21852ca2f9449d199dcaa8141bd7433e543e44d35e3b7cced23cded9c8e57f38", + "static/images/blog/integrations-messaging/3.png": "3897147f557853e88e5a6b6ff3a5f9394bd829d52be294e71e95a092c864bea3", + "static/images/blog/integrations-messaging/4.png": "02f4a64fb28b8825dc725cd75a6b25e14aea3275eea4a3fa1100614cd7591ad6", + "static/images/blog/integrations-messaging/cover.png": "22f32d8be6585e781214a9c083c86d7d5021babd7604f6e9c8819c2c91e2dfe0", + "static/images/blog/introducing-appwrite-react-native-sdk/appwrite.png": "fd428e8859e29c7698a8c7193e7efb8af4ed80c0bfc24418cd9446a96b75fba4", + "static/images/blog/introducing-appwrite-react-native-sdk/cover.png": "7a45ea7049ee661e9143c89998060638d20c1242162154550ec7fe1127c08242", + "static/images/blog/introducing-appwrite-skills/cover.png": "4e106084bfb0e22b9833dfdc9cfd2e10a32de21d37fe45a132286e9848357054", + "static/images/blog/introducing-database-backups/cover.png": "0513bcc80f2aced49c5acc4d634883c860940196c914c309f3517b97e003affd", + "static/images/blog/introducing-imagine/cover.png": "f43476c4b5609960c00245c814c7ea9555dcbd0b1e638a58b06ebb8524850492", + "static/images/blog/introducing-imagine/imagine-1.png": "58c6e736e8c5a5cae752097defce06b30482057dfc56096ce827dee68e9b7fdf", + "static/images/blog/introducing-imagine/imagine-2.png": "69925ef81dc7e0bdf5ad302ee5619b72e996196944e9b3f55fc4e9d0c4b8ac9f", + "static/images/blog/introducing-imagine/imagine-3.png": "3d736355031b8438dda6e3855ab2077982148f7ef4f51e6b05bcc074f9ff6f5d", + "static/images/blog/introducing-python-machine-learning-runtime/cover.png": "2976f7c650ab992ade016df1767c8b783da8173f8a3bbe10549fe4d3e4767536", + "static/images/blog/introducing-python-machine-learning-runtime/create-function.png": "0728b8ed66cd81e826d2d0a5b70e9f572d415f995065cf44feed2e22ce50e492", + "static/images/blog/introducing-python-machine-learning-runtime/settings-timeout.png": "84214c72048b9911dfb2b9b40b62dd715f856c01badae58b148066be137fdfb5", + "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Appwrite_plugin_for_Claude_Code_is_now_in_the_official_Claude_marketplace.jpg": "f8679e1c03a01ccc2a3a1d3709d609ee8dbd9af63e9548cdcc336059457dae3c", + "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/cover.png": "b636e349b4ecc0d569967d449ddb665e3ae1a6ed554224b1a643e4efab18d251", + "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/introducing_self-serve_baa.png": "4d4ed038ee7e94249857342f6d317b31dbb5b44410941fa14f6280e0bc8d938b", + "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Introducing_the_Appwrite_React_library.png": "f69d9adae872ab44368fd32159ece9daf621cdf002ab78461f7f1d07b66dba73", + "static/images/blog/june-product-update-react-library-password-strength-baa-and-more/Password_Strength.png": "bc6a351aa59b845d6a9513ec4a4993c393b3059c9a7d324c999bea52142d8648", + "static/images/blog/kcollect.png": "d044d69e18de7dd4af75213b7f4cf131529f43875352d7db86fe80c274466242", + "static/images/blog/local-development-guide/localdev-cover.png": "07cce5e779991c560d2e8c58b280803ea8ebcfc8775bcc75e959d76b01409fa7", + "static/images/blog/logo.png": "6df582f74767156f37ced895ebeb6b5a656858301dd09539cbc84157a6a54ed3", + "static/images/blog/lovable-appwrite-backend-pairing/cover.png": "fff78ea4f16953fda8c6e617448bfb0ddde26eb2f5891f9d35b2e53345eba677", + "static/images/blog/majik-kids.png": "8710ac967fd8c60ee387a8f9ec75c27cd7eff25ab70d8ccbcb7ecc7ed7c73f72", + "static/images/blog/make-best-use-appwrite-mcp/cover.png": "a1807e11b41f422028a161742aa5cd94e1e8192d87eab3c7e4f55ae9461f309f", + "static/images/blog/make-best-use-appwrite-mcp/csv-created.png": "d5e4d5f352da6923748ceabb3e0657bb85c9212ca3f468bc0c676fdd84cf4f7c", + "static/images/blog/make-best-use-appwrite-mcp/db-replicated.png": "ab8df4b9c8c929bbd32a6ddf85789f04afa2a0a8819d3a8c2b86e041003ab190", + "static/images/blog/make-best-use-appwrite-mcp/doc-generated.png": "8728a37bd6803e06613529963a1ef934bf5ed552658da5297bc2dda37d23a04a", + "static/images/blog/make-best-use-appwrite-mcp/table-created.png": "cd48ddc127a27dc5b93cbe74160184c86085ecf5cccf91bb68c2966438cc032c", + "static/images/blog/make-open-source-healthier.png": "e66f695812a6fcc8ea7caf32972c433092d423a6704e3a22a602dc22c4b182c1", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels_cover.png": "a4bf289c9c5729e31c13bd49678ab90d19cf695fd05220424396f10260da991a", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels1.png": "a2c9de548f5f1d3d4a82bcbca0462397cea67a6e58ff4639ab8e104d6dd88e9f", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels2.png": "fb90cf6b989474d3e7a12a908df13dcc329b13fdc7b71d7f1e4ea1912777801f", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels3.png": "bb01a2a43cd4f0f38308df4979dfa4c14c147656da7ac782fee1309355946b67", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels4.png": "b5b5d3c2be622e9c096d5977559e3a26ca2b5fa7ed3b0f81a5ab24e4b1fdc88b", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels5.png": "bee498d03d3391524aa5ee6c574febfd3f881e3a4cbfe9498e7e8389574025be", + "static/images/blog/manage-user-permissions-with-labels-and-teams/labels6.png": "02bd833be8556be4a2b1c557a495339fe74403b2254781b43a5e04ed1431f71f", + "static/images/blog/managing-website-assets-repo-cold-start/cover.png": "ff11c54070d4662b6cde70e1b95c8a944e382e353928a68dae5e2baa45ba3b73", + "static/images/blog/master-prompt-engineering-tools/cover.png": "4ca1cedae3df550ee8b3613ebbd4643f02f1ad60fc9bf46a5d06c344497d5662", + "static/images/blog/master-prompt-engineering-tools/langchain.png": "3366f36adeb0d73b75aa0ead5d8f47ae26a19bbcceeb4ed89b6d9ce66dd8c57c", + "static/images/blog/master-prompt-engineering-tools/promptappgpt.png": "4b9c9b8a3b89f62b172d554e349049b3bde46464bc2d11791917997ea16dd03f", + "static/images/blog/master-prompt-engineering-tools/promptlayer.png": "f864a8b06d97e3f46b831791762c1cd34a48d24a1d9d6c2259db1cdea9e36aea", + "static/images/blog/master-prompt-engineering-tools/promptmetheus.png": "db2dba37f7437a4e640cf6d99d1a7bfa0205a012ee4af7e94359c631f66256ea", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/Bun_and_Deno.png": "fb464e4ec0de83c6201ef573af3670d7eefe65cc25107f32355617562f1f6652", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/comm_recoggg.png": "8d283036fed6936412dc93d2e3989c27ba4ad9c1324b87669d832b29f26d13ee", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/cover-4.png": "ebb9101583ca85e7c2fcbfbebb6eeb46cb6ce0673b4bfc643fcd5dd373954317", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/cover.png": "252d887977dbae1d4b5b0869b6177a94062d419b9a31b9348e74f4eede49ffea", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 1.png": "9f6741620b5255b9adba09b66a867254079f082e53932691d41fabc786ee771f", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 2.png": "260c9d69eebcf828ccc209995ab9ba2300bd2f450f8bbefca07cbf3ac103974e", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 3.png": "4498be8798d7a4a150156a56c89ccde7088bf49ac038188fe5a1c1ff04f78874", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 4.png": "a0be93d4870a8237ce55a531f5ea592041fa0dee32a9853d842d16e39b78611d", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 5.png": "15b9cdc16b16a3412458abde886e2dbf60753bc8e82d6fc1d0a5e08ca1f14e7e", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image 6.png": "41e154c52c8d8cd1321515f5d27eadb4b06ce6ae801e01ba02ed0d86eb5a0ea8", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/Image-6.png": "03c9902c84508c940a14713a6bdf73545e2286faa5375e68e0fb426e9571287c", + "static/images/blog/may-product-update-presences-api-rust-runtime-7x-faster-storage-uploads-and-more/image.png": "726a0a1bf2571bb9fd707d714ebc99d931a332ad63b78b888563499b071157e0", + "static/images/blog/memberships-privacy-announcement/cover.png": "db8bc0f478655e59c9773447cb844b9c9bcdecc0fbe018ac0dbc099454866b9d", + "static/images/blog/message-overview.png": "2239fd7c47124ac0f154d4569727215a9bec485fcbffedcc012d8883929d968b", + "static/images/blog/messaging-announcement.png": "aeb5d1cc4182d96d0466f85b051c8c77f0a2610d5c7debb9fc735211ce491b3f", + "static/images/blog/messaging-explained/cover.png": "9217fe55413a6c258304a1b9d83692cd72a9c9b28ddea8db3ffb9d2bdbe0d655", + "static/images/blog/messaging-explained/preview.png": "78349a4f5731e358845ded38e06bdeb7e06f241c9f61e78d8e4d5f9a18f4edf5", + "static/images/blog/messaging-explained/targets.png": "8fe9e8706c9e32065468d43148096d1c2a990eaa03845950513f9361f595b448", + "static/images/blog/messaging-explained/topics.png": "a61d7f1e00e2e74be1c658e4b62682f04b0c38d04bce0b23412b72ae20d9239b", + "static/images/blog/messaging-pricing.png": "3a97b31eb9ab601b9c5a90fea657d3f6b6eef59cd0ff436b97bf859cd636101a", + "static/images/blog/migrate-firebase-projects-to-appwrite/firebase-key.png": "0893635c8824d818de24344839bf3750b7bd90964fee5a98b43c6f60f588f288", + "static/images/blog/migrate-firebase-projects-to-appwrite/migrate-firebase-projects-to-appwrite.png": "3cd5708064a1dffd4349b72fc72648fe90cac044cf0b2ed8912ec089808e2cf5", + "static/images/blog/migrate-firebase-projects-to-appwrite/migrations-overview.png": "3288784ed3f0978699f28f1122639e2b30cb8fd060310ef1621c156a8dffc7e1", + "static/images/blog/migrate-from-vercel-to-appwrite-sites/cover.png": "7e925ff61df1b8337d012f34ba3fa26bedd0278464d57a398ed142092a38246f", + "static/images/blog/mock-numbers-use-cases/1.png": "f1d42326a6114b7516d2c1374b8499df14f071acf70c0cffd24b29476dfa0880", + "static/images/blog/mock-numbers-use-cases/cover.png": "daa1080f9cba114e960ea939496f85d7ef20351ae6228bd1969764dd0883f9d2", + "static/images/blog/netlify-vs-vercel-vs-amplify-vs-appwrite-sites/amplify.png": "72b86a2da2fa403cce2c975b1f829549a6d397bd48c1ce93caca8e0b30f03a82", + "static/images/blog/netlify-vs-vercel-vs-amplify-vs-appwrite-sites/cover.png": "c87ba5b38f55f7ed248283ac945fb5c0ec9b9c66f78207f870fe9e5e19fe098c", + "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/azure.png": "8fc911f395e01d70b665670bb494ca16671c6980af3721e931d9e266a5e2043f", + "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/cover.png": "41bedd4cb48456889481d1a93e55129ca9db86e1f444a6c1df2fe4c000fd6f84", + "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/netlify.png": "a4b62ec34780a1c7672287d7d4061c257468cdedf505c759772e83d67f3932ee", + "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/sites.png": "3d6c098ed0e39c6181f9f14e542834f1ad78b117bce67041e7ed9d181cc29569", + "static/images/blog/netlify-vs-vercel-vs-azure-vs-appwrite-sites/vercel.png": "b44adad115279964cf17dbb91d21c37a0a1fdad2c3227d40ff5dff3f58c41f64", + "static/images/blog/new-image-formats.png": "a8ef400c006647ee3ae0d307553b51d90ede699935d7602ffa75fd2e59312846", + "static/images/blog/new-logo.png": "6c0b06522f926e9f05f9cbdbb24ac641a605aa764fb0f61f3f51255bb1e54a34", + "static/images/blog/new-roles/console.png": "177070ba0a364ff0a6e1f78874adaf66f58e2b6faf662a5cd42e8142829eb224", + "static/images/blog/new-roles/console2.png": "101f592e5776f64e0d5f5273631879412103efaa4f1943b58d689893a2f08b45", + "static/images/blog/new-roles/cover.png": "d1148cc754a43599dd7b28760389d0fa2f366b912f3f9c31f237b96b87036900", + "static/images/blog/new-string-types/cover.png": "431debf3c5b326220ebed21b835f6e3d8f38b7cfc2b71f320cbca5773e524b40", + "static/images/blog/new-website.png": "14b68b0d3b3bdb953a2b2c59af5f041b8bdab28f68a1757895cc2ec0a4b6a011", + "static/images/blog/nextjs-output-modes/cover.png": "d4eeb4585955564b37c9e65e3b9be50e2109e4c9f546dbe207c27b55838d7e06", + "static/images/blog/nextjs-standalone-builds/cover.png": "873360c0097ee41bac5fb3fdcab5329f73ca991a53b15e03dc6ed22449cf247e", + "static/images/blog/nextjs-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/blog/nextjs-starter-sites/congrats.png": "6bf96a42be41f3d97a10b16420974bec5ada05c508de27c6dce2344ea04e6379", + "static/images/blog/nextjs-starter-sites/cover.png": "4545183b7546fe429ce7588297267d3a07b19e3b9feb2d35030f6097a0a9ff81", + "static/images/blog/nextjs-starter-sites/deployed.png": "f3b309dd4747796f1a8272635096a29e01314fbced8f26222afa60185b3af16d", + "static/images/blog/nextjs-starter-sites/deployment-logs.png": "2873669c7ab6b816bf574d190a8a51b0c1edfd35b28423022fbf64055d97cac2", + "static/images/blog/nextjs-starter-sites/template.png": "0138c956f06c8275b87d103c1b5bdf54b6cf31d42285c43f5caec5b5d497421c", + "static/images/blog/nodejs-v25-whats-new/cover.png": "49e3fa3a669bdd6d5d1aa1eea54693ea75c9c98aa8a1e3035e1c19c97598f007", + "static/images/blog/nuxt-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/blog/nuxt-starter-sites/congrats.png": "5dfa4f03b67e0110936126f36329a17aa37bdfc4f148d61deb9aacf5d10d0981", + "static/images/blog/nuxt-starter-sites/cover.png": "3d2e1cc25774b983ce93ed35e3f0b4e78751a87ba09c7fbaff391318efc27eb1", + "static/images/blog/nuxt-starter-sites/deployed.png": "17a68d48ea9767adf8b1a13d505c46ce7ef61170800de7982d6723bcb9ac48c8", + "static/images/blog/nuxt-starter-sites/deployment-logs.png": "cfda32328bf663dc9dac32c503730d0790aeeb35190dd201947ce18f59bd026d", + "static/images/blog/nuxt-starter-sites/template.png": "c881577b5a1b1edb32aa08a42afc0ba3cd1fe084a64c347b1dd6618312b56c44", + "static/images/blog/oauth-openid.png": "5228f7be3e0acd3d5c3f3f0ab4d2589a2cd6aea43508cecd9624c777f97fa909", + "static/images/blog/offline-first-journal/cover.png": "be142679d30a9144f0623b78dfa2810048b46c5cbdea83d0e2d7f36d61233c5d", + "static/images/blog/offline-first-journal/demo.png": "55e48ac98bc1d8f9add353b034c22c17cc158d951a31e7df4cb23a2e3d7efaf2", + "static/images/blog/open-source-baas-alternatives/cover.png": "1ca9d44ab5faf6199fe782c5c833cd75d54acc7ad5cb18f46dea06b62abec5c4", + "static/images/blog/open-source-backend-for-ai-apps/cover.png": "c5007bf5f067f9eafbb792909ae3ec9b882a8bd5017d5c4b4fe6182599567c2c", + "static/images/blog/open-source-backend-vs-managed-saas/cover.png": "5046fc4e3f3fa605c22d00ecb4b5156734c7d94000b49cae66a9e3bc49f81984", + "static/images/blog/open-source-firebase-alternative/cover.png": "e0b98679795c00fd6d2d304b17273eaa6847bb1fc5706efa6cc3f3040ec6b4bb", + "static/images/blog/open-source-regulated-environments/cover.png": "bbb57f0f8dc70f31923f34b5007f089a8539bdbca193c6f3a2594502bca551a2", + "static/images/blog/openai-just-shipped-codex-to-the-chatgpt-mobile-app/cover.avif": "32abc0a488d7b7b8f2a4f5661801f415bb1cc1dc148768159bead6e5815c4bde", + "static/images/blog/openjs.png": "4129893c1ea043b82af755a462fda8d78a7a5199638f84da549b2a2b29fbe976", + "static/images/blog/oss-netlify-cover.png": "166487672a542d051b029ba285b703fc7f6c49d2fa27407f22c8f1848725120f", + "static/images/blog/OSS-program.png": "b2cb73db872591b279e9b7ce87eb1c281732f394ef96a5d4e941ba3892924be7", + "static/images/blog/oss-vercel-cover.png": "9f3073b5dadc5d87532bdd49a699e03f6b2c4d439469b88bc3a4fb2bab8a1d9f", + "static/images/blog/overview-react-native.png": "fd428e8859e29c7698a8c7193e7efb8af4ed80c0bfc24418cd9446a96b75fba4", + "static/images/blog/partners.png": "3c3d082bb76a507f22ea5ff3aa2bb5c0646b4315556190d6789a3412605dd021", + "static/images/blog/password-hashing-algorithms.png": "dfd0bd32a04ddc78ca6a7a7958d8a931a7d82cea2c3597c7bfbc2b8951dbaf70", + "static/images/blog/password-protection-2fa.png": "de4246c673947d907972acbb9ddf72a45d79bc2891caebe0f4e62e030ac00db5", + "static/images/blog/password-protection.png": "9b962f9b1af1e715e278c5ce0da153855ca2c34fb13ed4c990c388df9931c300", + "static/images/blog/pdf-generation/create-function.png": "f122f98e92a17ad61b435de152b18bf5768835bcb408bdd06b8fbadfbac862da", + "static/images/blog/pdf-generation/generate-pdf.png": "98bda17bb63ac202720dce83d9ec27b90ace67fee82856f6a7deffdea4e38e1f", + "static/images/blog/pdf-generation/pdf.png": "18ea06a5436155dfb16c6558d9131efb9923a008ac721eb18fd3d6bbd5ea2799", + "static/images/blog/pdf-generation/sample-invoice.png": "f0d2fa6ba513d59fcaddb7f972f79384e1361b41defd7edee29fe18609333bb0", + "static/images/blog/pdf-generation/templates.png": "27fccfbb88eb812e646a5862da179818c0d208578bc25707ca24e767560f39da", + "static/images/blog/personal-chatbot-gpt-4o/cover.png": "fe56f7ce91b7b5d5679aa1c27a145abd23539ea953fce48d9ededd058446841a", + "static/images/blog/personal-chatbot-gpt-4o/deployment.png": "d76f209d024499457bf584e91ac23988fccf0dd546c7d359f406da43e0c2aad6", + "static/images/blog/personal-chatbot-gpt-4o/final.png": "c45b0b1fae6495248745256bd0dd7893927bfd4c3e074a5ee3bd45cfc9c49501", + "static/images/blog/personal-chatbot-gpt-4o/functions.png": "288fd5f116007d513df5f7750d1263a7b8aa93cce4fbb177cdda1a41ebcade47", + "static/images/blog/personal-chatbot-gpt-4o/openai.png": "d363fac9425cdf05d5c83c9970307ccdec0a1165befa6dabd82aa49c08ac7ae2", + "static/images/blog/placeholder.png": "fabe2155f3bb5819170defb4d3419a52e1ccade4e0f7e4f758f026474823c571", + "static/images/blog/planetscale-databases-alternative/cover.png": "173cdb49df6c3176bf4127c106229ac6f1d3685f9598598617ceb9d7c13c1bb0", + "static/images/blog/planetscale-databases-alternative/pricing.png": "0f78421919ab620d9b5bf503103f50fb6cde0255453299acf6b826e5451a09ee", + "static/images/blog/portfolio-template-sites/congrats.png": "12ab010e16135558b0166acdd9f923e661527b7ea5ad653d398d5588f9c65041", + "static/images/blog/portfolio-template-sites/cover.png": "db9ed92a1a1c383857d606a19f6316c25fd12e1ed2485638e6c44b43ab9d4798", + "static/images/blog/portfolio-template-sites/deployed.png": "06286c5abc6bf98df43c54f2871db8d1f842f12e91bd340e9606ab0c0d67565f", + "static/images/blog/portfolio-template-sites/deployment-logs.png": "916da01874368cc6b451310f0533f94c5b9daf5a42e329375b12998a1ea0e3c1", + "static/images/blog/portfolio-template-sites/env-vars.png": "62f81d5f45ddb50dac9524b99bb627ffa4f7ed0ccb228e0da9fa2eef3ad11863", + "static/images/blog/portfolio-template-sites/get-started.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/blog/portfolio-template-sites/resend-api-key.png": "8edd95da6e772e3e0e55ebb6907d7190a8c59007a7b9d1b13741ad762cf0a241", + "static/images/blog/portfolio-template-sites/templates.png": "a41a36779555b2fcf5a41b88039e1e45c7ddd14de1f92a7807c85c16375d28df", + "static/images/blog/preventing-password-sharing.png": "657c2bc0040fe2cdd3d8248dcf6faba886c2ed0c9023ee2608560a7163869089", + "static/images/blog/pricing-plans.png": "3cf977e6fd7e9b49769220b19a435bb7e85ce273b5f0afaf7399c111c18f0d3c", + "static/images/blog/privacy.png": "522269a98a6246a065ef2abaf6d39abf1b6c4ca7c0b8882286659135bd95f207", + "static/images/blog/product-update-april-2025/community-recognition.png": "cee3c3677e5000bdaa87fe17ced34bb3401f56334e877460e205c36c457dd5f3", + "static/images/blog/product-update-april-2025/cover-image.png": "9787a1c8bd6eb582f36385e21d7ceae5e31cc81ed0ebb987af36bf7ec411c7a8", + "static/images/blog/product-update-april-2025/FlutterFlow.png": "1fe21674e05ce2e85c072031cc2df00b59dce4197ba0170090669de95673a563", + "static/images/blog/product-update-april-2025/PH-comingsoon.png": "7d823a693e578854ef6c26af85205a1aa4bac012977e5a44a4e6ff5f877fc6f0", + "static/images/blog/product-update-april-2025/RxDB.png": "418e61b2b81786eac8d981218900b1e4034aa6f006b0b16559a8a81f8ebd5eba", + "static/images/blog/product-update-april-2025/the-appwrite-network.png": "3f023b32e95932be9e9a7d9ee7122ceea6274afcaead3a146d60efcb11fddcd2", + "static/images/blog/product-update-august-2025/atomic.png": "bef9e2a6360ad01348e9bb5bc51733e876c643ba51833fb473c59200ad31f791", + "static/images/blog/product-update-august-2025/community.png": "828124d9bb8fe39552cc08ebfa4d5aed5e59787180529ee2ee7b2db5ad716661", + "static/images/blog/product-update-august-2025/cover.png": "8d30ef6804646e7e047d599035388c484fac37e944b81fee27d3418a86611711", + "static/images/blog/product-update-august-2025/ga.png": "8de2ca85c31b9a2a31084bef640baf2cccfa6de64068d5216d2c8999b9d958eb", + "static/images/blog/product-update-august-2025/hackathon.png": "28992146150cd8593ff687d238aca7353743160084345180c40eff831a3d71e2", + "static/images/blog/product-update-august-2025/new-region.png": "be962c8797bf7e2807d67a79be60140d006b232d15cb68afb86a890583ec2f5c", + "static/images/blog/product-update-august-2025/new-ui.png": "d8f91728fd92bcad362466080d9cc2985f24282d5d090daf2275c3c7da8fb651", + "static/images/blog/product-update-august-2025/terminology.png": "882a3b8bf7f9872b0da131297f387273b4a5919144e9923ac4984a1fa5c34091", + "static/images/blog/product-update-august-2025/timestamp.png": "ad18c57ad55420c29c5f94b10aed2d5abd4dfe27f697164d8e4ebf43d5302250", + "static/images/blog/product-update-december-2024/community-recognitions.png": "4788c28873bb5ef0156b0de83ec539163d10957d7327b7a1805a229b47427af6", + "static/images/blog/product-update-december-2024/cover-image.png": "6b9505e3b2bd7ad12627ad77f3536875c99746503d18d5bad3be2dd5d8420ae4", + "static/images/blog/product-update-december-2024/integrations.png": "7068dc0318c09c599ff7ace56f79d2a28ad5d78f2fa872a3290a5b60e287f569", + "static/images/blog/product-update-december-2024/products-features.png": "795d983c943e35a908ad434adb4fe42c0d33e0e5d5f558f858264e5ed2fed351", + "static/images/blog/product-update-december-2024/programs.png": "bb2cf13f5f47fbdad8fab4a4267bf2260103fbbf6983d4bc3d1cd4fd0d8c41d1", + "static/images/blog/product-update-december-2024/runtimes-sdk.png": "20b9f135e5bcc221ae669e801afc1961a4823fb73953f806158eb670f2520836", + "static/images/blog/product-update-december-2024/runtimes.png": "2db52b3b6b4ab884c2ed66a6c9e3ef809da381a10215b86883e87260c58f2e5c", + "static/images/blog/product-update-feb-2025/community.png": "6ad8e516270d1a6cea3a20e095218e923b584b98246a4abd359a999d660db12a", + "static/images/blog/product-update-feb-2025/cover-image.png": "8c1704f883723793b8c5a34e855cc2dc444f7cbef5569cd55973255b455341a8", + "static/images/blog/product-update-feb-2025/new-version.png": "bb559c8d6279bcd764eb8106f3996e7e4a923fc869f61423d4ce1c3a4f2315cb", + "static/images/blog/product-update-jan-2025/community-image.png": "f23bc09c03432cfefd306b289f060fc4c9084a73161757b24e0f749d6ad5e009", + "static/images/blog/product-update-jan-2025/compute-image.png": "7d0fbd8ce743ef589c95367c214e81f0419878ebfaee8a36716ae26b18fd3217", + "static/images/blog/product-update-jan-2025/cover-image.png": "52847112b10ea20bff66297daf4ae3fd4e23a6b1b9d9e640f70de52fd8863c1e", + "static/images/blog/product-update-jan-2025/partner-image.png": "8ac56494d7c307a5934f5eddff0b52b6adbe5bbc66dd3e5cdc8075ab33473e0e", + "static/images/blog/product-update-jan-2025/push-notifications-image.png": "3f6826fb8ac5664af655a144f3168c2022a85f401b6c3287e8eb7b11f244c4c2", + "static/images/blog/product-update-jan-2025/scale-image.png": "2db3309abd7f302037bf069ffd9a10cd39cc8e16a8d590a67ebfeb26adf0d01c", + "static/images/blog/product-update-july-2025/community.png": "a7be4e1d1a64425a272dbf5010775b1c26a0e9006ea006647d15a8cb818c40fa", + "static/images/blog/product-update-july-2025/console.png": "f8aa56c2c370bb8624c397d477dfb089c725be9940a4d2e5d2f131df0ba6ced7", + "static/images/blog/product-update-july-2025/cover.png": "a54c4c2a0d3b33bab33162e1e6144527b312bcaf54a74f058bf2bdc13dc375c9", + "static/images/blog/product-update-july-2025/increment.png": "af1669507a2c5fbb40f553ba939e6ad9540761724f7b4194e45c99f709d1d4bd", + "static/images/blog/product-update-july-2025/otp.png": "f2dcb9370d5268c90d0b77058ab119d2d1e713bf42dc4716fa258d6af44b13b8", + "static/images/blog/product-update-july/1.png": "e8d71c8584d1885bf5218309ae0f69c19c2be0117e9d828ba256ea7c03c6431b", + "static/images/blog/product-update-july/2.png": "c69fdc687770e5562097fb30bf3f82ba54d7208faae9805faf3677480ba73857", + "static/images/blog/product-update-july/3.png": "294885600936e8fac5200ce0c4e6dc7608877d2c51ad50cf0d02827fe4c43d6b", + "static/images/blog/product-update-july/cover.png": "51ffb9350bd701c6f6d8e66dba5c1b77bac2265f91e98e095d30d3cdeaac6b00", + "static/images/blog/product-update-june/appwriter-testimonials.png": "760c638084086945e4a3f485172b9582146ef8b40e8b4c0b657b547564f07fb4", + "static/images/blog/product-update-june/messaging-page.png": "e54fc2e1a401bafed8ebbfe2e6f2c6fb2154517b2ee140bc65711e9e7cf0a5a7", + "static/images/blog/product-update-june/product-update-june-2024.png": "e959114fd6a805a7b9993231d01a99f7830423705e62fc867466ed98b47ab549", + "static/images/blog/product-update-june/public-roadmap.png": "b3e362a46df4d3615d855e141f8935d962e95bf6320243091512b90c64453427", + "static/images/blog/product-update-march-2025/cloud-backups.png": "b8a24ab38fd88ce1711eb1b3ae092cef79e27308c76cedec576fd8667337fa77", + "static/images/blog/product-update-march-2025/community.png": "c80a86aac99c2842405f759bd18dbe21949deafd64d7d8d6d8bd062758b8daa2", + "static/images/blog/product-update-march-2025/cover-image.png": "8af5de49ac4d254d0c065dc6db20e359b82c3edcc0c8a5e11cbf39879c29d201", + "static/images/blog/product-update-march-2025/mcp.png": "b8a35421c162e2f8732d48bd1c4068b082760060e3fa0e0b321a1812fb7a7748", + "static/images/blog/product-update-march-2025/ph.png": "7acaffcf4e340f32e87ba6700a868556d60d20d3739c4a9c24370e60fe6a2b10", + "static/images/blog/product-update-november-2025/ai-suggestions.png": "9ce22aa108acd74eafee9ad3a1ced5a621a9ebe363317f737de7f5fc9dc05bc8", + "static/images/blog/product-update-november-2025/community.png": "1e4bb826c9f59f8f25227c9f66abc352eeb2b05d5931f78a55b13923e5e82abb", + "static/images/blog/product-update-november-2025/cover.png": "5b86054f0667071bf55e6472d42a8f9595223ab30a4881b632c24a2ee1e4260f", + "static/images/blog/product-update-november-2025/db-operators.png": "5a47c97c7b9375a4f092dad0c6e4e00af3fcabc3e6ee50b69a453c671abea9f6", + "static/images/blog/product-update-november-2025/elevenlabs.png": "738f42a1d23c052ff640628cf3b5f7a86a60b108b9c76c2f6e27e0df15b92e88", + "static/images/blog/product-update-november-2025/nextjs.png": "b26de9e699301b57679586039325a025418cd5a112241aa612fa6932b310e083", + "static/images/blog/product-update-november-2025/open-letter.png": "379be3baa6c4951e339be95a1527c7933a13f49b398e084f4731467084172893", + "static/images/blog/product-update-november-2025/skip-totals.png": "4442eca1e09f7af94f42e43e31572481c2fd4be11952dd7befd0894b1ff5fc5f", + "static/images/blog/product-update-october-2025/cloud.png": "0fb6384648cef7d66bf95f38a4f8aa6bb53ad8b4852d315c1735d569c8003f21", + "static/images/blog/product-update-october-2025/community.png": "dad71034799e12ce220e43720cf17363b584421ac642e940f4ddc08f9398fdcd", + "static/images/blog/product-update-october-2025/cover.png": "226ed96e936bf2fe127aa2d1790138e48eff3b29812c9c85d85aa1dd986bdb0c", + "static/images/blog/product-update-october-2025/nextjs.png": "ac5e947cc9958a8a0c2a9ccd69dd87316a1f04100c5b08a5a89acfe535ed6130", + "static/images/blog/product-update-october-2025/sh.png": "77c2d221a62628218351df772d0b984ea6bc736f18025248dab3f9c53f75ff86", + "static/images/blog/product-update-october-2025/sites.png": "9729bfc28bb54a6ea863bf3dfe712ad9d28eea4b466d1d4a531098394476e3b7", + "static/images/blog/product-update-october-2025/tanstack.png": "818995a6039dff01bbef175b5aa78a2a5d5fe0e1f50155e1ee837b4093f58bbf", + "static/images/blog/product-update-october-2025/transactions.png": "3c270d858a9c889931a2d60602148f2fe858e65d8994ea6d44f7b9304747dbf0", + "static/images/blog/product-update-september-2025/community.png": "a311760d0241e179a1ee76ff2019c6c07157ac74afef841a646d22f5ca1416f5", + "static/images/blog/product-update-september-2025/cover.png": "4ef2ef59c01d848bdf6c23ae607ad13422972eafd7e2b2464ca9923bf42752b3", + "static/images/blog/product-update-september-2025/hackathon.png": "2c81ccfd82f89033d2ce7299bbcb386745d94392e0399b54a3dbd4c601c2f833", + "static/images/blog/product-update-september-2025/mcp.png": "75b4a125edcfcf16bac6ffc1e5f1187afe2fbf621caa4bbbf93599b700e27450", + "static/images/blog/product-update-september-2025/queries.png": "cd9e7c241b62a760c0bda18b68c4d15da818ef0d9f8a658fca8d0e1c3bfaad3a", + "static/images/blog/product-update-september-2025/spatial-columns.png": "5084be564f227e0c08da346b55df5138afa498f37bca273ffad462e4bf2452ee", + "static/images/blog/product-update-september-2025/turbopack.png": "a8f79653315fb94995126ab7362bf2071a0506567b03543baebe0c464b8d8db8", + "static/images/blog/product-update-september/1.png": "fd7cc2a82a3bf5e76b0f9d13b5627b259f3b658133e9531c3c84ee4d397b9a0c", + "static/images/blog/product-update-september/2.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", + "static/images/blog/product-update-september/3.png": "88d88af3bddbf105f069222f490a8df5150c23a1824182129fca002e090a5c31", + "static/images/blog/product-update-september/4.png": "3926cb595b03bb7f8cdc20ffa052f09417b703b8e196277527c2940d97e7680b", + "static/images/blog/product-update-september/cover.png": "1b290f4f7dbffbe1eafd820226e9eed64000ebe7a4c644f5df1c9255038d1f7c", + "static/images/blog/public-roadmap-announcement/cover.png": "d583db33c033125140fbcd31287572441d95a51d23f594ffc2feb3c8592cce33", + "static/images/blog/public-roadmap-announcement/framework.png": "04238693280f342e3c195a8fc503c83e6eee16181b4ef9342538bd05b448138b", + "static/images/blog/push-notifications-best-practices.png": "64a386549ddf9f28ea1635696f30b57e3c1272b59792ecb8c1d3bf603b302af6", + "static/images/blog/race-conditions-db-operators/cover.png": "6fed62916e9c4625093fb22ee70488744d17d1933fd0d29d6916b63c67c25333", + "static/images/blog/react-admin-template-sites/cover.png": "bfbc39ce6f458ca9930f144ba519d15b6ebedb4988bf912d3fa8682f7f45dd94", + "static/images/blog/react-nativecross.png": "25fb3f55f8dec1e4e1b07d4995d695c1f53579b2e283fe9894fe932591f01896", + "static/images/blog/react-protected-routes/cover.png": "0b9257f28c839295b8f31f382cb71e151729abb0ce02625b4f0bf2a67899a005", + "static/images/blog/reasons-to-run-your-ci-pipeline-on-appwrite/cover.png": "acc0bd5633739773a0641e8adaf2cbf0b3f88f504c5407801d155b507f055fbd", + "static/images/blog/receipt-scan.png": "475fba54e52031f8b05a759bfe65ed54c1aa52a64283a47c27fb20c8dfbf4b3d", + "static/images/blog/reducing-cold-starts-appwrite-sites/build-output-sizes-nft.png": "19f7c37c248fa871786fd8a47064475520e4dcb1df36c996871f3983fcd72495", + "static/images/blog/reducing-cold-starts-appwrite-sites/build-output-sizes-non-nft.png": "8b814c3736045e286e95e0866f7d61ae589ab8492985edce7c6b23e18d84dc7e", + "static/images/blog/reducing-cold-starts-appwrite-sites/cover.png": "17a950964dddaaafab1461ee0dbecd6170f4002d357ecdbd7e2152028a39f63e", + "static/images/blog/relationships-are-out-of-beta/cover.png": "7f2a8e8044de859606f69191ae3fded84ad2211180a5183d9b5cc2f5d2d60e9a", + "static/images/blog/remix-3-whats-changing-and-why-it-matters/cover.png": "258303cffbe98e2b76642220c091492f0c77cfedcd1989167a92683709f5f38d", + "static/images/blog/rest-vs-graphql-websockets/cover.png": "74e82a5592d964caac5425b6846c0c361e5f516867f8feaf5b2baca9b7e69860", + "static/images/blog/rethinking-saas-authentication/cover.png": "0240c259c4ab551f07c6a3c7ace5768fe6842b33e6509e34ae624e47d9308d40", + "static/images/blog/role-based-access-control-with-appwrite/cover.png": "9ebc0f8f111d54fe081d93ec5fcda8a27de5c36f2f338f544a23307033caea4a", + "static/images/blog/runtime-functions.png": "db81dfb18e4a8640e6fabb5045240e63cd7af6159039256d66ee8fe5c3bba70b", + "static/images/blog/runtimes.png": "ef87c9f81144bdb94469d65b11c921a44e7ca332e12723374750223adcbca503", + "static/images/blog/save-weeks-managed-backends/cover.png": "3f1d7e5013fd73db2a8b4e85f73f3d9cf64dc1aa2af80c81ba97131907a4c9c1", + "static/images/blog/scale-plan.png": "b4d945f876c918fb008aea7ce4dab52a98a354e86d9fdc60f3acbebbffd44995", + "static/images/blog/scaling-ai-workloads-why-mongodb-works-well-for-high-velocity-data/cover.png": "c675217e206df1c704665bc2831e5cc550b6e418af505a3b8ac7167e7919693c", + "static/images/blog/scaling-applications-with-appwrite-what-you-need-to-know/cover.png": "798f8c59a54818a0117ef75bd677b09801c22b2c2e89497e96e7a329a752a046", + "static/images/blog/scan-receipts-with-appwrite-functions/environment-variables.png": "9282cc7fdd201939e274c67421ffc796a818fbe9309c1b75a624bdc662be6fa6", + "static/images/blog/scan-receipts-with-appwrite-functions/events.png": "e7901570861d7497c7b2088d4c655c5278ba4e52b914188c34e05ae0eea136fd", + "static/images/blog/scan-receipts-with-appwrite-functions/scan-function.png": "1223d882682d8c34406526e5764968f0de32a5668bd6339cffd4bff0efb75485", + "static/images/blog/screenshots-best-practices/cover.png": "85e3a467827c2f52541feaaafeac90e411252dad0ff3a0b9688e31e782836160", + "static/images/blog/secure-user-data-non-expert/cover.png": "763c1181c63cb099f1fc19da5044287690d9ce5d7c80005f368c36b650928b80", + "static/images/blog/security-is-a-revolving-door/cover.png": "1c9bc30487829ceb8659da7920bcb9d90cea6201e9b1322bb0f6cdc68eba4627", + "static/images/blog/security-update-regarding-the-axios-npm-incident/cover.png": "8f05bcaf2aad7786b043d17421f69fbe19f49b11c4c10a576898c2438076e130", + "static/images/blog/self-hosted-vs-managed-backends-a-practical-comparison/cover.png": "9a819d76faf91a78fc6116b4202f08290d24a6002bcdd737dca2f85bd2546793", + "static/images/blog/self-hosting-appwrite-with-coolify/add-appwrite.png": "b1efadc68d075357c32698569856f7cb106ddce6caf3b88e50698a1ef97e283a", + "static/images/blog/self-hosting-appwrite-with-coolify/add-ssh-key-to-digitalocean.png": "0eb128b8cdfde988da008385254e1c49621e4b98072f3959267a32b5765df827", + "static/images/blog/self-hosting-appwrite-with-coolify/add-ssh-key.png": "8bdb1b8751fbdc89cb9f5b07af9c4a8c4bc825c7035899e9fc5f2ba1ac7700c2", + "static/images/blog/self-hosting-appwrite-with-coolify/container-health-checks-failing.png": "e0004ca690af0625ce5e11092e3938fb93c2e37a3f1a0509918ea58d629ce47c", + "static/images/blog/self-hosting-appwrite-with-coolify/coolify-dashboard.png": "aba66450b2978490f2b712475e67c39615ffcfc79a6fea235ca155c3c5f882a9", + "static/images/blog/self-hosting-appwrite-with-coolify/cover.png": "ef2ee53a0dffacc4a25d5012267a124718dc6664d15457d7ec56bec9526360aa", + "static/images/blog/self-hosting-appwrite-with-coolify/create-droplet.png": "33382b0e16e5ad34a6df88db61677d617bbc7fbbb0dcd7e0197ac2675f302ce5", + "static/images/blog/self-hosting-appwrite-with-coolify/generate-ssh-key.png": "9c4ac49fdcae8d1004aec5246e95182026aa62677881de1984578671ca56fd22", + "static/images/blog/self-hosting-appwrite-with-mongodb/cover.png": "76c2df27f2a364ac71ae0935cd77539ee576235617703a97a0a806111905040f", + "static/images/blog/self-serve-compliance-what-teams-expect-in-2026/cover.png": "602d334f21add74866c8b2089dbef96c88cc2c9b7b5d6409fca2978d61c59ded", + "static/images/blog/serverless-functions/1.png": "65f0b27672db8ef96297826faac64462a94ec242742d970e9ec31165d4cbbdda", + "static/images/blog/serverless-functions/2.png": "cc910cbce07637d514f2af3144be469be5d50ef4f03c30cb09d8071edd317a70", + "static/images/blog/serverless-functions/3.png": "500f8b99aa7dd677fe44d61ffb2fb864b04fbeea1e554c5eb9e90dca8c756375", + "static/images/blog/serverless-functions/4.png": "97a632ac80a7865ffa71266af64d74f100ab6434c40b417647c75e9aad864cce", + "static/images/blog/serverless-functions/5.png": "c0ff3048d7ae371e7c08dfe561708960c685f09c5963d97a11e50872ef3c4571", + "static/images/blog/serverless-functions/cover.png": "b36d7a21f715bacda40dc581c71cbc9a9070c30cfe687d83374018cd65a418a6", + "static/images/blog/set-up-google-auth-appwrite-react/appwrite-google-oauth-2.png": "b2b1de0b89e7987525d7345eaf000c29f55c6101281490755bab3828d5ba180b", + "static/images/blog/set-up-google-auth-appwrite-react/appwrite-google-oauth.png": "2299e7d346c5d5e7613e75ca7854eab549158ca6d9fdab3c74b437aefd98ed47", + "static/images/blog/set-up-google-auth-appwrite-react/auth-page.png": "20b08978d29d8406f57afb6be971d26b6679c38556e7870625709d3f5803439c", + "static/images/blog/set-up-google-auth-appwrite-react/cover.png": "0aa3d3141ae9c2ba9c75bf5e38318d7794726cb3f25f7c71513074b655709546", + "static/images/blog/set-up-google-auth-appwrite-react/google-cloud-create-credentials.png": "1625a4cf8e47ccdf7016aa4612ba33189ac908825b21c0437687595bf6330f23", + "static/images/blog/set-up-google-auth-appwrite-react/google-cloud-view.png": "b5a21ca5874bb4b3e807fed311726c61418c068bb34614edbef430081af7b9b2", + "static/images/blog/set-up-google-auth-appwrite-react/google-credentials-id.png": "2f49f2d3627d68e858e4e6e586a9afd279b609fb042ba0dbe0312f7f5af05a0b", + "static/images/blog/setting-up-google-signin/appwrite-console.png": "099275f71a18213a75668e859d0f323b7b2dee412595ee98ba803f4be37ce730", + "static/images/blog/setting-up-google-signin/appwrite-google-oauth.png": "ab87322f7462e29af331d1aeb65061434a7703c0e2474cade7f1ae6862fd18c5", + "static/images/blog/setting-up-google-signin/audience.png": "3f4f3907a41bd5c6d097be5c8a30855a29d98cbbf2762468178fe9b7bee6ea29", + "static/images/blog/setting-up-google-signin/client-details.png": "427ab1d7ec864d240ad3d9ecbd3884915d29523cc750bc60b5336f31160284cb", + "static/images/blog/setting-up-google-signin/client.png": "2b6d7c396656496b2166b28960d707d335615910777fa71c9cd666f5044c4b4e", + "static/images/blog/setting-up-google-signin/cover.png": "d622ddb9a0caeac69f642b57a2db337143bad94200cd0fa145f84a615441fe54", + "static/images/blog/setting-up-google-signin/google-console.png": "baf500b10376bfd2f73090bc3e10748f04c67c648d1f22ed0bc04868ee17b331", + "static/images/blog/setting-up-google-signin/scopes.png": "b869f5a93da19ea378dbd640abc69ddc664105e317534645d2b691562b260e27", + "static/images/blog/setting-up-route-protection-in-react-native/cover.png": "4fe0cf00adb5616042fe6284832738496ee167e6880a586a8a18a19f57e4f268", + "static/images/blog/setting-up-route-protection-in-react-native/thumbnail-1.png": "04e1109e882cc058fbec11c5abcc38acdbcd302ca4507950488cbd15ee65584d", + "static/images/blog/should-you-stop-using-otp-sms/cover.png": "99f46c16e5fcbeb72c2458edddbd6b579ad51495439e7b57ae1ac7b85e1f30ce", + "static/images/blog/simplify-messaging-twilio.png": "7027ac2d6ca5289f568ca0be260d0b670445a1eeaef058d8fef7964768466ded", + "static/images/blog/simplify-your-data-management-with-relationships/cover.png": "96f7f4b69ca911140d7b92fa919816a07250d513ebc4f5d6a161686a6b8cf618", + "static/images/blog/simplify-your-data-management-with-relationships/many-to-many.png": "c165776d863ce9baacd4a48cf01b64ece027fb23e58ec8a4971ce806445b7a28", + "static/images/blog/simplify-your-data-management-with-relationships/many-to-one.png": "656255e5ccd16c9c5b82857544d5e9b32162e473e11798f5f6fd71357cb3041e", + "static/images/blog/simplify-your-data-management-with-relationships/one-to-many.png": "7c61c920352428959796a23dbfaa52a69d5bfdf696a721510e5200fe7f5e4b78", + "static/images/blog/simplify-your-data-management-with-relationships/one-to-one.png": "c8baa424f8ddc24d3ba4c768a0c9acce89fa7208172c22ce734b973d7f457b0d", + "static/images/blog/sites-announcement/create-first-site.png": "f8533eb166c15a1acbeee7b2ba2ff3427682419be6f4ef80ebf1a17d97acbd55", + "static/images/blog/sites-announcement/sites-console.png": "3c9ff1dab9e15398ffd0b5d30376372bfa6fc0fba261069f951426a08e63426a", + "static/images/blog/sites-announcement/sites-cover.png": "d29c4fd070a75cc1417f7fdefc7d8c7e7f05977a2966c6edf5f39e2ac3d79bc7", + "static/images/blog/sites-announcement/sites-templates-add.png": "8667c6a812936b305f97e90119a282f43b057de9112d2103d66745cd6e9ffa58", + "static/images/blog/sites-free-plan.png": "8d259af9f107f60569fa2b1913262e5ec060f94cb6f9d3bc498d59251ac0b327", + "static/images/blog/sites-templates/sites-templates1.png": "3cd394485e6741609054866131a16bf8b655f1a5c1fe13abea85662173208705", + "static/images/blog/sites-templates/sites-templates2.png": "8db70809ed87553940827222504ad7db564787054ec482422de59e7a2382680d", + "static/images/blog/sites-templates/sites-templates3.png": "ae9c934f4bfe9a0019e92cba473f7430e068f78514fa252861fe786e08fcfc37", + "static/images/blog/sites-templates/sites-templates4.png": "28038dd9e64422909833f932d3c4bb8b94e4f8a42c1ef18c57c26faeb64f0e66", + "static/images/blog/sites-templates/sites-templates5.png": "264b5e1ad9f135c4e81f4eb94acf79d18fccd97c8a0a963e9d18ecfab0d314e9", + "static/images/blog/sites-templates/sites-templates6.png": "3a76eb5616e3c1d6e7b53564773629562e3af14ac75a3282215c680b65a68986", + "static/images/blog/sites-templates/sites-templates7.png": "b084811d5a122b706f06ff6fcd09c48832c1e8f7869f2df49e6d21fdcbab65dd", + "static/images/blog/sites-templates/templates-cover.png": "2a8fdc745cef0f84ee5b334c33cbf72e1664d1593626e44e40fd6d5aeb1852c2", + "static/images/blog/slogan.png": "d16486efecbe17bca9b836260288e76a7af3f32121bfbd8216c39b661fdbdb94", + "static/images/blog/smartbee.png": "15fb2e10cee3d17fc5bb0c34a940ad088afefeee4542f690fe32a8246d5b1cab", + "static/images/blog/soc2.png": "95c353fe82170f28bd0ac61676ac3fcf0dfddcfadf9bdf8d13144bde68a57a0e", + "static/images/blog/social-media-auth/cover.png": "d67d4b4315ada4fd04fb9b2d4f34ead222381f8a87d26ed84b4c1b7a1e063e4f", + "static/images/blog/socials.png": "bf3cc28994b58f92324fee5b35226ff54b114399f7d719480910d29371ca74f0", + "static/images/blog/solving-the-headaches-of-screenshot-automation-and-why-an-api-first-approach-works-better/cover.png": "9e34877fdbcc3439de5a858704c8d18ced08236ac8e3c46ba3bdba275f2b365d", + "static/images/blog/sound-null-safety-for-your-dart-functions/cover.png": "73fb957b009391b97b6498acb6747cfb44f1ec21a3d465d7ba2716c807891fac", + "static/images/blog/spacex-acquires-cursor-in-60-billion-ai-deal/cover.png": "885a59baa3e35ae43daa9d48db40533e7c11305411d9df6016da4240e9bf1fc3", + "static/images/blog/sql-vs-nosql/cover.png": "34afe294601659597c290ce1f2766eb2cc0b968775bc23dfe58dea3807339621", + "static/images/blog/ssr-announcement.png": "c96acddc105a9d8dafaba838f3400766ab0f95a130eac7bc52f20daa325ef2c9", + "static/images/blog/ssr-how-to-create-sites.png": "903b06eff29c30d05e51511902bb315b388324a69b11ab322e699727a6d00296", + "static/images/blog/ssr-vs-csr/cover.png": "ed920be5e77c9bbe55d766c41fdc0ba775b01e110405ab7a52c6292d91d156c5", + "static/images/blog/startup-accelerator-guide/500.png": "efe53e18dc264270169a03d78d5a819eca1a40860609f1fdd2e088917b2ef367", + "static/images/blog/startup-accelerator-guide/angelpad.png": "e9bea2175d041b799cd9cdd65533dd1063ce96e97ebeb20695b006ec6af939f3", + "static/images/blog/startup-accelerator-guide/cover.png": "da7b17bb46a5c7030ebf2db8e48c21dc6209c333ab01e8db0cc0f8a387429b37", + "static/images/blog/startup-accelerator-guide/entrepreneurfirst.png": "cb9b3bc9b2c2951a58970e0df20a45d9e7fd557029be0c730dde0f69db2129ea", + "static/images/blog/startup-accelerator-guide/masschallenge.png": "71dc8f327b05441a4174d98f3db717f44bc1b8fa5c80f619706608dfd9ce524e", + "static/images/blog/startup-accelerator-guide/plugandplay.png": "13e0f63304b07153ec4b03e2e008540855812dbc7c82d7cdc97bed593d67ef63", + "static/images/blog/startup-accelerator-guide/seedcamp.png": "afb90d411d3e63235fe6bb8f984368d6034a88d7f807bb00ef01d21266710eb0", + "static/images/blog/startup-accelerator-guide/startupbootcamp.png": "309c0da53e450c510f67e99f134da0784dbf4f90aac1709a2e8417368f2f4697", + "static/images/blog/startup-accelerator-guide/startupchile.png": "0e4fdb93daecb68655e5723a180ba7fdadbf6695aca0b7a322541f0b1e46c856", + "static/images/blog/startup-accelerator-guide/techstars.png": "c5598af2c3d4f6e0b8b33c674940f1b1cdde2d9d7dadb1fc67954b087aee3d3f", + "static/images/blog/startup-accelerator-guide/ycombinator.png": "2b1e95dc199d8cf9f76807d5efe1d98fce95c94dfad9d481d98ed8c3c7d32496", + "static/images/blog/startup-dev-tools.png": "a14e2294d6a0205ca3050d19b80fce58806b339dc5df0126471f65d7d286dab6", + "static/images/blog/startup-incubator-guide/1871.png": "c0b3419fb33e5e4655dc197a9c2b977620ed0e846e014ab0247e6453e25b4d95", + "static/images/blog/startup-incubator-guide/antler.png": "df585ccdb67c3ca9f3ca6ad951d0d964d198cd61ea86407ef1d5566520eb89d2", + "static/images/blog/startup-incubator-guide/capitalfactory.png": "b0152587a8be4f57c925292505165dd3ccfbf6db85682ace5a47973991eeb74b", + "static/images/blog/startup-incubator-guide/codebase.png": "101e0e41da0649fac4367877600103583163457164bde5f25501ec236b119b0a", + "static/images/blog/startup-incubator-guide/cover.png": "3e3bc1763c5fc6477035ac3f4ad5ba1e3d012f32da9f52677be493eee4c090be", + "static/images/blog/startup-incubator-guide/dmz.png": "bbcbc9199b4acf9f7c860d216815322c92e33b6d12c8323adb2a92ebd022bcd4", + "static/images/blog/startup-incubator-guide/idealab.png": "836810a537d6df976a34d92ea4aa96420ac3e6f2b86f0a7543406b282da6fda9", + "static/images/blog/startup-incubator-guide/mars.png": "396cfbacce58bc6fdec1fb9436a1a9a476c0f2a39ef0f911566b13e8a238778a", + "static/images/blog/startup-incubator-guide/plugandplay.png": "a480a6ea903b03992ebf29805330d862dbe1bb4a8ab379bb48389d3e8375b033", + "static/images/blog/startup-incubator-guide/setsquared.png": "ee3f4cbe7123d0fe1dd2e94fed92ef0c38c9b1c3a66410d80497ac0af58809e9", + "static/images/blog/startup-incubator-guide/stationf.png": "597669c0047f30acaab5585e8d229611b0466ecfefb654ccb26b9f1f596b820b", + "static/images/blog/startups-benefits.png": "0e5806050824dc102cde396e1a57a3bfb2f3b01aa937922cdf5dd7611cadfcc5", + "static/images/blog/startups-ideas-2024/cover.png": "3e8856e6fe312352525a2627dc6123e22b6eaf0715a76901e4eae67ceef4be3c", + "static/images/blog/startups.png": "37f079b565bf469f288d61206a21e91abfcee224556160acfe0942bf4f370955", + "static/images/blog/state-of-audio-processing/cover.png": "852a75d9644ab2420fa56b2859f85e3ae8cc857736671cf3dd2df127739b5260", + "static/images/blog/state-of-audio-processing/fourier.png": "d18d8e91ddc55a17361c7bacaf2f6d3df1c692181287257ff9dbd936b0fcc54a", + "static/images/blog/state-of-computer-vision/cover.png": "3566f4685a9d9e242d2d93e5ac0dba17669f8252616c449b0b21afc7da909c5c", + "static/images/blog/state-of-computer-vision/kernel.png": "e17954c3cd0be5b67061d8989eaa8348cdd99bbc5d6ed4e3cf34d4d045ea08cc", + "static/images/blog/state-of-natural-language-processing/cover.png": "a2884b41746777e3d1aebe5a36e63dd7d66237310237e23d95a21024dc1e249d", + "static/images/blog/storage-previews-vs-ssr-image-optimization/cover.png": "f39343c285b729bbe56b88c1b41b6b9653d2b10a2a56ed137df80cc11b561ff3", + "static/images/blog/supabase-alternatives-lovable-projects/cover.png": "1ce2b47a11901ea6fe019d8cd41a3e19a4086e748e8d6a3447e3d16e59058bae", + "static/images/blog/sveltekit-starter-sites/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/blog/sveltekit-starter-sites/congrats.png": "337bf14abd2050425541426b9f9b982b63e4fda79b66c7af4753587a5f71c877", + "static/images/blog/sveltekit-starter-sites/cover.png": "444e99829fa6f1642a1fe497d10f09d6f00c8a553ea56287fe6644e33b8f3777", + "static/images/blog/sveltekit-starter-sites/deployed.png": "5e3f0b120f9611b495ee3e85c67eaa63496c22a9453068dadadd44060e7c7639", + "static/images/blog/sveltekit-starter-sites/deployment-logs.png": "3052945334ee267ed3a54e79ab782b8e91a9b96a963ede74eb9ac769239d28aa", + "static/images/blog/sveltekit-starter-sites/template.png": "8d1e7fe52725bff2804d43e38c2cdc06b73d29072ceb25c321e8aa18a3751d00", + "static/images/blog/swift-101/cover.png": "d9ad9fd4e8c4b12216bb6b0c7d1d40c75afa0642aaedb66d89d0dc9a6f85e096", + "static/images/blog/tanstack-start-npm-supply-chain-attack/cover.png": "3d3bc9e64849b2777371a7da00982afb9cc591afc09572593415a700e3df1a89", + "static/images/blog/tanstack-start-support-in-appwrite-sites/cover.png": "1e01e95acb829ec3e29c709d4a49e81346d47fe96bc12a0c0e48f209a0d88fd6", + "static/images/blog/terraform-provider-appwrite/cover.png": "faf8a32b84ed48402fa6a771993fedcd136b024896a1833c0f91a15196d8a393", + "static/images/blog/the-appwrite-network/cloud-regions.png": "bfda330a650bcc4295d1b6bdec9d72287522061ebbbac8b0828d29088fa30563", + "static/images/blog/the-appwrite-network/network-cover-image.png": "b865fc4e14fbcba8e4b68ba5025d5999ac01e40422e18369a9e0649bdd99b2e1", + "static/images/blog/the-appwrite-network/regions-edges-pops.png": "0cf9a1dc9cceafc9be34004396e171b20168ae333efc0d557c8268a91cc83053", + "static/images/blog/the-complete-vibe-coding-guide-2025/cover.png": "da31e0f7574dc2ef96fe81b11969195f3ddd7b5cf0993e0d9d60e36b830a2e46", + "static/images/blog/the-developers-cloud/dev-cloud-cover.png": "6db372e6a9f0a6322eb6737b62a593a75ce415585e92e9e739577b879d17342a", + "static/images/blog/the-developers-cloud/graph1.png": "5b043d1cb19861ba53b75983839676a803042e0cec1372e0bcd6187bfd8cee61", + "static/images/blog/the-developers-cloud/graph2.png": "658cc29ef0a4911f6552ab97aeff2c1655d5b31818dc35c7f1f85e2a47618c2d", + "static/images/blog/the-evolution-of-team-appwrite/andrew-red.png": "9caca01d9945c8550d90302ace445f81a8db3d5d1cbfc11f1a13409f20244a40", + "static/images/blog/the-evolution-of-team-appwrite/cs-dojo-tweets.png": "20ea717bd8edf77fd839dbd3aa843da421487d7eb6e255dddddfa6016c7556ea", + "static/images/blog/the-evolution-of-team-appwrite/eddie-jaoude.png": "333d49c3cd39d42e3b11c13bbce329b6a4e80664d4489fa497f3a563a3abd793", + "static/images/blog/the-evolution-of-team-appwrite/hiring-cover.png": "c9a76fd149e9d6b7733cc0f23d406071f45c9336c4c60cf4abc94bcf2aeb0070", + "static/images/blog/the-evolution-of-team-appwrite/team.jpg": "bd139e5fc9f71de22c08d07e0d09b91761d9f3b63852454203f53bc015695e53", + "static/images/blog/the-fastest-way-to-launch-your-next-side-project/cover.png": "520c900fbf50be39555514f30ab6e5d467f22fa6c0b45ae0681ed83704d3ddaf", + "static/images/blog/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite/cursorappwrite_cover.png": "33061608299b5fb82dce8db7215ba78dec2a4ec78153c7cec4c8d8da19d833a9", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/break.png": "a0da422099faff15de9f3995f6bc3ac9513784f1848918e14be698b86f951c60", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/cover.png": "374782c41e19e07f65ed89f069d398a0eabedcb79251debd28629a8ca03d8eb9", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/drafts.png": "fb8836eaaba040c82b133b5c411e7516495054a334c77f4ba1be6193ce48b817", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/lines.png": "99df0e374c0f9a29d3f964d71790741ed3b430af78dbc1bfff3f7a7096ff292d", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/new_logo.png": "9831dd57d2f8d93d6cbdc1974444767e9bd5a7270229afb93da01a1597c4c87f", + "static/images/blog/the-journey-and-meaning-behind-our-new-logo/old_logo.png": "0690abbd5e2720df68534729973ff0155c383900d64bcd297e1c67e517c785ce", + "static/images/blog/the-shift-from-SaaS-to-Vertical-AI-what-startup-founders-need-to-know/cover-image.png": "e4030cb8b735baa8f4f6eec9d0d32233011759b160882015738cda2e79da14d6", + "static/images/blog/the-subtle-art-of-hackathon ideation/cover.png": "a4007fb895ed8cb284e2409897282a784b803c199b91d58e90a2dd69f367ba33", + "static/images/blog/the-top-3-claude-features-you-are-probably-not-using/cover.png": "429930ed746a8d47a42358c99c1eba6ee0d33531d4270ac4f24594438f65f503", + "static/images/blog/the-ultimate-guide-to-vibe-coding-in-2026/cover.png": "7ef566133387995330f9b6d5df85d880279da4104aee30624b2f243ebff433cb", + "static/images/blog/the-underrated-value-of-great-sdk-design/cover.png": "9440e4f5a69b01d20796926ef3543dbba61fd1ba66e114713cf4ee503bc1d4b9", + "static/images/blog/threads-cover.png": "fa44d6cd70000ac7a62d3b9446b171f8e9fe1b27f157cb6ba2f98c1f8c043526", + "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/3-important-steps.png": "5a3ad677a3aff5f27f0ceb8b751ba830fb6e11ca5edca126df34777f378b15a4", + "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/add-platform.png": "8f055abaa1fa38a447166f712903c297ca966dc22316e864bcbd9acc45195e55", + "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/hostname.png": "e7e382b34dd86c588de0c8b8dac43b1664e322381b7f3ba448ce4042968242e6", + "static/images/blog/three-important-steps-you-need-to-complete-with-appwrite/permissions.png": "ab351d5062aa4724f1d031ece46a56d7b72d82da3d630ee60a44a4190292c7a8", + "static/images/blog/tickets-blog.png": "d6fd5a1cdbb9bcabb006847a223ee0e925484fddcc9ccf2293450bdcd2677981", + "static/images/blog/tickets-blog2.png": "ea2a12d9e520c8019fc6ff9f56f3eecac9f268b268c2c29d1d429ed7c6c93097", + "static/images/blog/tickets-cover.png": "693ce9df58aef051edb1b6779011f9295543ec6b39e70d8b08144b0c67336b91", + "static/images/blog/tooling-checklist-for-hipaa-ready-applications/cover.png": "95066aeb080e860c2f7ca34dbc0524bbf048db41eb9ebe6626e83ebf12af74e1", + "static/images/blog/top-25-vibe-coding-tools/cover.png": "ce7108cb2918ddcad9e04955172c301f02593d4714a37eac5a31c2f1167691df", + "static/images/blog/top-5-tips-to-build-an-AI-agent-startup/cover-image.png": "edaeb08b23398fd35e12b176a5b487e64804bcf884c5cf18ff49568050af650e", + "static/images/blog/top-6-vector-databases-2025/cover.png": "89150f1319bf3c66182c34304ee2b9847eddbfd9768ebe55d93d34979fded034", + "static/images/blog/top-7-prompts-every-developer-should-use-to-get-better-results/cover.png": "2dd4eb55c0c2d13b6d8a25ba63606e3047f5b50d36b450e0a8cf0e5dc6e5ed86", + "static/images/blog/top-australia-incubators-accelerators/cover.png": "42ad622b49db1044a7106aad2bbc963ceb003b3d5818b40dd738d1fc915d8988", + "static/images/blog/top-auth0-alternatives/Appwrite.png": "cc920e9920561fd7b452cb46838eec63c1cab47bdbb4f4de17b23a891fcbee69", + "static/images/blog/top-auth0-alternatives/Cognito.png": "c10f2bd1786b47af57f03ce442b50603a15dff2d33d03ffa6fbfa51c9ca95d20", + "static/images/blog/top-auth0-alternatives/cover.png": "1852498d0a93aab981d61dfa7d1dbdebf19c0ab2b08a30fad8d088c4ec957615", + "static/images/blog/top-auth0-alternatives/Firebase.png": "51f1a4e5834e73c30a52d9466eabb53efe9a6ba4208cb261d3b7954284df33a5", + "static/images/blog/top-auth0-alternatives/ForegeRock.png": "2fda4c67857f42950b9478e2dd5d7d430338181e6bf2f2a9a278e99ef1f944c0", + "static/images/blog/top-auth0-alternatives/Frontegg.png": "b43a403df558559f583e789f6a9738da6002063b103c3859b9a33d15014635b2", + "static/images/blog/top-auth0-alternatives/FusionAuth.png": "1464a3ea07290e0231491bf6c85bfef1f7d036889fc73aa1372875dad08c88ea", + "static/images/blog/top-auth0-alternatives/Keycloak.png": "2e6587589d2a08c81a6cc936207939424b0c73d2efb274061ec18b2ddc378b7e", + "static/images/blog/top-auth0-alternatives/Stytch.png": "f93d6c321fddd79e4199776d3d970b8009224c4a0a8c849064fe5f13b48478e3", + "static/images/blog/top-eu-incubators-accelerators/cover.png": "58abfd5f8bc9fdbdcac48962eb544e6dd0236c79b0d1a9eb44653eb7c00f77d1", + "static/images/blog/top-singapore-incubators-accelerators/cover.png": "23e0920dd0d94008c42bfc81fd86dcf33a497f137734098b326851878280974e", + "static/images/blog/top-us-incubators-accelerators/cover.png": "62ccae87dafd874879df0d99efc23e309817de1aa7a93e27ebee1c675207f5c2", + "static/images/blog/Torsten-GitHub-profile.png": "a1f7bf2d46428a5f3a9cbaddbcc262d91069f396ed8fb68f954ab3fd8862684f", + "static/images/blog/track-document-order-with-sequence/cover.png": "9039c2abd26cbc66aa2261dab0325e73927594210ff8a3f72e1a42709d6b2157", + "static/images/blog/track-document-order-with-sequence/support-tracker-demo.png": "20b2dfe37a112c3f8698f82626cb3bf57de28f7a97af77d2170eb70794f9884f", + "static/images/blog/ttl-cache-performance-benchmark/benchmark-output.png": "98c7ddd97079bda569d24eda0a6d1b4d484ecd8ba04512ba3add218d1f188db3", + "static/images/blog/ttl-cache-performance-benchmark/cover.png": "fafae7b6bc5ca56b697071303d46a8bd73a30c2d0ccb9f495edf8017ef897113", + "static/images/blog/turbopack-support-appwrite-sites/build-settings.png": "1e81ea56abf0e40cf486b3d91bec2821431d1952c0d3c1ac08bcd1a1ad4c0271", + "static/images/blog/turbopack-support-appwrite-sites/cover.png": "0284d5ceaeee67af91a89191893ff1fd597e8da26e4a4dad90fe817dfb9018f8", + "static/images/blog/tweet-hitesh.png": "f7a33874aa703133e28b303bd8f5ce38d610218032b454291d4738935bca1f1b", + "static/images/blog/type-generation-feature/cover.png": "c5ca682b5abf9fb719b3d0056aed821255d961a547fc83e1d27a0044d3dc3f5d", + "static/images/blog/type-generation-feature/workflow.png": "bcd3c053c900e19a7cccaadde9d94a9d6c743e52fdb778617bb7b7623cd2c711", + "static/images/blog/typescript-7-faster-with-go/cover.png": "cb9e838dd23e53a2e7d5776c9faba11ae5c6366ac27281e358885649261ddd31", + "static/images/blog/uber-clone-nextjs-appwrite/cover.png": "6cc2b5a1c56bb79d0e3777da31cd22d60459871c94874e5417458f788ae1d764", + "static/images/blog/uber-clone-nextjs-appwrite/driver-accepted.png": "0dae6fcaef9213efcc9f1e80014694f64798aed01517a2d922369bda13d76f55", + "static/images/blog/uber-clone-nextjs-appwrite/driver-ride-request.png": "4efb400863027632dbd4431950f6ac5594e4406fbaca220e2fb21e95005c12cc", + "static/images/blog/uber-clone-nextjs-appwrite/end-ride.png": "0f76a2fd400058b78b9730246e6be108a28f5ca0d36879373cbbfe50777d9466", + "static/images/blog/uber-clone-nextjs-appwrite/project-overview.png": "74bff9573aa1549a7219b148dad16f781d089be8868c8b800256a704d603b5b2", + "static/images/blog/uber-clone-nextjs-appwrite/ride-pending.png": "a63cd3f8956739337d0b43471ce113fdc0059862a0f30c0b0a40108b8921f605", + "static/images/blog/uber-clone-nextjs-appwrite/ride-request.png": "fdf54975a6506af117e7d615c639ccd034337381b3ba899f2935bcbd2de9cc74", + "static/images/blog/uber-clone-nextjs-appwrite/rider-otp-display.png": "12279215dadb14813946bbe09452670fb2e7b04dcdf924ca7e0cd8db5886270d", + "static/images/blog/uber-clone-nextjs-appwrite/signup-page.png": "78d2dd35e3cfa56225bbe0912eac6022a8d92eef59a16cfdda7251aa5c4adf8c", + "static/images/blog/understand-data-queries.png": "e85cb6ce2644feac4242000a6f7a87fb3f8e07c0b954c1cef17f0feab523c2c5", + "static/images/blog/understand-oauth2/cover.png": "f263e8dae70606276f8bba28b74a2521645cf45c969b91b4fd9975d917e050f0", + "static/images/blog/understanding-idp-vs-sp-initiated-sso/cover.png": "2a01d6d18f165d0d684dfa3d4bb5acd4712b2ed6a62e87a46025f264756c058e", + "static/images/blog/user-authentication-guide/cover.png": "b30435919392cb55056d5e82fb7fa64ed1716afcc05507abf5b1b63a16dbc91b", + "static/images/blog/user-impersonation-tutorial/cover.png": "838e47901ff914e4d1d77a0e994ab6efdb0d43fe23d9325817e3df17e2721c1c", + "static/images/blog/user-impersonation-tutorial/demo-dashboard.png": "e5f8d940207f0d3f4f06e16b10311d1b2294f95e65fb055d5c9ed4cc45cfd037", + "static/images/blog/user-impersonation-tutorial/demo-impersonating-note.png": "50bfc457863ab9f08885f4573ba97395fd36b7cb28735c9d7bc06b11e32e623e", + "static/images/blog/user-impersonation-tutorial/demo-impersonating.png": "a33348d28c67c5405d79dfe2dad448a77edb7c535fee6f04ac610b339187af10", + "static/images/blog/user-impersonation-tutorial/demo-login.png": "77ab384fd692fb5b648d507ebdb785c11ba30814aee0b1e1340466fbae744c70", + "static/images/blog/user-impersonation-tutorial/demo-users.png": "7d2bb5df84e9715a360f8d618615010e85ba4f8d158768096ebc07f004595492", + "static/images/blog/user-impersonation-tutorial/impersonator-toggle.png": "e7d3e0670b30d9fc988b6fa5fd875862776c5b685f46d2d80e10a8b51fc2cb02", + "static/images/blog/user-impersonation-tutorial/project-overview.png": "80e9c05ac34a4725bbf77dd7068e44a947b34ca53b6984ccfe3cdfcf9ccc757a", + "static/images/blog/user-impersonation-tutorial/table-permissions.png": "8006587edcb02c3c11326e2415ebe4190720816067a27d35bf50770a77b3d0de", + "static/images/blog/user-role-guests-missing-scope-account/cover.png": "4e2407b36d1975eec9ae211861df6b5841d00df52ff7d4709b599eab11d7151d", + "static/images/blog/using-nextjs-wrong/cover.png": "52805acd1a6a7107d71896271a480dd8608ebdadbc62f9d80a072310f71a8c10", + "static/images/blog/valentines-day-sonnet-generator/cover.png": "0534103f14d66efee62b6953b4b4ac0bf586891135f04201b4142cb8f846b56a", + "static/images/blog/valentines-day-sonnet-generator/deployments.png": "1ba7cfb0c2e875dda37434a4b3ef968bacd9230061dc8474767cc0029bdfcea1", + "static/images/blog/valentines-day-sonnet-generator/openai.png": "6ad3b49c06388f2f3acdc517bd33598d79513e3d30955dbae74881116845f302", + "static/images/blog/valentines-day-sonnet-generator/output.png": "be28db7b263851719a6fb7b72127dbe8578739fe4e02dac4a1805bf5e1a8f6cd", + "static/images/blog/valentines-day-sonnet-generator/templates.png": "e69192c1944e31f086780e91b034797af48bafe4f469631947f73bac50243503", + "static/images/blog/vibe-coding-security-best-practices/cover.png": "b0c69c03743fc542ff384da87d2cd733a85d1a057e654dc3bee1f572999a6500", + "static/images/blog/vibe-coding-security-mistakes/cover.png": "f3cfad1ebc8ea5034df673d0011ee87cfc98d0ef15986d75672988347ec29442", + "static/images/blog/vibe-coding-vs-traditional-development/cover.png": "ed973e32ed844c5bb24dff7946cb531d7cfc74e31fee5cd7208391f4feb6fc5d", + "static/images/blog/webp-support-for-safari/cover.png": "ea4e965ffe21500f3552073bb7ca325d453020cf095d67164329edbda3f1c799", + "static/images/blog/what-developers-actually-want-from-a-backend-platform/cover.png": "0c540d48b12cd7031e3cadaf4223086ded946b42dc283c641cfa024311b2ec36", + "static/images/blog/what-is-an-ai-backend/cover.png": "cb36f49035cbdcd97a70ac658783741f275d3a220b7cfd16b39d4fb86a929edd", + "static/images/blog/what-is-cdn/cover.png": "ef77860288e150c6c22f3950a5eae4c88aefefb6db204f10c2a0544e51548703", + "static/images/blog/what-is-ciam/cover.png": "45a5261ae1bb8a38777f60a21ea60426c0832e3d58bf3164100548400d388ce1", + "static/images/blog/what-is-cicd-a-complete-guide-for-developers/cover.png": "7abddce55b1467188faab83abd58189173bf9aba84de3d9f28fff0be8c6e9276", + "static/images/blog/what-is-cloud-storage-an-expert-guide-for-developers/cover.png": "b7f545dbe9334d60f214e748ddfcea47484530a97f30ecf579d064a053c2821d", + "static/images/blog/what-is-docker-a-simple-guide-for-developers/cover.png": "acd9c50ad749fcf676dd58b38cc6bbffba913bf5d817c6b725bd2c305088689e", + "static/images/blog/what-is-kubernetes-an-expert-guide-for-developers/cover.png": "a7601f375841b143d62511fe3bbfb4bacb6989ddc56613f772b7dcd3d5e90688", + "static/images/blog/what-is-mcp/claude-mcp-chat.png": "26842cfebca3ec2cec89448e1c0d7ddb3f5421cc57acdb8780d48d30a54cad82", + "static/images/blog/what-is-mcp/claude-mcp-tools.png": "3a5ae700867b8671b5c9e3af61b094aeb64611168463db66ff440e0d427ac6bc", + "static/images/blog/what-is-mcp/cover.png": "dc4537990c91d6f1768c5ab8775e5c52239eb901b15e2e74fce8b5a018855c32", + "static/images/blog/what-is-redis-a-complete-guide-for-developers/cover.png": "b7b87a372bbb99421c2ab6df37430da960728b5cf339f1803c432644154c764f", + "static/images/blog/what-is-serverless-an-expert-guide-for-developers/cover.png": "fd88e32613ca877625cd69e0e38ba76c3c2cc73da05b789739928712bdd7b454", + "static/images/blog/when-custom-backend-stops-being-worth-it/cover.png": "d03b13c4e8f3294823a7883cdae89ca18a4030b170c51f597bd139c9ca274793", + "static/images/blog/why-ai-generated-apps-need-backend/cover.png": "8761878c13c51dd8a720a625606b89b93d9c56651aed636fa1b2bd346bd4fd82", + "static/images/blog/why-developers-choose-appwrite-auth/cover.png": "f56c37ebfc25191e113b928ff3cf144563be740159e46d75a427bdafdd11214b", + "static/images/blog/why-developers-leaving-nextjs-tanstack-start/cover.png": "4581dead0651adab3e28e50610efa900956a0d120f222d991c207a65fbd09f7c", + "static/images/blog/why-documentation-is-the-most-underrated-developer-feature/cover.png": "52a9dde70eeefcd7e489305fc30d2d6f6a63142c5bb00ee027a81454eaef4676", + "static/images/blog/why-multi-cloud-is-taking-over/cover.png": "e588be61a1cfd1cd49f5e5268b13cd29d4525a0ff8b6c0e708aec57976a15561", + "static/images/blog/why-nosql-databases-are-a-better-fit-for-ai-applications-than-relational-databases/cover.png": "b36854f6a960adb330e7f0ea0d587e517b849a8e2591a9ed32c43542956e98c2", + "static/images/blog/why-schema-less-databases-are-better-for-modern-ai-workloads/cover.png": "991c2a060d00e35d22c266480fa2c651502408c6820a99c480b813952f50c5d0", + "static/images/blog/why-use-go-cover.png": "a3251fd6f2b87ef968f9d45a7020222649d8472e08ad5fd8442cde70ea17f947", + "static/images/blog/why-you-need-to-try-the-new-bun-runtime/bun-buildtime.png": "69b92a76d4e7935d666da1b010e6606a8b73c009de23e00a891c551fb1d042dd", + "static/images/blog/why-you-need-to-try-the-new-bun-runtime/cover.png": "96d6da52011044ed190620d57510a98964bec3f3339712960acead8f2208529a", + "static/images/blog/why-you-need-to-try-the-new-bun-runtime/ts-buildtime.png": "f1e53206a80937c86b33f615ba6936a8c10266dc01ba221da4a7c2735e806ae9", + "static/images/blog/will-claude-design-replace-designers/cover.png": "f8807ec6f2e1fb686a99d4beb90a5575150152ea6c1faab61ffa3d8f711cc50d", + "static/images/blog/x-oauth2-appwrite/cover.png": "1e6bfcc38f758e57a684a3b092bd8500e45353e7dc164af20753882ecbf8373e", + "static/images/brand/new-brand-grid-desktop.png": "3469b9692f5f8be1a635974c14a3e55c0f311559e499ffe83a145234db93da90", + "static/images/brand/new-brand-grid-mobile.png": "129543e6f56036bbfd3f0e8e12534b179b3202885f687ab71429f7b6c7e95fd2", + "static/images/brand/t-shirts.png": "ae53c30bc47e43ac23ffdcd54a90e5bdf7170e04eeb2e7c3f758e771dfd29e1e", + "static/images/changelog/2023-08-30.png": "81a50278aa2de5ca384212c8306f0b93c047f237c019efc43445e9ae7a0cfee2", + "static/images/changelog/2023-09-21.png": "954c2af56c4725bd12e1d5b7d54282f794edbc851e0770abea5edaf4b6161dc1", + "static/images/changelog/2023-12-20.png": "551a70e45d7f81314f2f19e40c1a97b600134fa1744f208a27b11d6b8352f89e", + "static/images/changelog/2023-12-23.png": "5d22635659acee0eb90739193fca16a116d803cdf4c3d03c4f553aed39d0331f", + "static/images/changelog/2024-01-09.png": "eab35a2da249ccf4b68bb8d0b20b6055e91fcbe8e85ab3ebffafeba40696a9e5", + "static/images/changelog/2024-01-18.png": "77547dd8c7e774f12c1c4f4d1b5ee2ad07037987cd8561f0c92b6a18a60c4bc1", + "static/images/changelog/2024-02-20.png": "87ae555ee1a9449de64ed172c778e8c9a87aa5ccc17f218b4e719957815ed794", + "static/images/changelog/2024-02-26.png": "fa42210f12622379650805622e0b6daa4c646df55700a8d8f40594885dbea5a3", + "static/images/changelog/2024-02-27.png": "9f352c78a931e9e2411052f0ffa7946048cd796a96371f9254ab951f623fccda", + "static/images/changelog/2024-02-28-2.png": "c9db849cbc69a9fb37a56034ebc9f5c9cdb03a0a83a5d76740eb0dd523eae74a", + "static/images/changelog/2024-02-28.png": "bae3197466547028760141cd1a94129e5db26a270e7a7b06d2c151d53664ded7", + "static/images/changelog/2024-02-29.png": "3e50bd799ebb898aa3f54e72e8c567a2a7f97b188437896a7b7696ae0ab34833", + "static/images/changelog/2024-03-01.png": "f647ab7d3347efa13f4454985e106602e959eef9191c1161e3fe0d46639c0c1d", + "static/images/changelog/2024-03-07.png": "a1ef777d724150fb5165b823c7b255e5b7b9418babed629be7ef5da97a2ee679", + "static/images/changelog/2024-03-08.png": "0f7723c28aa7abc65bd1ddae5fa8a5513a69898072174670920e5c5c05e6d989", + "static/images/changelog/2024-03-25.png": "6bc13b91c28177a109cf11166988e247760143a479a0e1d53fc8f6953857eb1b", + "static/images/changelog/2024-04-09.png": "5c0d313ad9a49d722a8b0ea3403705a86e7ecc0094f0a533ac1bbb29d47231ec", + "static/images/changelog/2024-04-11.png": "674cf654ef041402398139ca6e5ddc61b2702d516d9a790850fa999e202b6496", + "static/images/changelog/2024-04-22.png": "78052e4feb0cf42c0e4ac0d5bdccd7a4f06240cf290b5980da3793055bba374f", + "static/images/changelog/2024-04-25.png": "3060cdf5beeeaf6c532f61ba4c6fe5be4b376c0f1e06d7de1da7aa50d4a4bcce", + "static/images/changelog/2024-05-04.png": "22cdb640a19a22d5d246836e78d76bec12023c49ae62134c715f1402fa5e6485", + "static/images/changelog/2024-05-08.png": "0338f50271779ed4707b78782174b3cd5c5a544ce1645eab642d108502f8ba7e", + "static/images/changelog/2024-05-14.png": "bdb7c037335849984790340c7cbd83865e4ed70cbc17addda62469b2f3e2a950", + "static/images/changelog/2024-06-19.png": "bcc2c2d09b36876a9af3f58a5701313990d0fee5fbb012162e5b66f731ab4f55", + "static/images/changelog/2024-07-23.png": "6538096ce5a23ed268c346419cb89f4512745e0fb5bcc3cb75a84535ada6c07d", + "static/images/changelog/2024-07-30.png": "e5abc19850066bc8b1da55cd0a76d7ace8039fcf5d4eb679e1ad910cf2afa87e", + "static/images/changelog/2024-08-07.png": "c260d84e0f5bcc98c752fd444539e1408f1267bc136b4dfde49aff1be0b50243", + "static/images/changelog/2024-08-14.png": "6ec3b187e169e6417ea110141fefd7c664f12caee3867a7f9e59e7cf3f5efb71", + "static/images/changelog/2024-08-19.png": "c7c9bba16678ab61089c17ff3b0b6bc6ee122989e5acc0d647c89fe630e332dc", + "static/images/changelog/2024-08-20.png": "af9685568bbf61ddeef7ed8df237e978ef71d4c374157cc6713f3d674c97f25a", + "static/images/changelog/2024-08-21.png": "b8fe7fb1417074fb654bc1704dbb065b1a78cd1d34e075d80b7a2bdbb0aa858f", + "static/images/changelog/2024-08-22.png": "a714e0fd56a624e22c098969307a634930159aab90a7e4b6dcc8db3233450268", + "static/images/changelog/2024-08-23.png": "99bacf4ceabb34d9c6f3a127c4faabe8f2a174ea5c50664363440080fc7f36d9", + "static/images/changelog/2024-09-17.png": "e427761307c3a9c98763dcf50176ae5f4db4bd3ed8d411e03601646396c41e6f", + "static/images/changelog/2024-09-18.png": "fd7cc2a82a3bf5e76b0f9d13b5627b259f3b658133e9531c3c84ee4d397b9a0c", + "static/images/changelog/2024-09-19.png": "f31e41863dfbfba4f2a0bfb6984718c9398a38c03791ce3bdec31316d50258b1", + "static/images/changelog/2024-09-24.png": "4129893c1ea043b82af755a462fda8d78a7a5199638f84da549b2a2b29fbe976", + "static/images/changelog/2024-09-25.png": "d1148cc754a43599dd7b28760389d0fa2f366b912f3f9c31f237b96b87036900", + "static/images/changelog/2024-09-26.png": "b362912129d0e718c5dbc0cc80b42fb5174ac7e2efcc2386916eb69bb3e13645", + "static/images/changelog/2024-10-02.png": "ea4e965ffe21500f3552073bb7ca325d453020cf095d67164329edbda3f1c799", + "static/images/changelog/2024-10-09.png": "ca2619a378783a81d6fa090861bc3304ba379410d0f9ddfd164e8f09c85f279e", + "static/images/changelog/2024-11-12.png": "d7d0b3d7e763ed14affeb50191ca15b7aa383eae4126c17917103e5be0d13ba3", + "static/images/changelog/2025-01-07.png": "bdb4c05497abf91a48ba8a3458c975c5ecc0078358faed8b64d59e183315aadd", + "static/images/changelog/2025-01-22.png": "a0c758cf6c8a95e09a0d2ca562b0775a50d34a4d691d675cda70e44ad21805ac", + "static/images/changelog/2025-01-23.png": "b4d945f876c918fb008aea7ce4dab52a98a354e86d9fdc60f3acbebbffd44995", + "static/images/changelog/2025-01-28.png": "3c3d082bb76a507f22ea5ff3aa2bb5c0646b4315556190d6789a3412605dd021", + "static/images/changelog/2025-02-06.png": "a7641c324c281af0d70bd5f6b78cc816afef3881b9091fd22ea8a7fbc8ef1866", + "static/images/changelog/2025-03-27.png": "b3aface6bdf93ed6574744f4403380039745ed6f171243978f467272cbea3942", + "static/images/changelog/2025-04-15.png": "b865fc4e14fbcba8e4b68ba5025d5999ac01e40422e18369a9e0649bdd99b2e1", + "static/images/changelog/2025-05-08.png": "21bf4a899c82f3301ba1a7bf4cfb7c64fa86b382a389d24e44dd2db20384843c", + "static/images/changelog/2025-05-14.png": "20cdbcbda49e75f3bb19716911da09e7c9bec23b6ae0d5d32e7341b1528d8486", + "static/images/changelog/2025-05-19.png": "d29c4fd070a75cc1417f7fdefc7d8c7e7f05977a2966c6edf5f39e2ac3d79bc7", + "static/images/changelog/2025-05-20.png": "298e3730bf2943ccf6761ccf6d7af1e83316ececa9cdf4f008592344478427b9", + "static/images/changelog/2025-05-21.png": "fd979256158fbfcf5b30cd4375050b81f74ebb010fa147db2b01e5a626a8f3f8", + "static/images/changelog/2025-05-22.png": "a8ef400c006647ee3ae0d307553b51d90ede699935d7602ffa75fd2e59312846", + "static/images/changelog/2025-05-23.png": "23d2fa4a88db2d9548f43f95df15b5ca60d512481570ed2d1b3d66ce1b1f504f", + "static/images/changelog/2025-06-25.png": "c5ca682b5abf9fb719b3d0056aed821255d961a547fc83e1d27a0044d3dc3f5d", + "static/images/changelog/2025-07-01.png": "3a1b0f079847af4aa5465688751ea656827986e8233165616d4b57a31f5345ed", + "static/images/changelog/2025-07-03.png": "78a0fdf3b54ce8412bf6be1880eb4a42bcac2cb04420045a60bce888c8999c6f", + "static/images/changelog/2025-07-08.png": "40839c8f5c28a5d78c2507f12e165ac8f176c53b81d8eb6b77b46d1c58f381dc", + "static/images/changelog/2025-07-10.png": "f3d1d0a022771392019c760c6dcf88fc231a7f96d19e2eb61d89b3605e818463", + "static/images/changelog/2025-07-15.png": "83a7b1dd0e31ae86e49fa873cde0b6c0319a552b27dc447b4a214efd7f3fd534", + "static/images/changelog/2025-07-21.png": "e53db7b3b587465b1f7d1dc57324c52bf8ea7ecf0c2461eaf7b1beec6b5b0f25", + "static/images/changelog/2025-07-24.png": "ace33b30d5679c38b3cdaf9b375a914485a73478a47fef9217c5b421f8e1f4eb", + "static/images/changelog/2025-08-04.png": "9fbe339856b8040eb49fb01ca4353b5600609962ab8044dcfc34ffbe0e8a9738", + "static/images/changelog/2025-08-06.png": "7a2df8be11438af37d8972a83fb61f764fc6d395de2c68dee47b4759a5fd530b", + "static/images/changelog/2025-08-08.png": "6ebfc20da215e51653885c0bb186751dda9e56cd77722952203afabe97a48d3b", + "static/images/changelog/2025-08-26.png": "068aabe4cfec94d975ed88f94883873edabbe899c0ce0b2ef492184d03eb7c77", + "static/images/changelog/2025-08-28.png": "be962c8797bf7e2807d67a79be60140d006b232d15cb68afb86a890583ec2f5c", + "static/images/changelog/2025-09-09.png": "3cc94cc74f864c3db693144ad35f3c74133613519d5bec06980dcf4fcbcadb61", + "static/images/changelog/2025-10-21.png": "57ca859952c572108f945573807c91fea1bee593f73de5acbc4a392075f8762b", + "static/images/changelog/2025-10-29.png": "88204210852acd50bc72a9d7de29f088ef81a4c90941378125fa4f662bb61264", + "static/images/changelog/2025-11-19.png": "a152a7c9cd960c5123075aac94098070ce5ac98f10ee88d71e461dce136520f7", + "static/images/changelog/2026-02-17.png": "70a2c577bd927bd3e9391840d7fd030f195e975dfcecad536f6d713e23b60624", + "static/images/changelog/2026-04-08.png": "ad7549efc81af619c7bb1429472d3e792d9e49fd6be8e831027ad64c8da8a260", + "static/images/changelog/2026-04-21.png": "4134ae96f05ac2a603272582d68a2cfad5af0a804d19c414db709ca80e817cfb", + "static/images/changelog/2026-05-05.png": "26c94f354ac186bdb999e31ea1c33a9b5a7bf6312bd30a737da134456330299a", + "static/images/changelog/oss-progam.png": "e50d1c497ac1d07494fa1d40b1f219c8f14770f7b72e1258147f527e86f40eed", + "static/images/changelog/threads-cover.png": "f5599b528f33797f125da1fecaffc70763118d4d420b04f6d67a70bc651cf40a", + "static/images/community/avatars/1.png": "3448e87720fd3f55326ad04f18263f5094b61116c79d7e48e8b692b8012513bc", + "static/images/community/avatars/2.png": "95664afad5f30827ec1b9587e7188f3c199978e54ad3eb642891fd59196e05cf", + "static/images/community/avatars/3.png": "cae5311ccebfb4055f5210176002a6b4587ee0b75ea179effcc7c7fcc4914f17", + "static/images/community/avatars/4.png": "41706f6b7d5e0263bdb5a95b4792a5a24303d1b09c3372e492e7ad0dda700df3", + "static/images/community/avatars/5.png": "5a9e80526d724395b835a6adae78008752adba86f77e82200f6ca17d575b4a21", + "static/images/community/avatars/6.png": "31893530b10daf5b6b38b45390fd737e3a17849f452f6bce2dc1603ece32f760", + "static/images/community/avatars/kap.png": "b25da019c7d16ef0460f9637bce474bed9f708529315b5a3c5d2f4a49d13a11e", + "static/images/community/avatars/myshoefitter.png": "d86b7e523a837cb526b30be1e4eda13ea599d77a1f67843c277d1dcd49a089c5", + "static/images/community/avatars/souvik.png": "28879192a3a4788858db439865210d18662f93b7938ae58d52686244a303256d", + "static/images/community/avatars/stephen.png": "f0297aee5a5d90c98571f3fbeaf6076b10158ea457e64a0a737c8a49cda0cee0", + "static/images/community/avatars/terieyenike.png": "f5ede4d02e3e46ee1b776f511757087f55709d5be03d51b06736817e9b379b45", + "static/images/community/avatars/terry.png": "e558e8025048107604df7e5a74236dd294f1d1206ee2969d9f68fbee87954206", + "static/images/community/avatars/varun.png": "7f934deba664b3058a9dfba55a07eaca102e682696336da40541da6be3423199", + "static/images/community/avatars/walter.png": "d7879d3e01ef89b3c462db678ef2a96a3ac306c6be1cfe97b3da560b65d8b129", + "static/images/community/events/hf-kickoff-bangalore.png": "6a53d63253bb54b22444255dbbacbabaf9aeb894fcf19c866adce4ffb3bf501c", + "static/images/community/events/init-0.png": "41d0a2823a7d45904dde47d50b7ff8363762dae6901cffa671c38ae73d57ab83", + "static/images/community/events/init-1.png": "5a97c60f90f8efd57579a94124a91cfc1bd65c9fc967c00462882a7e20ab629e", + "static/images/community/events/live-coding.png": "0c7d6f8f76684b01c03919aa56a0e26f2d5e23ddbc7fd4d2d215a0b3496ac431", + "static/images/community/events/office-hours-2.png": "de6c4ae6267bab1741e5266502a73ea0cde0b7b41f1dca4dc0e8572765e5de97", + "static/images/community/events/office-hours-3.png": "943cf4a2a5bacfc6f23a7bcbb4e160d0d11f6fc0dc81c576ecf174c2f1480d39", + "static/images/community/events/office-hours.png": "ee398a7fe50a4895e59af98b6abb9db881039143353ec50cf40a0f89cc3b8b57", + "static/images/community/events/oss-celebration.png": "5c1e83e72246f6102393171e068fce6177feb4a0946ff5672e2b81072c8e4248", + "static/images/community/projects/glitch.png": "90daca1053070a03dd24a7718e8b12e8743cf8e697a121e1fd588dec0e3dab7d", + "static/images/community/projects/ucanearn.png": "ede3e5f1a951a6280cb43a9a323c4f9a6727ed9c758be570a4178c9e514cd62a", + "static/images/community/sphere.png": "cd803c1ae7faca976b709c5f4d531b53e54e7308b19358c36a4ef46e91ce9b33", + "static/images/docs/advanced/security/activity.png": "157d7692c824ba6c4fe0c87f5760a0df91c82c02a406521ab292dba9b4a4b3dc", + "static/images/docs/advanced/security/dark/activity.png": "d21e86ec21e43cd0b094fa46a64155d404f5a44169a40edc60b2b91a8166192f", + "static/images/docs/advanced/security/dark/dpa.png": "0272fd0697620c8b38605535ddfee1f8ded6b3f0b6c04bc0e13aad410547dfdd", + "static/images/docs/advanced/security/dark/mfa-modal.png": "6ac0196059a43487401f2094c2188c68be8827fcb3327777827b1fa7733dd438", + "static/images/docs/advanced/security/dark/mfa.png": "03a64072b9a9c40634dbc65a1dda17aebfb39c73d0e3a809c234aa47ab831ee0", + "static/images/docs/advanced/security/dpa.png": "5bfbf7c5654a27d23eeefe49ff70c79861d2734f454c62758978b1a600f1c85d", + "static/images/docs/advanced/security/mfa-modal.png": "f56b55bcb1ca889597bf8cb803fcabe8b66deaf2f06fd4f49a100d9a507cabef", + "static/images/docs/advanced/security/mfa.png": "903def2fe311e439851c1ed0b730bb6c88f8b8b32a8ad53152d244fb48b141e5", + "static/images/docs/advanced/self-hosting/dokploy/dark/deployed-service.png": "5ea12bd592dcebfa14257989174f1ecbd9cdc704cdfedd35e41ecb89dd668b4e", + "static/images/docs/advanced/self-hosting/dokploy/deployed-service.png": "0a4d09ed43507f05c3668723d7df06dfdbe492f9ce23eec2f5cebbb59c871feb", + "static/images/docs/advanced/self-hosting/installation/dark/wizard-account.png": "b7082787919afe0cb0d7975361356438d798927efda8a47c7471f08b4dd8816a", + "static/images/docs/advanced/self-hosting/installation/dark/wizard-review.png": "7d4cebea557f02e9e519390b5c16b2d552f641e8dff2c7c89db9851c8887edfa", + "static/images/docs/advanced/self-hosting/installation/dark/wizard-secure.png": "e558268592865d2ce464e37188b92ff4e1bd54d3c59fd643ad4acac2bcb117ce", + "static/images/docs/advanced/self-hosting/installation/dark/wizard-setup.png": "f16722e8e54da3117350d229ab2c31e955c49a54fa3439353a7c9524a3053bd4", + "static/images/docs/advanced/self-hosting/installation/wizard-account.png": "b3020afb2bb33c7e5258ae94fe8ba70db0446d5818eb859602bef94ca4e02e6e", + "static/images/docs/advanced/self-hosting/installation/wizard-review.png": "669d3b94cddbdc7dd4e4a784512726d83e74aed9a472f43d37812bd34bda8750", + "static/images/docs/advanced/self-hosting/installation/wizard-secure.png": "7730499fae6d0f7eb14d85f4978c2e0a84d2362c507d5cfe474ccc920f8cc1cd", + "static/images/docs/advanced/self-hosting/installation/wizard-setup.png": "a591eb264af97db479c2e34085e8f2bb901ec8dace8de36b089ee4ab623e9606", + "static/images/docs/ai/agents-md/generator-dark.png": "10273d567e8e6527deaeb6f92f0125821a0b2b33b2b0b301ea4d6162830bb43e", + "static/images/docs/ai/audio-processing-dark.png": "90852c361d73240474a316ca089edbc18e33b4665adb7d714dac9a7daea8945f", + "static/images/docs/ai/audio-processing-light.png": "29a92249b7f2706307321d5bb96d4d20a7ac41b6b55e61e374608e9941e9a6b9", + "static/images/docs/ai/computer-vision-dark.png": "9802337f7e7464e987c963a4dac750dbf3971765161049c7470e3ba976f15412", + "static/images/docs/ai/computer-vision-light.png": "bb27aef8648b2188bc52e50a27df6f12b7c3c50dbcc9d47a327fe93f23d4a06b", + "static/images/docs/ai/docs-as-markdown/copy-page-dark.png": "ec3257ec9d3fdef157af6ab58e231507bcb54cd098c24a66b4e7e5ccbcb76748", + "static/images/docs/ai/docs-as-markdown/copy-page-light.png": "9a445794f70859c4c491312a472c825ae44cb5baf24565cd7955b8f3db7d77a7", + "static/images/docs/ai/docs-as-markdown/quickstart-dark.png": "501b13e454dfe52d371b023f6a97a9007035d936262e45579451592913911cea", + "static/images/docs/ai/docs-as-markdown/quickstart-light.png": "b1e0306a50ba1c897a75a5c05fcfda3a3b8b94a10844f2c0716186e9389db5a0", + "static/images/docs/ai/imagine/studio-dark.png": "8627e92e29396ac17ff563121e6d5f7eef01e27b81ddf36e38cebcacd612e056", + "static/images/docs/ai/integrations/anyscale/demo.png": "f32f7040d1a818291726c1e3cda33eeacc91ae5a37aa2da1f2dd45cb3f531532", + "static/images/docs/ai/integrations/elevenlabs/demo.png": "6a4eba73a75c80676d7674d939b06ebcef5b99a8227d0b8c4df455777baa1534", + "static/images/docs/ai/integrations/fal-ai/demo.png": "613c2b5dd7ac8290ee22c69578a609e33805aa1843998f752348676fabfa464f", + "static/images/docs/ai/integrations/lmnt/demo.png": "6f1481d9bc1a0e364b89db3481611168c1865b0b243911b83a3e7b9ce5f920a0", + "static/images/docs/ai/integrations/perplexity/demo.png": "666102a0009f8e01b65bbec969258e1ae3599e8044dfd4dd149dfd537149c7bc", + "static/images/docs/ai/integrations/replicate/demo.png": "2891407eb05864296b71bb508a4934423e9a20f9e26a2547ab1efdfcd4f1b343", + "static/images/docs/ai/integrations/together/demo.png": "28cb8cf5f7496a4f04350a770b241afcd1322172739b8bb0f8016e34d7a12785", + "static/images/docs/ai/natural-language-dark.png": "de2a8a16dad6437634c4b697e22d7eb8d1f8f29502e046630c6452fdb13f9f9c", + "static/images/docs/ai/natural-language-light.png": "b2dcc805bf30011673bb64fc8254a1bc4ed3ffe7e23bcd0994474f7360079fe4", + "static/images/docs/ai/tutorials/image-classification/dark/database.png": "2ebdfc78e0b8a3704bc9e070f131e96f250f68c3e7e064a9272c93a2c7ccfd31", + "static/images/docs/ai/tutorials/image-classification/dark/event.png": "94f692adab2536e404b3cf0230219409574f7e1a7d3516c576ea8ee3db5c62e4", + "static/images/docs/ai/tutorials/image-classification/dark/result.png": "c1cab4ed14b01f0c34ac73a25cf78560dc2783db360216981735a4c90b616a3f", + "static/images/docs/ai/tutorials/image-classification/database.png": "cd44dfa38cebc418acfb921c5a58ed5101f047b398551c5948f9862024daec6e", + "static/images/docs/ai/tutorials/image-classification/event.png": "613260223aa5e4f4d2d471f633e75de442d8f59128732110da3fb6158b3a4798", + "static/images/docs/ai/tutorials/image-classification/result.png": "e8dda3f86f607d6019d7c0a07df3309700f84f3eeb8997723ac87607d961af1f", + "static/images/docs/ai/tutorials/object-detection/dark/database.png": "13fe6970a8bf044f0e231f00a743fb01ae09fe8b8014eb16ad318d1b884da352", + "static/images/docs/ai/tutorials/object-detection/dark/event.png": "f5cebb346fc8e85c93f2c434747427cef5a5148b1926e927eacba85077c8950a", + "static/images/docs/ai/tutorials/object-detection/dark/result.png": "2b95a19e5a42df5aec0f3c413c057b6537118875fa1e184d231602e85a2de126", + "static/images/docs/ai/tutorials/object-detection/database.png": "51fd3ffb6744e49d199c132ae1e3f360035e50842cd08e94ae84e90638e4dfd2", + "static/images/docs/ai/tutorials/object-detection/event.png": "72134e9faa6cc7b1482256b5e897a199976452597af1ecabcca13756d5232954", + "static/images/docs/ai/tutorials/object-detection/result.png": "0f5372337156e4548ea5f0ba1f2cc07e2610742b510c02a804772087653310f3", + "static/images/docs/ai/tutorials/speech-recognition/dark/result.png": "ff932e2b659995dd7b047488db9f2348d279b3d2cb34e472a19a132279dcc0f5", + "static/images/docs/ai/tutorials/speech-recognition/result.png": "d8a99c0a44886fc5c3cc0095a773a3d7e6d2dfb6c3bca42ea8c5477a3ff65f57", + "static/images/docs/ai/vector-db/search-demo.png": "c31ee2582814be34f2e563a595bbc48e58301d588fa3f8156d15bc6ecba222b7", + "static/images/docs/assistant/ask-ai.png": "b2117420f13bc3fc370a925c47c949f7600adb9972e03c11d0e7d060a274c6fa", + "static/images/docs/assistant/dark/ask-ai.png": "6f1a42c688a0bf0890ace1b563422c1273b704febe52c7554739619bc2802ea0", + "static/images/docs/auth/email-policies/dark/policies.png": "6d3a4e03452d34ee8e6bd036db58fb9ec6f3a1a6d76bb932fb29ebef49be0145", + "static/images/docs/auth/email-policies/policies.png": "37e26e5f14d275978e1ca818f46d0daf2a6c56bf15255161ae4c2ac1ac55d5a5", + "static/images/docs/auth/ssr/dark/ssr.png": "3b80b80e061ada103e4f8e4bdf3c0a554db062aaed3f5f3a6b02f5f9c05859fa", + "static/images/docs/auth/ssr/ssr.png": "a9a58a3a053dbfec7eef50894d973049254ac9af4ed7159f93a5dd95dc0faf94", + "static/images/docs/command-center/command-center.png": "4e32c190ab1fbc74040c43b2d85a8404af9b553bb9672c1a842fee92ecd48b31", + "static/images/docs/command-center/dark/command-center.png": "d3c26f78c419d22fa9779baf884561ac117a0597347310e54e6ee14c972c8a11", + "static/images/docs/databases/ai-suggestions-enable.png": "d331d502fb141cf28478cad2b2e96f0e622eae9c97625976c756ff52343dad77", + "static/images/docs/databases/ai-suggestions-review.png": "9796a6afa6164126acdfea67561c560fade3d39e51d2fec6bd9d6cf034ef0aa1", + "static/images/docs/databases/csv-export.png": "978aeeb301b9d7571793a5184fe955dae7a8a3ab7fbd0c613b12ccac73d51980", + "static/images/docs/databases/csv-import.png": "6ee80ce77a3a57b2e11b3887e3397b880472e066c1c6168fe0a633a09a5a8c62", + "static/images/docs/databases/dark/ai-suggestions-enable.png": "ea984bc7665a6e8d5e7dfc6df3281429a277e0c8402f2c7befbfcf96dba53b11", + "static/images/docs/databases/dark/ai-suggestions-review.png": "49d3e2636655ba3b76e271bc4cebdf005aa79f607e9185f3b49288adbc864a20", + "static/images/docs/databases/dark/csv-export.png": "8d2fbffbdc4b1e6e443d61a93fe4a331ecd91c66ae1457270f51f296c406aeb9", + "static/images/docs/databases/dark/csv-import.png": "bdd1e700c747e703ac75b744a8e1caa7e0704ac3439e4ed1077ee0a8e76389d3", + "static/images/docs/databases/dark/databases.png": "2cc14bcda3d289c3fb77f8ee4f432d93b46bd0b9755cbf26a53fcadbca3cf32b", + "static/images/docs/databases/dark/documentsdb-import-export.png": "8e87428ef2f5698bd041d398de165ac5063aa7db951901913ec4b7b1674073bc", + "static/images/docs/databases/dark/manual-backup.png": "539bdf15bf654a1a696951f4447465b286566460b311ce3db82eb010502a7e03", + "static/images/docs/databases/dark/pro-policy.png": "7f74b6eae525187faa9f34a12a0804b227ba9cb2bbd9300f5e8337e9512a6f14", + "static/images/docs/databases/dark/restore.png": "f2605303eba4c528bf0041b0e37bb64e61c66503b2d753716b224f66b8f62ecf", + "static/images/docs/databases/dark/scale-custom-policies.png": "0013e987e9b8b917cb9be4c28048f851f2d188f3bfa5ff17a11a7ac7cf9c3ade", + "static/images/docs/databases/dark/scale-policies.png": "9ca9523f2e20e9aa993f0ad933cdf1dcd12adbaa35ecb2a0b8b3d2fd65877e1f", + "static/images/docs/databases/databases.png": "0278a6bc5672684653f74bcf3c0d022fdd82a08d7a7fd438b28e21bd81b5e5d5", + "static/images/docs/databases/documentsdb-import-export.png": "4456efce983bfe6aebaafde0b119801cf35173a036bd0ddd06be4a74afd14778", + "static/images/docs/databases/documentsdb/backup-policy.png": "913cacbe957847f8a71efa2d2e704754e52cf9c276dce8978f6c473a9ba6595b", + "static/images/docs/databases/documentsdb/backups-tab.png": "231163729496618d26863c6fa7ad88069875f78a3c320033d4bddc3c2f8da376", + "static/images/docs/databases/documentsdb/create-database.png": "49ba017dcec96631a87f924b13b6b93478add7b516cc62947e87230b5a0d5de1", + "static/images/docs/databases/documentsdb/dark/backup-policy.png": "a29fad13b50374b3de55824f1332fa4be9c2c7a0c4c63f550d03306ffd546551", + "static/images/docs/databases/documentsdb/dark/backups-tab.png": "dedb6cfcdd9217e814e58cb14db3d8309f53e3071cb9f12edd9a0d5f9bad1d7c", + "static/images/docs/databases/documentsdb/dark/create-database.png": "fe4c1340226d31fb3fa1d655563c9c8fdd150b4d0aac3e217fdd2af40718c272", + "static/images/docs/databases/documentsdb/dark/manual-backup.png": "880f077a3a598c35c9939a1cfcab4bc82a2a88e730be1b4157359657f0a47dcd", + "static/images/docs/databases/documentsdb/manual-backup.png": "0f3432e170b68503b00fac4cf65ed7c5e5a04f34031b5011fe1c80f1eda2bf1a", + "static/images/docs/databases/manual-backup.png": "a5854158c5350e333ae14b699db4626c5c26e17b529f3acd137cfae8cb08e9c4", + "static/images/docs/databases/pro-policy.png": "b0d35de73c334614dc3f644459dea2bbc56d0da3157db985f24897597ae26302", + "static/images/docs/databases/restore.png": "97611c54c654631d2a86a8453a2ea3603c32e85888c065668e945eeeeb894df0", + "static/images/docs/databases/scale-custom-policies.png": "ff19a1683016de39f42788beebf2417af1688b2d53786ff2667d558e5c5fd488", + "static/images/docs/databases/scale-policies.png": "549c929932a92902c6a17684730a4bffe0c52ed8dd3d9bebc7ecc7818c81f244", + "static/images/docs/dev-keys/dark.png": "137a92c18e9dfb2c000dea70d7fea09895abe2b46a69bdf8b736997e21c457ba", + "static/images/docs/dev-keys/light.png": "7737135bb6c721adad6761d6c00616d3e9f5a88f153c8481ca55cdf481d63c42", + "static/images/docs/functions/dark/deployment-retention.png": "9bd06506317c6e5d609eae5c9214c31bb2dc0a836a0c38ca0266b1ffe004379c", + "static/images/docs/functions/dark/env-variables.png": "0fe62180f8b3b96f7944c91afcc87dda42cf52d8ce10672608c1df009b048b42", + "static/images/docs/functions/dark/template.png": "4149a261979cb36cf74309d1836a3fcd926f2d33587e92080d541ffcbc3ad19c", + "static/images/docs/functions/deployment-retention.png": "3ce7d938378dc5bb897aa4d211b75734971d09a10c645a6b0475c183d400c1ac", + "static/images/docs/functions/env-variables.png": "003c18ef56a95f0784c9ffd609e313955bd83b61ef277c454bb7dd5b2192280b", + "static/images/docs/functions/execution/dark/execute-function.png": "69063c276041e1e8cea09fb7aa27d3df6727fa6806d15101ac291e1b51f14344", + "static/images/docs/functions/execution/dark/scheduled-execution-function.png": "19fd1f34644186c0113f060c4f4b9c42ecd8392e8a86f32df44f90086943ba33", + "static/images/docs/functions/execution/execute-function.png": "9a5abab51d8c144214ecb6ff13ddd9d60c2cfcc7783aa2946aca5256f4bb83d5", + "static/images/docs/functions/execution/scheduled-execution-function.png": "79e95ac910919a77d05892eaeb11eca8205976c4d44a0344d3653b883e96aa43", + "static/images/docs/functions/quick-start/create-function.png": "a1581c7a1658cd24cd674eb161dc78178ca73f592cf7f0cff5919370e2d334c2", + "static/images/docs/functions/quick-start/dark/create-function.png": "4927388368f319005e4a44834b8001a983e1e6e850b2fb69c061f5f62b5a8dfe", + "static/images/docs/functions/quick-start/dark/function-execution.png": "3675fe0e2b533cfb2d117186b911d7363cc63855443c98c0d3ac1f096125d282", + "static/images/docs/functions/quick-start/function-execution.png": "572a3d34bd1a691c68f140e0ccadd843ae85fe263961abed523d1c677ab92aba", + "static/images/docs/functions/template.png": "0721035e8350ec490c1c427e6682e3df6d0961507c386d6461d1665729207c25", + "static/images/docs/functions/templates/dark/templates.png": "4744a780eb10e6eb4fba1e0c4aff86944d47b296505eba02759240ea12a55e8e", + "static/images/docs/functions/templates/templates.png": "dcaa28d5f08af6ad1f2435ec43bc795f477df2dd40c02876a950d95bd1b2d089", + "static/images/docs/keyboard/appwriter.png": "415dd038aea1f5eee651a36d472b925486730e65751af0fc7e5d074e0613f939", + "static/images/docs/keyboard/dark/appwriter.png": "fafce8c98d8f6ac1ce5cb5d4984c85195128491070648c8e3b98309fe16d62a1", + "static/images/docs/mcp/antigravity/agent-chat.png": "6becbb28e94198cc93e2446df90384b627c00cab8c18772d84f0f728e6fb3c8e", + "static/images/docs/mcp/appwrite/appwrite-api-secret.png": "580f1fef314f8eaeee0df5fb4a6af988fe0c381aa5f29aeb3d4b311553ac2370", + "static/images/docs/mcp/appwrite/dark/appwrite-api-secret.png": "424649c12773641f5f7d9c779c6d5be3c20c138a325ee930080c718032aaf512", + "static/images/docs/mcp/bolt/bolt-add-mcp.png": "20d897c74e8cf8fa2ef8d4a13a8bae71b2d6fa4ddc8f72f9c6f58279d5dba0a2", + "static/images/docs/mcp/bolt/bolt-mcp-settings.png": "cf29fc3f9490047eef9758f5c5d24f75148e40fa40bd05de8e6df754a5eae384", + "static/images/docs/mcp/bolt/light/bolt-add-mcp.png": "1b6a5910cf3ff34f239acc03221042101979a8688bccde47f25aba87751c7c7e", + "static/images/docs/mcp/bolt/light/bolt-mcp-settings.png": "1dea0c117e29421a7d32966923bdfbba7dfb8d8bcc825a813329c2ac8d0fc1c3", + "static/images/docs/mcp/claude-code/configure-plugin.png": "6f089ec25a250408dec84e2986681237d29c7ac382740857f155db20b60cc7d8", + "static/images/docs/mcp/claude-code/implement-file-uploads.png": "6e8e6d9b49d5d74d2774ddb332323de608ad0e9ebbef2fdbf3e43644af5cc55a", + "static/images/docs/mcp/claude-code/verify-mcp-tools.png": "7dad588fb8a57e767b4bff323169bc7d99c385232cb6f13eda659e9b722c2984", + "static/images/docs/mcp/claude-desktop/claude-list-users.png": "4567dac118c3744f5b7c00987165f9a10ac2a215463eb65ee172974d8f161dfd", + "static/images/docs/mcp/claude-desktop/claude-mcp-tools.png": "781da78a840dcdb90c2719d3eb38fd7c43d49c7f0735e0d1eef395f2b236768d", + "static/images/docs/mcp/claude-desktop/claude-settings.png": "8c9b574af016f18164e197008fd17b2cc25e0012637c19fc1491ecd364433fec", + "static/images/docs/mcp/codex/test-integration.png": "b90bcf5e2bb9b1901df1e4ee9c61f41c3d1114e14b8faf27fbd12c747c03583f", + "static/images/docs/mcp/cursor/cursor-create-user.png": "1b159f4a4b98fb7c9637524d27f610a3728e2ceb73884e19d047865220a589f4", + "static/images/docs/mcp/mcp-for-docs/api-reference.png": "95363bfe4e9bad552d8eb9a6342beb8183d108ee98d27f323167d1a22ba0862f", + "static/images/docs/mcp/mcp-for-docs/best-practices.png": "1275c41e2247be17d506d410c945ddc192d6e9268b0b42c9f7753a88cf01609d", + "static/images/docs/mcp/mcp-for-docs/code-generation.png": "c300e960b0c7c43128beec929ad1d7ba4448473e8635aa4b96b4d3eb82bdf631", + "static/images/docs/mcp/mcp-for-docs/troubleshooting.png": "d1c321ff920c4c130aeff73e976fbb5b4e94bf4a6906304b66d78b00272a133c", + "static/images/docs/mcp/opencode/oauth-question.png": "af7ba7b7b0808d7c2f50fec2c3158402995a3dba6a0c4d0f664ac451027b485a", + "static/images/docs/mcp/vscode/copilot-chat.png": "62aec2b589202897ee1184e538c2d11639f252b52e63ca28acb874aa3644c993", + "static/images/docs/mcp/windsurf/windsurf-add-mcp-server.png": "c105756cdcb0f5a9a4f979da344afd76f8dc1b7bf6a02313a1ff72165d52ce71", + "static/images/docs/mcp/windsurf/windsurf-cascade-chat.png": "47bafc3f59803b7f7e8dec2e4c9823f5454e268933efbbd9453e8ae5b66233f3", + "static/images/docs/mcp/zed/zed-agent-chat.png": "2f7f8a3403bc0e7299265a4d012da7dd4dbe3c98b8519be8ce9f1b1cab82fb17", + "static/images/docs/mcp/zenflow/zenflow-chat.png": "c4334ccaf33cfdfe707a2592e2010a1832a697e52a0cfd5e5c7377422f538b97", + "static/images/docs/messaging/dark/message-overview.png": "cb33e8c956e4281c9f75c78ed97fd7892f6c03f7af757d33805afcfe9375166e", + "static/images/docs/messaging/dark/message-status.png": "8b280781835ddf6178f5ad88db9a45933aa25cbe0a71a9f8c5eb196c4cf4cbdc", + "static/images/docs/messaging/message-overview.png": "b8bbb63fd99fe5c1d35afe0f584f648d625b199d4779dd5bdea8ea698d3ff529", + "static/images/docs/messaging/message-status.png": "deb5d6d21db4bf78aad3dd48045eeb229cb6d987dea32a2b38938c4237ea0a59", + "static/images/docs/messaging/messages/create-email-message.png": "9fbe18c57eb9c262b800e8542ce5314c0353fa02d37a082a248157600c5e8281", + "static/images/docs/messaging/messages/create-push-notification.png": "b8bbb63fd99fe5c1d35afe0f584f648d625b199d4779dd5bdea8ea698d3ff529", + "static/images/docs/messaging/messages/create-sms-message.png": "265282b46be70144a13551f4023bca9f93b6c135a0db2ca9b84ec00fad85b265", + "static/images/docs/messaging/messages/dark/create-email-message.png": "8c63972c33b8f45e2e0efd54c5d277b28174f2333a15c5790d86463cab935fe7", + "static/images/docs/messaging/messages/dark/create-push-notification.png": "cb33e8c956e4281c9f75c78ed97fd7892f6c03f7af757d33805afcfe9375166e", + "static/images/docs/messaging/messages/dark/create-sms-message.png": "082c917532cbffd3a767632308f26aa39ae0ea960d75d7d7beb7224bf550f5ca", + "static/images/docs/messaging/messages/dark/messages-overview.png": "87dbd7f21ee799d7534209ba5a9dea07bc9730cf807c4997de68be0f61279460", + "static/images/docs/messaging/messages/messages-overview.png": "fdfb6520eae59cb9f6cba4ec22023e711e109bf54b86af686a005ffd7c96af48", + "static/images/docs/messaging/providers/apns/authentication-key.png": "c9dbec50762a87db7e60c8435d3657d29ccad1513c736dfcd60b170e55c6d242", + "static/images/docs/messaging/providers/apns/bundle-id.png": "de4698d38359be1785b3fb9983285a1c3b1101aa0344f2ecbe863a3511d20187", + "static/images/docs/messaging/providers/apns/dark/authentication-key.png": "c9dbec50762a87db7e60c8435d3657d29ccad1513c736dfcd60b170e55c6d242", + "static/images/docs/messaging/providers/apns/dark/bundle-id.png": "de4698d38359be1785b3fb9983285a1c3b1101aa0344f2ecbe863a3511d20187", + "static/images/docs/messaging/providers/apns/dark/key-id.png": "35f8b050f463e4ca7b6d2e818950bec79e17339b9c77e955e845cc26b14775c3", + "static/images/docs/messaging/providers/apns/dark/provider.png": "7c65178ce9f1294722591cdc98fca8cb1f869a626e50036699029642abb85941", + "static/images/docs/messaging/providers/apns/dark/team-id.png": "fade21913d15e7ed007073097ff13460d9a8223f6d082970ece7d88b997cad49", + "static/images/docs/messaging/providers/apns/dark/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", + "static/images/docs/messaging/providers/apns/key-id.png": "35f8b050f463e4ca7b6d2e818950bec79e17339b9c77e955e845cc26b14775c3", + "static/images/docs/messaging/providers/apns/provider.png": "35636188ffff8663ed61882551b264ff409314c12d85dac833dcff922b70d408", + "static/images/docs/messaging/providers/apns/team-id.png": "fade21913d15e7ed007073097ff13460d9a8223f6d082970ece7d88b997cad49", + "static/images/docs/messaging/providers/apns/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", + "static/images/docs/messaging/providers/fcm/admin-key.png": "6fc232db47d0be5940efbc4001d84df174263f9198c0dc5d84d4a2fcfd0cf568", + "static/images/docs/messaging/providers/fcm/dark/admin-key.png": "027edc39a2fae5534daba4ab6ced82d94fb72a3f6ac09f122bfa167caa7f135c", + "static/images/docs/messaging/providers/fcm/dark/provider.png": "7c65178ce9f1294722591cdc98fca8cb1f869a626e50036699029642abb85941", + "static/images/docs/messaging/providers/fcm/provider.png": "35636188ffff8663ed61882551b264ff409314c12d85dac833dcff922b70d408", + "static/images/docs/messaging/providers/mailgun/add-mailgun.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", + "static/images/docs/messaging/providers/mailgun/configure-mailgun.png": "0a82e677c864b7fb83ce3ef1048da1c5bf511191e95ed93a512135056e93caef", + "static/images/docs/messaging/providers/mailgun/dark/add-mailgun.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", + "static/images/docs/messaging/providers/mailgun/dark/configure-mailgun.png": "9ce80a1ec126acd5d1a938450888907ca9e3229122461f0e59f8b04a7eeee568", + "static/images/docs/messaging/providers/msg91/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/msg91/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", + "static/images/docs/messaging/providers/sendgrid/add-sendgrid.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", + "static/images/docs/messaging/providers/sendgrid/configure-sendgrid.png": "bd25a5a79914f921943c785cb71a065f22c216a77559177b9414e0e10dd77cfd", + "static/images/docs/messaging/providers/sendgrid/dark/add-sendgrid.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", + "static/images/docs/messaging/providers/sendgrid/dark/configure-sendgrid.png": "a2aa070f29d566d00ac34a82c7bc5772f35899bcf557e7261ce8d424c84c817b", + "static/images/docs/messaging/providers/smtp/add-smtp.png": "cf2543fb595e33ab2b19564e1fa85d76e1c781e235b0e46ae48a67323e00ef65", + "static/images/docs/messaging/providers/smtp/dark/add-smtp.png": "f34580f121233067856e5d96b5e89df35deec2fffc5c0c827b991669c9c6f163", + "static/images/docs/messaging/providers/telesign/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/telesign/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/textmagic/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/textmagic/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", + "static/images/docs/messaging/providers/twilio/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/twilio/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", + "static/images/docs/messaging/providers/vonage/dark/provider.png": "6b64f7373ff1d59f30642942c64aba4a33845c051b9166c283f38616c53e6a6b", + "static/images/docs/messaging/providers/vonage/provider.png": "2c486b1c7897bb07e1135988b04f5b87adbc94fb483f5f7f7d91bf5bae2f7621", + "static/images/docs/messaging/targets/add-targets.png": "6d556059980c6044bcfbcca9dd3a788668cc5d14aeb8435601b50d88c8c5d445", + "static/images/docs/messaging/targets/dark/add-targets.png": "30a6f8857872afbb039c0b0c49d22125bcfe24ac4ca16977239765aeb6b06d55", + "static/images/docs/messaging/targets/dark/target-overview.png": "fea677a37e9e52ffcaa732b51646c9b94870636ef7f8e60f4f09b0136ab988f3", + "static/images/docs/messaging/targets/dark/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", + "static/images/docs/messaging/targets/target-overview.png": "17b9916836857a5643b0aae6d7cdd262cf5691531424171af7afdcaf2d81a93c", + "static/images/docs/messaging/targets/xcode-enable-pn.png": "a7f96c879d9cff488947f1c5a5f836a4e5b1932f35a0f722b289094a5d748984", + "static/images/docs/messaging/topics/add-subscriber.png": "1a3c0f3ad789ce234edba36aa1a8629da81cbf6e3fe7e2d7cac101785c004967", + "static/images/docs/messaging/topics/create-topics.png": "c1fbeebb4c87a0d056b0233554017ff956eedadd33d548eb85bb13437ea0ba81", + "static/images/docs/messaging/topics/dark/add-subscriber.png": "f8e15bf09666a3c63eff2d063a0a67bd6179b761321b95d599901ef9ed31eee6", + "static/images/docs/messaging/topics/dark/create-topics.png": "c5edcc9f3520fcffda63037e9ac868630bc0168e0435bd667c2eb6862f7012ca", + "static/images/docs/messaging/topics/dark/topics.png": "384cb364c5e927021f8679e299621277fbfe94870d53ee85ab2ad9a4610bce8b", + "static/images/docs/messaging/topics/topics.png": "7cc9165a3393eaaa4094a26c28801b529b4cdcf4b88c321efd6c6c7b2f2215e3", + "static/images/docs/network/all-maps.png": "93e18e80eddc1e2bf7683fdeeb81de066fe70d74fce52875e89ef1361d4fcb36", + "static/images/docs/network/dark/all-maps.png": "7d94238252c272f2b97405eed0ee8acf9c541b4f3932d70f441c69851becf36d", + "static/images/docs/network/dark/edges-map.png": "081c4a21883848a93cdc9274f06b58bedd3f9e5175eba9bf015f389959bc6d00", + "static/images/docs/network/dark/pops-map.png": "a2c658165d7a5648c736418c59a60ce6373b5e8639502a4f43ed81da5a2a70ce", + "static/images/docs/network/dark/regions-map.png": "6c0e02131ebb9604874316314812d1047742337f70cb47e1afe370d14d35347f", + "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", + "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", + "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", + "static/images/docs/partners/apps/account-applications.png": "85b60bff922db940aafe30a3eb5c1646d66a30f6d7894df2f0c14c65bd79d7e6", + "static/images/docs/partners/apps/consent-screen.png": "5c6875f7d9af0180d0c5859bac2c57bb620a2243aac72530ca122a40f3758b50", + "static/images/docs/partners/apps/dark/account-applications.png": "03389413091ae6530ebb592d9aade7248b0b8b1a34e4a1b90c3f48480bf01ae3", + "static/images/docs/partners/apps/dark/consent-screen.png": "cfb1385940b821a39a90e2c2010d6a9d86b7d02373adb564e78711088acd092c", + "static/images/docs/partners/apps/dark/device-code.png": "e84f23cfcd904cf5fa5aef2642738fb6ce2289135c8f7d74c5b85d36b3da127c", + "static/images/docs/partners/apps/dark/diagram-consent.png": "cdf260c28c98ebebe8e553eb8600dece94989d160bece85c1fee63e9cf21de21", + "static/images/docs/partners/apps/dark/diagram-device.png": "208a3dc343bfd1c4ea16d64b6b19e8efec363855231b0eaf467de1397bc29a64", + "static/images/docs/partners/apps/dark/diagram-overview.png": "1fd06d30fc53efa69157f3c6be62c991610acdc7c97463e58341310d6fc0ebe5", + "static/images/docs/partners/apps/dark/diagram-registration.png": "66abebb561a61bc51923f42c6f85ec63a4de4ce57901f74072fa3efb50277f30", + "static/images/docs/partners/apps/dark/diagram-scopes.png": "ee95a74b1ab45607c4ab72f8522ecc624471f81b74139cf5288066e3c8fe9c2f", + "static/images/docs/partners/apps/dark/diagram-tokens.png": "99c1951b4640fba1d7e116ef0dd75ed5c171f843f6ff312bc16f2b0f08e2239f", + "static/images/docs/partners/apps/dark/quick-start-consent.png": "7b5c60b821ea7d3cc037ba77f97e858429c6a63a99b453ac063fbe9628e458c5", + "static/images/docs/partners/apps/dark/quick-start-provider-setup.png": "55a2bd989f7d7237d17d2bdae78d5d1cce8adadd01e6c155ff1c766cb26a1fb2", + "static/images/docs/partners/apps/dark/registration-general.png": "790e305253b5371db9997c07234a9f464fb8b1f2529206f4b737ddca4a1729a5", + "static/images/docs/partners/apps/dark/registration-legal.png": "aa1e4180df13f90e2d2797b2166bb401d05c7d90307bf9553f6fe06c0ecf00cf", + "static/images/docs/partners/apps/dark/registration-marketplace.png": "e7af87266c488d7627d5334f9b4264afbbbcdf26f61e3cef1d44685e19008948", + "static/images/docs/partners/apps/dark/registration-oauth-client.png": "5cedae65dc096c51c644b7a8946525171a62398b20ffa593db86b6ad4aef7972", + "static/images/docs/partners/apps/dark/registration-publish.png": "e50dd334c7df7d926821ee37c07762e0fea196fd3da8a5bf6ff7b92d21b8b09f", + "static/images/docs/partners/apps/dark/registration-secrets.png": "fb81e51364c7ff4267fcc985b9556e697b5541b16b7520e9b5780b1cb3477dc2", + "static/images/docs/partners/apps/dark/registration-support.png": "f2d54e58b11f638401b0f4888dc5f404816dac86584af3fa571f6c045e7b3053", + "static/images/docs/partners/apps/device-code.png": "1afe19a6a183e2a0da2a4777db710d2b88e28e3dc51d0fedaed3dbcee1b29580", + "static/images/docs/partners/apps/diagram-consent.png": "3ba2989ce6f09ea5c3a0e49665d005c6f6b2fb1b92b624c2c2c30460649f96ae", + "static/images/docs/partners/apps/diagram-device.png": "f620b3b450ca3b34fc9326cb1b4bd9fc7066e4c912b229c211e1ef30ff77010d", + "static/images/docs/partners/apps/diagram-overview.png": "81932121776e4ac7af3a93fe4cfdd93a44aa8c4dbc739bfc08a56c92665bb612", + "static/images/docs/partners/apps/diagram-registration.png": "46b85ba2d4bbcb932c6b15d338586542d67346d981f204d36aa3e4f5bdd6debb", + "static/images/docs/partners/apps/diagram-scopes.png": "cc01f8f049ce13956c0311f3192c41ce964f89819e016e61deb29475ca5a600c", + "static/images/docs/partners/apps/diagram-tokens.png": "c1f169da1c3c4abb51936a117d41dba5a71c721c508a1a91bc6cd8cf0b25149b", + "static/images/docs/partners/apps/quick-start-consent.png": "43ceef1d6e6a1f4b73ae0150508909f7af903332dc2817ba168fef361b185e57", + "static/images/docs/partners/apps/quick-start-provider-setup.png": "1c3dce9dc68df86c0744d86cfa0e2bcb2185fdc52f5fe22138ab8d21b1f571f2", + "static/images/docs/partners/apps/registration-general.png": "78b66e81d64fcb3bc421ac8ae923f03753ee730996c56e16fe3d4aeedac591c2", + "static/images/docs/partners/apps/registration-legal.png": "7d11e03dbf12709c2a349accd813e86315e85cc1fbf74d7e4c69f69ede48d39f", + "static/images/docs/partners/apps/registration-marketplace.png": "0b9aa3fb30a5c8dc0fa857c177f6bc714c490933c395c14957c56d27f099ccc3", + "static/images/docs/partners/apps/registration-oauth-client.png": "bf6d7c6afb0d8f75371ca261386c06a3f0a8e1942a1cec2fb910a296c2f707fb", + "static/images/docs/partners/apps/registration-publish.png": "734184fab22320d2c473d25ee8218ee6ebaed5971787d1e1930057d0135cad8c", + "static/images/docs/partners/apps/registration-secrets.png": "92e6ecff867e92d64aa6ceea0b67a711b7e1d715c9f3f99dc4df10e663a68aa0", + "static/images/docs/partners/apps/registration-support.png": "da585bd47fa71c9277a8f98a2b561c9fd31bc99a11a9169367a82bd3e744f8ae", + "static/images/docs/platform/add-platform.png": "5a05bb9d75a8d5270bfa5e67df7e6de20a9fad174476a112b5bdab72e7bdad30", + "static/images/docs/platform/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", + "static/images/docs/platform/create-webhook.png": "77e08173da6ac534524e025433cf75e532d853a135944a7c6ba2278357d88b2d", + "static/images/docs/platform/dark/add-platform.png": "1bb0e7dba22556e64064951882d625532285fa80bed43fd77774f31545a15b0f", + "static/images/docs/platform/dark/create-api-key.png": "f15696f0b28dfc46813d7185be11da8be89da72be66b1894cfcc7227036e4afa", + "static/images/docs/platform/dark/create-webhook.png": "88f7f5c857fe986b5803c7df003c4db55faa79e3fa3135cf9491073d0b2736be", + "static/images/docs/platform/dark/env-variables.png": "da2a73b5d3420063e9869c40050b6168e5b5446a97772a26ca2a894e36021134", + "static/images/docs/platform/dark/execution-details.png": "c0481ddc206447460f9d317ba8d421615066f67a50bc9ef41a8f71766ecffb14", + "static/images/docs/platform/env-variables.png": "16f95151e4f6ee9fb8056f075b9f5027fd91f0c2a28586c5624c3ffe9b7a1ee8", + "static/images/docs/platform/execution-details.png": "ece1364b8b00254bbd982421b6eed6d7f519d34c4e80377fcaaa4cb5d5dd3f89", + "static/images/docs/products/databases/concepts/dark/index-lookup.png": "2866b226af8235d58ee2d6e42fe941cc6648db77210a995cd11b668e43cae477", + "static/images/docs/products/databases/concepts/index-lookup.png": "530acb39218dccdad6388986119b04446fa0769719c120c5c3aa69552ca75cfb", + "static/images/docs/products/databases/mysql/create-database-specs.png": "623282bddd45eb245adb20166fd336089718a91bb7207a4f22b9811e13b96ba7", + "static/images/docs/products/databases/mysql/create-database-type.png": "0ff2c521f3f40f467587954120339572bcac0c6d6f76f0f2e6935e640d7adba3", + "static/images/docs/products/databases/mysql/dark/create-database-specs.png": "41bcda64b5cfac906639e077549c1429ec3701f8af9f49c4d1548e4716a23028", + "static/images/docs/products/databases/mysql/dark/create-database-type.png": "2a212e8322d6475dfdd2a1599021bd94f5fef42414e76ff13d0a59aca431b287", + "static/images/docs/products/databases/postgresql/connections.png": "e3096521fc169b41bed8a01c77afc923d1fd1ef53939940b90c3bbabeb3294b3", + "static/images/docs/products/databases/postgresql/create-database-specs.png": "80c5136b2df7f9636f230cda64efd024e5a0867d283d5d6750b05b1da8514b25", + "static/images/docs/products/databases/postgresql/create-database-type.png": "dbfb5e319e8ff5cdefb2691d0ab8a9a4a97edb94a62e52fedee726b1585f56f7", + "static/images/docs/products/databases/postgresql/credentials.png": "45d224d28771564581ccb4c4ae8d733fa192e3c8121fd4fefd63e28b91b9b764", + "static/images/docs/products/databases/postgresql/dark/connections.png": "c4a9abd58079668afd131627e8625811bc2d9b902a395050720a8cfafabc341f", + "static/images/docs/products/databases/postgresql/dark/create-database-specs.png": "07d067e17932689a9e014262c6315e46dd8bb2edd4e4619bf112dd743eca7936", + "static/images/docs/products/databases/postgresql/dark/create-database-type.png": "de3281805c2193d8f82ec81b53e1031bdcb6bfdfda875832d041e07d8f407579", + "static/images/docs/products/databases/postgresql/dark/credentials.png": "b44c3e27fe3e217ac048f5207ec55cba75a34ffe0a056290899ab62b70536491", + "static/images/docs/products/databases/postgresql/dark/monitor.png": "f8921ca48411bab35403b13894a8cd05216c931c206f86b853a3d236302660ad", + "static/images/docs/products/databases/postgresql/dark/roles-tab.png": "2fa52745b9e2c6e072332aa4050d4995fe10a779af931f01ad22dd280e337b9e", + "static/images/docs/products/databases/postgresql/dark/settings-compute-tier.png": "8efccefed72b6543f5a62ef64990a150425fad02aaecc531c42d51ac900fb210", + "static/images/docs/products/databases/postgresql/dark/settings-high-availability.png": "d8f12ff6c9b1e6ac1911323ec2ad4591e6bbcdc6bc56f0bc96e9344ff9e5aa5c", + "static/images/docs/products/databases/postgresql/dark/settings-network.png": "cd2924cdfa1457338a0f53a5055f62abf13350b722ef4b788693f1d7861e2631", + "static/images/docs/products/databases/postgresql/dark/settings-pitr.png": "773fc9622de3299b5d94c6de1fda0de53233143be5acc032f6eac65f044434ce", + "static/images/docs/products/databases/postgresql/dark/settings.png": "51ecfdd292149a4b010704b2a21d2f0cad00a5bd3aed1f6f88d9efb35be46f09", + "static/images/docs/products/databases/postgresql/dark/sql-editor.png": "128fa75d8518612915df4a4b5de6c096ab05dd7df48bb89414e3330977ea5a17", + "static/images/docs/products/databases/postgresql/monitor.png": "da2160f8c22ae0dba29619672d04adea9e553e07e342931775fb432cd000c69a", + "static/images/docs/products/databases/postgresql/roles-tab.png": "b13d5caaf9a839ee5dabcbcb156fda3594ed38f7c30c4f092d1095bb5a895edb", + "static/images/docs/products/databases/postgresql/settings-compute-tier.png": "a4a7ed1d2ad3fb01ca8adac0497d075fd58cc11e0f53ece7ed2257eca0828fd8", + "static/images/docs/products/databases/postgresql/settings-high-availability.png": "1a84efe9e0132012d009eac1b52a67739fbf471761ff0cce323f7b160f3aff5b", + "static/images/docs/products/databases/postgresql/settings-network.png": "ef685f1b56c80259c944d39033a895bbddf6aa8744964d47677863b9c94f0ceb", + "static/images/docs/products/databases/postgresql/settings-pitr.png": "267a9f4b60667e618f8c6ff09615c19423cfec7e182421fc929339e537d861cf", + "static/images/docs/products/databases/postgresql/settings.png": "ded8f34bcd1b812ea5a9ddcb48a34db8678ae696a9b03ab16c934b29621b395a", + "static/images/docs/products/databases/postgresql/sql-editor.png": "595b73cbd6f712d31b015ac224f6cb606875fe3a98cb7bf3c09ac6cbec25720a", + "static/images/docs/project/auth-methods.png": "caa81b517332b06cf539edf25de91a444d8e19ac212d2dd8d75ba14f74933db6", + "static/images/docs/project/create-api-key.png": "7661b3845e13704643f8ff4f763faa8e61efb90878c3ffa7466ece0910b8ecab", + "static/images/docs/project/dark/auth-methods.png": "45421e0c586c5f7dc156e823642ab9667f97950f23ca01ce3b8d993ee49fb820", + "static/images/docs/project/dark/create-api-key.png": "f15696f0b28dfc46813d7185be11da8be89da72be66b1894cfcc7227036e4afa", + "static/images/docs/project/dark/email-templates.png": "8bff7fd71fef2c2a30106ab93dab9daf26ff4ae4b3f1031fb502f2b5cede4a0f", + "static/images/docs/project/dark/labels.png": "b7c5abaa89675ab00356e468bafe159fe690881d9cb01d5eb1fb25c70ffa2d07", + "static/images/docs/project/dark/mock-phones.png": "f26a9cd69f3bc57279cd17109336ea8f55c40f22118b29bd3066afb678ebdf84", + "static/images/docs/project/dark/oauth-providers.png": "4d16fdb37b8f1de8c27a923aa0309e5dfd2bf7666621a11091d6443bed861bc4", + "static/images/docs/project/dark/platforms.png": "d8e1f107a3c9597ac703fa3c98279bf7bb398761c137455344a8cab05857ec0b", + "static/images/docs/project/dark/policies.png": "d51a421b4c57b4f2a0d28653e156325b113816a2ad096a2ff15bb15702362b6d", + "static/images/docs/project/dark/protocols.png": "ff39e7d76dd82d5d13024dd39f589f49ab159c67d1805cb32d3f8ba907b62822", + "static/images/docs/project/dark/services.png": "fd58dd37313629739db739392a287c5bd15cc196ebb9ed0095b069684aaf6218", + "static/images/docs/project/dark/smtp.png": "8ce568291e90b4e46039d9b8e19cc7ba4a57ccbbd452af8138ad68cc313b874d", + "static/images/docs/project/email-templates.png": "2e1c76df90f6337c13c95224254511b6cb27aa1e9d3568ca92d532fa00dfacb2", + "static/images/docs/project/labels.png": "c3c1da1332ce324bc9cc7506979eb62ae10864fc64fa133d011470748a155cea", + "static/images/docs/project/mock-phones.png": "ad8c936aafa4782f44611e1c8be9a0a85578485cff3ab49356355f10c178be4a", + "static/images/docs/project/oauth-providers.png": "14a9497cbfb216bc66ce0ce4709b598de640608c07976dda3261f63186df06bc", + "static/images/docs/project/platforms.png": "7200e9aee04f6fcbc1d232a474b9f80ed406e78ec981c59f69f576649fa8f564", + "static/images/docs/project/policies.png": "1a35fa9333be000e5131e011fa7e7644aea1148e43d238fa51c98366b7d5871b", + "static/images/docs/project/protocols.png": "22bfbe1bc2960244c467d8dc373d4b021a79ee9a9b01e9e1d89c5cf3b0bea385", + "static/images/docs/project/services.png": "b7bb5785e64fdace11e6989a070e326cd1dfc5a67de9a8e17e80ebde20c5fbdf", + "static/images/docs/project/smtp.png": "52a456cd65a8aa9049bbd09168d945b10ece6f80ddf6c15f4ab2fc40affa9fc7", + "static/images/docs/quick-starts/add-platform.png": "3b13ba983ea1d2529a1f34a719acef903ec0b58879ed511012280a28ccbde17e", + "static/images/docs/quick-starts/create-project.png": "7fdb25def02c5dbdb08cd38c2d03b7b454c930194a900553e3e68d51cb28a1d5", + "static/images/docs/quick-starts/dark/add-platform.png": "b12a85b64b136589268831b9cb26a664ec97418ad25a38be5273baab8253aa16", + "static/images/docs/quick-starts/dark/create-project.png": "0052d287bd84b36962832b3347e322209ad4d25fd5b4c0c65cb01ff6a7a10937", + "static/images/docs/quick-starts/dark/integrate-server.png": "81d3034027024c1939c7c4b8ecce8a02ca36aca573f2062c6865b7a3106e1b53", + "static/images/docs/quick-starts/dark/project-id.png": "9e2af09237c50630355cb74a3ffb923438df18fd1e2ff56efa4bbf2fc15d3442", + "static/images/docs/quick-starts/integrate-server.png": "203b96264e104f06500e645c556b1cdebd1c7abcc29beda898fa631baadc43d7", + "static/images/docs/quick-starts/project-id.png": "500863e0f77e32b5a0c593e2c55b23bd114338948176f866b89f8af10ceaf7ba", + "static/images/docs/sites/add-domain-cname.png": "396a3b24fa4df6954d8ba7991291ee7227a5b049007f1330342d9551a6721692", + "static/images/docs/sites/add-domain-ns.png": "77564b8f3a4a30221e3003e7294f5bfac2c2d531db5a229134d461a13ef6a7b6", + "static/images/docs/sites/add-domain.png": "23f52d29a1a510ec404b97f999cdf146d7d1a3eebdfa859d633c41d76b11321f", + "static/images/docs/sites/branch-commit-urls.png": "ede353ba437785726cbce1a3850f6ed67fe950bfb96798c6c0181f5b2f81d950", + "static/images/docs/sites/build-settings-install-command.png": "6a132e2b6af4faf82ec1833524ceee7b66d63ae14a57038f5a20b0eb10e97cfa", + "static/images/docs/sites/build-settings-rendering-ssr.png": "974041353ce2453d9f1ba5e07171502e992d36c61b8c8940b59ed5e7a90c8d68", + "static/images/docs/sites/build-settings-rendering-static.png": "27f10511e13d85365c86c992f3d191ab62e5cb72ed8254815a257ecfbba133ba", + "static/images/docs/sites/cancel-deployment.png": "7e532109967d43fd74661374d9e4f97647b9c8ac5b0194afa35498f0465843d4", + "static/images/docs/sites/create-deployment.png": "0ef48ff80a34db4c4fd129142b2ebf27d6b558c1137f45b8e8380f6dede597ef", + "static/images/docs/sites/create-first-site.png": "39d14e09887877fc0015b894cf5d6649dab0e05dd9afc74ab43c4d4d53679c45", + "static/images/docs/sites/create-site-wizard.png": "6874dd7e6e1018ed5e277092b9bfabaa54cd76805e26ffee8ac0c23cc00386b8", + "static/images/docs/sites/dark/add-domain-cname.png": "e68464d428c90d3e329bd229109add8fc7462fdf6220b949eeea3d2e91169960", + "static/images/docs/sites/dark/add-domain-ns.png": "c23a3500adeefe2f940b26582a3c44f2c567b27795e7aa6ea85af8ca49cfdbc4", + "static/images/docs/sites/dark/add-domain.png": "39dcdc16a06e1755d87c70329618ae97dd40052723006485d7d05bf263cbee95", + "static/images/docs/sites/dark/branch-commit-urls.png": "ececfd4f560295a83beb304c5740244deffcbd6a66d2861182af2e4da98bbc0d", + "static/images/docs/sites/dark/build-settings-install-command.png": "aeab3da28cc1133b5ba30d70f7b5ef5b324f7007d8a190ba04bceac2b6622193", + "static/images/docs/sites/dark/build-settings-rendering-ssr.png": "11b048b4c2c24b615d743c565d444311dae411f14f3cd62cba01e94ee95d5ef5", + "static/images/docs/sites/dark/build-settings-rendering-static.png": "b544ef0f46e5cf5a559c82bc4cc824e8d0cbff6a5f261317266ad3029c2c5af5", + "static/images/docs/sites/dark/cancel-deployment.png": "a2079bd1215cdfb96912cf6a18a38ea709d29dfbcf55264b2d06d2acfdf147fb", + "static/images/docs/sites/dark/create-deployment.png": "3ee5d50486093881f773aa81c9ee78580a768b53e607c70748e429769bd9830b", + "static/images/docs/sites/dark/create-first-site.png": "f8533eb166c15a1acbeee7b2ba2ff3427682419be6f4ef80ebf1a17d97acbd55", + "static/images/docs/sites/dark/create-site-wizard.png": "ebd1295574354780dc322723c0eebf0318c625541b2d433bf2703145fa083eef", + "static/images/docs/sites/dark/deployment-logs.png": "d0fa8808c1fa74ed1762e1a77842d8c70c6a1d746da467f8c5622b1659d379f9", + "static/images/docs/sites/dark/deployment-retention.png": "e34f3af185354cc9df9392790393a00530fa7a1b790ccc464a1b7f36d71d01d6", + "static/images/docs/sites/dark/env-variables.png": "091fee9e8505df6c1b9b3c20ab59be40b2effe5299ad5202b43cf2cfe7b5b085", + "static/images/docs/sites/dark/git-repo.png": "af8daabb8d6ff48e0a95d45d5a643b4daec8df6301dddc098dd651bdfd1f1284", + "static/images/docs/sites/dark/github-source.png": "2ee329e009f045a879736a39cef8fca262da06c568eb6bac2ff1b7a70269989a", + "static/images/docs/sites/dark/inactive-deployment.png": "efc25a312fb5f3ebd94ad0fd438e33bdb9b1c0ab4b199b12ee257cd32d5473c5", + "static/images/docs/sites/dark/instant-rollback.png": "e58b3db2de0b3033ea04299cdd3872e97414b502ea7494773b1cef105e0b6850", + "static/images/docs/sites/dark/log-details.png": "4a4827ded6d8e10a0e643716c32200152dfbe9c77bef3c57e2b0b05fe06afa8c", + "static/images/docs/sites/dark/logging-settings.png": "67cea3ac62308aabd1dbe64981fa955a5b66c7530a26315414341d4f07284246", + "static/images/docs/sites/dark/manual-deployment.png": "af051ef9f95bbf0e12d76ecd1e0f92adf9fd39aac193427f47aff134693c0faf", + "static/images/docs/sites/dark/preview-deployment.png": "13ae79b4614bf0c29b159217b75a5e61df738c574e52103ae17ce37c65e5a9d2", + "static/images/docs/sites/dark/redeploy.png": "4e6c6c139678e9c8e570097af32184f842e81f5212b7849ea6d41d51ea14eb03", + "static/images/docs/sites/dark/site-templates.png": "8667c6a812936b305f97e90119a282f43b057de9112d2103d66745cd6e9ffa58", + "static/images/docs/sites/dark/timeout.png": "55485f8c89156e37f128725a6dc593be8ddab6e5f5b7000dc6f48500bb90cca8", + "static/images/docs/sites/deployment-logs.png": "e52c90b303ea699d6ac79de5ac07efadf52a8738f49ce3fb1cf8cc21319551d2", + "static/images/docs/sites/deployment-retention.png": "e2c7fbcf9acca5dde18f57d562096e0dc7e83222b188223058ad33b92b5b4feb", + "static/images/docs/sites/env-variables.png": "f51eee95b324f9cc0d7ef995b30ce795f54cb05ffca68adf109c3149eabfee6e", + "static/images/docs/sites/git-repo.png": "123ac583cd78bf0ca56fb045b168059b4292f713f470988077f4101a9b5f37c9", + "static/images/docs/sites/github-source.png": "eb58d2223e2a71c4ed4e91352e365fbc2bc88a3013fa44e3f618e843e26da64a", + "static/images/docs/sites/inactive-deployment.png": "0917682c98d63975de888fd521060d5f86ea967879451e392585ba11172d2cf1", + "static/images/docs/sites/instant-rollback.png": "2b896c4d4b6551004b6d22e4a8da6f5d4dba1f31d9bebbc7310a35584e19cf0d", + "static/images/docs/sites/log-details.png": "f8c36c823312330ac21795f29ea106afcf12009a810d34fbfa57baf5a0144a2d", + "static/images/docs/sites/logging-settings.png": "82567ee93b7507201172bca5e9089fcf375d079c276ce326170fa221fb72f521", + "static/images/docs/sites/manual-deployment.png": "82e50a2387d862c61f83bd3a7d75814bc567c070318728669c61b08ccb3ca2b7", + "static/images/docs/sites/preview-deployment.png": "e85843945aadfd40714d49d7f554c5fc4b0ae05265805af7437a620ca85c2dbb", + "static/images/docs/sites/redeploy.png": "f4a4fe1ba45a02ddd7513c66f966ccc89b747d1dded7ce732858a03952a867f3", + "static/images/docs/sites/site-templates.png": "f6886138f4a6d17b245c4d23dc9e8a2908d5f4eea3a4337d9f73220b4ad3b889", + "static/images/docs/sites/timeout.png": "aef6461e4d4e929f45e435d25378c937e5706cc1ed1faacbb577d815482a43e1", + "static/images/docs/skills/method.png": "980b5054c4aebe443993bb32bb069a532f54c345804f40c36b2901338ef598ef", + "static/images/docs/skills/scope.png": "f031aa64b0d8b5d84bc514f742a9aa4f049aa1ad3366a6fe79eb8281dafaf142", + "static/images/docs/skills/skills.png": "05c95624d7670d39da107c441156eb62fa3b0827f5dbd845ee388163932471da", + "static/images/docs/skills/tools.png": "5e70fc0bd2ead04ce1b8986f438a3af6ba54133ec88295223c59731e969ec964", + "static/images/docs/storage/copy-file-token-url.png": "c3e0636256aa626b9e636794dd9c7beef1e6dd3fef9e879be1d51205dda6186a", + "static/images/docs/storage/create-bucket.png": "910cc635a1df6c523d77558cdf868669ed6e244584c9f8161dbc258419ce14bb", + "static/images/docs/storage/create-file-token.png": "b96a38c5d335492aa9916a00a58785499083190165f1e47129733dd9dbf695d4", + "static/images/docs/storage/dark/copy-file-token-url.png": "c85415750d1b8690581e6ee7fa4da5503e9f757cd0bf9ca0f7313c35f0fe7eee", + "static/images/docs/storage/dark/create-bucket.png": "f5eb234822a8b60ea837e76c8067de4d7829c37a8f2e75b71a2f05840cb3466a", + "static/images/docs/storage/dark/create-file-token.png": "3c8b8e9001bd6de52bfa370ac7902bacf29eca6e6cace9e4ec862fc72204ad12", + "static/images/docs/storage/dark/delete-file-token.png": "328b010618af595906371171fc331b0c5974503bad2ff0e8aa5427662bb87655", + "static/images/docs/storage/dark/list-file-tokens.png": "9817f2df138dc6f9b7f7d426ec332e643cc4568364120a635cd491b228c90076", + "static/images/docs/storage/dark/update-file-token-expiry.png": "8475610efbb0cc7509dba07abc49db3a915c418eefd9993d31525c1b88f8104b", + "static/images/docs/storage/delete-file-token.png": "a164513305bb6786461634cd52543de1ddf57986357884f2191862e776fd7716", + "static/images/docs/storage/list-file-tokens.png": "560848ab320baad5cf2c86637d31c944af31e5a9d3994be97ebd19ac86d6209d", + "static/images/docs/storage/update-file-token-expiry.png": "75e1e752bb2c69347c1a6c8d0daf3d53a00614d89950fa5e7aad63cbf49046dd", + "static/images/docs/tutorials/dark/idea-tracker-collection.png": "c95349205b8eecb6a79337fc5c248fde5b43ddcf5950ddab84b3e03990a21a66", + "static/images/docs/tutorials/dark/idea-tracker-permissions.png": "b52e26ba4f25eb645b44caff6dbcf5af3ba8f3e5aa8aff52e7b115ae5946eaca", + "static/images/docs/tutorials/dark/idea-tracker-table.png": "98194f16cbd2091c09d7969e6d59a5df8643118c6fec4bb608bd9f6d1d47559c", + "static/images/docs/tutorials/dark/idea-tracker.png": "9820e4943d3eeabf32f1411dbeacf3e7095802c4c12611f3a34f268ab797ea53", + "static/images/docs/tutorials/idea-tracker-permissions.png": "d000be9f6666bfee2c8dd574fd833341c94221a81c8e92cd07990bbdb037fb93", + "static/images/docs/tutorials/idea-tracker-table.png": "71b4b769b2bbb6ec98f6baf6f176287651c542b21476eb9f67e37d373fc4d76e", + "static/images/docs/tutorials/idea-tracker.png": "351a3e01e750b9e3fcae46110d1f58a0439631f746879d38588679ed5c63e32a", + "static/images/docs/tutorials/refine/posts-table-dark.png": "6d9a41cecea26f07ff9ffffea050e0036d86d3af84e82e9b7bfa794948cc45e2", + "static/images/docs/tutorials/refine/posts-table-light.png": "46befbd05fe1a6545f6f752de56a99a4bbabad91dcd003279b78d12d5f93e009", + "static/images/docs/tutorials/refine/refine-admin-panel-dark.png": "d2b0fc755b7ad8b9bcb8a56d971baeac13f6908ea9cf1c68c058aaada29041c4", + "static/images/docs/tutorials/refine/refine-admin-panel-light.png": "339494e7ded1fc6e95b0cd32b912b75759a9e97992e5bb10acd3bbf845ffc478", + "static/images/docs/tutorials/refine/refine-create-page.png": "a92b121aa0166f4567b7c46bd3333cbecec9665ffe0081dc9ba39e54b19e9964", + "static/images/docs/tutorials/refine/refine-edit-page.png": "342fc9a93c13aa51a4805fd3566e9f88e7bb401f88fd465b20cc6d93c04cde5b", + "static/images/docs/tutorials/refine/refine-list-page.png": "ed92355548c0d40b1ded2d519f95cf22ab1c07f778a970e135f1e865643eb93d", + "static/images/docs/tutorials/refine/refine-login-page.png": "0e82a7680fabd4687022b9210a562d9d000590c6a35ffbb8d2e814fa585e34f3", + "static/images/docs/tutorials/refine/refine-show-page.png": "bba0151f23a7e01377fd6f75e5fb60497516f1904e6ffc6bd5cf02c907c7d494", + "static/images/docs/tutorials/refine/refine-welcome-page.png": "15ecc21edb31b7e9a04ab4745d0d7fa1c54c7ddfd99406872eae0c904b8b807a", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/functions-stripe-domain.png": "603d7670db6f9e08597392fc0359f83797bc1de1509178bc1e2c8e0d750f9e37", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-api-key.png": "9fa5bcb77507178cdacf9849a7458ed548a1c12e2dda75af737c362bede6932d", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-dashboard.png": "0ba88f5fea3e72775be24f4ab607f212cfa078b8d42c6c2672d10ab0d0e876cf", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe-webhook-subscription.png": "a74388cab69ec80b5dd3baacce12300a3131935f34f9733a6a62c73dcfbc4def", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/stripe.png": "1bcedea982c61a634e8d605ff84cc22d68b9a168c3e3d8f75d3b943c0ff369d2", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/templates-stripe-subscription.png": "42691a8fddb0e8bbd93211dde2abed20ae93cd5ac5e0e9e3b9fb52fda1e53f8a", + "static/images/docs/tutorials/subscriptions-with-stripe/dark/user-subscriber-label.png": "5ad8e71ca458ee2ff107d74c713953f81a9d5957528df1ecf40db88e5d221888", + "static/images/docs/tutorials/subscriptions-with-stripe/functions-stripe-domain.png": "de6b28f0cf676e9140129314e6d6c65bba628e07cb6f2759fdbb458a7a48bad2", + "static/images/docs/tutorials/subscriptions-with-stripe/functions-stripe-subscription.png": "b01342229791c12560bba8ca1ba59d8f0c50d0d3256c8cd210b4711bfb6ae7b1", + "static/images/docs/tutorials/subscriptions-with-stripe/stripe-api-key.png": "9fa5bcb77507178cdacf9849a7458ed548a1c12e2dda75af737c362bede6932d", + "static/images/docs/tutorials/subscriptions-with-stripe/stripe-dashboard.png": "86739ab66d4829174028235aca522e946e85f5c071806f45eabd0e12f6cc147b", + "static/images/docs/tutorials/subscriptions-with-stripe/stripe-webhook-subscription.png": "a74388cab69ec80b5dd3baacce12300a3131935f34f9733a6a62c73dcfbc4def", + "static/images/docs/tutorials/subscriptions-with-stripe/stripe.png": "ede8f97b81331733b20df3a1ae5de1e3aa888e83391d1d134cd1f7dfd36893ca", + "static/images/docs/tutorials/subscriptions-with-stripe/templates-stripe-subscription.png": "93b81057c039c5c681a7a8bc45ea1364a0d14aa59b0ae72b9822bdf42e9cb774", + "static/images/docs/tutorials/subscriptions-with-stripe/user-subscriber-label.png": "63b725eb0691d4a5d2ce6887b4e1502a7d396c4f0445fad46be924d5b9a786da", + "static/images/heroes/avatars/bishwajeet.png": "10eb3279903f1cb9f4192f194b88ed235512f970627f81f64ead5088a0bff697", + "static/images/heroes/avatars/christina.png": "f8861a4539533cf7a20fd869553d2cbad61ec000366954c6e2de2624b7475c11", + "static/images/heroes/avatars/danny.png": "b6af8d55b2ac676c637fa392dd419e1d1984d284f7aa999f74845d2691cc829d", + "static/images/heroes/avatars/demola.png": "e8af0e4ae5f0c6f923cf7fa690f7dc961e7b294e29320d591964bcd35f694fe5", + "static/images/heroes/avatars/diana.png": "2c790598e1109ecc3c69da042ee8f5784aac7efc17fb44977560055685e21cd4", + "static/images/heroes/avatars/emilia.png": "ceb498b667a222a8a271bb248b47e59fb925fdb34c276112b0e5d221f4602e60", + "static/images/heroes/avatars/jason.png": "689aec96efb6be70128a84e9604747c5b5a0864a7dc80c02da8daa0626c26ebf", + "static/images/heroes/avatars/lucas.png": "d6cae3315ed76903ce63b3a38ec6abfce052ffd9ffe650c1e66e3fbb66b81ef0", + "static/images/heroes/avatars/mickael.png": "47e867bb6ecc30a7c6b64b7acda407aecda4869152fac9722414071b5bc29181", + "static/images/heroes/avatars/nick.png": "ebfec8153367d0de809eecdbd13cde19e5f9ee5be1b020088fd47311bf0c439b", + "static/images/heroes/avatars/nishant.png": "7f44d3b861ffae1507477c955dfc86a9c1cec12fe49ceb181ba06cfe778cd65a", + "static/images/heroes/avatars/stephen.png": "60c8e63a4736c9b7fc437e2913429cd7e65d7266e8b9a865586c5a243335f96d", + "static/images/heroes/avatars/tanmoy.png": "b35e82c2087e69db10cfb7166d3b9bf15df716c51be7bbb1d5d441c15904bd6b", + "static/images/heroes/avatars/taylor.png": "27b26e3ab819312f6f2a37b025c927a98d47ec835e54c4968eecf4f24fa278a2", + "static/images/heroes/avatars/vincent.png": "2bd0aa0697e949924fd2b00b3bd5d3b9ab4a87f8a3025af8fa78ef3bb9aebceb", + "static/images/heroes/bg.png": "95ee7e297d9e85d380c6762e7231350b259e5df61e4e2c556b8f878082a10e96", + "static/images/heroes/console.png": "aed7fcea911e6f2131c1d46ffa5b644b74d4f47da2dafdde2378883d454aca5f", + "static/images/heroes/photos/1.png": "55b95ce3703f4c91128f60272bf8dcf0c3992c99339196846070aaaf565cf7c6", + "static/images/heroes/photos/2.png": "7a762137f635f218b8c7888601baa83dc4164372ff82b624460262a74729afb9", + "static/images/heroes/photos/3.png": "ab0382afa9bba8387d7aa02f2d2570aa14cd3cc8e8de5faf243b17ab9000ad0a", + "static/images/heroes/photos/4.png": "880a726970129707ba3fb10808566e370baffc2bbeffe228b0da0e5e11637445", + "static/images/heroes/photos/5.png": "9f40abb412b22598edbce9738eb9991fe2aa37afc016c0f9c4c6ff1b364b4a85", + "static/images/icons/illustrated/dark/auth-transparent.png": "1363f1eeb7f25ed5dfc44a049f008182839b7814a136901a24c86cf4a69d64d1", + "static/images/icons/illustrated/dark/auth.png": "07eea7fc741c44c17b3b0007fe395b12cfc2ea066cf0136efbc2f2a47d3e8b19", + "static/images/icons/illustrated/dark/avatars.png": "b01677ce51c12a6c68be929536a25d6fbe69e2e9e6609f600eff749040588d7f", + "static/images/icons/illustrated/dark/databases-transparent.png": "b4afdac31185d5cb6c7d1d3c9ba29834f0df6a404427597b1fe63f433b6d89b8", + "static/images/icons/illustrated/dark/databases.png": "715f70a7d805b9acaac6e039f58926abeac138c163a41b7c60b4af03a10569c2", + "static/images/icons/illustrated/dark/functions-transparent.png": "6a2e5826d1f635a66a073b84e424388f65c6e51bbe1b2967301361fb87c8f064", + "static/images/icons/illustrated/dark/functions.png": "8786115e312549bde74eaa2b5869fa670d22d26ea21278839a3d5b94907fda8c", + "static/images/icons/illustrated/dark/messaging-transparent.png": "563ba421d477c16fd1f132ee0c3b75ed3896e35ac32819526c157536527df295", + "static/images/icons/illustrated/dark/messaging.png": "7919018b624474335f41d9ccd6e97b27e3d02606ef7dfc6e5685706db78677f6", + "static/images/icons/illustrated/dark/network.png": "54720180cb156cf971a3321a43c6e370f613f990eb5d4bb277174694da35f22c", + "static/images/icons/illustrated/dark/realtime-transparent.png": "ff0e385ebfccf445193f8f72bd9c8783201b95512e8a14e598a953668b5a59aa", + "static/images/icons/illustrated/dark/realtime.png": "4c5d56cac2b05f2e590db31f2adcbfb6d31d7064416de62a60b42df5007e53a4", + "static/images/icons/illustrated/dark/sites.png": "ba30f708370b7f30eb07e7dd177ae711f9d1182a7bb802a47968d9aaceb9853b", + "static/images/icons/illustrated/dark/storage-transparent.png": "29911a4b7453eb952c389635de538e2d082449c715cccf921d1a4eea170381bd", + "static/images/icons/illustrated/dark/storage.png": "14fb99ce6e8b0f51fe4e5191a491b5fc549ee6d1a027d178fabaf4bcea24b71f", + "static/images/icons/illustrated/light/auth-transparent.png": "5c62e06f9f743b813ba1a793b9541fa99b83d79a0ba33c0817c69e4bdf473d6e", + "static/images/icons/illustrated/light/auth.png": "5e8cce3d6ec1a1e4e079cb5fa494ef041ee2fe903401865cdc8e4a54ff637375", + "static/images/icons/illustrated/light/avatars.png": "6af3c8c45a87d795163606de37f4c0d5b27415093277402fd0770e413723df31", + "static/images/icons/illustrated/light/databases-transparent.png": "234eeb5ef2586a8914f6482fd74bdf8d3e7dc4cd54c4dc91be6838fb2cf6424a", + "static/images/icons/illustrated/light/databases.png": "a53cf34a690637943faa99df02ca1b55cb0e9e07ca32d520e0eec87f61f398cd", + "static/images/icons/illustrated/light/functions-transparent.png": "c7c2a11045894d03dde62cbb40fda02ceecd5ad16cbb2add721822bf98b41a93", + "static/images/icons/illustrated/light/functions.png": "f9d92cf63a74f17a4ba4c81716fbfeb5b84039546539510f56ad6f09beaa6d7a", + "static/images/icons/illustrated/light/messaging-transparent.png": "9b9b7949ecff106bba36d4196de6c4b3b016413f38a071dcdc6b4d1ec6f487ac", + "static/images/icons/illustrated/light/messaging.png": "77209a01c299160b0ebe4fb7d31278cd6a72c2e7034e14ec7d007f45a52bb48e", + "static/images/icons/illustrated/light/network.png": "c9cd85573f37d670126be0adb60618ac8083e9bc8d042c1437e2f929a553fbbc", + "static/images/icons/illustrated/light/realtime-transparent.png": "f99cf52544d0d61f42fc6c3e1db49152bfb70d61575f1f03b6f8d39d1dfa12c4", + "static/images/icons/illustrated/light/realtime.png": "1f25c5c7d4d6ffd1761c7bd1351e2329db7d63122f199f9502a9e2b37bd3e67b", + "static/images/icons/illustrated/light/sites.png": "5eded6fe7e1a7af0a6f99e013356ec4ebf7472ab90f65a9ab0e048ff43d40546", + "static/images/icons/illustrated/light/storage-transparent.png": "59b4fce0f87c3e17110e8f66ce82b1d4dca71902e0ba20455ffc7f359d791681", + "static/images/icons/illustrated/light/storage.png": "0948fa242e64c2de90eb9756ad027d6774591b36b11fd25643034525a3e97d50", + "static/images/integrations/ai-elevenlabs-text-to-speech/api-key.png": "349de6ef7125e939ac69bf3bf766e92706a963591fdea54bf2d86f0871cccb0a", + "static/images/integrations/ai-elevenlabs-text-to-speech/cover.png": "9a2ddeae3c107708edd61071dff95ba64b1710a5e2d6951672c852c16f903a0c", + "static/images/integrations/ai-elevenlabs-text-to-speech/template.png": "2c940cd7d844eb488882e891e91cb04f79bbed9deabf4bc37e0d4aef21cd24c1", + "static/images/integrations/ai-elevenlabs-text-to-speech/variable.png": "d8eb8bdccc25b4b3a2ff286c74f142a181e8eb5c5ebe34382116c4528ba93c12", + "static/images/integrations/ai-hugging-face-image-classification/appwrite-functions-env-variables-image-classification-hugging-face.png": "332396312954391aab03957a9c1ccb538f50b79b371decb4d52a64f31db33f29", + "static/images/integrations/ai-hugging-face-image-classification/appwrite-functions-image-classification-hugging-face.png": "f588a52fe55f117a991b2ecfc5229d977fe466cd1a1b8637abb805b2643a3dcd", + "static/images/integrations/ai-hugging-face-image-classification/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", + "static/images/integrations/ai-hugging-face-image-classification/hugging-face-create-api-token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", + "static/images/integrations/ai-hugging-face-language-translation/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", + "static/images/integrations/ai-hugging-face-language-translation/hugging-face-create-api-token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", + "static/images/integrations/ai-hugging-face-language-translation/language-translation-demo.png": "0a3b06aa0774e5963e297ddee5d75dc388dcee71d3284eda353424acd4bc1d49", + "static/images/integrations/ai-hugging-face-language-translation/language-translation-env-variables.png": "6495dc6060289d8c99add95d1768ba190d27033b7e580284765e615ecef9849b", + "static/images/integrations/ai-hugging-face-language-translation/language-translation-function-template.png": "e9da48dbd9951d276fb0cfe402bb3a4a8a3aeffc0d62e10252b5889a57946d10", + "static/images/integrations/ai-hugging-face-speech-recognition/cover.png": "33085cecbdc2dea5a48d6aef3d6409f6115653afab77d8b6ae87adad592a5da1", + "static/images/integrations/ai-hugging-face-speech-recognition/template.png": "4914d434fa4326bb34aa81b01929a77e531032abb0d93f640544b3a79f86576b", + "static/images/integrations/ai-hugging-face-speech-recognition/token.png": "7880beaf27bc3cf27d28f657572c80811a66b5bd21e7f9f2fb0f75dd28900063", + "static/images/integrations/ai-hugging-face-speech-recognition/variables.png": "332396312954391aab03957a9c1ccb538f50b79b371decb4d52a64f31db33f29", + "static/images/integrations/ai-openai/api-key.png": "5f0fc8fd936ab6989ba1089cfaaa8c92ce0e3559f7839b4298af2397eaaa12ed", + "static/images/integrations/ai-openai/cover.png": "1745cc475b398cfa874362040f3779d6b2f3a25c24999f530fa38882adc66f14", + "static/images/integrations/ai-openai/demo.png": "2cef089f20c64d283ed6d520c48fb6806462c169f8899b6fdb2832393d8e04a4", + "static/images/integrations/ai-openai/template.png": "94eddb788a5ffc0ac8f806184a673f294186248c4d1210a8dc8ecae5d19ba8ab", + "static/images/integrations/ai-openai/variables.png": "6acf7704d4300147822314ce39ee0bfe143d58ee8c2fcaa0574b92d77aed350d", + "static/images/integrations/ai-perplexity/api-key.png": "328a4cffa2aed103137b6e615354db730d1be80b5e765a3aee315e4c7ac32500", + "static/images/integrations/ai-perplexity/cover.png": "07fb526fe9dbd9940b4a5fd160805902f57c8721704ab8e494cec345f0fd331c", + "static/images/integrations/ai-perplexity/demo.png": "14f4b3c2672f3dab927f1e51189b04b780fd914cf5d9c43c4eb15f6cd5b87fd8", + "static/images/integrations/ai-perplexity/template.png": "6f9db94a286dbdc97b197d2a644cc59f6966cf7da0ab5b16879a99f56858b75f", + "static/images/integrations/ai-perplexity/variables.png": "87b25e232525f650bb0dc012bd8b58efe5729075da3f160210951da9afd46025", + "static/images/integrations/avatars/algolia.png": "189d978c59eab8fe8dd8777f39650ae34818018d733176f013f7987ff725be39", + "static/images/integrations/avatars/amazon.png": "6d74fd32ebc7e6291ac7b84cfc2cc4f0ca973bde188864e7052d7ce1bf3e3fc1", + "static/images/integrations/avatars/apple.png": "27b70bea90a23f8d0271c1f12dcfcfb7aa496b6bba78671e27fc5d836c9c0e56", + "static/images/integrations/avatars/appsignal.png": "69e569f5c89b86a073f4f6ad8c2c33119a1de5e7991353d8be345c11bcdf32c0", + "static/images/integrations/avatars/aws.png": "7306ef5be26cf0d3fc0d9a50512828af4e69d6c7d53b835c17982d7db554cb65", + "static/images/integrations/avatars/claude.png": "4cf4f4c37eb4c306bade50c50529bb8d00a16b5b888693190c2e2988f3bbf8b8", + "static/images/integrations/avatars/cursor.png": "2d78f88bf6d0793dc40f98061077e9e5220ff4f521c07aa8274585c25806b3bf", + "static/images/integrations/avatars/discord.png": "d938bfc4096a6f50c4dee4360d48b0b3df63ea5eb3830049f11053aac15bd4d4", + "static/images/integrations/avatars/docusaurus.png": "01ed9efa99e62547546c9725cd96a08c8d866535d00a75e49fed0e00acee8a1e", + "static/images/integrations/avatars/elevenlabs.png": "ffec825739c2058c2cd592f503b6c0d6eff6f925546e438a6efa8fb8b1a3ca79", + "static/images/integrations/avatars/fcm.png": "21b184d127efc726724693fc090d1780d1554fec8841ac76c494a88cc94ffb4a", + "static/images/integrations/avatars/flutterflow.png": "b7dc391b3dd8b0c2a12f42c0d366472a1be90d53a46ba4fdd00df63f724b3a7e", + "static/images/integrations/avatars/github.png": "2ebaf78e05511c53293fc5119c327a0e0e136a7e43c68010febbdb286b72caa5", + "static/images/integrations/avatars/google.png": "3777c503e6007f066d226a838209e7b37b7246a837deb55102eef4e3f6f3d05e", + "static/images/integrations/avatars/hugging-face.png": "8cdc20f1d4d387de6cbe670c1f6bc7ab0dece6da32690b20a66d2e28312e6c6b", + "static/images/integrations/avatars/lemon-squeezy.png": "d76c0c04b8c0518de03882c10c601fabe77c4e30fdb3fade928b8cfff2b6c1f2", + "static/images/integrations/avatars/magic-portfolio.png": "fac810df4bd0e62618cb1295588289f13197bac4805c8232211335523f9812c2", + "static/images/integrations/avatars/mongodb.png": "16fb2fcfaf3a8e1c1f007c81b1bccdfb2463f971c641f1e3a54278c4b7e07513", + "static/images/integrations/avatars/notion.png": "04f581fd7f20af3351e808c1714d66b8cb78546913e6de42c3ecaf51042297d8", + "static/images/integrations/avatars/nxtlnk.png": "ff3b1907ab894fb8fa204a418325fa62789f4bd1b46b876f488ef9c284889f0e", + "static/images/integrations/avatars/openai.png": "8e2a950f55a705708a71c4a813046050e5a199f1098db20562fac93591e6d3f1", + "static/images/integrations/avatars/perplexity.png": "1aeff5375655bf397465f7824c9baffbfc867669a80dafc475091c55b17c199b", + "static/images/integrations/avatars/raygun.png": "dffa2cf7b4e6717b9fa578c22dd1f9e919952fb32ee76de8a0addc052fb4f183", + "static/images/integrations/avatars/react-admin.png": "8e89fed781a54d8a5dbfa9116f8dea0d83dfc273a482d28bd627ec32517642a9", + "static/images/integrations/avatars/rxdb.png": "b46c8cef0d75139add85308998ff3f27379f080df0afa8dbeb48a49155be6b9d", + "static/images/integrations/avatars/sendgrid.png": "05f61b2f798f705bb13435cc3a97e0b910cc0cdfbc1b55663cf0769c104d3ff7", + "static/images/integrations/avatars/sentry.png": "870368b5a1734068f681892434a6d50714afe7ecc4879d71cc39ce53398da28e", + "static/images/integrations/avatars/starlight.png": "724254111931867a9348a75a951f74c269b4934687192d6d22bb809528e61fd1", + "static/images/integrations/avatars/stripe.png": "d6a0919aff3e53e2f55022749daa63e5dbe6b5c7ea095a0d72e2ad5006246ae0", + "static/images/integrations/avatars/twilio.png": "35ee999626e2179cd643eb89a3e1b425894b420da9fda8656239ca20d2fedec9", + "static/images/integrations/avatars/upstash.png": "c404ea0c7f2d2bc28bdb37e6019f8ac9d706d3b7f0b7de2d3e1c0b90dc4b10a9", + "static/images/integrations/avatars/vonage.png": "b9d22975cae0fc7234c761b8ea5d92260db73cc027e756ede9aa47cc2efde44e", + "static/images/integrations/avatars/vuepress.png": "7893861c4fdb3bc037381962aa4ada05156d8df276d5300925c8fd8d66063e23", + "static/images/integrations/avatars/windsurf.png": "41d48db8811ebe2c5bffb965615ede43bee55ef73cb751db4ffc7499e576033c", + "static/images/integrations/avatars/x.png": "cd24d39505021b078939ca05fba4ddb5d0e67afedc2a02c29837b097abb1904e", + "static/images/integrations/deployments-github/cover.png": "c425b990a458a660eec087677bf4ce81cc9a188115654ef56bed4791f6c03d03", + "static/images/integrations/deployments-github/create.png": "64477b19f98d50a3648fc9b5e2587a45a694297480277e2806dd30c60b7f7e67", + "static/images/integrations/deployments-github/installed.png": "14cb46d5dcca35a8df915c571505a6198adba52afb24968a75a248fcfdb416f4", + "static/images/integrations/email-sendgrid/cover.png": "3822b48eb800ee55ceb2a44077fdc68e35caf2a7229b0dc51223f49489d9c926", + "static/images/integrations/email-sendgrid/email.png": "1de5d9bea2d47030eef44a5c1581ff6ea5a2ee8851e3410f3a41a6b7017d6cdf", + "static/images/integrations/email-sendgrid/provider.png": "d37ab3b9783701d6395991fc6fee7af8a843cc1dee4d851b0295ae8370a94700", + "static/images/integrations/email-sendgrid/welcome-guide.png": "1adc93fc152692a079a78b27777c3aa105d8f596e7fbb2cea347d380faa2519f", + "static/images/integrations/flutterflow-auth-kit/app-screenshot.png": "bfde4c870b261a3a999521ecac843c2d247986fdeea9f7f97b2c2164e58a7c1d", + "static/images/integrations/flutterflow-auth-kit/auth-login-overview.png": "9e386cb7f81f4a7e1bcc5def31c861dff78a56efde0c02bf4875e6361187f1be", + "static/images/integrations/flutterflow-auth-kit/cover.png": "752de80babb818827156e011eaf372f116ccd927b363df06f1a4580d1ca376f1", + "static/images/integrations/flutterflow-auth-kit/dashboard-pointers.png": "3673695c9ecca0894258a5f91c04e963c320345c2c60ef80f0c10a0b52122459", + "static/images/integrations/flutterflow-auth-kit/featured.png": "07d6f64d247d9831aaac25e136b92b03a76576c00ad845a6e50a7caf8189ea8a", + "static/images/integrations/flutterflow-auth-kit/flow.png": "2c97de97b4c5656f7f751fcf848ec612d871a125ce156a184ae16709fe45f20a", + "static/images/integrations/flutterflow-auth-kit/login-pointers.png": "34f76a87c6d445b8b33cca4d6feaa405e02103f247f50108b22ef7deb7728c19", + "static/images/integrations/flutterflow-auth-kit/screenshot.png": "fd8d087f2af95d3464c9459f3b7c29c5a015691845a630d2e4f45b44f6e40b75", + "static/images/integrations/flutterflow-auth-kit/welcomescreen.png": "34ea21b07039ebb3031e81df664e564f7f595247a5418c8e74b85f9da3c92adf", + "static/images/integrations/lemon-squeezy-payments/cover.png": "84887d8a21ac8d69a5759288ff84cef6257168c0a26fdc13824bbec1a0cf117e", + "static/images/integrations/lemon-squeezy-payments/dashboard.png": "25736097b762f8ae9670ea417cb9ce7a715864db67878db22134a621686564f1", + "static/images/integrations/lemon-squeezy-payments/database.png": "61ef9165a5f43bbde975c21fecab72ccd3b7d2e03c41338dfe981c9cfa53e521", + "static/images/integrations/lemon-squeezy-payments/demo.png": "7f300a45f98bf49e1f79284d6ad6e470c563d3c66b36e055d4edcfa73edf0183", + "static/images/integrations/lemon-squeezy-payments/template.png": "205334048ae7c35377a36f28ce742fa9569189bcd2953bf41c8c2294201fd5ac", + "static/images/integrations/lemon-squeezy-payments/variables.png": "14c0e3977c12e0fe2ed5a354d16fc22f39c584322469b0586a0c11f23dd0f510", + "static/images/integrations/lemon-squeezy-payments/web-platform.png": "94709f344854d126ad258ed3317d830c605a555030776557ce0eb89d81d43efb", + "static/images/integrations/lemon-squeezy-subscriptions/cover.png": "84887d8a21ac8d69a5759288ff84cef6257168c0a26fdc13824bbec1a0cf117e", + "static/images/integrations/lemon-squeezy-subscriptions/dashboard.png": "25736097b762f8ae9670ea417cb9ce7a715864db67878db22134a621686564f1", + "static/images/integrations/lemon-squeezy-subscriptions/demo.png": "d6d764f0e7f59969d4e620d3a4f27db3a7f5d98f177fad85123bc2167ba087d1", + "static/images/integrations/lemon-squeezy-subscriptions/template.png": "6abff7bb5e4a06464767617d14f69e6180c2359220428d2615f380cb66fc586a", + "static/images/integrations/lemon-squeezy-subscriptions/user.png": "e7634d9c99776d12fbe6e19de75d705d79f28f817e21eb76d888a80f86b3c265", + "static/images/integrations/lemon-squeezy-subscriptions/variables.png": "14c0e3977c12e0fe2ed5a354d16fc22f39c584322469b0586a0c11f23dd0f510", + "static/images/integrations/lemon-squeezy-subscriptions/web-platform.png": "94709f344854d126ad258ed3317d830c605a555030776557ce0eb89d81d43efb", + "static/images/integrations/logging-appsignal/api-key.png": "a4d1d4bd31954a1aeb2051030e28034578589e19a567a7eaf1e234a2b3e083f1", + "static/images/integrations/logging-appsignal/cover.png": "0ba1dd48e7b39bf4f818018b38eb9189bdfba72069c6f07cc569f5622ff467aa", + "static/images/integrations/logging-appsignal/error.png": "82ca25c21bf33b3faef9cf924092ba093f79ac67b7bdda046af4493b493cca6e", + "static/images/integrations/logging-appsignal/errors-list.png": "193c04d8d4603716834cb0a1a370a390632923d537ac59b2af662cda425d7a17", + "static/images/integrations/logging-raygun/api-key.png": "c8d18e14b32ec9c2d24b737dc8a77b7b2bf53f616ab13d71abd3edcaf214c799", + "static/images/integrations/logging-raygun/cover.png": "dc9f22b0e01c06051a20284734f2c27d7cc2040b80c988e8117d2171d00118f9", + "static/images/integrations/logging-raygun/crash-reporting.png": "ca48b4c6d219ef20703441fd14e3ba3de36d29b74a35acd886268e2ca75a8251", + "static/images/integrations/logging-raygun/error.png": "65110e7274e753c5ab85dc502576fcbdf02bd7d2d37efda46bd07cb430e4d1f8", + "static/images/integrations/logging-sentry/cover.png": "932dd5af088011a798dc957de47b4fa1f8228f4d846289d0200a441157a9d99a", + "static/images/integrations/logging-sentry/issue-details.png": "73490bf13d359aac114a30df1a7e26aa4af552da03d82a679ba0a0629a04fd52", + "static/images/integrations/logging-sentry/issues.png": "c8f00622fa74f23fb4b691f5eca5f7d8b181295a08b46bec56c8731c6ea78d52", + "static/images/integrations/logging-sentry/project.png": "1c229fb201ca566cde1988eb13fa8e7436e32352f09eb0084e2cbe74f348359e", + "static/images/integrations/mcp-claude/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", + "static/images/integrations/mcp-claude/cover.png": "09f52fd542a87c109b5dd07f48b1e47a07b7df939598683f8454b3b6a17bc542", + "static/images/integrations/mcp-cursor/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", + "static/images/integrations/mcp-cursor/cover.png": "48b860cced7cc075c0fcaf9d547e3b9df9f5f480d7b27c9dee60159b3b5cd85f", + "static/images/integrations/mcp-windsurf/appwrite-api-key.png": "1eabb3e5aa74b2e779f6816aa1e70a2deb31c31a0db979bdb74c306901b400c7", + "static/images/integrations/mcp-windsurf/cover.png": "f9bf0304da630548e0ef63b2b0c1ea60a9c3c5e7b6ac4df41800928b652745e3", + "static/images/integrations/native-auth-apple/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", + "static/images/integrations/native-auth-apple/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", + "static/images/integrations/native-auth-apple/template.png": "7e9f1105cadd93f09041e77f7b09ed4c40779b0f1a5a9a6829e400f6d42e5750", + "static/images/integrations/native-auth-apple/variables.png": "798727e10a77a2fe0596f0321d18997903e48bff5f36af042c8707fbf43a5c24", + "static/images/integrations/oauth-amazon/allowed-return-urls.png": "b092ffd113714231193d10b39fb46835b1e921b20aac6c981ec94d95e5ab3b47", + "static/images/integrations/oauth-amazon/cover.png": "893075c608b921b697e8a8769d8e821a1a68123fa2831ad650f32d253daf0d25", + "static/images/integrations/oauth-amazon/provider.png": "3e481065acd9924c4ac8df860c4e9b27fa12a27fdaa7c68dc35f6176b06d7aab", + "static/images/integrations/oauth-amazon/security-profile.png": "259ff4ed899a746f07624822b5520d845a98d33e814abb08423bf7d649783e53", + "static/images/integrations/oauth-apple/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", + "static/images/integrations/oauth-apple/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", + "static/images/integrations/oauth-apple/provider.png": "8ee843daff9e5b908a11af784f0d138ca638ed44f3c7eaaa26b14a4e27ff4e31", + "static/images/integrations/oauth-discord/cover.png": "00ecb98a4ddb3383e83b2fdc9e41117a862777042b4269d9bc2eb92d17fe540b", + "static/images/integrations/oauth-discord/new-app.png": "94f04f601bc3dfee67abd9a1f7b22022c5a536f632c90848ffbb0172c11414b0", + "static/images/integrations/oauth-discord/oauth2.png": "5809eb59ef2ed7f78d58a5729071f132e947a60c287475eeb91402d0cc84ab88", + "static/images/integrations/oauth-discord/provider.png": "fc3dc026647f0900b6308cafd62920160f0aed32e418c86762d1d6b5706e6a7c", + "static/images/integrations/oauth-google/client-id.png": "a5c0023dd9aa233b3d4c05c360fb9952f5d52f6ce31fd186011965ddc1e74c59", + "static/images/integrations/oauth-google/consent-screen.png": "924b58f79c1d8642780d10b4b6dc99a95e5ebd448ec94b1570653eaca0364863", + "static/images/integrations/oauth-google/cover.png": "4b16d560487d876690fcd5807dd0501dac9239325cd6d7306be7b0bc9a3ad09e", + "static/images/integrations/oauth-google/provider.png": "07d4501c7ace44cbd108372f0fbdc62abd06eaf73aabb3587ec14bba4077c26e", + "static/images/integrations/oauth-google/redirect-uri.png": "fad6243bcccc02f62680fc928d664afac32d5fcc60fccc311fc0fbd0f3256570", + "static/images/integrations/oauth-notion/cover.png": "aec19c2bbf983e9f6d35922771627a291527a3f98a5415b53b92a7eb6fe26848", + "static/images/integrations/oauth-notion/new-integration.png": "57a8cc8b3fc5f5ae221ac3a985af020aaedb3b33056a554874103d0969128b32", + "static/images/integrations/oauth-notion/provider.png": "cbe618d08defc00beb58350b8f4c7e2d0d3bbe64f4ecb000e74f26c2c8cc7f69", + "static/images/integrations/oauth-notion/redirect-uri.png": "2d02a9c29a75784055ed10e385fa8262935eb218e7a4c1f14d908699dba10570", + "static/images/integrations/oauth-x/cover.png": "fb6577a5bb5f067b6a5f2bd20d6f9cdcb5c02c5fd7d2e73f9fcc7402ddcaa121", + "static/images/integrations/oauth-x/new-app.png": "17542433411284fba2e859357094fda7da33c4790b38a7608f4e67f3cfab5151", + "static/images/integrations/oauth-x/oauth2.png": "c6ba6f6f84d042c1acac2470f794f53a855b775373feebdee852fdd0683ac99f", + "static/images/integrations/oauth-x/provider.png": "d53f59c3b3caf263bc77ca3c5490f7b501d5e4befd7c904341f446bd463685e8", + "static/images/integrations/phone-auth-twilio/cover.png": "e46ab3a1a8b458b69e919219e35de4a15b2bbd0ea9c0079c0c99e005acf3a295", + "static/images/integrations/phone-auth-twilio/twilio-console.png": "bd3081b13711088c437ed10553709ca4af54f80c81571b30b6cc9a4a1fab1799", + "static/images/integrations/phone-auth-twilio/user.png": "a526a9621c30de2ba4b6b08508d15bcf588b7de5cafadaf3ea7a8198485cf53e", + "static/images/integrations/push-apns/apple-developer-program.png": "2f13f017496e5e2497a32485840e0d8302df6933ed8159a7bb5031e02cb98562", + "static/images/integrations/push-apns/cover.png": "da94b788046c69191e794b5c9007588a4cf908b17af7bc77775258f43f91c13d", + "static/images/integrations/push-apns/provider.png": "16332791662d979d11880e229e15a9356ddcd5488ac48bb7e7b90eed04c1e10b", + "static/images/integrations/push-fcm/cover.png": "78fc36b29f2125a77ef63125bbdde996b013eb9846934988c17c6e0a2d963d07", + "static/images/integrations/push-fcm/private-key.png": "349aff5cf8a14be1054298273d91ca4650399316b6b3f2b6dca283159aff46d2", + "static/images/integrations/push-fcm/provider.png": "7bb9576b842dd46fd0383bbf9b2511cf7ef148c5ae08acb703bc5640a9cbf981", + "static/images/integrations/query-mongodb/connection-string.png": "d75b28ce52fc76aa77fb44b5a4f1a1f39ac9847cb6daf7b3fe7709030315a6f8", + "static/images/integrations/query-mongodb/cover.png": "670d2fdc0c86c28adfe519b87ea17ee9ec5d7861c076a8135f5c48a22fca24bb", + "static/images/integrations/query-mongodb/first-cluster.png": "cc1b5a92e7251b152c2256e8f449a7442ed4c0a48e11765c2e0cc0440565168e", + "static/images/integrations/query-mongodb/network-access.png": "ae2a588287270f1122bf4b2e5ea81b413ef9625a850b287bee0f6a2b12e7e898", + "static/images/integrations/query-mongodb/template.png": "1146fe50eb34ae489b1cdb59f73e133e4ff37a6848f893ac2e1b6740a07356a9", + "static/images/integrations/query-mongodb/variables.png": "42dc1cdba1a373669072809061a6efcec874e561506a16da16cdaa65a256a1d4", + "static/images/integrations/query-upstash/cover.png": "c395da8f4bea179f5825782f6792d8f3c611fb727f13d2ef7ed952ecddd268f9", + "static/images/integrations/query-upstash/index.png": "aed85ab642a476168f77692b0d5474356981726d9f3c591e9969f6c9c431fcf2", + "static/images/integrations/query-upstash/template.png": "b7e853d3813e5803fbf2b8d336fba80f7b42a1ca546b73f61da39bc342a89301", + "static/images/integrations/query-upstash/variables.png": "f201fafa9b2f7e1adf86f030019ae812cea40b624cafd17e98783d79f3c86024", + "static/images/integrations/replication-rxdb/cover.png": "ecfbeec103b81cdc6fe709e031f014d238695f81c4c8a0b90702f6a52439acbe", + "static/images/integrations/rubiks-cube.png": "200afc7c1b50fa3a515b95dc95290efc2b056d837e7b61fbc734ac4da5f7458e", + "static/images/integrations/search-algolia/cover.png": "ac70d8c2bc40831b69afbe433ef6e36ac7c76bff1ba277100400759600a3fbe8", + "static/images/integrations/search-algolia/demo.png": "bdb63d0324eef2d71ee2b9b5c20886c574c8304c0dbff898575f26364007144e", + "static/images/integrations/search-algolia/index.png": "157fbb7d4c9371b38043348bac7daf8682916b840701baec4680ff6ecf7e7402", + "static/images/integrations/search-algolia/overview.png": "1af7563e109cf1d46faaea58a0eb01917ecfb5d12f5ff15742df4ef35cdcd399", + "static/images/integrations/search-algolia/template.png": "922bb906654bd8ddc679bb4aa18f8129af93e7766743a88fc357fd9e50246f87", + "static/images/integrations/search-algolia/variables.png": "9eadfcab5e38a77dae8f0be3696f4128f4bc5a53e09be5f49ad68da60e220e24", + "static/images/integrations/self-hosted-mongodb/cover.jpg": "28effa4317c8f268634ef3a166e93d478bf65372650510e5160379c111a90355", + "static/images/integrations/sites-docusaurus/blog-page.png": "6586d1910d0b9fcf0e884a2105486c23a08bb5215fbbd4b607d25aaceb5acbb8", + "static/images/integrations/sites-docusaurus/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", + "static/images/integrations/sites-docusaurus/cover.png": "9717dc118675c2d3ffeb1f2c894d090464f4a8df80957e9743baedd2f8bf3a41", + "static/images/integrations/sites-docusaurus/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", + "static/images/integrations/sites-docusaurus/deployment-screen.png": "fc4be122953b0ec5c00539b0c9adc469cbbac25b1d4bedf7120ce6cfc0d0e64a", + "static/images/integrations/sites-docusaurus/homepage.png": "d9471b3b5028fa5c81a490b7282968059303d784ea76c5eaa75349caf6f2af1e", + "static/images/integrations/sites-docusaurus/search-site.png": "14fdb8f5a6da3fc326562c576ec9b192da5224cc6d0e4b0842663b27650988c7", + "static/images/integrations/sites-docusaurus/site-details.png": "692f45d943e8df7f5003a10588b74f4d459749b4c19f8ba50268c361d51b2ac2", + "static/images/integrations/sites-docusaurus/success.png": "fc518e7e113cadfcfcc9ef3567b7675989406b310af99fd5db167d12c65055da", + "static/images/integrations/sites-docusaurus/tutorial-page.png": "bff60145dc85f2f50c1c81e78d85b56eb23d79dd95f8eef089ed18091e412d8d", + "static/images/integrations/sites-magic-portfolio/about-page.png": "1041490080fcc5feda4f9f7c1ac7d28279aabadc0bf0b30d69c133d0e4c035f6", + "static/images/integrations/sites-magic-portfolio/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", + "static/images/integrations/sites-magic-portfolio/cover.png": "019d5abdc91304b90ac041e628a9be51e082d1797eef496b1149028a6a3b66c9", + "static/images/integrations/sites-magic-portfolio/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", + "static/images/integrations/sites-magic-portfolio/deployment-screen.png": "9c29a45b837f5b22e7d87aa56f40f411d7b5f6400de3d43800d53ae3238c8d0e", + "static/images/integrations/sites-magic-portfolio/homepage.png": "2bdd69105c6fcff52fe5c564a85e18fcdbd7f3577dd1e5821da3d757efe03d5d", + "static/images/integrations/sites-magic-portfolio/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", + "static/images/integrations/sites-magic-portfolio/site-details.png": "0b845a032a57c3d62ecc5b956626739246421f2a540cfc8192306dc0135c38b2", + "static/images/integrations/sites-magic-portfolio/success.png": "4bb978f79627e0588f59ce9c4638122aa3f026d07b0a3b481baa84715c0945c6", + "static/images/integrations/sites-magic-portfolio/work-page.png": "e13a8d8cc0ea915355d7a68d45a76ba2259d471788479c320bdc44530a48a4bd", + "static/images/integrations/sites-nxtlnk/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", + "static/images/integrations/sites-nxtlnk/cover.png": "c850905a084659c48c71eb5491af0d214dbb1fa616e2d733aec07fad6e9b5e45", + "static/images/integrations/sites-nxtlnk/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", + "static/images/integrations/sites-nxtlnk/deployment-screen.png": "e8caef547145e9dc87eeedd243836051f09c213d08b8cb326fde4009a9aa8e69", + "static/images/integrations/sites-nxtlnk/homepage.png": "df03ce7ecd3a7ad4045a18adf4fbddaab57551b43c18cd7519cd9f3d33d296c2", + "static/images/integrations/sites-nxtlnk/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", + "static/images/integrations/sites-nxtlnk/site-details.png": "d5bb4e13a0e173d4a089e12e163cc4cbb1af0d11f77750d770f13c78f3697116", + "static/images/integrations/sites-nxtlnk/success.png": "75ff7b8f988fab62e6bbe1711940f6189b5bcab84fe12203c64ac2e34adefdaf", + "static/images/integrations/sites-react-admin/clone-template.png": "935ace26282811b8db06e4340e483471a954bb31f07c71d9dead06dc5a0eab95", + "static/images/integrations/sites-react-admin/cover.png": "39fa3933185ff8e56647314c00a0cc45c3a4a806e58d4c353b801f41a6c5de17", + "static/images/integrations/sites-react-admin/create-site.png": "7dbc51ab426e90619d4c958ddcdd7e03e92492f2c91faec628cb2a30a7700dc2", + "static/images/integrations/sites-react-admin/deployment-screen.png": "8f9e606688628d481e23dc27b775e8693d942b3709fb0af10646939df596737d", + "static/images/integrations/sites-react-admin/search-site.png": "bb6174a7db0871ff67484917a4d3474e2e7819651b6b43ce4f380a8ee0573a8b", + "static/images/integrations/sites-react-admin/site-details.png": "d5f7f33b06a7749d150af418880ede4b69dd5c0df179f67ef26c07ee2e820115", + "static/images/integrations/sites-react-admin/success.png": "80030228266667175e6b19f5103e1c23e0de61e037aac4395f0c3989990908df", + "static/images/integrations/sites-starlight/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", + "static/images/integrations/sites-starlight/cover.png": "b3bc447ff28204c769051fca0f15967c9ce32a02b4bc744715f0343f17044902", + "static/images/integrations/sites-starlight/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", + "static/images/integrations/sites-starlight/deployment-screen.png": "56bfbf2742ccdae4dd00de57849b60024bf9422d6bfc976e2e86893daff5ead4", + "static/images/integrations/sites-starlight/homepage.png": "2f08b9ee8cbd51e63bff11496c75efc3021a6d667b1290bdc154d15a63aa8895", + "static/images/integrations/sites-starlight/search-site.png": "23582e858e70f9b81d1c36c8fefad64671d9c59d35f8c3b26638ce2cd69fcd12", + "static/images/integrations/sites-starlight/site-details.png": "6de6bff6613d6910a9dd5b9aea137296322bfa07a8c291aed9343a5382aa8a5c", + "static/images/integrations/sites-starlight/success.png": "378bce2587b39cf58d4e0a14502a5d20b8beb43c52af78b3fcd5e6d206767a10", + "static/images/integrations/sites-vuepress/clone-template.png": "bcec1551922dc2fe44a67eba30dc456ccc056f2b18104a33371be926cd4b1ec7", + "static/images/integrations/sites-vuepress/cover.png": "7e3579bdb0ae9df43c29cbc33e86805f0c21660629ceaf763f52271d38b5339d", + "static/images/integrations/sites-vuepress/create-site.png": "136097ac602e42a4d97d8498f806f2c5e2b809de8000a7f2e5da2a6288dcc957", + "static/images/integrations/sites-vuepress/deployment-screen.png": "b1d5cb179f325e14d1c1d7eec99307600eecb8302aeb85af1e0aad2a1b8d1ecc", + "static/images/integrations/sites-vuepress/homepage.png": "e31615af4c2091fa273fdbba66117ce3652cb7436ee97e3a13121467288b8131", + "static/images/integrations/sites-vuepress/introduction-page.png": "431e3693357b30d3259c8e4b4f7d208c88acb4d37714a0d81c9a6bd96071cedc", + "static/images/integrations/sites-vuepress/search-site.png": "14fdb8f5a6da3fc326562c576ec9b192da5224cc6d0e4b0842663b27650988c7", + "static/images/integrations/sites-vuepress/site-details.png": "64bb48f81113adb12e0f3c1a364bc05f8721bf5603cbaaa491515a819863d715", + "static/images/integrations/sites-vuepress/success.png": "30d028da27f4350cbb9d04f70ed644b642a8aea4735568d0f1a6b35105820c61", + "static/images/integrations/sms-twilio/config.png": "ad6baf384421b5d21d68b3561698afc3abb50949eb71d39c587edca2d14dafba", + "static/images/integrations/sms-twilio/cover.png": "cd05f51ff3c0dbac83ecd54bf76ec9b11d99819071268c5c2a8f0ce979dd4397", + "static/images/integrations/sms-twilio/sms.png": "3034b0d76ee6e75ba489e0808b028f107cf9273bb25c2935eb264b943ce1b750", + "static/images/integrations/sms-twilio/twilio-console.png": "bd3081b13711088c437ed10553709ca4af54f80c81571b30b6cc9a4a1fab1799", + "static/images/integrations/storage-s3/access-key.png": "75ad417b49e470c949c060f008124a20f281c37377fa6559eb5638ac199d123c", + "static/images/integrations/storage-s3/appwrite-file.png": "bc430efc73dfd45dfe086f3d305af7babf1fabbe5f832ee0ceb4da3665450ab9", + "static/images/integrations/storage-s3/bucket.png": "ecccad23880ce38bcb9059c9e6c7f8cc549aafa2f186bad90d97277049b76366", + "static/images/integrations/storage-s3/cover.png": "23285a3eb75a45523aab97c62f31bf74ec9a8826e79c4527ac71ed1a3ad4d92c", + "static/images/integrations/storage-s3/s3-file.png": "9c0a0f35048d7125d4948d23506f8148705886e9d8a4517eb09fea961f48fa6b", + "static/images/integrations/stripe-payments/api-keys.png": "ed6c812307522fab2f8a3f5cc1e1c91372bafe876dd3764b5fe9478df9125d15", + "static/images/integrations/stripe-payments/cover.png": "62c7929f0ec30748163657a3ddac608776157025880e23dd83ec575de015e98c", + "static/images/integrations/stripe-payments/dashboard.png": "46d71a4468a573aebfe20c7166e4e1ca3bc6c8d98b2dff8b54016650793870b0", + "static/images/integrations/stripe-payments/database.png": "bf471874bc480b3730f2ffa81a049abb0eae0cd570c3de0ae77a6c03790a221b", + "static/images/integrations/stripe-payments/demo.png": "43bc3081f77ac8f49a658eebac974095e0fd5e40a4c06a6ee26f11556fbdf9e6", + "static/images/integrations/stripe-payments/template.png": "794538a75364739740b1385096c462d1de9b8caba1a9940bc2295d7b8607dfbc", + "static/images/integrations/stripe-payments/variables.png": "119ff7fe2b3c18ebb1f1d162318aac7c42ae84d1bf967048db7c6a77e93c7e13", + "static/images/integrations/stripe-payments/web-platform.png": "4fa7e4ef19d6417f49d651deaf62e158173aec5da2d21e150de679bfc25163b0", + "static/images/integrations/stripe-payments/webhooks.png": "641cc545aa64d137619a7768c553f9aeb30507cd7209cf33bc08f476b95975eb", + "static/images/integrations/stripe-subscriptions/api-keys.png": "ed6c812307522fab2f8a3f5cc1e1c91372bafe876dd3764b5fe9478df9125d15", + "static/images/integrations/stripe-subscriptions/cover.png": "b3b8382361a0e38753b0bf6f6301d05093dcecfb1c82ef5a5bb5d9eb96883a68", + "static/images/integrations/stripe-subscriptions/dashboard.png": "46d71a4468a573aebfe20c7166e4e1ca3bc6c8d98b2dff8b54016650793870b0", + "static/images/integrations/stripe-subscriptions/demo.png": "4900fab315d829d44508c4c0a781a6b878142850421d5cd2072e2a2ff7640df5", + "static/images/integrations/stripe-subscriptions/template.png": "23ee97c1ef20ffc020b276e318a162a4593ec84ccda97b76d4c869f3b3e1f7a8", + "static/images/integrations/stripe-subscriptions/user.png": "e7634d9c99776d12fbe6e19de75d705d79f28f817e21eb76d888a80f86b3c265", + "static/images/integrations/stripe-subscriptions/variables.png": "36d35f5c554e658862d8f8981cf04ee157c2282c97a89282ef91b1346005316f", + "static/images/integrations/stripe-subscriptions/web-platform.png": "4fa7e4ef19d6417f49d651deaf62e158173aec5da2d21e150de679bfc25163b0", + "static/images/integrations/stripe-subscriptions/webhooks.png": "641cc545aa64d137619a7768c553f9aeb30507cd7209cf33bc08f476b95975eb", + "static/images/integrations/terraform/cover.png": "43b4f901f490adab9f018c600882132192c29092f44154226fc72196e2d5a3fe", + "static/images/integrations/whatsapp-vonage/cover.png": "c445579cca51fcafa1a0717abf51386e1d86a5909951a7a05401b0e77dc506d4", + "static/images/integrations/whatsapp-vonage/demo.png": "34ffa1310f6d01e2c22b0d4473d8f89f4306610d8db1d01f53771da6628023e6", + "static/images/integrations/whatsapp-vonage/settings.png": "57dc4bb24aac093bdd115c60d350de19a14d87fc5ed08d8bf833889a95414570", + "static/images/integrations/whatsapp-vonage/template.png": "2653cc0736f87c04a3196ca47d301d27184784459ab714e7840a66fbc80bb665", + "static/images/integrations/whatsapp-vonage/variables.png": "b6d03b3ad1fab7939589fbe474a4fb4de6959ab0d6517dc5f503fc97743c819d", + "static/images/logos/icons/apple-touch-icon-120x120.png": "344a3a16bdf84e1f0afcce0b4ffb22339be28677903915272212c56063978107", + "static/images/logos/icons/apple-touch-icon-152x152.png": "9fa7f1b1932f0bc4975d0dfd353d6e0568a96271b8c74580a95d6cb971bc60a2", + "static/images/logos/icons/apple-touch-icon-167x167.png": "abe37838768031660bb8ced0937730470e662dcf1dbfee62de330f50f8a71986", + "static/images/logos/icons/apple-touch-icon-180x180.png": "5f1e29bf9cf65af5c5b4902e042efc4385c85aa05d2c3ffd9fa533e3236d5b38", + "static/images/messaging/auth.png": "b102e5955551102cb23c8eda94d5f19ebd4e5aeeaaf8f6be8c2e1b479f48fbcc", + "static/images/messaging/database.png": "783dd3b6f6872e7674bee2da8c2dc61e1c22ec9e2746fdd9f5fa004cda579e85", + "static/images/messaging/green-gradient.png": "a57273503796795f13a7b1a3e8c5ef8f16704c0948bd68960d1457fb439b5e2c", + "static/images/messaging/pink-gradient.png": "f2778a9dd659a0b45ba9d6052f24d887353603e10d049091524efbddad68fe5e", + "static/images/messaging/realtime.png": "e4a31302239a55a3712460fc3519b671514519d65fe018ce4dc7d77c631fba98", + "static/images/messaging/storage.png": "64b593484e479f7de0d775afe4a7d86ed5dd5e1c27a9309d0c5381b3d1310e42", + "static/images/messaging/stripes.png": "0cb80b6b47150dc1003cf6c736f224a8895ad6f8be12c787f3d1a08f28b7965c", + "static/images/open-graph/blog.png": "268a2acf3e7bbe471e89973392262dfe58d37a09cb72ae1ba7862637dcc2fc65", + "static/images/open-graph/docs.png": "b935ba5c5d8bb1d7f1c307bf781865fdc7b7db020fe17598ce35b8975fec9a5c", + "static/images/open-graph/website.png": "f0a15cf822ed8e0bed92caf73523a4b178c084693b7bf21cd36ba26a7699f492", + "static/images/pages/brand-lunch/box-1.png": "a4f88121638045f68a26f6d138d46b492e63a9a484190ac5db7b6b43eb006574", + "static/images/pages/brand-lunch/box-2.png": "e312073b5f56db87a27ee7aabc90d75bc57767d6a3342e573f46385019c60423", + "static/images/pages/brand-lunch/box.png": "24eddc760122c76651df1e11eaecaa892eb84bca34b8cd4472cb33d503f689f2", + "static/images/pages/brand-lunch/left-side-top-brand.png": "40736fa1190e10f7f65fdc7f08ee9762cd8744c6379410a9747bbd9c85ab4f58", + "static/images/pages/brand-lunch/right-side-top-brand.png": "df8dddfd31d422d24f8aabe59734a3e62d1878b9d825a1e0c3a2b67aecd9b214", + "static/images/pages/integration/integration-bg-top-1.png": "7a1f2d26277ae1dc21a15519c4ef28c2d208b9bdac6a90a5ee304ed2e52a46ae", + "static/images/pages/integration/integrations-cover.jpg": "1729e9f2575a22abd57e7cf829cddf6a127e7279019b499bf333f315b27f6a7e", + "static/images/pages/integration/net-desktop.png": "5f163530461662bc69b029f0a32cf3f7d6eedfa006fb952391d1318a164b6fae", + "static/images/pages/integration/net-mobile.png": "d02a7c2afbdc68dbdb6f0c4d2f68e1e31093e388c8695a4810914a92652a55dd", + "static/images/pages/storage/bg-section-1-left.png": "180a792f6ce8fa09d931b38e7d6908a13a22c329a2ca77097401057185e9a20f", + "static/images/pages/storage/bg-section-1-right.png": "766e6754663efe80b3484a6edbd8e96ec56a135a3a5e44907b4d1b353a3d2e15", + "static/images/pages/storage/bg-section-2-right.png": "c3eaf1cb3d0ba92b09e6195d477ead24f1e9072a12121a65e305c7f375d50ab9", + "static/images/pages/storage/bucket-modal.png": "00fea38f7f09b56e651c2f039f2e8f3e40ab63d6d2c0b43379bf776ecc9a419d", + "static/images/pages/storage/component-dark.png": "a5a722df3a8b750cf8285db934d552e2b3063f8220901d590589860a46aa9d96", + "static/images/pages/storage/console-illustration.png": "98b0df644eec7071eb8df6a5387092bfc87235b3bdc7ca332045db2b79dbebe5", + "static/images/pages/storage/exploring-the-world.png": "ca3d781a4d964f18051b3516229ced28286607977f384c33bd4f01f8f91a3ced", + "static/images/pages/storage/file-1.png": "21491640745ed0d9416cf2bf893768c2dc695799805f64d200ae03d376eb005f", + "static/images/pages/storage/file-2.png": "6a47a07a08ea3215c64120a062779bb35ac5058bf2390c204ea8d98724ab27cc", + "static/images/pages/storage/file-3.png": "fba8fc710b9786cb71eddbabfcd7c5e5a4d10b2a52ae10c1b9e1d7c8f28009b6", + "static/images/pages/storage/file-4.png": "7de039709c0c945630189f7263df071112ba05442440f6421a144dab7d3732b1", + "static/images/pages/storage/img.png": "98716b1450849208b87d9d94370abb14b6d0757dbc3df880ca1ea63c11ddbbab", + "static/images/pages/storage/pattern-1.png": "08b5ca15e307ca4fc238b8516ebabb1532d512578a29c5932642b694651360c4", + "static/images/pages/storage/permission-modal.png": "7de039709c0c945630189f7263df071112ba05442440f6421a144dab7d3732b1", + "static/images/pages/storage/photos.png": "b397af6515085095e8c4452a0b51da8da17630978e5d9599eb28bf5a22167513", + "static/images/pages/storage/product-shot-2.png": "10f9c4bd30cb900146d765fecca69545fd796fcc40fee991c58504a92fecfaf4", + "static/images/pages/storage/product-shot-3.png": "6b8d94844c814c27b5e96fc10cc4be3797df27258d4079617bdee231ee03d5c1", + "static/images/pages/storage/product-shot.png": "d43d5ad2d0a897c1f0730186ef3d5de6026142c2ae3407cbc631477fa9f698ab", + "static/images/pages/storage/purple-gradient.png": "03c5232e6b44fbbde7d149efc213034d284e7150f156f5d0e199c1ac3236ae27", + "static/images/pages/storage/settings-mobile.png": "a9bbd7ea68651f54f6827b9bb38226342224873b0c455463899125c7a736477e", + "static/images/pages/storage/settings.png": "fdac25c54b3b86a0a3aaf01ecf12d26112a4cc0bc7aea5ac7e21e53b8ecfe1ce", + "static/images/partners/avatars/aligned.png": "c17da789c5f7616b0f43d47bd91419e76c114964a0b42ac9485a77abb9977b47", + "static/images/partners/avatars/appbisweb.png": "7ad01408e793bbf854980e8e8ba9037a605e1d86f3e77b5c4ae14127027dc2bf", + "static/images/partners/avatars/bld.png": "f79b71cf0e6e48cc8f714a8b0bf64d1bdbcb5d564a315f905aaa0befbf30b3bb", + "static/images/partners/avatars/cookey.png": "7529b1190639d899168f047ed8f6827e63b2d922010ed4ca7ce6ae57833f048f", + "static/images/partners/avatars/devkind.png": "67bb1da3f06dd51e8215e5022c2f028423e7bc99c8dcf870288a42389b396224", + "static/images/partners/avatars/fraqtory.png": "3233461b1aea9ae6595f55e30afbcda1fba770375dbcced8dd36c44ace94882a", + "static/images/partners/avatars/inellipse.png": "7385cab0f547607c4bf64dcc04e87cb3a150881d2b9bebfca99d0de6de26d508", + "static/images/partners/avatars/makeshyft.png": "d439fd5c55a98ec69cb3e2047f299f2152bb4cc08da5bc6347bde9172c599275", + "static/images/partners/avatars/mohesu.png": "e32ed4a5bea262f6168731b780f199c8fc63ab3918adf075fad9d1df54e5241a", + "static/images/partners/avatars/nanornia.png": "9e29042a15e4953deabb4a37b9b4f2abbce98339dc581acf88525eacb4b4fde8", + "static/images/partners/avatars/panara.png": "6315b3f6f3964a2fd91374ca4ce16ce44d3908b76488e96504383fb58080422e", + "static/images/partners/avatars/sayone.png": "b1f887b52a4ce85b84dd1b79d0f0c36505fdf7db72d95dc97dccaa65e6a364ec", + "static/images/partners/avatars/simbalabs.png": "657e3ed076eb0a5568c1671f36235aa57ab3abd5c44ad8d56a3294c81935ed32", + "static/images/partners/avatars/studioliddell.png": "cdd8c9f236001a2ba40a6e450c1ee270b7d09f26f48380b6cfb633a5aba39ea1", + "static/images/partners/avatars/transverse-digital.png": "a6a28cb0dfa19cc0cba698cba0509d5217649d3ca3ef3d5f448402d91c1c647a", + "static/images/partners/avatars/white2net.png": "8f3c3f6d761edd0e5f65dddbcd6a159515f72704e2f2ab53c95115a176302393", + "static/images/partners/covers/aligned.png": "c051535e5665feb5e84ff9cb17a41d3bb8004d5f9d930572ff626362c1d11cca", + "static/images/partners/covers/appbisweb.png": "bd83c10d23d32e8d6cb9445d42c9b6028fdaee852cabd39505e8108cc895cd63", + "static/images/partners/covers/bld.png": "0aedba55265ab72b6eac704fe64636e0fca718500cb98a66b4c5f823b30a4385", + "static/images/partners/covers/cookey.png": "f3aee1719d3a7d6f74ea885075e47029399d05f33ea702142050ec5d3a6f0f52", + "static/images/partners/covers/fraqtory.png": "6e32b3624adee6056744ca0dfa5808b13a3ba01086a866a5d7e22c576e44f4af", + "static/images/partners/covers/inellipse.png": "951ca1b8022e74100254342a025d9e9ed7af35cfbbe9692da191741e6ab3f146", + "static/images/partners/covers/makeshyft.png": "3106273ce51fab8ae7f89dc0bab993abf9968c2cc697c3fac45408028f2fbd98", + "static/images/partners/covers/mohesu.png": "7bbb47eecc6e001cbc49b184c1806e671eb5fe35a26ec3e4413116d352333537", + "static/images/partners/covers/nanornia.png": "0e3b7b13cc4523d7640314137acc67826bbc4ea6e00ec6880dda45ae8c276535", + "static/images/partners/covers/panara.png": "31448e6c0ec1bf94f6b27cec1a79867c68d717e343403b124860ecfbbd06e0bd", + "static/images/partners/covers/sayone.png": "8010ad3caecfc31b0a7e6d559da4d49b8fb3df2c79bab2d3344edaa6ba2041cf", + "static/images/partners/covers/simbalabs.png": "9bacd2a46f4496cc9b352ccec1ca5d8ad05ac001468bdc776960aca38a581069", + "static/images/partners/covers/studioliddell.png": "774736136e3f4b8b93002833d96b0b641705be61afe17cc2c2baf7419cd42f7f", + "static/images/partners/covers/transverse-digital.png": "1e2bbbc1834a4e24253a9dd88e7a73353f0659b7584bcd450bb2127e21f8aabb", + "static/images/partners/covers/wakka.png": "c7f7e06abef36e4285154dcbaaf1189931f27772099faf0b0b304f3441ae1eb7", + "static/images/partners/covers/white2net.png": "2a7e32084bf3989fda33d3b06bfee7f7a3c83eb4f9d52a993ee0b6110688ca1e", + "static/images/products/auth.png": "913586dc964f45f7db85eebfca690ccc62678a81b81f17182aa6d35a1904f7c5", + "static/images/products/databases.png": "bed2a6557272315c3fcc3e9337c09b51b5a0f0f54636a56aba0f94f2895000a3", + "static/images/products/functions.png": "b44aff720fa44538ddd075ba8a9efb2b04df8c2db5a27fd228f3efc09c8c67aa", + "static/images/products/messaging/blur-left.png": "f2b84bc9498d64715ed403cbe52e791578ba1c6ba535f7eda0c3a363224be1b6", + "static/images/products/messaging/blur-right.png": "abe9a37b572c6ba83d4f7749eda243653d0a3791920c6a68226d1808beb593de", + "static/images/products/messaging/phone.png": "64bfc690dc126e914c4b4144a4a9204f303cf643d23dc37ad1356e2087b4b08d", + "static/images/products/post.png": "208e95f69aa5d8784f1afa9d26bdb44e29726606fba606b5c65b65de8030cfb6", + "static/images/products/realtime.png": "dddab2874704a0464599ce205949155077e5495367dcd4a6f945b4e1ff938455", + "static/images/products/storage.png": "70a3f12e362515cd2e5d0f47f34472376548bba009c70625c2461710b29a1bda", + "static/images/temp/bg-side-2.png": "06ebd3fe4d022a4d3128351ff5d05c09eb0559ed380a5297f05ca76e1c88c396", + "static/images/temp/bg-side.png": "d06bf4e7feaa3bbfd9bf6258f888dd8a8cc2f06e00e9875acf7bab47280fee67", + "static/images/testimonials/alejandro-morales.png": "dea52cca9da34c9daba3062cbeffac4b44b2a60a58adc90b3ce379363b7aeb4e", + "static/images/testimonials/david-forster.png": "a78113ba9e2b716e8b538dcf46d8088c8c4cf650bfeb5ec74fa3b124be412007", + "static/images/testimonials/diego-ferreyra.png": "8fbddd0bd73ab2d9e3d1f2da72981f437fc1a0d66bb6d3ff7337a8dbdc4219e3", + "static/images/testimonials/eddie-jaoude.png": "01e0bddd00a33c39020ce5218d7cde2aeb88272becbff21afe124c38b8fa4799", + "static/images/testimonials/gilbert-gonzalez.png": "fc5c0ca87b262e0ca6927e078088f36a9c444d8eabbe71d03eb032cfabdcb450", + "static/images/testimonials/hassan.png": "f1c4b86ee778cd52255e142d96729328f7087b592b035921cb78c7f91eeae927", + "static/images/testimonials/jonas-janssen.png": "113119194954333519ba7fd9474344a580871555c34ce672872f74789ffbfc04", + "static/images/testimonials/jonas.jpeg": "a979cc4db4a9a66a12793c9dd300f3b0fe6bfc5932a94e1e4def8ac428ab3f1c", + "static/images/testimonials/k-collect.png": "784a16031082e6f88fa0ebdc2f35102c71ad58d3024798f9e3189cf5a746ab2a", + "static/images/testimonials/majik.png": "1e11ec1d1f8cb6609dd8d2292383995c537707e2da7b0f5aa689496354c8dcae", + "static/images/testimonials/marius-bolik.png": "8f70e297cf6c83da914b7f3431c30fb368388ae4613044777fad8e7caa2b8e8c", + "static/images/testimonials/marius-bolik2.png": "c91a0a7ea79421e3dbc2eeabbf9cbd4b020c06dad1d3998d3ea4b439430e8445", + "static/images/testimonials/open-mind.png": "668c276f700c7e5f9ce1fa77d84968ff80f2c325efc85f57672e9f8883c41610", + "static/images/testimonials/petto.png": "ca940762cc8f95caeccedbb8fe16606fa42dc0cd1621cbe3b2e1c6d28c4de745", + "static/images/testimonials/phil-avatar.webp": "43f4449964b48c8b7d9f858f99008b115cb9e4a00b987404517264586622ced8", + "static/images/testimonials/phil.jpg": "148b64d2178b6b4be165be46ee86151b94b1b2b19fd45bed9833c87dce3d672f", + "static/images/testimonials/ryan-oconner-testimonial.png": "67802e87e2960a3c659bfd5128ca4a56cbbc38df73321c5cb822f66a0526757c", + "static/images/testimonials/ryan-oconner.png": "39761d9293bc29d374628404d1b8da511aff7bdeee948c7477dc99de16acda55", + "static/images/testimonials/ryan.png": "a06729dcc748410064948e3dc8c48699579fa4eac517421fd7cb507fe95aa186", + "static/images/testimonials/shoefitter.png": "221dc7c97d097276da8aa3da5b0ebcad72f2cafbacd6eeb3287e28d6ce11470f", + "static/images/testimonials/smartbee.png": "2232f437bd24f1814228e3baa47959ca31b9e16c70383f09e8208448bfb30fa3", + "static/images/testimonials/souvik-sarkar.png": "ee08e9f68f47deba8cb6cf0d32c46b79500532e3167b7e24fdc925a4b40f51a7", + "static/images/testimonials/xue.webp": "105b72435190bce6aa3a49c6b99bf732bc89a88a9eed2327511b0564a089b640", + "static/images/testimonials/zach-handley.jpg": "d00935146ec612a00403d46cbd7f6bf2a0b51a195f74338757f4db4a005b053d", + "static/images/tribes/android.png": "5cdbb72776c691eec2c82cf89c08c24fbe11cd85644788fabd590ea5a5b587fa", + "static/images/tribes/angular.png": "065559996dc1a40b3fe0b5040e7b70082f56f7b432d1e9c6ab3079f1de40b1d5", + "static/images/tribes/apple.png": "5fc20775e00f55c6f3a363c654b3c377b953e3d464dac81afbb7591891b86a07", + "static/images/tribes/appwrite.png": "7f877b798201848475eed43fd1c42d3f909c4d6ba17cd530eb50a5d0040a3651", + "static/images/tribes/astro.png": "63ac68901774c2029fcb8db72a1349d52926249daa84f486a039fc4c446b1055", + "static/images/tribes/dart.png": "8c56cddc29f48f0ba73c911562332d8c7e9a21eae7f06242089f213555aaeabc", + "static/images/tribes/flutter.png": "d7bfe988e8cbd54aa704e7faaa40693794376068f339eff9e906568a34c911ed", + "static/images/tribes/linux.png": "b453f9faf76ed5e7e9219840aecd6cc146ad8b87ece58faed2b894993d97b482", + "static/images/tribes/net.png": "3086e0f9e16f9f6dabf4d66cd9f1ea68a3024f4e629e978edbbeeb4d38108ccf", + "static/images/tribes/next.png": "6ad7ba34e4bfc74fedc6b8fa20f32a35e200532852cfa7066a1e937fa59e8c0e", + "static/images/tribes/php.png": "8c00cc30ff0d397f2879958f96b031322a4056f520140e3acdf11c2d630e4951", + "static/images/tribes/python.png": "3253cdb6e963e0e50d08718e8fccb5858b8ba53d008318f3a8e06927faf865e7", + "static/images/tribes/qwik.png": "5d05206b49deb9f3fdec652039edd64a54e6d27039263dbbea02d890ea491bd2", + "static/images/tribes/rainbow/android.png": "e8186290839494e6ca4ba64b2a2323328202a12fabaa54fa112a4436bcea3c1d", + "static/images/tribes/rainbow/angular.png": "b0d2a26a39cbf6a5a1ea5972ac9fa365ae9d737f984f38b2560a26911165936e", + "static/images/tribes/rainbow/apple.png": "17000c4b140e6e0233e9580a79053c867163c653425f34d2f91011267ac33a56", + "static/images/tribes/rainbow/appwrite.png": "074ceaf9cac2c83129380f3f1a45fc4cd26240dff7d2e4c8080481d00187239d", + "static/images/tribes/rainbow/astro.png": "21ac4ae77a52854946ad468df0ed627465a556f5f78a7b6562be2d33adf87c69", + "static/images/tribes/rainbow/dart.png": "795c7204577774d47382ab3e8745844ec75362f32818a86967dfe293680e6384", + "static/images/tribes/rainbow/flutter.png": "354b2e2260104a6c393c86b0d8558c56af8eddc888a72842919411e918f4ed09", + "static/images/tribes/rainbow/linux.png": "e7265c5d6aa6f22b11e1cd828fdc20577b98915bc280409acb19640955c53c25", + "static/images/tribes/rainbow/net.png": "dc2bed4e93eb4a95fc782de25d51ef4bb48203daab2232ae22ab95a52f0e4954", + "static/images/tribes/rainbow/next.png": "cd3428259a6fa02db49a32bbfafd5586435f6b5afbf08615a772e091d7ecca5c", + "static/images/tribes/rainbow/php.png": "c3faa835cb72f02957717a30dfd5401c1e22dee21bffd4073140d05547bdc619", + "static/images/tribes/rainbow/python.png": "a959ef8d734f5dcecc4d3a2cc8177820fb1f162ab7fd8d8d6d3510e80d47e38d", + "static/images/tribes/rainbow/qwik.png": "a9b49ef052b3a780f625b5d74fc49e8dcf8d514f02f75a66c08edc1a61684dcf", + "static/images/tribes/rainbow/react.png": "d0cc5e3a073d7efa868235766610751a25e317ccee11fc60d70c52e193e817c1", + "static/images/tribes/rainbow/ruby.png": "9b024aac94d37e2f9a66bcd350509e484d7983107f70b33a1ca9a221f0d55858", + "static/images/tribes/rainbow/svelte.png": "b3a50ee430fc4387c30209f0b7445cb0c42e48ebedcd18a0e69461436854ab51", + "static/images/tribes/rainbow/vue.png": "123324c993407f3f3ff134e164fcc15a3d758384431dab987e03ec20980f35b3", + "static/images/tribes/rainbow/windows.png": "b8f9add3878fa7a90b5ff5406fd0251a8ce962c1ce5db41841dc26b39e855a02", + "static/images/tribes/react.png": "3d474a2d1e950fcf366e788af45b322d793a184fa5e2087e662612d02b84b135", + "static/images/tribes/ruby.png": "0acff4e26cf5b248497f770d45384dbce737295758c4a9bbd1397fee39873257", + "static/images/tribes/svelte.png": "d638345fd75663c45413996146a8fc776c893e1fd5e8f7afde30cf11eacd47f0", + "static/images/tribes/vue.png": "36ec55aaee58f2e9648e65d8b33f6663a9b5e64eb4e3cf6e3a33a17bf5f7e7ef", + "static/images/tribes/windows.png": "6d66dd98b850986a958324c5a3504d3742d0f838db9f2f7a12b54a0c6636c829", + "static/images/tutorials/android.png": "a051666b96e62cf82c2cffa61f06d7f0c2737e4b1cec61dc91af03ec8086d3fc", + "static/images/tutorials/flutter.png": "7e777adb2d6ba3056f6093223167a9075bb12a9caa21a6b5132b222df4ad1101", + "static/images/tutorials/nextjs.png": "336bbad92a788531831c2a06263439514c6223ae2fe27e39acf9cdd18b057c77", + "static/images/tutorials/react.png": "eee88dfed6ba8fefdc469984ef56dcdbe3a7a9120f5e16cf202bf67f880cb2da", + "static/images/tutorials/svelte.png": "85c30745f3eb6c18f9c4f612592778e2fd107fe1496112a3dd8f9aab510f296d", + "static/images/tutorials/vue.png": "4af1dfd097c67724a9335b64c8403aef0c80bd61cd77006f364da62ad4489efa", + "static/src/routes/(init)/init/(assets)/avatar.png": "c8a57de95fd25aee51e528635344dfeaa0c24195fc19267dcd01fba5c9c643ba", + "static/src/routes/(init)/init/(assets)/eventBuildingWithFlutter.png": "6ceeeb5ab2daabb18bdc3bd4656ed29cff2486b2b07e03ac497a7a851b84c04d", + "static/src/routes/(init)/init/(assets)/eventClosingParty.png": "c35eb96d428cc5555a4fa9e9aa7a13c6bc6d844efa7f56633c903da85a7204c5", + "static/src/routes/(init)/init/(assets)/eventFutureOfAppwrite.png": "5659aea5c088555783655ae739c640dcc2bb982e7ecd84723c8f16bf3febb1ae", + "static/src/routes/(init)/init/(assets)/eventIndustryPanel.png": "2076db9e8e5ec7b7325bbf094985b45109efe2d4f439d6e6f3490ddc64c2bec3", + "static/src/routes/(init)/init/(assets)/eventLiveDemo.png": "6eb77c803267542105ca7ca35a3e9c19064eaed0e6553c109025819273d6c584", + "static/src/routes/(init)/init/(assets)/init-giveaway.png": "da4e6855b00c3e4afea99e5f9ced054ab2c45f2ebfde1ebe51e79c3ef04d9a51", + "static/src/routes/(init)/init/(assets)/lockup.png": "aa74cc6685e7e0fc1ee9739d8324e596c1d99524053105b8f99877336d9fc710", + "static/src/routes/(init)/init/(assets)/poster.png": "e97222a677a61b6007c00da7aa9f68725a89d3dde93dbb07cde4ce1f51d8ba86", + "static/src/routes/(init)/init/(assets)/posterDeploy.png": "ea74cf68552b049a1a2550334dfc5d5873a68b9bf8d2a9162a9fd4edec40f91d", + "static/src/routes/(init)/init/(assets)/posterFileTokens.png": "e528005340bc2ce16356c843d607c6f906db316bcec30a4fdf15ba22db51dc64", + "static/src/routes/(init)/init/(assets)/posterFutureOfAppwrite.png": "64a6f0100b028329b477b556afb704861bfa5226a7e8c381bd3461b13a79f90f", + "static/src/routes/(init)/init/(assets)/posterIndustryPanel.png": "3978e11aca9956c071c030299dad58b8fdbac406ce8527e5e2b2fc6cc1f407b5", + "static/src/routes/(init)/init/(assets)/posterNewImageFormats.png": "e0e3a252d332cccbf6b469728dc2894a0ca70e02ed9686ddf50f1d7b5c502173", + "static/src/routes/(init)/init/(assets)/small-lockup.png": "ebe73aecfbf8902046fa567a5455ab0b0dea6250f370cd3eaa8a72f10e5decf9", + "static/src/routes/(init)/init/(assets)/stickers/devkeys.webp": "fdd5fa46eb8478136c078a46efe9a98748f9a674ffc01b49978f4b29bcbafb8b", + "static/src/routes/(init)/init/(assets)/stickers/flutter.webp": "3204dd6b9077ba190cd283df8af976a6608c6e22b898218f04f282c676af4a39", + "static/src/routes/(init)/init/(assets)/stickers/formats.webp": "05932852e0ca85a21e270e155660bfde31a8ed7df449554e0a6b4a5f5699d15c", + "static/src/routes/(init)/init/(assets)/stickers/sites.webp": "415d5f88b3eb2cbe431e120dc97ca9c9cc92913778f87753f2cd088373b229b8", + "static/src/routes/(init)/init/(assets)/stickers/tokens.webp": "ad63489309f66640d6b9dc7c4a97cf2b269bce00a7db54873edb2c0da1f813c8", + "static/src/routes/(marketing)/(assets)/images/site.png": "de05c755fafbd893f9567eb3559c70441295b63551167a33e7609ebd85b70ae2", + "static/src/routes/(marketing)/(assets)/images/storage.webp": "d59a4f1220c4e60e321c7642572b7596540e4d0be39527c87c33af8b824be8cd", + "static/src/routes/assets/bg.png": "fdd84e2e696facb0897e890bf5b28da1a6fd2bd5bafa41e89c414b76834ed8a8", + "static/src/routes/cloud-ga/(assets)/placeholder.png": "fba76f6e4bace3e2431dc105bd70df614f20b851ebc03ed0821d03b5a20a76e7", + "static/src/routes/company/bg-left.png": "e9157670f0b11490cad3d8dc069106b87e9a5e47cc62fd443fed2c3dccffc648", + "static/src/routes/company/bg-right.png": "e159b7b3527e3486dafe14e9312afdec5de11b8b5d46979fad487feccd3426cb", + "static/src/routes/contact-us/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", + "static/src/routes/docs/blur-1.png": "8660a40adda51a9b6f2cd92fa7f3817c1db58c03136632d9c67062cc655b6cb0", + "static/src/routes/docs/blur-2.png": "25d7906c49a4daed9a5efa2861d9924d0c4eb6e2457b7ab120ee5469f94f1952", + "static/src/routes/heroes/bg-pre.png": "6d818ca64e37fa3c5e9660ea3c1477a0b902191593f544081f576fce1516ea5c", + "static/src/routes/heroes/teal-blur.png": "19856cea7a3b3c3775a758efd00625b5a4b415457f445aca93308d37cdc4c888", + "static/src/routes/integrations/technology-partner/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", + "static/src/routes/integrations/technology-partner/blue-bg.png": "b7f286f65909bfc53b7603112febc511d66ef5eb1a9051910f9ce1f725e77bd3", + "static/src/routes/oss-program/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", + "static/src/routes/partners/(assets)/icons/avatar.png": "cfafc3a89cab24b8f468edd6dc03f184026e55be7904d86f03013d95a3398558", + "static/src/routes/pricing/bg.png": "2f7e5bcc2d48987a81e73d9e7348fa450950cbc534e5fef231f836e1cd2b788b", + "static/src/routes/pricing/sites_icon.png": "551440f85d22d6263035936802d6e13a37188c87caaa3661edb985ad097d9ec3", + "static/src/routes/products/auth/(assets)/hero-bg.png": "a2e69ce29d53a7c494ce7b2fa86f969074a545da60950e4be71efe3378177824", + "static/src/routes/products/auth/(assets)/identity-bg.png": "0e20c46315b8b53b1369d650737d100c9fe70c8a223e986a6318868ad52cf228", + "static/src/routes/products/auth/(assets)/permissions-console.png": "fc766bb1ff685e31d7cab571638cca48cdcb5483e27248ecbf496c4c439ad639", + "static/src/routes/products/auth/(assets)/phone-mobile.png": "1a0a4644df95be910f28befae192cd7d6508df20098294bc4631e451538f1c19", + "static/src/routes/products/auth/(assets)/phone.png": "498bfd6cfa4acd42576dc209f084eebc66deb3735040b5b8230ab15ebe982098", + "static/src/routes/products/auth/(assets)/teams-console.png": "57f68b5341f5a4ba7e0794a6fe620767eedffee191ef11e7f7cf6ca7d5bc8a23", + "static/src/routes/products/functions/(assets)/avatar.png": "cfafc3a89cab24b8f468edd6dc03f184026e55be7904d86f03013d95a3398558", + "static/src/routes/products/functions/(assets)/checkout-window.png": "fd9ea23c77f26743273a06bfefb7f964898ea6a020fc2464b61238e65910e7c0", + "static/src/routes/products/functions/(assets)/deploy-window.png": "14f6a7d309883c88c97ae66482e3ec7f4fb32606b1ff06e54ba03eec022ea2bd", + "static/src/routes/products/functions/(assets)/hat.png": "c77aa1e76df876839284c6347be276d326e039ef0fd4f46599e5b9465061bd68", + "static/src/routes/products/functions/(assets)/hero-bg.png": "b9032e16403556e469cc189708653d5a6967f03074772b7efe2b9a18a9a20cc1", + "static/src/routes/products/functions/(assets)/identity-bg.png": "0e20c46315b8b53b1369d650737d100c9fe70c8a223e986a6318868ad52cf228", + "static/src/routes/products/functions/(assets)/local-dev.png": "fd9ea23c77f26743273a06bfefb7f964898ea6a020fc2464b61238e65910e7c0", + "static/src/routes/products/functions/(assets)/phone-mobile.png": "0c27023f2dddc6826347f93d236dcba6e2284a4d8a25c8ab0b6d2ba5b0ad95ba", + "static/src/routes/products/functions/(assets)/phone.png": "ab691f94c519bd02daa2cd970ca4a32e379edb97428abce6738a2e2addcd47d5", + "static/src/routes/products/functions/(assets)/shirt.png": "f20af719efc8e23152d785b30f2fdecef32461454f9946e1d6e964032e1f0d53", + "static/src/routes/products/functions/(assets)/templates.png": "b9a4e9b3627272166f373b309f181102718a1028ecc3d39d8acfbd862c27f13a", + "static/src/routes/products/messaging/(assets)/appwrite.png": "99702aa7860a411083fe231b50f336e5d3a0836984dc24754f334b3bf4695769", + "static/src/routes/products/messaging/(assets)/draft.png": "e65ac055a7c2e9102418a6fb101e89baa5ab136dad32f94d67559c066b401449", + "static/src/routes/products/messaging/(assets)/gmail.png": "c2f24d7ea2d9554d8788395bac1ae39c7593b8bc8a4cf9d1f4b792892706b847", + "static/src/routes/products/messaging/(assets)/message.png": "921d899aba09bf869fdbbab5aaab720bcd25f9396f18d8b5892e11e23254f2dc", + "static/src/routes/products/sites/(assets)/icons/ddos.png": "e10abdd966443d6795aec23cae0f37d3d92129061fb7a8edc66be30a6804d814", + "static/src/routes/products/sites/(assets)/icons/domains.png": "8bbd5df69259270414603a6409829c4a76725bb7cd65fe546e6f8da40b0dd3b2", + "static/src/routes/products/sites/(assets)/icons/ssr.png": "56f67c0039fc22bb0f0ace351e7db16bc1752fbcdb93ee86f4081254f7ae52a5", + "static/src/routes/products/sites/(assets)/images/illustration.png": "0789be5d03bd45ca9ee896e1803316e7534557fe4188e849104603f4feb887a7", + "static/src/routes/products/sites/kcollect-ryan-testimonial.png": "69022178703ac81404fc40a7516f7c58e9e817cd3adaf911737b5e6ee6b0918a", + "static/src/routes/products/storage/(assets)/hero-image.png": "f3cffe70e83e507733382a3d35a63b79c3640b054c773e219c4ae8f88a5c6831", + "static/src/routes/products/storage/(assets)/product-preview.png": "17de3d327cf977a89ff08dbdafa67b89c3370a30439a75e4a0be9d4734e54990", + "static/src/routes/startups/(assets)/bg-left.png": "e9157670f0b11490cad3d8dc069106b87e9a5e47cc62fd443fed2c3dccffc648", + "static/src/routes/startups/(assets)/bg-right.png": "e159b7b3527e3486dafe14e9312afdec5de11b8b5d46979fad487feccd3426cb", + "static/src/routes/startups/(assets)/project-timeline.webp": "f5e4f2e0e22ba908d54859f8394539111e200e6118cd1831f2ec28f9c48d5467", + "static/src/routes/startups/hosting/bg.png": "551e2798cee16b4a9c31f1400f45e687ab861543b764f84ed418d9d8aaf55794", + "static/src/routes/threads/(assets)/empty-state.png": "1fe774546385abc92037ad1ee25ea9f2850ff47252c0d96891f5152687a3ef7e" +} From 96a9bfdd5c83637ff2b0b13d270b944be084d44a Mon Sep 17 00:00:00 2001 From: Atharva Deosthale <atharva.deosthale17@gmail.com> Date: Mon, 27 Jul 2026 19:50:05 +0530 Subject: [PATCH 34/38] docs(oauth-server): restyle concept diagrams with brand theme --- .optimize-cache.json | 24 +++++++++--------- .../dark/diagram-authorization.avif | Bin 19300 -> 19650 bytes .../oauth-server/dark/diagram-clients.avif | Bin 18800 -> 20461 bytes .../dark/diagram-device-flow.avif | Bin 24115 -> 24021 bytes .../oauth-server/dark/diagram-overview.avif | Bin 13290 -> 14569 bytes .../oauth-server/dark/diagram-scopes.avif | Bin 10818 -> 12306 bytes .../oauth-server/dark/diagram-tokens.avif | Bin 19087 -> 20993 bytes .../oauth-server/diagram-authorization.avif | Bin 20979 -> 19561 bytes .../docs/oauth-server/diagram-clients.avif | Bin 20015 -> 20125 bytes .../oauth-server/diagram-device-flow.avif | Bin 25218 -> 24382 bytes .../docs/oauth-server/diagram-overview.avif | Bin 13788 -> 14714 bytes .../docs/oauth-server/diagram-scopes.avif | Bin 11200 -> 11961 bytes .../docs/oauth-server/diagram-tokens.avif | Bin 19035 -> 20891 bytes 13 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.optimize-cache.json b/.optimize-cache.json index 0954678bbe..9cc6f44d55 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -1587,12 +1587,12 @@ "static/images/docs/network/edges-map.png": "12ecc1ea200905ba75eb7cfd17055a156fd51fccf746869a1058f923dfd7ac1b", "static/images/docs/network/pops-map.png": "205ead599703cf47d0df316db8fcc4f48d5eed01508109fc740d17914275e9ab", "static/images/docs/network/regions-map.png": "c65f1423ab19c3048bf8bf93117e8f2e1d13a2bc705c00307de7ee821e5668a1", - "static/images/docs/oauth-server/dark/diagram-authorization.png": "c45bea5c61a8c3db746e6d3ddd25e79fdc0a5d964dac34ddd17938630eda80f9", - "static/images/docs/oauth-server/dark/diagram-clients.png": "449f59c258d8ebcb39fcbe4bd16a31c57965a94b15abdcc11650a79f850f2438", - "static/images/docs/oauth-server/dark/diagram-device-flow.png": "8627fa4798301bd9d3e989c4fe5d754060e4c9473a30b55911a810597655733c", - "static/images/docs/oauth-server/dark/diagram-overview.png": "cf64794cfb2d0204d4cff2f0061923a73f5d77a8333bfba6ddb693f28a80671d", - "static/images/docs/oauth-server/dark/diagram-scopes.png": "9e1aeae9645bb68b581881596393db446402f76ecb4740dd05aca69536324876", - "static/images/docs/oauth-server/dark/diagram-tokens.png": "060e52ff548a7a337af7a62ac89f0f832034255cf4d3b3652d15384b989622fd", + "static/images/docs/oauth-server/dark/diagram-authorization.png": "f11b837ee7ec3088287accaa7e7209e45f08a15706441e32360635d8ddcdf612", + "static/images/docs/oauth-server/dark/diagram-clients.png": "cb33c1f4d3dc37633688fbdde8ea6b4e9bbcf05ae7e9287a31011e9e220bd94f", + "static/images/docs/oauth-server/dark/diagram-device-flow.png": "208a3dc343bfd1c4ea16d64b6b19e8efec363855231b0eaf467de1397bc29a64", + "static/images/docs/oauth-server/dark/diagram-overview.png": "060a1cae43b0e853c215ad28627c68b1dd299c4f33a8150be8071ce7c54c3df0", + "static/images/docs/oauth-server/dark/diagram-scopes.png": "929274c616121ce233ebc8ab33477fd5b59729c66a61dc7f7dc2dab85f323947", + "static/images/docs/oauth-server/dark/diagram-tokens.png": "f406f6eff22b01abb04ab26c4c6aadac5375d0677a906320bca1b327830da14c", "static/images/docs/oauth-server/dark/oauth2-server-apps-empty.png": "b81617a77c6489bc93cfe3c118c2fd075eebda850fc5803cba4b1b62792269f1", "static/images/docs/oauth-server/dark/oauth2-server-apps-list.png": "a0b1a9bcc5708bb48f7d4684d754cfc8af8e666f808e11d00fc42182ee7ccf6e", "static/images/docs/oauth-server/dark/oauth2-server-create-app.png": "7ecd5625aa964ab77b87440e52bc866a4894dffe5183a0e86f7a46b8c438cee7", @@ -1602,12 +1602,12 @@ "static/images/docs/oauth-server/dark/oauth2-server-settings.png": "18da0340416739f803b8c04d66c191e92e7eafa70cd301acb1e269d8dd5a0c81", "static/images/docs/oauth-server/dark/oauth2-server-token-lifetimes.png": "46743e2f0a3e8c126d590809668a37c2beb1f1c5483002839d9a15eca9e110d4", "static/images/docs/oauth-server/dark/scopes-defined.png": "4723658a478b30e4f97372661d4ed7a9ba14d1cc7f0b56d4f5bf6148b5326cf1", - "static/images/docs/oauth-server/diagram-authorization.png": "cf0122349ca24f1cecea2f4cd1b71ab6a447fed317bf1c2d724fdb79d0dfd140", - "static/images/docs/oauth-server/diagram-clients.png": "b5b50d547a151976275b12fe7077cbc1a22fc209f2b3fbd1832e96f0a95d37b5", - "static/images/docs/oauth-server/diagram-device-flow.png": "a10392f90870623f84667ba8d0d3d753f4ad22d82b72a0b47cb3207f803f2fbd", - "static/images/docs/oauth-server/diagram-overview.png": "71488c2c882c2befa2384cf20aaff7f681bf55b52f3247a4b0f3e73b3684f412", - "static/images/docs/oauth-server/diagram-scopes.png": "6bc6b498f71b1ec5ac1fdac3cddedca3749b2e50c8452e587235b366b577638c", - "static/images/docs/oauth-server/diagram-tokens.png": "62de8f079c3b585c312c13c830fc53d957e8fc8e6432eaa0d33c5a1942e331bc", + "static/images/docs/oauth-server/diagram-authorization.png": "a0d101a521ebf93fa9163b199f2e7514306b9fec4642c3edb2341b9e354178fe", + "static/images/docs/oauth-server/diagram-clients.png": "25e672a7e303772cdb3808e2fbc7906943f74ff5413ec2d5d1143762c0842a93", + "static/images/docs/oauth-server/diagram-device-flow.png": "f620b3b450ca3b34fc9326cb1b4bd9fc7066e4c912b229c211e1ef30ff77010d", + "static/images/docs/oauth-server/diagram-overview.png": "22384d2a65d4f7f3fd8cb70be63f560e3b15852d0956d82dbef46f150cf4e1c4", + "static/images/docs/oauth-server/diagram-scopes.png": "b0641b382d3f25717aa37f3bb62f5a4f0bf688018be1ecefde0c481dca592ed2", + "static/images/docs/oauth-server/diagram-tokens.png": "193d850fb5c7cc646982eccff82d8bf14612399bfc82988b3e8b167f221f7fea", "static/images/docs/oauth-server/guide/taskflow-consent.png": "5c4f4cbc6b225c60d5d6e2f1616abe45f0e6b66a5014438961fca98db349bd18", "static/images/docs/oauth-server/guide/taskflow-login.png": "5d0013b31b211efe4d3a2f6a9f224a5b547d3ef1370e507b9a183bb276fc90e1", "static/images/docs/oauth-server/guide/vantage-dashboard.png": "b2e95c34ec9c19be090e5f3384e0c3278dd840059b3f015ccdb13a16c135dde1", diff --git a/static/images/docs/oauth-server/dark/diagram-authorization.avif b/static/images/docs/oauth-server/dark/diagram-authorization.avif index c9feb8022510dd82fd9e6bba08c759f74eb5284f..eb3cda67ac29e5ca3ddeb769fab74dacc8df24f0 100644 GIT binary patch delta 19573 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 delta 19221 zcmV(<K-#~;nE~XM0g!hBN@|gLdw)uDZDe6|5&#McIcjJ9p~3<h4InbulmQ(CumHml z0YCtW761T!$vR<Ey0Q8|04F&2XT!mwt52bWXyJPEf~Njq1&u!WUKAV_PI-QFAN@XE zjloY=e8WTjtS895+}pKYgB06YJzv;1!USl0p(XS<P_X-u+-PRMIe15Mk$=n#XH44U zcER|>nf~c>J=2DWX6TRQM?rVww9iIpY@+higUiCAFnx7Tl<?obcUk0+a)MC38riv3 z0FQg>`>0v$EU5e>g2SfxE@^!4In>x}&-Q6<r<`u9HJC*)cBQX+VL5q_j{%^7zUBVQ zKL}wrACpEfz^oQDd1Xo=KY!H;STphYF*TxMTJ0zC{APL?lI$v4WRX_$N&i$|b`wC` zKPb<Lwd*22&&Tg#S8E_>Y96(C?xnk4-no0@7iY4FYVdF1#LUX{U+EZX+6d)Vg_2@O zc5YG4GPPN5%xk;*hKq5uR}*;Qx4Ia;5CT!PzU<^Ru2ljHN{;0{#DCQ~HCiQV%>;-S ze`kkRf_p1>dB_`+Jk;!ph&83Bpi*GBJdQ)C5$^OP)jkNe3$zNAW)e^H!nZZQZxKin zF}ge`k)}&ZQ@m^$El08eZsJbbolVC=FZN&P*fzc~z@PXE*#8?|eZUh(0sy3MH??}| zF*(Vn5vU>-e9_6XSbsBG)|B4!OO(P4OPvmD(iVo*76*@~_cU&jWeFMWI7&fc1+w^k zP98GTdlVV%mh=UmuTDv4r!HP*8LmL3`th_SxMfaWCzCpcTHA2St7FZC!KHvGk9~qu zEbjE5y;h<~GC8<<;L7`~-Ut-KWLwk;yfQ)d=0RSkJsz%s^MBZo3X!B)8T`IUByMw- ztFT-<Y9+MN-jay>V<)aofLe`#fz_c3K<d!?l^AV_k`XY}EDX3yvyI}r?vnQeBT98} zmt;bEk5)jJzOAVn^U!xRb-gY%R!1F?zjA`+%s2)a@k5iIGpRl819g--rOievjF`Bv zVRtW7A=?<P+kZ+`>WAJkw?RhoZiG`rwOHY1nfxNMs;vl<net-Cb1y9#NGfYCSCrjz z4dobGt=rqkKX|Qy34oFruWVaYR*0gzK7QrDMr~@_J+6V{?d5HCSj9j*uDg`!*ROW7 z4<DQr)?BXP;Hl*Ftz$VBpHFzSLtOpWIprMfb#4P~4}bRMq=N*)ga)s}lr)wxU#@rW zfF)NV2fkAv8=o#~76(4ST24XxARFA&Hc3<0x1Jb)4@y(CAQs~|1K+w8hTvaen^OHA z4r%J}g^tx#kXk*uxptHz&hN<Cuv=LS13%JSE4^$sO!N}lD#kmH<ZyMH*8%uZTp1zg z=vEk3KYww@jc=2xQdZWhNAoe<u99_+tu+U87{P;Sph*XN=rhSp0@#rG`b7aj?kFk- z(0v2Y$2bc)i7bNgoFq1Me&XNu$D!rzazn|EU~D;I9-JD2sy};dZ}uqMyY_&d)Y)IM z7L{<L{_aW!pL7@MEu)(^E2JqXudB5k$2Ltow0}C(iah8j^xw+bR?)uy$|)vwz%;(Y zj%GrlTddul8CWn*%x$iBAK+B})U|u}SK3Uvzq@RHZ6JFB4DJg~k25lixvJH{a(CS8 zvZ}|90G1pnr!!tjM4CDw3Iibz@z)KjNC7YRjHTIkz$Ce~Qwk&|tx5SLNfdEE<XlYb zS%3CA(Md@g>DsH5^4+kJ&tz>4r071a3%FtX4-|MX;8py!)^WC}Ei958R~B!l4!;>i zP2~c}z8pMV6Ccm=`STPEkJKGlIB~!y4H>3OUs!8(7doU5q>|;_!%UOi;G}Rn`k9Hh zIw}??@&N5BEGa8~qdZRvl8KgKC0NVl2!GgO9;lk)Xth4E<ubFM%&9F`*=10dfP2GA zd`B`PE{6c{ggvmJR_$}yZ`w2AE1y6(y>#US9S`L|IH37Ep8`yxr#8h*Arh2k$}~X@ z%BB4}F4d2I)7BnnZ-M_#Dk9SEyba;yt^eMQd=52;R2`H<N0oZ;+v5KU4|fw6VSj(` zPsBjgA#6vV*&qps-_GwwX?5xPq%?!UnX*fYji6=B%gUfVMZ9CkGSj4(BJ^7PUUVR@ zd+pRrMU^N@kjVX!P5iN@DQ5e;z5WWhpF3oPr%M*$60E3d*-lWp0^0{A`K}MHz_h!; z5`rpeiTtehYQf)d8xB~|gqSoPAAgDd1)bf$8kVK@rGRjkz+=$!<C@Z1l079F)IcmY zPq|JwNVX32FsA+tpBiE{`$N=Mhnh-x_ly;yttU1u^rdBmH7!8&ruU=W<L3dyW1fh7 zE^MnG;d};$6cOFlM0Hm|U%(f02IKxr{qOd)v5<~7&Td)zNbOdTgnuvqXMc_vGQz8z zdW1GaYvP3Fuk{KDSUbSJmyW>#np-Uk!@usEr}KGh?=;dVDLgi6t?EH&O#cs+bx=ul zQ+z0lc_ziD*wu9fs4U5101EQ47|~0H!O3AG8raj$ysS9~8+Q29)Ev(JXbPdxH2G^# zN<l|p{&T!+Fn=Yo-k$0cwSQo2_Dr4rJ&)o(e&Z)ZMkiv?HY-;njmzz}<-T#g92}}q zK-R?^Ardy&RLl1agV=hVAj}WZw-|fUOaA*p=df(J1<S?w50<0Y!p>*KnoXjN5G-p9 z|J(^m?0d&$8Hjt=laGd*m-Dlu8rIqukR(*wg>RYv_JtC}@uSwnlz*tp_J!Z2EO`$w zSFP(X!K|{(r(CG0K4_Tk->9uiq)ElT!lrNs=utVQD!$rccZBAiXuOYi2XNLG1YT9& z-xU8}RI-Vts9TYJS$hu8KnM(ugei~W@1Og}Evw;^jgd|`0sGYz1~-u+IR_`IdrG~@ zop%Jd?GW=~)sI=>4u4g2WibqzNx3s88sGYAK2bZ3gjVTrM&e!&B>k959$m$~K3zd( z1mXBLgC<MI?sa8v52Bel%dED1(6U2*F*QHCCl{(VU@+a=qww-e0W^Xp%k(80sJ2k; zb$O@I%%I`~)n4_`xa;gx#yh)|m(eeuDSp$tmX(I=ax$;ZSbtBPHGAfp#|cL6o{=ys zCKAVY);!FXYMx1@5VxF?_$D6ms!t8&144EYV+TenYW_}gE0c5GDH{hdA;1U)(!-?` zYr&Xi6~prM*k62Z8f?T{x9rJTn-=tKG5LYYUQz4)i{<?SZI5|VI{5wKp5Sc5H5wNU z7c2Mh{%+D(PJgbt6s{7eQPN^Iu0G=g>W~PSD7dQeAYY^pIB!nD-hc=(lXxT}5L<Ij zX}hLBF$@%cKWn++UiH$=9Nm1=wFDJFoxGOV9)WtOmfGptY2(o=lZkXxzk78<gA^os zz&JTywoOIF#I22HR0(wY2x7EgIB&CWL4VUm)<#{*;D6h`PA2*pS=U-tX6f>VZmR<i zck-fkD9;h+_`-<|xjAF6=vSf33Y1E_spzrlM(dJY*n`+${wQ}}cfR<h5V1>|I<)8e zv~gXNIs*c89T@6D$JUnqY;n$vkLz&DpQdRvBvN<=J$xSSg3X-rj2SX#3um8kVAc9S z(Nik8uzyWUcSeftZikiMbi+@1zK#r{@{gaX^7-OW@u1y~>SiaeVEJ_vr{1V}J}Lu7 zjY)`srn{N5kOHcd3+=_~-5Hw|O^dc~rQE_)dp+VWDQZ4@E43Sg>=7OM5}_^g)K7vX zl>9w#8r%EVA?$^7<q0(en;!cYlIUQ^#K1-&kbkuQKA2i&2(;^DI9kIHa^N=OTaRHP z?k`^Lb@;Y%M6eUb3}7zr7{nfw*zjt2-9)E${7~;Z0AXkD-ly-?sM|r9N#aOb-?6tg zJ5428SV634Du10QoM$6b`>Z}{g_au;<g?(BxMYIn0j1><St3*k0?f!toO_qc92@=^ zJb%XbWd9!B<e14zr*i0Ipu0Gu3ci_AxT=(V&M#B}55CX4m%OJr-@2vcYApo8E(0cW z1-?k<;xcj~cqg~f+wABSz{b3%y{C-l^gmD8H5`m?v0y~0aP`no?yo8FGP#Fba5Pq# zzhtFtM$nj_OI>Df7DgZeC`(b4#>N9Q)_+*f9?t*S_fH-L^th}vdJk@o@3zXd&yH@V zW{LcBVH6x%`bmQ<VGkOgH4$|`N%%gyAS<e8obb{?->W9yF1?Lpfe8O#;BuS&Kn^R& z0LrvaX4&l0l4GAcNG}4|XJXquV4ql^+l@>4Wz8l@q{Wz;A;bVOny5gMxn;=bZGZ3F z6hy>%<Jj51YJV;y-nk2}9KKdD%#Eh&%2rfjh6fug3y_JRf^!0jK+I$`fFL<cev$lO z5sYxA=#B|rfYmL7r>7;6r>h-=4-jAU<bWuRNS(J#bbnMQ?zS|4K$SEd8wy(G&R?dL zU<KD8b{wbGL^0cWXQq$ONlNFo@_#<15N<F_1C%YohKN^rdCur&LMst^F<WHYxGlyK z!1={j9CYCKCvuT>0zbBPiYQONNa9(W<H`F*Ry*=~PN-B>Z}*1D3}*87o0pyo1t;!7 z9~F(gy4*zS_u{@!Q-pS{YioTg@Tn}5sOIE%@$k;rQ0`qfuAOf32fbde3V#ae&i1@G z@B+CEIe6*Q?|!=G4U)=folvQ6wKug<W#GyNz={n($Z5yIiaV8qKdZAFiJRbUZFRYf zI>%QA?+sItjSty#C*zy*_{F8yGbt3$PZs{i>EuHPHM_5|9_Y7aI3b!odUHb;D%m`s z!1DkaWShR&0C;-WtBDkdP=7Q7J_8LfpMDGCqMO`iM^YWOAQu0WZuflYchx&y4VsG( zB`b<R>OuuxdRI3QabQ`cZ8F%zu;|w-Fz7tuhrPZrp|1w2D^fOB6S=EfTra{kVrlgq z$5LU|1>$e&h!6a!3^CQ691LM&1nJ#3=6P{CvPKk8q`_jr(gCIIgny95%_fVe3D7-t zBLs1{cb~0cYPzTTNQc07{LzD1om;P9iKy{Q47F$~V!(fcOVpd{tYH9ebb43(;gP3U z4-~VQYEd3yDEyK&`U!Q$aKYmUmuxs)5kc<m183uzo;&rQb5=2__ald-8Bvd~KL~$9 zoR9UL$BF&qUf;s%?SIZC%>`j0w~r{ZCkR@EuBsZ9?}2gj&F$y-?!|6ksf9m;dNn4k zPG6ozvQMW0r`_1EZtl-shk3g3NTrFa2%9sktjc35w0xgw<YdeG=oFQAvy0J~Qszh5 z_H72eBX!Y&LxP1N!$}mPjsYH!6NitE0Mw@>x30!}wm6P+Mt?o%+oG+9N^wO<Pdbz; zr6z1f;~`6&a9&=puvXNspz2v-DPjTt!<a$9!|BZ*y=gSZ(Sg<nv!gZ4hp{+U3{6!` zX+uGES;Di1y6`Amf(Y-X>hp@hi;Q;>!);!HD?JS~eua3?Y}}@!Ha&V>wS29&qWn-; zs!A7fcc$-hE`PH4DK6C!4@iy4KMv0PwS{=fx5p&N0_@*E@X}1|i@xWu{%;b)<^mJV zB5pPCwwrz>cy*RIcRq2-*JhkTanqZ(gZPheThc@g0?=*7(}4|wREYftx-Z?2Rlo5# zhT4wIE4gc*Pv1s&3{8NC+=%>h(nnNHxlDM+p#dkH=YOOR$0`}yr3{Y?n$b$N4|Yf# z>T>(gMe?hVb<f9xk3_BXc?~&m0}G4}b(9Jj&VVI-&#c7U-Tzq6!g3lzCQ8aXndRjT zmsafg#nzRnX*+)-HFB6hReje$*Tc=Q@EUTDX+rrF(U7ni!o7##2&K9R5;3uZxsYzD zlZl(RPJcK{ZI^0S+V}WyH7D=-kS++?a@>df)7ASE9k0y;Tn^1X-VS<b#`qiSBw8!| z4l0X#qp3)5Epio>1UzVm^m%Kdf)DOh<hoq0+22c#*DK{obm1hW9kc{N^#T)Cc^LOr zBXLkSv0_jC6q#s-8Ajex&j6(mueUMhYADX8bbpN&UyJm@*OFI<ly@_<)TvNQabc8E zZg5c`3ax+*raTzkbU=%^fPg#s_pKK|US*BW5>4D=-YM(-w<km3ww~W%t>}#5Z{|yU zj#>)*H0yc@xCU|biXpB?&*cJ0o(n6b{_F|r)Lfn;tmV!zt50R)Zn-lsu2i?;Ga9NP z?SIa!P8qpo=UFAyIj``1|FnVOFeoKXmiIl{S#6q<<@?_KsxX_f>cH}RJUtm@|Cgk0 zW`*tLQf>c}!wC~K8XMarz5D@`<)pAuzCFWw990c7$=%ix`c6waFqTy5sAl2@5ow$* z+NN=lOp0u#n8Pzb*N0gKf8q_}GUe|EK!2OIxJg?PieSuW9aZ~NJyrVCPm!=<T8~tx z9v0gW;z{r$03#Tzm}F%a(`|Dp(Zet8mt9=<w&XeHW!bZW;~ZcfQH$t0ZXKH@K`_dv zB7^(XoOaC3(pM7|s!MbhQ5r2I(5O&@eF8RAArnIhj)jvzmBcX{D=b~~Kq^ke?SJR* zqfp)Xz)=5x#z^z<XM*o?f_&6cAD|inXb7md7w$+-i)8gJv(M3p=%(+UkiW8y#_lB9 z-v)IhC<<uIO{}=#eI1QmXnrq^67YuP@%QmZ=0|A4Isn1Ac@diz3eD`=(x&4~zIU4G zs@NW)7Hjc&4=;1a-7Qg=)<W0oc7Fx6Hz^4sCZKE;wG8lPhxDRB<C_@Y@41AQNvTC? zBJ^@^w0cCCnCS!DkH90~a{3B%^J#AGZ(xh#!Nhd4I`tMEiuLaX_B?M5*<(B|vO)Ul z0e~@3RUjEn_q)DP8EfS5gn~_ZX+M0=q(iNtbaSVZO_}u0UMa^jp9);1KYts6;NSRI zVI5k3CR){pE4ecDmG3muJ(x<s793fUd7Pq-sb80r8l}R5Crx1YbtfvDquQ<Y2oZty zswdjvPn31f3l7yVLFyU;d&^=1B+agQI=NC}uL%R=a@vrW2qszASeey`yBa#mAJMbK zSs6A(6~Yq(!gebNdec7m`hStLlVf+mpRpQ}>rpEb?x$S8AMdJxv?3lXARzQv&5xY! z2LCdlK9;9MU9vmxV$VtGw~_IcV%+chmGMkSL#!D=!E9E({v)D^W0JU+DYJMK8#7zQ zEI@8-6&Mk*9arX|f;KLu)df6LF2kuLP(5KhtQyWp@?i4B%GXM0VSgslkmZaJI&Dfo zR8f`+GI_uXWl5>88Pa3nHZ2=3wfa<&{ppxBN9oP+Kb$hPRE%_*#!oC~m4}jQ=esQ4 z0d%>HM;a_{I*$cI)_ZYig9$_%9aPdU081QqNNLu4lw6~?Lc(2FxBNi0^=sar=Z?U- z;F}P_odIz1U%sV{Y=28W;yRycM0RnwTV#MShue>r;-T*gUg2&H@~W=f0elJ~O}e}! zr`r33!dd)(REmgm=GCqneHcgh*?cIH!GZafh?t&!<@p*aKpLfO{0mz0Fj8BBYZ6p) zLEZ(|7g?F^rvMF>jyccjCKsX>5*-tCzP1a9QV%keLGw9&Fn_P^T`t#@%<ZE4hl<&l zXW2$RPh9};(*g70ZXh)kSXO#(s%WfB5a|#@#p7M_2U#T$%|Ibk^sS-c=*R%sVt|;g z;utyfs48!lRLAmhYhWmAa|FI>h6oXJeq!j#J-~j~VU3M4m~2tBJG5Ma_go?r`oiF^ zHrK49wd}y{$A5m$EXfZvCI5gLQ=`?g4M;dbpZMXS;Bf@@xIr!W^d2k(trw<iWlP`b zZ?wRNIfXwx*W^H2Llgo>(BjH=^#hHY<4WrW%0-8Ua3%hA5c6<Xk+Vc^O&20mqYVH6 zeaSjuQ@XMHIg7`iG~jl+836sOh-ix$RU%A^p({KC@PArR^-gK;dLQ&hJY!fscpO!C zf>{v?Lc3<cljo%@EZ~;@3#PR_Ws~pVdnUy-)^bVq1ywoh>MZvCF4-t+TOBZHFyo9N zDRsWb)<7QJO8a&Xvq;WG3HTXkUNj_-7Y7g1^we+WH=DbfjrpG`Yx_o$AEachn>PKe z(^_aLet#NWYvvXpI=U{Lax}YTJ2Wui4MrHpk;@suTd99wscVPmAsQ~oYvr0=63P?L z|2hw&-ceZ4i9<0NE`#L+=FAwwC4(Qd)I$Do!64)ab_zcR^gs5XX5)*|*0dB#xNBJh zgl=x^O9iV84zjXJvSf&Yy_HKBOCv6^WfacGfPaH?@G2u*L<$(U-cPii(1tn8&|X1@ zRo!UtmU#8HB>&u4dyG@rNAsNghNAVBqf-aT-h^-kfBqP<@BJ0d3$GZZ65POJr@8D| z6IlcEbf2LK)`RSZQ3)z{d=dx!c_xtJ9<3EQbp)2+?^oVyS#^$p%To1p0zh_3rs4Jp zBY(M##KwzQ3WjrM`GzxJDO3oLu+tL~K96~6pL?D-<^ly^w)pKV=75av9xOow01Isy z-eWm1{30K7XCVA?wMF>4_?>`2W<@jFsXi9Li|jz9AFQ{sd{$*h8vYRQ@(wX2#Z7!? z`qk4Hu&FQ-*N44$9a*1DtTR!4TPk!W7=KhuJig0NSpsP;CnjdtrjODVt&F-mBhR|5 zC>k5_Q14W_(q7v3d`yP%8CC<&VqMhfFN0G!Rrn77dO!tJOC7+p>7j1*Ty|w#3XZ85 zH%9=iazGX<5qe~bSbk)K$@kBsEl9Xy+!A`?e24IaB<kBT=buID11O0RPO27cr+>Vu zjykCdrd8g0-;^$?$*GLqz;1E1v(*ov;npsjS?=gHIesJgV%(rGH9{#^k%OT-=(Mx> zs~noRi+(B1%mthBfgz$Mv#s^iqplV9><{5vE&W<Y$mr`%t}SRtM`Y@e_{PwBdU@rm zBq^x>)$gaO?X}3EyR)~dxi>ig27k>n0OOIhU!(2~m3_{aHVtTVU+DWSUl2jUO3jHQ z?*%a@-Ma!>EK?bn?$WMoP*2!S#=O%ravW{`Ukb<c2Jgr_*Z@)aDz<JYbRNOETA5>$ zApJnE-UN5@DMg#pOlfiz!(pV0kd_4|t`56mO2+kRNDm6!yCdEIx7`$H=zj+T4lL{X zi&|U!=5g;fyr%+aMh3|5#2*n$Qhp0xHTM>E-*|GyZW{4qwWAz_D8Dyp4&{{UADuev zfVaCAUhnWDqL|2f(wCQ?F}LXpT7$<-$oY4365=SJ6`&CbEH7!)wsYM#Nz#rxxhdIb z_{p&xPShU<PQBh}+95VSO@BtFcHO(&zPx*EXw+;>sTM#U-!Xn*Uq8g{nellszL+*h zu!dZaluj0o6Pw9b@tzO`0Ue1n#}xc~@MnN+vgRtd_tO{kbm>0S$g5Y3-{aaa7l?fQ zeeQem&4=P{c6Fl{4ZBvYgYX6$)!lJ@A)58fZc>`5O?JST(&5fdo_}lB`yN4!Asgto z`>mrYRV%7`CKQWJmq)E=h35+O<o5&^!8EnSrRkHKo(PSnVi45ceWD@cFdy9El24sz z)gxUwD=qGx0VD;NRn6p7aom6XhT4|rDjeZ*1hj#|L|DdG7Q|sGpQRNJRyzMQ>M7KP zq&_uS=fXkj*4HRKynn73$ND|^X3%ZHdp7s30ov!!a=Zc=Aawi-(Uf8aId!2nF|`XS zS~5wnD7kkmP~U4(+3UCPG>$idFB$Is+00frjN%w42pq$VAvk}s2*dxL)35X~co5YZ zP`O`9ZT-e%>9T{X;M+9mxXcETpmsQgdw37%h*aiIUk)U<Qh(RrL1TJDN>r5)dY#QB zF~w&;O|ap({6s}DD-ds%!UGharxI-(hgq-aIhBdu6wLf6Ovoa-h4uhyjM>P5yd)GB z&1EDSjMiXbk<j}^zLHGR_Up1)nH5q`q5?!CliB!GHQHpk^ojnI?sy|194^h~+Pm_k z29kL?n6%O^TYqnFjUw$)y$+RRG#C`z4}-UkJ^Ntbw2@-WrF})0Wha#|mCBHYilj@p zXD7D&a%HaZPSyYKKB9(5k=7yUNKT08hkcv;lJSmRpvpIWQBkekiVEEqL$qSm!mAWz z7hMP7a(a5{+u62Y_l|W-L~FQ%4II%wxVP(P@-l-?i+??G$Zw4?;618t@CTW87&6Ba zH*?d$aqbp$Iq7eb5GhFxZoe<wbjp4|fRFL-U5n!rP9g#-9bq*kZ))TWK*Rtws#0~^ z90q3P!98H>k1njMkq?o6Vlzu&J^)MPltVYGiDyJbpQhc@KvBTm1=beOgcgbnS2*GX z+RAr!-G6v^Rf0KY%Mj)MMw(_&yjxTOX4|znbqsv6-Z~KY=nXmQ91@77kq~7s@Sm~2 z^p!<gI4#U{t%5aAIOEhxd0mQ*1e_C2Nmd<-d`ZA2c-?ThhM5aVV9xG>wvxZ{Zn2?P zp%M$eDsm_lg!6Gif$iCz)Fm>xR$x*kU~4Wr5`SqR7N3REWZiTv2{+StSaJz)@W_D@ z3|ugsmQ-o)TnrpgjJHs))wg6qF#1{aeDj4rkx~-pZKL9wlN0BuLzKqP__&0%IQd#+ zVUBjtKAcd2!$1~iLU7Ed84p)w6L(N~4T&3)9RC3v7#R*=2kV+9x!9x+dY0bWY^1ot zet$}t#pW``xaf@$qHgvx8#43f;y{w4RN-ev-p_@4FXN%Bi-RZ6ET1fIIA^j6VEoSe zmc+aY!{t7;*OPy$lTciezzs)2`VbM#(iJHmM}4W&Pj8^3h*YznZtWj!Fqh@SnTNDt zf_?8_XK$2OV$YHUR2eUF{e|T*u!|uaTz^$uO3>p*E2mzxGc^Bp?H=8%IG9J~c6H(X zR4qqpRhF;r9J0v=hJvm236fxvRIwr^6|d&fqX2cN<JsKpw^Hlarp43XZeV$34O0ag zuIHnl0;g{lgxRh_fK8mn?dQc%z9tU(E1L@p=P6DNE^n-pRz_Ej`R~v4J95H!;eX$V z(P`6ly)+zEefsV@jVL>KSMB*A75ZOMd&IvuN`!5CZ8==0DjD)|{AwYS=^8$e+UEC! zzDi>$-BF+VtsfZblm(7meoz#7sQk1e>e4yX+VZ_mX$3!Do1&m_!jMHDL<)WS(bFBR zd`Q2s+$xrpW<<E7(^^*78PX-`Ykz#Z?$ssiDxbv(GFi7|D&96)bO}uC6ym4#O#EjR zJzt&H$2zd4Lj%n<-!eFu5BMdL9VX$113{7PE(R)BXtqA3+KDkuo$$#ECevutJ$bm{ z{Mt;qGwK+0az09uhoSq5tDFJz0WEtb$<26MR8d_uFQ_eLO@pA=OBq44lz#*1@XefG z&*|P4ynD?ekq<BDlWQZ_a`@7;KO=$A7PTIAeYa;lBGnm$=N<3#z}NX3eMdrgbdU71 zgQOy5Sk-Kd-zq&Y+WrpnlB!D;?m8(~vD3Ka@P__K(}yFMNkZU#2e4FjkTgUP25>R; z`gZ@zM4&^4l|3wF<B?8A|9^ZC-4&_g9d#5~_kTN7S=jsm(9LA6(Y8@c1bvkso_MB> zI4VyxWA29&c;Vn^NESX0{Xrq94V;;Zjh5RGIc|0YG|XKvSDUBBQ7_e37Q^s%M0Sh# z`f<8-0O{=B{|wimJ<?&(sYK`$wg2HgBCm)Svo%2J{VhLqhnBz*>VNVj5bL-leGM&f zje>SFjv+wVU6qtCjvF=FJkq4tR1(V6p%mTGXI7;!GvJyG3yzP~^*n*LitYHhT-S?y z*H)AR5fh&PdTpqxXH&=o=GPdCLGeykS^1PM@BCDe90y^hzOzNsGWc^RMnN6@X&bOE zM+rK5k;3S$_O>nJDu0K7MokWzh2TF%ba)~H$U4dvHL^5|f(7tm#v~;3F?I|Y2;!IY zxW(vz-<4vLqKZYa+p3qL4lP}{t)n%*f*&u7hzDQ8|9C9M{T)4tX!29=lT@(?xY}3c zD(lw7`wbW?-4LRBDU%F)s|f^Mg1xGOJ$FZK9Q#;9rcFASPk-u2K=$9~o5&GKL`xjV zaMG-4U=I2FI2{U{-W4*TDpc{nt6HzRHpm!iTz9CGAto$w;7AyL1tPc%V!4mU)|ltZ z=ZSiUOC1Id-)FDr22&oVn?_E0RJsS3yF9wf#yOEcXaYe67CzD7t}-1)2gQrc@ntv* z@lelvDG!0%?SBA^0jLWqLU08cukEhf(O(#0g7fgPy0)~!+s=uIN2?}w-wW^;2Nk_2 z#q0&6Qi2XJ+qgESdjri~hLE{|4e#$2@F+-xF%!Vt-PB5CrN{1#iQ;kAh^gEG`*sDd z<k_voJ;|!y_QBGmnEQ1|S}cr)pLh=>!zP}^?NmGea)0+r&T@xISZ+xjs~2yJPf2jk z4`CgZ<=m5C^I_*`m+(J-BT^0o_KaTmI{g{9M_PF)O2_M=EyU#01b|;i2FEpy{(0?I zz(NJcdJm1di|iRe>{tXilKE=Z`lw`Oh}A!7{Z|@G7}DMqUfo$_$SF}kAIM-iZJ6&- zd3dNVy?>6WJ;V?VFT{V6944ieSFgT6afa!Az`^J=Fn~`D004c-I$=|~vHCH@zeOB| z%aTuX9zN`5@8W2FkdoB&-v;*blrq->Mwzw%<Fv-Im4vf|w8U+n(2YQV#<9K^Gbr0? zh7ZT;5}MXD-{8&w+0Hd{FgnniSu~_6_9wqAfPbl8<>TAlExU4%z~{B9u2fd43}65z zBe&wcAV2z*PytGll%uS^q!ev>VknE_J;l#~-aWC$`es_)_J;A_hLlx*O!R)6FS*X3 z#;LfefamEIg_TL^!pu$2`%x0v!d#8P^Ibvk@79f&;Yl>tMxbIJVTtY!d3$4B@9C_` zLVsPcFOJC?S!)~-4{6(M$Fb-IF0c?H!B{UIpq+0`?q1D1kJFdv_363~4W7Aey~wlT zAGCVlI&!a~EnM+SCnlom-4!^oGr=&Qj4oxk1T&NgOHrP?_!C(<FLIgjzGBPDK$HHI zs@I<0)3(sWt+-A1iTh7S$+pinTIdrB+JDU?)970T{1?i><ssrq2UXezbX-Zw)!w%Y zGQu(#IJ4oEzDAuA1|zQHipgy$1A>^PH&Jp~q(fY5Yd%f5^nel;=YGh<Nyx_j3!O`h zWD$_9M=WcVL{qxwDEAe@z$Eq`$jr_(G@3gaKU7w<dAr(5VW)8qs84g=S&RefMSpP9 z{x)%WN@O%==H-KjHJiRlpNkB3Sy;oE3&?g|T!7<mNhugHQ-!E4z&sYb4wXss&OLIJ zXHbOVO78`x9@)3txcp9$I)BY9(Y46qjs=P69&5Uo@5(|DVs&$NC|29AkC<T4lG1Jj zuxb)_$1xOFK+S5GBvGxT^-UWk1%C~S$No5L3W#qD*L?5)k4=5@-*=GQb*Ds|=2~*u z(e|;w&GisQ!y#nCy=a9YHzi5ZoF=a`*OgK-M&WFXHrMv<F3EH`9tl~=C_>-=Iw@3C zQ8qr(dw(|>JnDa9!aQ=aRuN-*f>qzC)7@+COnZ7mUvr^$zz}yyvtl6U=6^bnR<$fj za-UWXJ|N6^6|I=kL^|4uh9!e4uH83Xk*DvREW!a^wHIvf8fzq$-q{t82dc%%HPmNr z_h=P0?{*==Ls>A4g}}_%)q<n|DyaSS*xMZAfK36=>tv`6q`~P;_w*~vNwx+j=wS*P zX_uvk%Vb7KW=L$ACs@2n;C~=}LtO(JV6=!gx-S#ikTRtiH!A*mLCXShCIQ`CLGE)M z`o8No4E<J9$YifGCb2}8VpzBX31b^5QXgVIdW<)*4%un0O1M6Ow`1d@Z^kNmj^F`= z$&*~OK<$B}%q#*xMjA87?$OBd93<kXe-kjMx7!@%%<7jAZ479|?tfaw|1#$oiXNYw zD9|b<D6}<r(W_rtZTIiU*4zNYDYCL5u_HzfBgc&jW1Cl_-1>aGIjPEnYHd_>9%fx# z;wxJhQj5iHlxO)1x=y4AvFF5m*0tCj^f)~_wyO&2lcr5j@m;};@+!mJe(oE2wrvRG zW>OR2tCM(i)2XT_r+=|QoLPALo@r^tS3**n-;+U07OHtlM@kJ0GH0%5&8E5YpqHR= z2QCxFw42H8fJC}M(=BDKGu)*L&Y0IgYUC*CI0QUH3mxB)6M+(|HST)$Jp_6)oYdbM z(#}$@`=yeXAK;otk2tw6s=iuMuwu{>tc>W-W}Wp1%4^~OB!79IXS8nwixHao+HRQN zoEb8p={2x+wxKCl<_oFVaeJRo;Nk<lKUv0JQ!QFHqb{_GDqY1o`wM)8=vxu%NDcl# zLAWetcEl)KMLdM|93;r1ma)&M68TedCeUl7+esfTJ2+g?ohUD`Skl|A<>N#;31=cX z?9-%kFMNupoPUS;kr2%(O;{dJxD3;*c^e;Pu|MQKim*D)09-&I;L|FnW!n=Sz8UR> z%1H}WK4K+r9{?zg;4|Z_9ZB@`cl!-<Ez^?b2_Fu#jVaP<u@iqdiuCp75oa?vA;b*F zlmB{=2VcqNEx2H#mn|&hlBXN4C<^f<2enl-x4r)BZhxI$+11wVs0!9{{om=)0$miw zBUmO!ZZIQC!>FIidb}_;`b4>GgfKD>tcB?1_L&!YVcXVsE5pGmb2E5cldYQsD!%PR z@~2?V<8U>{oz?n?NfB=}cyZLblsF<IRL<p+3#t$9pmQoGkQVD#h)fvxHiV2RZvQWp z%VB|k;D0GAOWl(d@k{^KkEgD~_tx`vY&<yy68L<j=MTbfk`=!J!<$UH!WF?L-SE|v zKP>7L##C*pt2^Ve=@2?nmT;H$(@W@NOQ&_+d=@eySJbkEx7_pEGxDpV;)$Fv>o5GR z#KaK?Im^j#WlI#t`QPSp2XCM3pk00tm5j%Tk$;K#ZTxC8X<uN`*_YWyy}=H)_#<+x z2ju)*K4=@rt5)M}sh?|^O7v|w<`9DY&)-LVf67ODE2fONPEykJLFZ*D)>_;H<<l0T z4YOlQWk|9bLK8Q~k&n{P3%bjT8qzseY@@QkohPVEV=Y>+8wdBL6Jk)5(8U&kr4^ya z%6~BW`7_$AdMvOA5%a{1#x%+CxYXoq^s9Y`?>k#c6jU=v-`#!=gIT?3654BP_XO&% z2TOjbk#Ra0L5=Cxn|{J_N%Z0rVR(!uI#aWT`7<Js6p?)OQ#(_{?Xk$~4qmUUbqC3` zX14Tg2u-sO=`pFI&>C067Pe9TnRPjYYJY9CAOTtbmo9I2vQMzp0NFwe!<$5@lD*l; zpLz~6>MeI+Q<=_@FOPJvd3NX{o|!L*Oy%oLu=DGt0!laGr!)KiZ3Ra@c1N)c++)S- zigWWmgo&x2RK`DS8XWDX%PRaY238VIKhCJFXKo8W;L?mm&jo83VUt)k>58XKLw}cu z&D{jDg!_i}VCGc*l2`jK`mF~D)B2wKtTQORoRoS$Ge?||KXo;n1AEp>5Lrzoz)mfN zksq>(_#(;|Q$i%QIIV#86j!%LdxUS3lg+~3T^D+{9S7lGRPUMD`y44xlKb>Nb0d^0 z(DtXS$`?>i?#$?Z3t1ux>P{d&`hR%EDggw|1>F4}j0U5&DqgRfO(naD($2Gcn~ZTT zwBue|PKYWb${A2oI$C%yRHC7X38DR0ed>haUEk~4k#Ks2e<e2+0HM03sa1MxzTxI= zu$WgpyyOYT&r&U$N}Rk|2z$)h(D~di&Ru^uI^WhnpZ+(GYr7?+s*0H)iGR2t_{JJZ zaVY4_cxS3`{Sn)LciGTvtfl*<oo_S}0G&;Jd2T6a{tZy2Tl}?dJ$osw7Q5xZ29Tvy z=AJ_~9d}O77eZEgdBH)C)Q8jy(t~G6fR!Xl$(E6t&A)-V0lMvgH~Cn{rE_ficC}e% z80p~J_qHT;$(QagVJggp2!F>QYt3E5n56qhdrg*8(}aMizF2g$P_V~Cy9M@qKH)V^ z=7=QG)T-#*er*xVw{U)s$+?g^e1-(^fznUI5O{bF;rcp&F&8BXBvLP73`gpC>P0aZ zez8p~Oh^mLdg?405xx0`>I4={6C!$e-1d%$gF>+!_&Ij7^m`0#Gk*m6C2;W!Dml>k z8A-*0rG(P&)i_*BNk>;it;$G}Yf6VV0O?|DZd8quX%e?>^}#?lM6U_iLP!UFxi??m z{!r6Bz`h2c((ieijD(1_WDA8)!>re?08jTbS~MV=!nqcFK0Pn^EKl9+Y6h{ON(Jz3 z3$VA|cR;7|AZ|2*oqw}eb)=`TpztHCV9fIvYsrZy*MJ9K1u`Dm%FS`cSq(%}3p#u| zG9PbHO#>!dMUnE*cbh1^vZIxJm08J_HHR8G=`*7UH00q1Ii^0OPqf@>n?ioTERc-X zw#fB9iF%mMYJ-hG7uAqfGt;)xenOF``7>;gG7BhUGf!KVw|^b%^i@lB=ucqKa-Q1P zV|9+!f3t-eZwZSq_)o1@#jqo0o-<!5-Epdmc*Dbl(fEMrDNNmV|F^P{0${KDeMOl4 zN&|f*z^@dv&*OGE4S4TuiW7>!d^*&P_p3&v6THKjUFPxpIf|!m2cg5akoqcQLLv2& zj#cC}vH&HhcYm5SA7^}4a9jsEEMIpiQ{o+fPDI6W`+%yVHAH;UxYw07(*5CVR{t<g zIV7WHGvi7cL>h;CtBqJxVII65Ur0_e2x>{+pnO`?g5z@{o>MJSOB;E|dk3rR9HPiR zt2J0s=J97EgG|@FJJt+it$j*5H!o{Cz(O~D$>LDkWq;Z<oH!Rl%F@<O&YZy<3yE6q zw*hImB798L%n{DK-2P~gV4(lg3otwI=4w`dGp1ndw;oKjd>A2x%AC!J0gj$1Qc*(D z8<2TF&9a!ga#j=Qs9~sIhYA%hQ7*Dw;Ob2pF9fz$9Ilg7g2I81b!=Ds{7lcOoZxAt z<WFH<kAESDm8-AmP@S)XLNWkXl&2#N=Jj&AGrXtjZ$}w)(@xo<e!i>2$CIq_S-x#3 zJ%w>;Duy1MOU(5%brWnSTnuy&k84iqQx@J%kW@})tHCvHv|!^O0Id|?|LZSe#xQF) zfak#PZT;$TzrP1byL}!~dFTU>AG9C-iEMZU-G3AOA3b0feH5UB0RRAf$vR<Ey0R40 zDlx^UAI<{q+G~u<4CcWpdB4$_iEVVZl-)5Aw>VyRab4$YQT=><P~_H6(w=44B&l&# zaO1#i>2XnRXUWH4q;K+qD_l(s0SQyE5E2~PCGfMy$b!C+zDZ@wTT@Sh!+0_6cxrli zihrSaWwA}Su{O#M8+6$>q|-fX!*#S6?6+wv`xSIIejbuG*LHrnH)O1dxeb0K1<3oK z*KF}p{;uWGJwNm1C3@apQ;IzUp4T8)wUCOyS@c5WEYfQlhbnmWr2L*2oImN}r|!wu z|Im^PFWz}YDF2FE(1M4z)(u4vG>~t(-G9E!SMo>uRc_X+kSE<uXFU;WJCQ8R&U2tn z4zNj)tp8us`+kSHFBTmi^kNC|(?0E@nF8e5G#)XQ<f(h>Mozo;==oz<=n8ubwqJ)) zj|5({xpag^gfY?mT~H3~j3+K}&0M3y&zC!u-CT<(80(w?;}ipLV(zU4TGTiJ9DkqG zOJg_+i>oow=TM#09v63XgbVhC{u%FIl41!IXI6$nTO{RBo~^+yGDPWyVoCD7OSGC= z8>cX;HD(j`F(1;p6~4I3^j3#c7zkRj$@{L<m7e#4Fk1OXVuksc(I+!sHDc7cuZ&?g z{(EMIXMasRgs4m62P+_l$l2A~b$_sD`I7;|1xnVh1A(9o#JQtg`h+-*pmKcC=NH1c z%#|@UxeOK|Uq%0Rr)t?N05%c$qb6C1kN~-)tG!9EFC4FPy;)_@38zxU6e7W-|Fhys z1V(n-Q5$J#ncUzc&jxQf?;rDf?Q2!GI)M;BTsdGov&khugcvcwwhJPqIe+<#^lCME zuz_I4Err(K6GI*>m)b49MhjjOn1b=E%KOoa<zp4vyZFJwX1{fFiZ>W_FwHBDTkvza z^*<-QK^A2knF8WZK}v#HpV%Fy`#P5V`5^Ntp!BeCTr1gmj+}MqGNUU^+ImKs3;?qu zEJ+~J6`L=u|DmB=qBn3*(tj0}!>+!VK|lie!b)Wre-oYROrOvp0{d-OZmG!zpqZ_X zG66llR|)|Pe<s&{{x=G<wfi#<|H0Xf5^*(hx6R%a1M#^$fC*d4rnsK&n4ik7Of;&E znUm$m=pt1$XWF}k{IZlt_ER+D+0-=2*qN`r>o~b}X8gtI*}fU9D}Q`qn0+GUq?2^t z9T>2T(UWa?wc7U0h(-S}j}SS<t9-}$5ylHYjvT#2{r*<ye~rFi=-I3-yHvWyZK4l0 zyKiFn3BEMv)wU;6yKlz<u91$PyWDa8*5gR7JZC6&EBnw=URv-dST8eFp0XoH8R(oN z>HIc0T0C+T0JN`I;eWPFAbLkyYJ)>5P6TALE!I`XxN4&=Xc0^-jkBUB0HeMXB@oyT z5bC$mw{u@7q-$a6TY0J^fJB3VR(_C8&nnr~+;Qngl;kW1Iizpm<R*=X8%W1~t(1%r zaKQf~r%5$l-g)>!p!=H~Msw07ih9NK)PpL#qo&d2>Ws-z@_#NGUsxczZTa@yi(>6h z!4jmJRANdnxUV0~58f%G?^5*EU3zO&$Nm^vnxAr;rdT*cTZ;YOLNDt!TpiS%G`Zi2 zXw`75%}laiMK&vA3eZE0ltemNbjjCDBjmW$j)F7%_CMqVC<TXK)<f*7$vRniLvwAz zZed@tet2Xr@PD3!WLUeC{*yMQ(jwZ1n%h>v@IX-{P55{~jtop*6xH#&VjQsVC<{TL znX@>-dI(DdKOysmk3`>*gKFu1wPi*zA}4{^)upz0XNxWydTpm0P{>3zWHjQ%@LCVZ zyxEnST=^f{NQY0I1{*!|*iVICitB7E3|5nZyq|(GjDOe=<#_FU=|wD3h*+`A+})I1 zNI)<VYDKL<p8Lbr5h4vxDNa3qrb%Q;MP*eZuP@l#2?vQ$r|8nlhRNmy!|m1sGt?v{ zD69NR=e7}owtKk#xG?>4BZAFZOpZ0Yk8~Lc)yz@H>VgKrkOTvJ0UcjmV8;0ip@ULU z2tU)4I)6j|y;2pW1Mb>m9TgzH0B9!dHTN_JsX%-_lZklewi^7E^s9E-MD?+Qcq$^H zTmpN%wHA=OyJ~lDCc*334Ra|=-7teD$P=%M;EOYkF^E>W#8k9FJB5rcA061U*<T@B zu^+b9<4N8<qTZo4bptdM(=Nej{Xl7O=Zzd`xPMFcTkWg=tDAaZUV`?dfU+U!#ZP2e zOP*s-RQv9v+{Pl6d>Q~Bou3gw9$O=$@3Lxz9a{?{8jNOLqtWCF<N()BwZ*r^h&P7H zQES7aqGi0sbaY<iN7;?QxQwR%b+va%Tc%bt@3M$&6nb;x!y-U1_qWD!Ja{i5Q}FDQ zGJhp#gd6XaS@Ix;=5KaWBW`J0Uz&7Sqs`rOVu5-S#f4~>DfM2MyPX~%ELii1!+lgX z+^y11Wu&gdqU(bB07y(}`4qSQl9XZ>C)RBAu^RSP9CKfXi`0rD^a|wE&xiLyAOy#$ z^bmJ=SFSt9e~$vXlILiZROf+fCHjbnx_^0BatZ9KJ~Eb(#^5G8HIeW-Hk^f7UQTaj z@Chk;G$hc0vL9Tgy2wmaV#A9wY^UnGMOL@Vw-xI_=V}F5rKxmc@AAr>+~S89*&B?> z;4Uc0jOLl^O~f)nT1<XS$}rgqydR@}>3IMUu5|PH9D+CU=31Jd>6C`ofysbBDt}2Z zhR|ZJn@^v_=U*clgYt_#Y@Bwm5bFT{*HM{sN37JeN!c!mbHmF<UX#p2*@!q1Jp2NC zqV_ATvHM;1o-`r4YID;rbR3=R&!-($7B$t$*udHk1P><K0&-1~e4;AQ^@?ZKF+&SB zS*u+<$=&dIf^5uAT*jBjgp69p34i0^OS_gQpR^owUA>T=U?VIZWIvYYTPQzt{TmJm zBzQsFh#>0@8QNpsnAiJ;FBY*%3Sa)Q@1OWM4Za>(BOeQ*lQKm+uQ}68nLwD?+Yk7+ zOtTK(raFjYV5%KxmP~YJEKP(_L#U?*xABOkJY5EFtAcDBPSI<x$Ar2|yMINfFkH4l zEw3xW-?A731O#ge%$_Vl|0X2?XMS-QP|XD8j6@k)q9B8yAr250s21w??Jyay9G0q} zuSf*WfuZ#Hdv*&&r8xl(`iG81DQmOhg(1P!rpTnnfdHh3o))(7xB~EFd~5<JzU;-Z zf=2;>7#0biiL>HiL-LNLd4K+n4aCtSXRSRr;eUP}BXdrH!Boi$GmA?G5hXk?gs{Oc zuc$3E?>uc!(92pTm1Ch1?r~fV0i{Y`otH#QoaO(aFHHz)u^zU)A?N11o5uNfzql~F zSXaY2EQ=5qjqS-)yl>_^TK$kI<!rtBB0H7zU+);76OZXRDbk<5dw(w1z93p?U_U54 zQ-7ci&~X|f%j;QY%WP&Vn?D8@RDiqEjP+G2ahak;7cq0xH;@5rYOD_2)1YgIWITl4 zsj56HB_()Rjvu01_)4^}zLb`RRsJHpmq88tAh{;A|2RTOGBRs*Ro{;YI7Lvbl!;y) zge}2+iZ9!VWRHVu1Ap0>L%??#mmb``((9+nUHfdn={=AQ>8B0(=`>(z_<Y?fa!{lu zj+P>)!MvU_$0H(mOE+_MNKs?i)^^ns$V!ShD+5mil{n<yW&cVA7qQ1XvxRc6a$IML zJGNWB8HG><64R7;5cHo}g*L02V*9P?agd=0QmlS7Njxl-tAFrd(Ug`EEac%XX?s15 z)YV)P`Uf;;)77~(;HYsWH&t0DgmubX->qx#ah8i>@s{@dx@pFlyjE-YJU;g}bo0Xb z8L|<-8S8|UQkp(*cG?yrO=wF2W9_Q`jHS2zD3-c357p)*`fX|k<a@09d7C-bliCPW z*~>E?QfI^|;(ryn@X(@xGcK>h5+l1zHQ|YaTsll1!KHAfkbl%SPgTIavDuX`!$n?I z%4KN4!W=bCN{m+g6ug&iVxcUuQ9k%_#<}7@B6K+N1|0M@yydx0%o$qJ@ZmSqO>sy~ zV%3rJQ9ioAcdo|csd(E;0|Zj=moD4fJ7Wx8dtru~WPb+IVgD<`HcR^!;skvkUt|I% zGayq}1Mr2z<uJ`TpMcx~9RyBtHLCNfaFs1=VOT+sd4b=2MOe`q{JeLtVSAf@<+Pev zs8vbEuB)^*-<A$UBk5C0B^~$^^TL)!K~M7T8OOU-qDvZois7i>o?k~1sMM7(F*+We z2BvJ~WPhyYbhHkypi2!$mgP#gEYe0}a!lz=Ysafu@4m<O{*MK047~2@RrmQsR)zIs z&a*XbQsyp%H_E#6^laV&cC)qPACNsb@3{~f9x@29Y~{3*+A<g+v9#*tKJjD-kv9N3 zK!=<&n)NO!e=hl;QAlX*)dIJKtxk)#jSudeTz_CF(;N19tHftZshAb^#p*uVoO#eh z@NtY=GU)&TiF=i25W?>|ueN2iQbKF?PK2ig^thRAe>>U6IxKA(3-+|gB|G_H-}(TK zW9FqFHNGEDnmt8~>mY>k(;MjdJIryB(HB*B($)EdY8N*xtDy0Qwl{Z%T6}ccN|d3{ z*MFt;b$$aazL{R~yCD;03Q*);r&0Z9&B<KnM6Q({Vu7<$=!#*3X28iImwc?L8+32S z@~s2r?~D`M%of|A-Pqp%wLX=N|5b%Bc}SIGHWKD<pOpjo*sbCv>;N&(Ty{I}QUeqT zU8ZwhEqWNZxAU5{gwFm)JvYYjyYL`+;D3%a0*dSdteCA1O;ly)T|!3;WE;a(0q_bB z^;1Dj1V7%%7eE=J;X5YtSxf^lm)X)HH#;y|XyGJR+8^uZYsIwlAy==wMwhqCg#_?| zk0cEuy+Z+)I#7AHT}y&bnuCsJfrnB{V3NxE?E;Op^a{0(+Tj<n0Zt_aK|%UvMZ;>l z-pGHQY;z&*zFqlR`yX2s;T97UD7;SBdu7-$g^%TDnslu<M0Kcow^eT3@isuwjxw2R zon(@Z=niCgdDyCryTy*UyD2~+NU?=a7Yy})7lHFx6!1IHy(q6Ww?df_A9GoJhHO!% z81ACRiPXiN2@)Gfb;38I-!aS^K6?CiSVMo0bPC$D_{+l*@zm2yIP7zI1Red2L!8|- z8H88M$>Nrihz0I0?mRI@3elx;5RXoOZIP&jZYWR3-!=VaZ98;;fJ!Zmoj%Hp>^yR_ z#Y>coGJ=Ft*V9sLtfy7k2AH^a#%c{9kNrIRnN=&R)$qbrrQ2@Zvb~L;g9hH9SjvBR z6;!CPkjHPp6Y-vr8>g}=p!|9#VVpr4K(os}wF!k}LdWpS{s-lN(sql)3tNozteEoG zAe_(7jv?X?g&I^>ON5BL0*@Opm7GQE7aNKnH=FkG=U|~k{lsNuSwZu$s_2#<bRiXP zM2UJR+xw`x-X0yjzGuzjw{cxVUx9yqfB&|;;Y9rct?hv62Rf<X<l;d&bqUyGR+O^m zzTvW@cu2En!G?Z<d?g(TbK%fv6RiYFg49Qcn$^GMD{YdOpx2sumkf6-B>t+-CYkW| z!(b<DKGvF!hA+Mf@7F~lQqwvy8K%kq6PrA+_P^r-jjpi|38a7evGz6_`W=4;D_C3r zP^}Dbe=y8n_h^T5Y5LBk9vGd;gLvcdwL%a34f5D454}>?l&l9uM9CE*1x!7_6|4i| zfFiyDK51L1B8tzgvLCy6`98Tiby@|Y&nf(A=d}VZw3uFDal}gIUB>OABM)hIx}02d z^eGdTbOLW2(%Q%mIeWxQ#F>9-mfU}GV^3cl<wX#RIshJG^WkeqtTUp`aE!cjiaoP3 zmSk>PvY>Q3Ox^XVJH|mv#G#841jY6a%?8V*Az6+v_7t2;ks`90Xhby(%F6N75o7<J zh&*H;tV<nEP|l<v_Sjkly_a_7>8aAhbE&&_0c%7C2X5P4=P1u`+jxKWm*Zv2>wC#q zOCqqbd=qD09$q$r{fn6(z9C%1%g=C)_lPJDi@jDwT>#=-UrjnGLhjsvER~NfojNOb zamW_>><h9#Ir%!zngkpQq&Cpdjd6Laj@%M6FL><3NtYA`+A(8Vk%XDlf6DYf<buo? zVYXDegO){EnX|iZw1R)JAac_7(EhzHPTcJf>HqZdvA_{Lv_)@WJXrU!&NM2XGPEaL zH5E8!9weL3gWhuS6Xmtd?M^QYr@4lYVbm8(;vP2tP2@0i(<S|u>G5e`<cNKC`(O?( zfI5QXLd^UFpJQ>oMaKN0doC=)=2K7WLwU_m^X6aM49Bt5qXmEK9CVa!2MtzK>ed3@ zn}Gp(5PNfdJpsaDisjz~Z(T#FBg42&_G<=3jXeIs5r3U6^jlAxb;{Q66cF)^;@h~R zu;vb%gx3|-UAfhsD+9!hDZziQ+fY(}*&U`^ELQGD5UT|5zy<lNexzX|yw=qOR%_`j zXVm8TUSB_*-D7|F`4g6m@D|1Fd$sd#`;O*#jyBm2e9xGrpj$kt^v&>k-aTYX4Esrg z!R1i+5VRCnhLUUdWQxPNU7+jrWMrZt!pHyj`Sv7TSN+jfy0>ntsgS}GGoTGQ@UuhW zff`veJHElSpIcq5{=rV0=FoA>8H(MW%Y*8INky=E>a~CUi>H#C#xHTY_?~=yi7QC= zrAvPpg<91;Ofd+KuC%_dZ;HJ@dh<7Xn%fIPDr~rvLZ6jux%!x6nLut$5Q6q_jP@Zz z!9c&XG$Y>j!|)JUb=QgiWoF%;o>qQSadJ62aZ(*4D<qiU#3(cuBLcy|4^=%t-FD|e zI!_0Y?LB`z_itwyQKrtwumK)H_y#WQj4&U;Y>_yCav87AeDdpPi9tXprnEv|lU%3Z z`w}@$an?lckx`j-BhO5HN$twI>qT+{qoC*7bu6?^Bv{Xx2MMoB2*xo6-uKY0yVLe= zbb>~h+X0i-x=lzu&j_%|57liyvBJM@!MZ%1fZ>1VtSVg0_Xz_C=qM3Yt<Kk*|GeB| zRwJ2Z)5ONEh-S+<TB9c)dJYR~($9b2VJ%vs#n3Xpnal~8hVHmppr4ausL_M0VIKMV z02Yu=129IOU`vYYA%<6fZYX*~%teseoVOI%3_3JM+1!JdjM^JHYv33>FZ$Uzy_2HG z@7;faQ%2C+v21`<PsR5#Ho^JJ2R_Wfv0$R_f@N9}k!!GQu1mD`n@K@OvR1b2ox%T$ zh%!+dO7qrA1|jZSt4xCe4i)*$17?E4K%NO4+99fG9JKh^18h!{*o5@NOU)r-p1dV& z%^S=CWii{YOtnqW-kw;lk<vN6iRR5nrE!1r_g?9CNZ>Q(PrroG?~sjcNpsw4kgvxN z<=uqgo)osCf&f}{S;4rDh2I~?o|_UYFsIGe{*BkWbUTINQv?s`e|EH6BnwKW55=x$ z&p@9@O6ra3s;Jj>e#2^!`}FumzM<M}yl2IRS!+mYYE!rn+IK3}N0<cLnUC&_(1w5i zci!_O5?K${1P_9o6*IC(t@G)NxG{GLKkTM?WD`Lx3GJD1oSdO<5_iM!&=DK_U<H<3 zxq7GDV$4O+wCB~!%$_t;W)t+hs*DVQUDyT-S1ZJ$sQp)JFrab~4@YGUF{m=G4Fr5L zIL5xvK44-;uz{(zZoq<-u!p@%@0))fWtPxycxOS(s|b$YjYb4gRn5^aSAUC`FkL|Y zu!`HBlC`B<>>`ZV;A})3(EoTV7%+U~q?{?x?gTn^#MGI@;aUamY8DeU?&iW=O^xPl zzmiEG>i5HszNC}0Z290@ychh-A0sNcp|s;3ea;AkcNm%fhVV_r{{I2F4TpbrzE{|6 zG{NLrzN!@g^y&Fr$nA6ZT-RyisRNpXM-N_c*BkAQ?m(=A%s*noid)9!;0>vaD$YGL zaz@YCHG8IPoPu>txsVH^*f(#lG49X}rBmgjRE(Yv9iYR*ZPS>Ha4re|^t2=%usTO6 z!0qjZxdLmitY+@U8iolajC6l(HboEyrN-3!ciy5ktv>QFPPAyDjpc&C^Hx@zh^TT9 zY8MF>z!yRzjX^VAR>b4_wIK81yUiyUv^t<&@bNY^;<*nRx^&PQw`xX|aD1OEk)*`+ zfSXb!DPg65ApPLmKouk5q6I&ihX$)IiEplf=Q>2jmSjvrJiZ9ms|$b613N%932?xD zLZwv7nL15YKfDr?(2J;`bk2us*EHOM^c@<OHL}uYiwX5<a))HUz$g*@*I{&DGs8^j zTU4@vYoFk#Oy4-3si}m6$f4D!t&2r*B1iyM$f5;~{J|-X?JD||4Tu2vlBZ`&czLGD z41@`+lCp2$oOQ3lY?*(=^_{bwSQjjZplHK@?S|_x@|SJ-5ooWOD(ES+3h55OPPZc1 zt*`tllmdsy>=UI=oM;&MFAS-V;ufsbBH@DY`aZYQ%H*!jtS?zTDMhU+k3=L@nD6v3 w{ohp;iQ_9et4#-SbW2OREDti^+Qv(S`V1ZOi16X4nC-XKjTi<he8dKRa22U-IsgCw diff --git a/static/images/docs/oauth-server/dark/diagram-clients.avif b/static/images/docs/oauth-server/dark/diagram-clients.avif index bc025635a96644e617611fbebb3e96d61a8758a2..ecda19b42572452eae8605a1c557cc963a55ddc2 100644 GIT binary patch delta 20391 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 I!;-!kpu~~OLI3~& delta 18717 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 Ac>n+a diff --git a/static/images/docs/oauth-server/dark/diagram-device-flow.avif b/static/images/docs/oauth-server/dark/diagram-device-flow.avif index cffb0b4d381173a45863e0ae29000cf411159ce9..3652f071d4c70627f26a039fb7a4feb660fa4c3d 100644 GIT binary patch delta 23979 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 Wu)vA$*$*=n%klfqF-$}MLY;WB=-|Qt delta 24073 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 G-~J!!g|C<Z diff --git a/static/images/docs/oauth-server/dark/diagram-overview.avif b/static/images/docs/oauth-server/dark/diagram-overview.avif index 46af40e6d53ef4a4e8837c9c2b68512788f12995..96642000c1351da2b02ae3e14ee9be2b40d3f157 100644 GIT binary patch delta 14450 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 ExSl@`QUCw| delta 13161 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 F^gpz5XvP2l diff --git a/static/images/docs/oauth-server/dark/diagram-scopes.avif b/static/images/docs/oauth-server/dark/diagram-scopes.avif index 2c4d72e3cf7ccdc4a6dfa2b82e8eb5909e947e34..ec89b14bf41e50c4445459df8bc56c725ee26696 100644 GIT binary patch delta 12169 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 delta 10670 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 diff --git a/static/images/docs/oauth-server/dark/diagram-tokens.avif b/static/images/docs/oauth-server/dark/diagram-tokens.avif index f496fb4a2f222f037d0e7ae17f8b82b14023ae46..16780ea1e6f52b9aec0085c01e2c80b37c1235ef 100644 GIT binary patch delta 20927 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 delta 19006 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 diff --git a/static/images/docs/oauth-server/diagram-authorization.avif b/static/images/docs/oauth-server/diagram-authorization.avif index 4182e5406633be98ce4c90ab2acf6bfaae93772c..4f7fce8d40f04bc44c5ee3f5c786e2ed87e2944b 100644 GIT binary patch delta 19484 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 delta 20913 zcmV()K;OUVm;v*n0g!hBQ2CL0dw)>@ZDe6|5&#McIcjJ9p~3<h4Inb-p#dEPumHmV z0YCs@84Ot6j~&tVC%>_nciS4=4ym>Q<%?kly;3IliTohacE#w!L7G#fURU=XHUbN^ zuJP+VD0Gr<ZW==X1@qZIC6ho~+4dW#N(MyA(+V4}zYR*UdW1l1>Ov)hsDDPT|Gli0 zIYM6@6kuw(Uc8EAreOYdSfv+FHCdVX+O;qU>dQ6I4W6pt7=sGMl*Ep$@VD-$<A-Se zBP{@S><@~y)ogHoJ`__$jsBTdOF3TV`o#u;DHRuGjqjr2LyY)D3k*&bGBud9U-LWd zb3)a+?`HSR608^G06@>LZhst5&1))M6kX#DyNc?$QUBc{F8i~}je-zAqSTHj-^mB( zV0Ck%B#14BrI^CUA37&f-pPteov(u(g+RS<bh%VNTCr}y{{7(ge@x#;KaWmnt|AZq zV${7p79a3MRfZx(&;T~X;*B6xDB*G)Tv3B5i017T5DrnI!*@F($A2anY{a7DI7y>y zih6(AM6R&E0u6{&T70)~YtL26Ap>7S$zGbUFs{f<PnPt<z1#0oO^-k_e!cKW-!~sp zJX1)c>r;LH3f*Sn5;LXCMG))C2jnC9OrJcmzyUA<{0h7rfbykr9M=TS{%PLv`-`EC z!LY|l;Mjpdu>w<C%zw`}_B&FhN~012DGb1-QM)icGFiT1F@RvwF9<u_Sj9KnuvEu9 zjs+Op^zXC@TCdybgFZcHZ=08C-%;Shw=qu>5%7EO|9f%-h$-gz#B47F1?{O&KQ{MD z^&-mmM?3z6?3l(~-i)o&`B<T-!GuQej)c=>#k@2ge)0=Koqrxb_WVn{S+V7Ot-mQ@ zPcZM`ud8r8QqAJ@%z!>+bDb}Fs6?4$l5>yd&C=YkE{Cre0JGMfp1k8!R*KX9(3uo< zV9Dpf5^y9Ie}JpIY6m$|L7i~%23m_ceeYTvK9$o!bKC0RL<g@|$|H70zNlszF=8#s z1HPp59lCv*X@8Mhb2r?9L4MfoZR}`SySNIa5Tl8(MP)^nCIFTX%D(x0mhlMHrOQ%0 z9XX9_JyU)6(Jn?49Wkpo$L=+*IS^Z-Gr>zzG6qQr!Cm3su`oP+pF}v#(%C@Te8ERC zNcxi!QReJf1J8~(OSC?&SBKj|GgZvhid;>;!NpI&Re#*gu^(RmS-G{pUF$Jr_e?ot zV$j+Pr31eDbpVrYFNFQ=0wH1*V#n^5#b!=UB)?%J(;Mkcz}M-xj$?Qw5QQ>DTKju# zOSb<;J*6(zQ-#+9xBu~KBfRA54G{CEgh=`s<t9h@MFM(n8uytR^8aF`5upT6m!f4+ zKB~5ZfPXs)d|Ecr_Qo04&PgSa6f4PUv76i^7JXtJ)@Zo+g<uwd6{xRGowl>c|AaqC z5KwNG+@4sYRGYYNx;5jvZwc@ml9zx@h+=)oT&?l}9!j#v@X!}`wq)QZq%eJf`3;-a zLlfbsd4D+|q=5P(LpJ{G<EGdfOk7E)I;-k;8-E0aqUxvm&01$OP`IK}x>Azh5ouk$ zm}VPpXy3d+W88Rv5NBg<#y%LJs_yEM)UjOYg&wa@LYk}mYe-edTv`i4o$@R}oXt|& z3jYmNo)it{FSc1Z=XheZ6W}`gr;XzqwIp}mdhctMRmPRKv&a)jOifh}Ka{wLSpsai zJ%8BncDnFjD5)36OHNw!(ML)ci~e(*;nEI!?f6Y5vS5w@nNpllSPI9)2gpdg_Zofy zI#VwZRHRivwSJma7`>BqfGhA?L1B<AdZGJwXY`|{Z4~o&V6$+Lhpdq{6Zd73t-F_+ ziR&WtjYk2jYtMuR%{$1&>}D~-Z}c=Jg@14q+je<&BcpO_?v*bCZY(8q<^;t7K5a#& zJZ34xLIrA_-q{aXS+&LDI$nAu$#Xr!75rTTm$PoH^g)b~ILMS?FdSQ0do2C%E)Zt} zdKXXhh*dR&gwrvk&wd)YRGJE(bZ{Vv6Bs3dYWaeu^7Hd4!st7A!Yd%V_J=yhJ%8V* zDCzu4Qq4^HO4h679Q2+};x9S-3f|BDW_DGMKP_$wvYzkF{qBM|mB%ssF=3RGE3WO@ zh^;kj_!%So&hJwq2yCa|iGHK51Oy`q65EYH)j`Mf$a`vy$+x(x4NuH?a7hKB<)R?# zC=^!qWupn1Vgeq(?@Mwd_x;anB!95DGDDdRjkzy7DqJWRKzTqfMUd6V1+T_n(ERO# z2)PsP-CaHRz&P((6h`tVXVACqH?vllwJ}Pzpoej21BYckL8q~S0ul^9;IXH_YZLxv zyOOk1IF%~BFFes}SNGq-+p+@us`JW9G@Ez^;61KuVz!_+s`ofUFRi=t6@MX`8vn;m ztkV7oxBN^?q<o)q%&}81+m+vp;WDZ|`zOxug+LP_T6s}V+>Ge<R|P<RM|^>RV&abE z<n|7HKIhHila4o9<%eL?8r~R_?$%#T1MW_GVywcVYOrifu-nHEbher<?pGFfld`<Z zm|g&6A!|(GTmws_uBFP&(0@BK;hO+0f;YX5>R0QSEeK(Dli4p*0D62w!z5KeK!|(R zD%s5caCU;4&sals9=beIM$K0^q=!A+1DwY%WCT$B#<utIW8{~wd%4g$xgEcF_Cm;$ z;=+YJ=<#<V0_R>_)4_#ZUaT(j^}uP||7b*{lQ;SRk|eFj$=Nk!YJaXTM#IKtIiLj9 z<a)#;T#)APU$|<3XeSirh}qA~%}3x#vRu74EJ2PVhWT#a?01j@bP7rrkM9y^JDHaB z+z!ThhG)n@Mceby^HVGk=Am74oR)L5BNRE>`!tk`sBCz_u!?xg)SvkA4XWMlk}v)8 zR_rcGIxI#>pFDK{Ab$)}2ww#6o*uH}Nl-kRkQCbfkBp`EtDek<@cy+~>J58`_+hR& z8UBm7IDVNPHJDK8l<TJYf|$~mA;Y6{6LAC<v(~uLp`6tU*(i}`K=a6dr{!v>K4sQ| z5iGMh_KE4R(df~l+325lUL0vK*xdAO@M$yLkx!2;`Jq6OZhy9EvRym1xl=;d3x@5A zV*&U^VEu(RZ&Y|dHtt3I_<`L{%z0GRUG#3=0Ip}JjGgrq_ua<TAp~*e@$*Qs53E0N zSL1oW-V_fj@H7|z07mXkl}sfzsux@AF8?#Rb)E*Q%T4g$oxALp8^}Yx>Q5_ebl7<T z&3ov8`6u&P(SO?pwTO^yd-WmC0vxsz;_Nl@suwPWF8c{x1={RRilB+3K-g)`P-WBT zCbvElv4dOh8hIhR(731t1bstKXB&g)5`3UVN)$k1fK;ByhDbsPfZ^HHQi*F2p?9AO z#0)ldcMY|yCMj3AvgTv=Y>LDMTTUTQc)LEmvsc!K0e^9{z@+P$Eq+XiGxbHA5$N97 z=>ffAl+{Wlo6SsooE}$iIWzz08I1FNvBa*iiHR~+9K{_TK<V?=`SiN?%W%Ru@tG=P zY8gU7%aaUrsc&$VVHjc&GZ>smdxOMydGng04AR9n^^w5foQ&_(HCySZVayAuARwB| zp|FHy(|;afKR#@<RX)`)dN-u0TSSy4D;Flupf6#e@_KE6D~68A5`MsSp$kxew6!#f z(DUjtTg2t@#f>v>IM(p>b(7N^ges{W-5J>vhys`{)UB2+HY><4bTpLwSw%-ed1q+1 z4dhGB%%eI#jht*-IK3@p!x@g-V6H3!XF}AAAAj1NfWfynP|nJppe1gr^-T(*i`Q{# zv4}L9bp~Qvm!);VJNJRMyW071Kq8t$P!$NC>0FwF`<)?R+O*1<#+<akHwo!n)9fzc z#(dy++I`c{Gpf&Y??>R52y5_+pmqBr%ekDC2d~87r>_hYQ(e1_X@~k0cZbp{karWW zdVh@)bT9xpwo(H(dk(&2n^!YdIfp{xNTdB^9K0X~T4n*o^Xq6b$8ca#vA^RxG{~4X zoQ)fYoMbPE{H;B(2dcUdx{gP>lfdY5Xp8Qw+k6@aKCcDHz0CA_9UF2$x~CXVkv_3{ zXlBeGxu5L0djU@*t-TsH9Y>1{Ob7bl<$p4t)T&E4Z^oNVhQoLcka}JVeiEm5bJ_=p z(OnBBE4uq%{Mj7OZ2Lu5IzXR5^Ob^%iQmthUZ}gq`l6?zS4Oz++53%FWnA~SNuBk; ze)6^=Dw0Z)D97h)R6SW}gTL|40q;Wmp{MzF=|gt@iAcKkVjyWoK<hF52%krOlYard zJDC2Si-f@H-zs^Qzbjnv%qYm1eJBOU{+)A{vuEy96YHVFaY_39B?QcK$wxDZ?djv< zE@!f|L8yXxk&1jH;*nwhaH>;Q0#@*pnBAiAS?{cL>N0sN2G?D%76<)}nvpz4Ig?O= zyjM_(KN&S_IC&l&Gg*7anC^pty?;S{6X8kWUAR9-z?NdTR>e|vCtro);oNf=={H%l zNRp-UH>f^Zg}uSI&CkKKY_$BUNZZw@x4t29nADw{;WOep3!X*>&Yey%=TibW4LWy$ z5ao4B+O`@GK7jS%01?(!-q#Yg4yi<%=19S}O7~J{29v#5$Sv8UvI@-0@qbG7zpT{% zGDz#-NMuMd`v|iOvDs;1v~*(#Xed*0Q9HYp*axUe$7xI2nEbxgj!Tcq<kF;iP;Q!J zh{IUk>o!3T8x}rh>%>4dbkJGA3Yi{EJ+<IsWW#gtOH_y2qb}^sYgGkzk*6$uFuegF z7Co%zsM2^)>zzv534KdE;(s|W^xS-}*UiBK?_ZT@a}I!ad^{^>ocC0)`*tNNoZQCK zY-T>L_b^-YqVsIy@{f3Km9S}i(0c`%s(vo^j1(RLKRF23vSEHfq|WmesOw<JKAmN3 zlu`0T1N&j?o>I)p(s*HY`&s(W?d6fOLV^(HH-_Mt>|P&ZK7>Lpf`4u7qdr^Ysy$Q* zj|(f%98O81yLJ*G|2Lv*!!3BNCU5+tY?kajJBXqTcny34)VFSbzxN!*09DtfAk^!P zum?#HKNn5-Egfox4N7XD?Z&Z#`XIUX*n9a@8vOa0Mz6F0=+YKz`GsGX9ppU!huWE+ z9y)PeTJ-6txs)c{OMi5^@Vs<O=C<}^0PVfl&-^k4R{*#JB?&!5nii@b^|O&z=7^vd z9flmkU}LzKuIB!+tI#x6J$U1LX@N_60TyrFDWmRHAJKd0uAv>@(H71A?xmo#iGc8c zwkD!dpW-dlP)=4q9-H+iA4W%%qKhA69O+^FK~(zBneKlmW`Bxq=A--LMRBE=6y`S0 zLE!(da4+nK-t2Y#ba6chaGMzmOjNsdR=tg{|6Ojxy9?_!*Dhy$t3>Ml#FWu9YP8+| zU~vpPLU>psR0T*)erY3)--_rcqA~60I$x107q`bwIpqpRhmAolpG`dJk1_5cx0*B1 zBjSmpNpNB3!GDd!{5O0BTq8cNw%;-(tjmFW4aYV%%q9f#A}W>5jX4u<!1$--PSH2X zV7w>yeuWZ+M-P(&09uUPz`Xj#zaxR^&UpMAErU(pus{wzm&AirDAoMm%np{>)ujLr zDQn^ct$Ib+okd?mjJR(2pUqjsoBd#1VJg;^3ejJX7JuSXzliYKpO7zs7kjqDtqfto zO1nFKi6!n-Da}U?M0M#05NT!WwXEDux>^qa6;Yu>{yW^qkA$Et^$X%GC9_c6(0a5Y zuHG}?Xu`Aa>2HmT0HcLvnZc}`VRer#-J!gI&9-;>auh8<P)AeHLPAx@UtoQh`Kc)N zSDJ!|8h`l6L18>_v(>a4$`oDlv;sOS0{EFc_p|hq=rPh$+?&g^&QS|u!c7h+mCznv zY>SK<7bB5qO9z)XNPJl8(MFZ&qLVeKR~k$wtDVV7m|$feHuhz(E=ODh_gPu%Q})cO zJSY8}7=RF((q9;Icb$CFtnxS@(<k{?WsZzX3V+s>&LM>yLCPSAMg2g~>Gux~Y}%M} zh<JY2yeh~V2Q8=VViV}O%u<UVK{!y0W>m(NnMekmo5S-k99m(+Jp*m(U2+6Xbk`;K z)bzR6pg`qfRMkC`=oDD&{=QD_YlJBJ_|>XNf~Wy%h+0(iyY=p&IQc@b;z%tR#?!t_ z^M8g;0Qsf{cf7%eGe($_DYwzBvrluwjE`gn3#J`9pUM7im?xd5tYh5Obnn8f*B(63 zuk==Xg8F1H5^bIH_|0|An};;=X`L+U6|bQL<S?K-{j^y+_(hsV!jAO-c;;?z@|UU_ z(A-4tzxalR(2LgO_j#H(S~+3L_9LoEtA9^<uaS`66!)>v=661&24Sqo(eO(<8&m4) zl2}a+t(35WsW3H*PH1dyuQZ3Z7O|(pX;)cMskR)_b~DbfYSMUtajS3~0kSq)Yg&9T z8m*&{M2L6pPVTibI?EDqQ{v%y>UGAx=dwP+{#&zC6?F4BplGJT<yFJi%`~MS=zseZ zO$K$UgEtSxPg2r447_qMg#%4)9*&UsJY@PgL8;Blk1qkh!7%~Zx#Xx@a<;JsAK_;0 zA#wECtheHzdzY<P)v+G{VY`XR*7rt*!ZV}a;*L<Qyq+T`jl&7rgq(&)+KE<lS~e}D z)ljU5I9mSzRuXFs5L-t_yPCgmsDFlg^=If}_b)~r2=GCJLT4PeTY6uCgIoY$mbT>^ zrNRQswYbfDq5OiL_C3r8#CLRXs_w(T*&R`zYz0gOchcDQO$mbRFU;X`{OkyR6=#v$ zBR)9aAH>chf%AlRwage%lqCp+RXeUo_PLagjYap>Ll1x<7T>kDtQbc!p?{;XX9aeX zs+=17DEv0&n@J)<`J*8zHoQ)ml&kX0>%~=+qPFl+;lu0huzL@pPg;(4<8q@>M|uU{ z9HNc6^m);`ulrcQiW}f%#-0HeLD^3N^tB80KmLAii&0}fsnA!eL|@Z;gwM@bN)AFM zQ%&l6bZF7!Nmiq{)JR9*K!3~c9c7nc^iu*>VGcKY2YzR~P#fU4V^e}~HdV2EP=Avu z!w7RO@>HXlHZZ)obb{h{#}Cc4sH{aW9EP}pV7WlZ>#8eu`#A6;Jy*In-sT^ynBUs& ztyK>gWmE3&tT%qt<c05=sK05RXNE14!WzT|Aoz5@Cgbb-XP0M>#($r#JLBDbp?le! zMgPF6GcS%MWy<qpnSo@FW@J~4&oZQ-HE?!o_jvHg>P^Rx8M*Ml8CqBD*Bla7EmNkL z^&lCPWaoN9W6xWz3Y)QCpfK)8zE^R}zb;<dV1{0`VO;$3|L4pGvZ6>-AXD;nL5PRV z-Q%vRLUxv4;^$~i#D5<{)=5Y50s)=ZcQqF$ezP&sPD-qensi*YrU!20D0l!Yt)t~l zFjw$P4b|7Q#`&akB$x9^B<1OQy#oHqoX=J4wGC&<kta#+`-g+P!F4qT&z_NO=p;DM zIQU3G%yJeuK6O2ZkDYSLL2ZbInCc=xG;2aaRP~Iagf41XK!5Z=7Ye7bwdMKM$nTX@ z`h;bf!Y3UUk}58cb=j+8t(dpT)fZTOBQw4)$)FqaseA|yY9*5HFWJKVAhAmoDP9}) zgh>Z}FT1cCY6Il#myj%uYkiq6;@5ccOX;byeIGoP-}3@|6HWZHB`A-EfTLU@gZndO z6-j&H<21FZJ%6FP7o6gQ2)oOAU-QmqCCJa+_XyAkg`AnHx4K9H*|wgdf7Tu2z`8Q~ z253WY+!oHnCVeD2hESD~r3T<dqaU-`>nA4@C~)0^*o=MQ;adLuy3hSLQ;pCithCXj z&RgtAFx(DYrhF+hU^VGzHa?l@8vkd2&qL+K!SWvWVt<7&_ZZX~dEbGjIc?K*>gP-j zmg*_S?*^V8ABbyuS%%y_I*@!x&4D-DxMXRxX6Rz}5(A=+fO9$-=DFMCK4f4aVcS>V z7$x>Ub0tlNR}yd_fm5h$w{ZJ*z|GcQ*$)uTMZpuNT&n%C0s4IIH?v;Q??ZS%Dd#Dt zZAD_r0)I`dKB$!M{Q0?Y2TVP2z5bV|3){95Fc7{TWcY>rg{F%?a;91b2H<m&Dw&o! z{Zp1|Q#Gba+;);0Y~7$n7B`4<=PWRDo$h8zBj`tN=;;~J*bBYBxnPpu3%2ym#w?G; z`e#`#f;-!>FWc;cb*EQbZnyrs69JK+0jcWo<$qcA;le<+4V(6&d_r=BTHT6pCz2f_ z#n&6nN!5dlV4=oaQGDS|p~v-jn8N<HDuM%g{UB*Jo=jogJxJ-9>wp@E^$M*Wm`7{< z{||3R(P-7fz&g%I%Kg?$=3p3v$KMo{<1|@L0@*_>ucLUm1i?n|;IeF`f3a0es;XMc zUVp|o^2l~9`U2(+i4HW~7^s!`lBVU5nE*!q9<E_@#lYoAo}^#qTZ0Sy)slw2C`5H& zFe-OgQ$r7~?3s|A&A@^W(ef+XH-D-{X^E|2hv)}Ouc`1aMnXWYMIA*KouNw>pM{UA zSBa6Lvr#d$jW=W%7lzva3acRCwtW`}^M9Pw!OSJs`R5~hT+%f{Qz?*A-qDT3K(44N zh|$yxzO)YAp+z5!@3|9~#<BkW7%e|gnOpWf86<~+p%_kpa8O*2l%M%txLS`+4KA1a zlz2*Uw{rz1<@I*=I`t!LPR42*_yDcHb`pOg)0uh^cEBtrSv>oiw)t^w)z3oY>wmfh z!&DtkswwErbi`f2BQBw%_uR4dFppx6dRtfYEdG;?62uB{F-|qWI)N_@Sy8XtYEC09 zW3nF(3|QTd9nt{v#Nh=GvpYnUF=FsQ0}tl}a3O2B!j=RMU^DP`>tvlg4au0xGPFpd z4W*wmm1P?}>(^D5BX!WWhGR5YT7R5^d)24jqsfoU?|jyKREe~OcStW)5nZoCkQ#cp zgH59NOr1YXtD(U{*L}5r#9KC1x)v%qmSBkC>$>dp8x`l!o6(@PU32LXebZE|MX^$l z|2mj50<?T+r3#V#V=Ni08SxiI@>&#;Itk{DTN>7}R7=}JwCMr?2w5=X8Gi%sfBw-u zw@5PN7~n9nxDH#CJI3QYcX6Wy$Zlw?yE{9N^@3fQ87<7-z`&c^Y8Z9O)6$i52fR<C zrJyx`y*mghx$2tL4vd5qWugvgdir(<v3lcdb7pPGb&WiR+&B5{>=&*c|D!O+ETV!Y zhHt2paxJ3S$K@*)8E~BAuYcHcY-rPVMVr$Rw8-xEY0>#%7g`8+*lDH%sy>G70>OB~ zORv=r?1e9bLft36$R-oDh&N*KwD+^z?`7^Qqk~&bo<I9~m{etqRTs5$f8n6JPp!n= zbj_r$=o=$1jwP?#z^k?D6Z)W}{cbm0M{+Y6$Zw*>uSr+MCcuwn(SJy@WU{lAv!J;W zufg?IZf_I2?-9Kj4(WAHd4+=VZ~lNAquamN6lXPs6b@uB_1&Q>Rz*DD-zZ`&A+f9X zCs=Ad+vV1VOfsqD_cWK$WXE4s7-NC3phqiRA~{@vOi?H^Fu=N-X<+mfRt5>sfW46$ zWFnG%NLE!mI_a(3e1A+2_B<8xPn(1Kb4z+B+sC26Ihl7ev`*)2t}&*j8*14uL+?y2 zUKSO&o}YbaW!c<JMnG|V^D(QAd)t^+1=vP{%%ufNU&y+r`PTYKDQx&_DxvqW!<D=f zoAoN!dUJcHRwRFRCqlq&>mxLM%)?F`!kt={L%5cf3Pp1JM1OCDy%;?G*i;yD-q=dM z4EkC^VzIsx1%2i{^y+HhD{K*pH3z`e)tVM0ce{9rOCB<OZO5I?z?>ILAwd%Q05f(T zDoeLIVUdnKR8|&Ch&xEEX5`uC=c4{9Qe-f@I`&8Z$N3jjsa8DxGY~^51EYp9%ya{R zcg|?h2hEOdwSSGwpcg%@Ov?Pgr5rv}-KuCix(#mO=GXZDKYrdPrBHaV(lb1FbX6z~ z$o?RY^WZ_XJF8T)Y0XBRS2pL=n8ud}HH!rJ55Rs*i;6vHH^RCXfOpZ9JivbBz$ZK$ zT?MIW-QImR=<b?*cd$@Qld8tz!VLojN(Bj*RxuuoM1M>YeTCzd)<{ZZKv&D2km?ZH ze>ZQMC6+5*gP@~I5MrAuZqd28y}8KxV}b5=hpIfl<;&7I1P|Z+Q7YB*s(=#*;N-$l zOFn-)Q}TuvdTK*UjgMquwaZ|A#M2Ed>{7uUi{cNRl{Qe~uVW!4NabCSpU7zw$E+*s zU?I16f`2|$@^gXX#>ca-1<vp;uz5BcH~FRug9^PC!fZ;NLbG^k?xN6LOw&AyAyU*G z+7@N5OXdP$2nfUa&7`}&biOO3g#aE~eGQ=;G^7Fh5QaESh~ds`%)Unb#7W-EgP#5& zwsX$S!Y?E@i1O1(V)c^;XfQbD7JVV8G5D1>Jb$|E_MW_;vlz)3i=S#7M%khXz`VEC zA|{?S%paS`sn2Sc3n)<#ccKWd6lY`?B;%j6Iyg$~aUtQyBIA_ZxN<GE+b?;z<CG5T z$rzr@#$}2t@7GzI&8oIz>}Eoqn<*?}jdmh;8(JLQu|#fOfZWmpz2y{RL?NC|W(EV- zR(~MqCAWwiFI@30G_a!L$_;rDIwMbAy<-t^eDYM`7(XcQ8@j6EU8)ryxD9xa<J8bz zG{W*S$qzu1_I9O~v~{0}S+wk4`rO<Q%2}}(qV?q@UNl9N4KGb1_1mC-oyYs;v;|qZ zKe<R(yD?Z>)j{n{0ZeLs2InNy#GkwykAK^MwPZNuXVVg$u+|hr(J8o0#}I<ewHdIZ zU<T*w%M=Ea24wQr8CW{ZJ#r8=I5`xVUh6bF=a&EHb&Q(AE$UCjI}SJmP1`Odp8@Tr zSJUPHsm&Vo<e9W;p!i0WOWxcHfD>%O@ah28#^=#MbxZxSAy^Cg1g+gzs>iq(yniLK zd;*|(=HX?1|4A0TrltlB%Y$?6(#1A#pylxwS~U|3>&p$DgnN|NnQPSNc~e7rf=V`y z6Kol7I60(odVSf7!z(>#3yB}h0;hUQC03jDv6$jv9B=O|%+ZU+6N?L`rnYE098f3z zf}PY3pj7l$&7CT}YBa$LbaBd3dVgXTWSX4b4my4FB0y$(Fk4{qg(0^83P<-H*JI++ zt<|HrIjvYIv*|Cyuk*?*Ut(J6D`by1)A0EP94+K#^2>rDA>J@`rWEyl+OhF)k~eIH zE<dH9l9CyW+T3=WJF~&hW{zHUMA3Ok+GE3L&iL#|2Y*oxR*TmyqRvx{gn#jF4EsNR zNhe<APew$dg+dtkfJi4fd2ufa;_~Rpvj64V<|i=)Ds@Wpr3IPA>--a$oKp1uhAUZk z0Zi<KK_tMB(g~<KoAoHBadM&Zduyr|s)%gEf0`s#sByJKH@x7|^<VhyuQ<m!cG*D9 z2}H;Seg4?)+e91Ta7E*qmw$!U`J{iGEF5@&y2L`_({ED{4ywT$U2Jud3{e)nppuCk zUyYGK>+=w?YN_FA*X+v$a!~)R$p#Zm#%h%Fgo1IkocXpNw%%EVB7yv0?2jcXB9xX= zD3kMe<P@|<pMZixKwbXbKZGuXW;t2SX{2d4M@$F5!AI$bB1zF5%73QS@~H};lJOTy zfbTPVKF|!Cfk=y6JOt4sBj?FD$yV7rtl$;Eix&fTi;b_$*^ZOL{JDqh*sP+;<7n}4 zdkXAZ%xn&jQE^Wv_8+4BvGo#{YxfovH-uuVx@)uO+i#7l9lUxAgk%{{TaeE?Wx%A_ z5+*2QFNNaa9Yu8Yseh|ouKHO!-2rZ{Otjnf^3$XxW;S-YW@h5JK<}0n%{R>43<2pz z)dK8$j{)CI*3Ya^G{24cob$-fgW=oUO_tE`fHLO*@{5XWGORYtp5WL+y|+=94xyvh z_ugf_Gb0lymppGG@GWmB5SlwIGh|6#d8h+KZ}>TDLrt!yxPNog(`B2ox|yryE8EU2 zHadL{#=$Dj$T&JptIq2=n~}4cRoUKr0L`d&LV=PsJPYE(MR6|3VWGcz>CrtEpM1<- z3(siWDQM|5Lc6Hn>q#ZQ=%<#Dz&w2ZWjRm55k|OYT;tpDg;klike(L@(~km?8^|p< z)XNkejRL~In}0@kxY@u(uR&l1pmEclc|t9%JVp3G0H&srsd`ipCD{WW)B4d)G*^5I z*Jyrrf?BP?lu*bVA3*48Ay8W)2CG+pCy08kcEr4~x)gFrW4wa!q<_qrn<z%@H`8o) z4E?(GWP_RWR-o-5$M_(=UQn!};ue~pVp0x{5pU#IKz}&$Y^fO`Lm#t;L|%YAtB-?b zVAgMeg2JHn=d<Mr5w65sif2G9p>scgDisR74(%5<(PGP{l>;3L!Bd$~V{6>pMVjeh z)*?e(w%k{49(oC-I%NmF&Fm=<{<EkV4Ab>Q<Z{5aERfZk3$!MEgYoIZ;->y6!E_Yz zkZM^cjej-5NK!>Qdf{v>Uk28(uI8=z_(#?PkrM`5;BJ-=_b)uGlx3ou#ae~UJhVsN zbA0p=wU9V_vCP?9-%6Q{$kx0o6)3OB!Sz>4@si3kkYd0j<z?xB;H<5?G*&mtd8yA1 z*WEpZia}UG?|^J8Pc(-Qt=P7>$T}#*(VZ!njDPnjAAtq92=?a(YzLT=B2FU@He(rJ zQ{AwtQE))Z>cyZZ9pvzF+8A6a?NiF-hWQlty|SZF%rmpRt(lz3lY#_U|9(rm{?=N? z`wpEHfF@El(mIzw7?233x4Gh{F1eUYla-7*K_^jH#0<C_RX#78EY1u}H3^(bSI2C5 z-G3P`n~o6)Qb5_VfxG~~cDWG5|Auw^wtYMJxZ*<{RZ%1Qk+8Adkq<B}jF6A$0}GiS z2D5N|>5bHn(5K^G-!rf`yLz%m<K^=X%Z1M&A>Vo`rMm!@Pr}9b!Un|G7b=zOfdFzN zY!LnCun!bs8ID@OPY|}fjG@QQ;TYo!dVhw$qMD(a0=@BzasW{*?;m~7Fml~RdmDup zn`bRgTVu^+%Xn_%EiuO=+6J)v5UG>k2Y|>?a8y0DGr~gia2^7hyqFOET&khbi!&c; z=pXxMv0=aI#Z0%b$Q51)$z1=uuQd~Ow|{SdKpXhdADHP}KoNuKE<9Dc7GRdKtbfeW zrktK5)2yWVYW{3$<98@Z1BpvkG&R-Kg14IQA>@Cj*;*$AV$)737qJAJsa0@<ZtE4o zGY-Ml!#@jCMxgd44IG}Ip^irKs?`Cju`^%q(sKdVFRGVfix@7jF1ii^f61k<Q}Ub7 zizLbp%Vqgy?AC{jApGfKH*1PI$$w&SYb2T+(dbjnfHT`XFRm=$*!R<~u#Y)iF{u82 ztRm|{#!kam$g5eBCQb5_gHJ+7AoUnF$@vYbK5LlcK-~ls+}Mx20u0-eowMOSkUOP& zip7t`&$QQ4bO=*Zi`7kSQzV!Be04Y!JF8P5=1+Hp=c^IPOt~{UFVIw>UVovFkp9Yw z%&rCrF`_TC<P9y#9i3AWPAOv8JZD1rOWcy(M~o6lX!ajhVq9hPDxi;$#`93y53YW} z0;M(<wJ~png_^N_v8r?G>n-DT^P_o5W55VJ`hA9|RM=>v=4~S+2WJn^J*cLGye)P6 zK^?vDAN|p3kPZx3-H#p7^nY+Ru2SM7j{RN1xSIVS(@&xCU^^o9>uZZuH;JcyQ<zA5 z37S7AnwB(7XBq7qiZUC_bY+@vZs3v?L8>UMn6jkod)K2mcp7u+$;dQMD)U9fx6~%* zU5dpAB@3sAwRKfCE&dg&Dy>~>9W2p|Jj|cB*;nc|8<;DJqc^GEPk(q7XFRgT*bHo; z!uH(-&TrbAq5()t+S}u_NLL;Pi%<B7O3Xkmb8&*igdP@fQUk9=!P?F;DR3+zce)C4 z-Y|%bZ}8{_x4f0g;ODgof#bE)*%#}$i5$FnL>kZBgU%r!FalZ5iZ1H)+mge;--1`4 zVgciYW9Dp_Lcj#lAb;YRGa)kMCiEtYUqq*FD4%qgKPs7B2AxHKV$&caxio2Go4Sda z=SHfxmeUinxn5jj5{={*sbb_9*UqMbh%rH#9ny*-{rFY8-zQ%Ap2si=5x$>TEZmw- zkN!LWN?I}$RT|-k81V24-8_&>1bQoW6+kzDVvTc~PI1tEfPY22zhwjMaz}kyCHN3S zN9|P80AVG4&bLs?fBpb@&|0Z$8dB(7v2fryvA!X9=1|1ZPpQ!Sy{HJH16#N)L}s-d zxZdzr=$PByEYVMF(lp5=u%LHm>X^1}+_p<Zu8!qWv<FT=Bn*Llv>P07AKC%0G0L(M z>SI2iByWWK-G5wZ_-@_K{pN9qF29{v@T#p6<_?+o<k`XA_`-S{4JmKAVv`_3Am>Uz zbTK}JW@e_&^O2`)@w9lvw>&=R5cs=poM27|#uLNlNtL%^7?SvH{jypaz2rHgojV=S zce3wPFYL&j7OgkYVD3<M5yriEU)t$<w?frZS5-I`@qc+5c=0OA*o!vZ_uuyx&P<%Z zXmeJuL>qD;13DYMo*7A~Uq>KH*G|mk6HMM+(n#1@z$+|BLHcKKu4jjSWUsuXRw5{{ z`#K=-#~)wbSBa!Aq}>uZQ;c?K>Sc`*Axc^JwzJN{J#SpIWlfwFE%lVgG7w;fgf>0! zx``#vvVT}E>|^;LNSy;egMR1XWj%qp!5BJ<RqU4?$H@s(H)ns-)D<R2a0VM>?N3;Z zK7QjxT|K@Lz`18+bE}sJ-sjqO4Z10e__3`LNme#G@}6VMvlUL;M7&ebD{sg-9O?wY zX;UH+qO4LNRnk}AyShBFDW{hv6L^S}cNBk9MSrv&j#eOzg%y2}je*4pHz6dq`3}qx zLp_0qOkAKV!iWQchtKy{QW^uoxo8(r!LpOa0gx%qaaLrkP$sRyJvne|P8po}6O!Fw z&(MIEj?)Xia!1-jRiT>ezR&g_Ukn#d|9H4%1(~eP+<_gGRxb5Q#%%ppTR2JrSODj} zcYmfgA^{GU39?p}OX@5ASPt($txgAmN)l$uyP1Y$c^aHXcQ^6m+i&4=5!}(@b$-Z4 z*-XE`85`%pQ9457coKAtiy%vV|4Mxvzre)7tobVZb&MN-1i|^q`KU-8k;7J^sv7?@ zs-JimjZ+Bl-ixii`ZS56RT})YMPja$QGYX*^jp#KBMKiX93Q`vs;5*b%-F;o;p<fd zfk<H+aMu+@OVLE)DiNeRl(Nf_YBtZ2fS)C}vjHx>QuIb6+xs~u*MYkrZwlp4ArCuO zj^qP8O_dz@`DVvOAZ)o7q}jpmP8wwa*DkjUXHIHp>kWaaf1386RI&f2L1^Y$u775; z2Cs&(!5qN){2<fA&H-GlmN;CG-7)ajPE({p<knjZsAZ*yNr3u1X^eQAU9lv?{I6ba zjZw{_Fa%2o+4s<KR=787;A$Gh)9t|4j+*(M$h+O3mF`<gXS-~G<1ztGw=g%?5&s=m zDD_VH&Ux-=q(2l_(p9qsWj7wDA%7I;`5+2fVYOX=0wb%VOcVSALCG@d5nz__*eV<Q zM4CLWy^HLmb3^uA;;35h8)0Sua`?8UCL>TE>$?dLGU2m}-Va2{5L5Ya$JK0egAnB) zWKv|c-)MReSQt{zBn23(myv|*u=@3SY^lt;zoK*T*Dj~7DkjJw;%cpM*MBp4GSfhA zcl)F!+W|wg_@U^#)UE&nm=09|x!VWM%xyWKvD2S7147k{_m{xNH!{ZhdsIm8;WT`L zfqKG6%A1z-T^H|dkm<rhJ#sBi*>E?J`luRf(BR7Ki%9kC=?LdG<)U`9=bnq*vif8G zDWp)=*>I+8uP5m0ln~$B-G80YN|$d_$dTrI%UOh8f!@^P6}{-xA!1%gDH}9Ra4Q3~ z^qQ3bde(vGHvun--sPxEsD7Fc0OMDxWwzDpUH!hpzOvCp@q@i@0{lh_x>q~OyP~<1 zJ{_;wTe{@(^5=Db*3?DV_%Me~)(krFyz0_~$GZq0aMEOTenX>)ZhwU)KsXDRv0|_Y ziqgueGd`C*wrkjR5O3O0^W^CA=t=-El)lZ<p{_Z=-7o>PBF<g<NXFlsRZRSDz}N_T z(aVG@O^UxDIaF`bUC3-rw*@g|O@O!^tCCa7kDlo`>Y&vJP8MbuM3K<f=kj#woCgQM z2z;t6g=*Oj1>3CB`hVUoeB!aCt2GF;=#7Ka{PjP|bdD(I@4<tAO5t^ZmUMhzV{~no zs}at+xkH9?jV}mx!!>aVTanvOd{)xt&%t4&q^->b3z<>87#2k_k9Mi!8-XOL1a)|# zFIw#O`PO7nL2V5RfP{$|Zm|T!6kY##R{~5d0th4ReZzxR?|)jGSIVo=2;PjY5_Hi! zmVlpCMSBT6e+;JPN=QSnAKI=9!4)z0LjA&MeDA1D<0tZIfKpP_CIaq{f{geEMS8NL zMw0q`@n>`!cU1ynH+|e`YC-F~Rct(c*m3NKmm3)Q>_bl^_IngX?w;Ww-GN?wcbQT} z<)JX&7sBjQdVl8~qSJrqUixU6J=<cWj{X{|d(;SEQ=uyd+g4V`*Ilz@rgQa3%bnSz z8xYJshFGCmHja0Q+!zx7xYYjdiX%vDGv(Le(n7YS=(gi_Zrq#WGP?rwi0KE^WSqtD zyoI*%d&w=tZ|mG+a`~8wZ}!~bwuN<VtDI<R1wOxyZhvA+G%TW8s2bWL=*FOw)KQP> z@j)q9{F##`lzU3ZK@I?Pu}ShrMA?!tu=Trphe^8uN#mxyTN-H&v4}poYsvj5^zR*R z$h>+DbdQ%=stvKde_b^^km8-Be(Ssk3<%22BkcVgMeJ2)EQL$4sOO6>cuC_r_)1gY z1+t53IDaqMdhAT4koTdXQ6K5x+Yv2hB?sH7Z#UV}<2h{ykKL*yeqS$yMk&j?LA_(# z{lQw87ak$}6vYXkh`~r0NYm_-XJuztOz7B_m#OzF#q%~xD`n$!v)JE~fRYCamrGE| z;lLw%_R$B;58#3~F!}J^Wa(+;j}{V>3-ysrxqq_-A-BoOa^&vp{Jv+Ha;ELr8baS9 zIzNmh-xF<e+wO4HsY5`NSliAoe~=ZgWeA>>h{{{#DjK67^~!IA4H0!<^iyo6L%&8$ z8N=7&khp*<S_DKOk!ds7nQ~U!|Frz02v_3BN%Ff$Kdr(%|6p;Kohgp-^)d@BX}O1n zO@FYV4N5gcSTNc%z^E~pP0_1!1$hxA0MOpKJRAbfWe1VYd)P)lUFubq&~G@2&-7@X z!+riBvO|qwRff*ee1>@)1?DA!)L6(r0Qf6VpH#*6+;sDNxowIH#1;koJlJXcG{{|I zAamMmdUheLBf$9cu{OW+@}MJKI{x?Y2Y-y*9*;m`YM<8~<s_B0x}O%6k$pQqU*n#o zX&Dy3(c$Qt!S%r^yuE29df`(kICa`LV6v;zmj3q5y1s{$eDm@*w<Ghu&}BG`%xCj* zSsbbQ^>$Y3qKQFkV~78TSr+kkmk=!edC$Bc^zvxIoCV_^j<a^&UglO(CX{1WBY#u3 zKeFSn%w@l_p_xqGVtI*f%y<+P=`p}*w+Yv#k;BorPh2M&Tc$?{Syxp#z&fv~g1_4# zGx?=ZuF}NZ|9n|W&Hz*XTyF9&n~1gn2}K%EBbn^b$Vn}qLbO}`fOB7u$|GA7(H_M> zTiv?kJFyErzbF_?w&DJ4XZI`^gnyO0RVOwJFcSOrF(!9$Od{M+vtI`WUxr*WFDB`D zn#pT5rej&EM;hQSP{AYrlvQi=kC46-pNcL8NW)Cf<u||o=tBs_H`ewZPeA~iq99H2 zuXH%WVe!ILRKB_;=~r~k^NNZ`rId2cH|<55p5%&sF8jYLOL#kBp68>(Pk$~Bh!y#$ zcRSuq(7EVyXRegn2w~CvDN#AoiTJ6OyGsIJ;B`+mupvVR7QU_8T!%?&iojVo^k@;i zx{F>WTUV*b^(E0~J}EFx<A?O*DU*Nzh@NaOEL5ls@p2*qHL#Gez^Xn<?*PAMP790L zlwY(6K$IbR3k0$ML^&VqBY(RjFqeiu?O>mpZFcqyHBVBEeEPm#47}>-D2$W6*yDim z<F}+%^GqJK&8~HYl3N@W5b~u|BC8l*1CA?}*JRx#ogqu6_)Z7(Kq-NQr@Bhi!E?g| zVZkr0q9m`BAn9vJfa(tRNUP)tV}i2}mh!3EfQ>na)es<WJ=td?_<tuOzg(A}P}<=L zf?@!LHArf&sb$$q2mK`aHIt`Qq#$@9UwYt@5I)PJVi#*s8=vh1OpO<v*GF~useeJF zvc2rPZE0k&c24O_``=Hx7W<+dV!MJQlh2%$nXj0)!uOE3aqz_JvS1fu?|lbw179-J zV>ec-&hswmtU~CL8h@RVnyo6}j;$`+*x}$lNWEAQfQOf4{a)qbbb1+a6{nuzqrt3B zM&?flJMl%ja>JHtS{#UF#`_Zw*10t7an~;&;a3K!Qh;(KY6dt~sF!%%uL7}4E4Ec+ z8FU-Btpnx_=_p3;`{o$QO)?_gNrk7x;tT_d+xJ`P5p|O!P=BaCd=e!-Zee<$O*O9k zcM`SjKII1%WnF;W8;W?4iKUi)Mq;I-^o9WpSly2u(*;)O6Go>ej09+sb}^>xDpegL z<+E~hYC{x~rC8eNgzs5bd`Sl*X4{irkBsuIQK5cC1c`xRg`?Pp-nn?i?{SS7K}594 ztY&%iEd}>D=zmnt&&0_0;dY1W?&}>>PH?=a6^i5li|gY_;I}lj%j1-#YMKUSJ<Pg~ zLH{W*P|Y*Wr|zyc$<#~n6G0P4wlxZKt6B8q`hkb6zEFS>?3j<_BQ!{qoAg#&w3nYu zEiv&bICQ+@WBOcL^AS}V60ZiUjVDdQa6yi;>HOkHzJD+(?A_&0MB~`LPbi(o(yrZC zWaWToom%kP7YVz6HzSDQJoxMv;uW}wQ?&PN%qQ#>)$+L#tjol9Yj@8=i8b3AC8m<X z0ScYBz9rR`mD@DVt~464A9$Mgez8DTp*$leKbewuxZ!2C+%E}u5{Zp4>utz~d8L;T z0fVwLQh)CU93=UV_KG>&gcUr~*R)ZND1akT&M{aOR^oP%A{rWn@3z;+e8M}b8$Y)$ zAW9RcfWQp&xRXz?yddXgB{Jz#+$#Qh+t`Y`qG56raTLm=k*u}{GRQYDZ{mPA$f6|- zEpi(bqu(W8*ngS-fs5&@JbyClD~ek{2S1TjWPfTmWo#d|8qn4P%V5cU5!~Gbz|hj{ zFfG@2tC`(I5hCvO=}OU@N%9h#Wj)tlHkYvA7FX1_6c^GEGn}DYiC%cvMFR=tat;#( zm_7er@n|7kBGCjPL{<dxZ054a8C{x?vbaHy?M+z%6!RD-D3csl%1V`fDly~d2nPU5 z0e^ii5=c#!D7sk<uN;+eWL;TW+LM1oILy`Yg&r?Vz1#=5c0oj{Dw3$7g52*1x>U)t zw5rp8MO&Zs^rpY(J2|X8fGNunQ8{*yexdihCot%%`I*jKXz)ED2e{N=>JjrL4ampJ ziEm*bu7Sda+=TNrb5N578Vk7dK%gF}Sby5g^@bv{2St|SeMVk8TEPlFUbedHGNNn{ zpRaGi%=pb14+3K5Cau2)*0qb^mYIUJ=OGqr=tUM;WNlGyg$-(iF`C)$B9%xyTA~uZ z=h5DKh<q>953fR#>fJLgHZwTm1-#!}{Ka0Z90Ym`;tO`*ox&NjVC`-u(PF49V}Arz zmx@XP5*+NI@u{S|MJjnVy6wa!W9ex26oCe)@<aX&3ZIh&homRZ++$qze(IfrK-JuS z)2*pD4U2x}8JYN<v#RWTx|4@fcf&C3lr;hdI4BwuOfC1sx^4hRvVQn)Chx~Nm8UPw z7AL)f>|jSoEVqUM;IMVHH`X4&CV$=y#bqNXEe8ZBEt{jXB<5_3IiXQ*<-aOS65#2p zk2L?lRq)RW_|<){DCgtmV)cAUKDrN^(cE*#1CV;3R$B(2r~(EkewxKg4HiG`gyw;= zKXz$+f7VT2<<^vo0U17*INwezD<9yU;g?WB+T@ihh&0wjvjOe`Gs@=n^?&$*TYP|= zy!2X-UC;j_2E9LuB(HREy;*N5=%;{saz{N~vEsjxwqk1kvlI`GTy_2k+B0xuYh~ru z_z-uMUMg(RP1S6lSTlzar}Az<AIM-P99Wl0l}S>Fz+3sMzjaXAKKX0O<q)(P>O+k9 zAYk5?4^E(EG3;p>zGxS#+kY8$s*X7>dH<;<T8&8%?E;w<-Dcwl?Fl^{#TR3du$2SK zG1yDM>zofMIW?cw95KDenQ0&X9`EUAz!1JfQMo<oZ(!|nOwlFd``Z+Vw7fEWcm+q3 zA0sm>51M4Cu8bd1OY_CJ85)NJ>M+{tsT1{%zZqVc2V|H@>w@$V5Pvgj)iW{xNBFd4 zbKK(Rm6!<SNahMG3v_5JwVcboG1Anh6dAF|u?rLbKW)h<z293FWFA8fTur_PvQr33 zJx=hBvS9c=-#>1p-i(|p4arKQZSwf8>}7#GZ&yW?%!=LQ6Cs8im{>$pRU8CK`&7LS zgJlyQ;R%;9g$mkPqJP%rI4$ZwYwl#QhVF8eLR-nnQ}!v^8XKsC#f?rJi$AqC^tR<# zZb2cf!ymS)j6NZ-7~z8bp%ms1Jc9G7;K!G5rC@nk-i<#V?1ciY?vN(|1Sb6fK34?h z-~hmtstOKh*$%n6yuc3-Gi13SYK|oCOW7q(lExQ2W0v-nI)5A{m>5-dJ)9G>`w)PI zJPAm>$2Z|wp{zwOnA!jtvYT(p&=GE~YrKj-$}wHS{`MuZ>Pez7u<|4Aks3_NYd>ut zi$FYu#o?BMWNx5{EpJ3hfQUZu!nF>s;SMo#9^Aq(SnrOdNq6IR#iIu&bp+7t0%cgl z<K>;1Lijf99e=wDQ9fYVhTe3hW?wPazxprvcdh-wZwv%QSqLLedF6mBBB<Kd;9lvf z1HRHKF=`bE03cc(%VstAc`^K8$j@Z?Ed)R-Z1zdF`A%Ygo+$`kNuYPEMLPM%l*yi; zQXwCURGNM<e+<qd>AE^p=STW9JW=el0EpkfyV;j&uzwS4gtbS*>=GPa)g!!HbqpS~ zm$lccu-iSX`FNs?X`xG{SyD2Ec@NJml1Ig!q8*qfCrOczYKhS{se?~6(xl;Relsz! z`u#CJ`+FmketPfaWv^ls{%-idVuu0~m7M(F&jDdbHX5IKZYWZv8>Na&f2KPX1c~QM zyx)U~9e<fwIoSWv$y`6r>p)0QEtXkgXvbH(s2I0)`egallwpPb1Lh)`%?n%Av&Vu% zXlF^IaJ<aW5l!snj=V6rYAO@zs~RkBp^KF4MdLcs?^z&YZ5~8j@K$392we2KfcWz9 z&emMhh&Yk;MbX+Thhj@j2wh%^OA7CPR86yvM1P8|QUlr8@X-1B^7E^O+C)yvx2yL} z`>D8-US)RMyfw+L@o0U>N`joTe=oJE*)TVP9A>D&o+xe#TB%1ABQjWRC1G?w+b!Yr zj%Ik%z(l@`gB9}l+IuxrlXC8aJ?di}8u((QaMtyy7|^zBWoC69749KeM*<NM<lSlS z&3}t-Bam09cv1)lG)h2@DHyTpCsc@#&}=~})p)j>x&+K>JRzo{!m+lKH?g8^fR(?h z2P=5S8Ds*K2enszS8`4s)bsP%;p!AMBizH&wmi!L%M}6O^75;Srz@q?cYZH2gAVIY zOt6AbmPNwAvF<%FLf&gF=Hk{$mpmR>%6~K@%n<W)x!dXhsYlJAS;is(kr8h05gqu_ zgIXo35BU378>5RgJRt`=w*q*v7r!9UaB^T#O{2o^=h6zpW`IBrmWMdUF`;(v#EI#1 zg`p21UY6otwt8fJy8q|$85y7BpW8X^-s6~<L8u>~F*@wwUgsp#hbg8kikRi6;ZC3T zSuTGI$>X_Z?AjpNk<4F;Zh!!gx5lBP7>8|9w(%t>U8<%Fs4=72FiLDha3!6MK0xup zmc_l7rO%^0elS|St|yqFjSFC@IGZIsgB8$W7`$^gOtUjw_)aoM&RmZr3}DipJA~wV ztB~g|Ub(eW^WdnkhoY6#cQTQ*qGC)d08)SO!ecX}lV>A^6l11stnDbRkb)^=%0bD0 zA&-d2XW+ua?^-F{WH&<zOvB4(1u3lVN_$V(E127ehSHk7jc+k+oAk~KQDic_*gS&s z@tZs6l-(n{{_rhANJbszVhKG)LP~gCmZ5I-9%-9iu{TWLX0C*#(pn;NY|8efG0}g% zM4K4auvIvOxrEiUfw>Z^glktJz~QjuNw~EzeTL{&N<Tqgc&}t;RU<S3ZqW6T_7r)% z*Pp>)5;UxYWi%H4gPVfLGyIcQ?H~~S!>YxfDImb|b2!dKs^^^Mz6SHz!tL8>0CsYV zSsxnkJYuxV+Ww<AsUFhs4(Z|Fu5*7jBeV<MMyu6j3K$1k)f?%Ze|K+;cm=L)XBCsB zVUfN?u^G`2-$w~ZtqqN|EI;M~q*NWf#l5iiBr4T{u5Gb0CQeIHqUETaJQC^b)_2~L zaH#i3(0cn{mxAhUTw-7vYY}cRr%vq&r4YJEM0$crQOeGAhv*$Xb&;n)I$nQ+>X<fy zMXjlqW5-SMqLxfOUzd0I>JN*1^)^DPmt0g8Yp~T5Mg?up{a%3F@EjPh_e#*1i?P!@ zUv%6YF@LsrU5o#H9^<`O*~^Z?+N@_rR|tD+sY?@@4NZ%=5`hk$s_#qQyfceMD~7Lg z9tjHKOqpgVSs#t%7KWc#OY(n9VGY2tNGk(V&^M{!dzC_d!PN1o%D8(E+^2R%1ckkM zRZ!0+`1br)^F}jCrYDsM)%(J_b~!)%kv8W#N&gWgKQ|F-Qe9AZR(i2-xU?}AU-%ng zR~{~_jJ(Q{OgS8g`U1_7MI-6J9U^;f0vOy8KR#uzi9%Dm6LE$`+r@vq{?2T20DbeS zAFii|;7h?JYD<;t2}MN-M$N45G)u0UHDJa7+&R4hoGFf+wai_;`)@Rr?n1YzN-H>) zNIu@7#H{Zh(bciQ$dNG-HAxkQU!L=^_1~GqbcT5$V(Y0du{r(Ph?I(CuygSQuZVai zQMY=yHGwD!Qp`+gu)cqT=0z*?Se_dP7LmP;FNRVec~*dt`)M89x4;zT@eg>4LWeaZ z*H$y{^YT*l;gUsQs7Al#I+J`5$^$s%lHLNUWv9ME@OOtg5|GC1F?5mSjXPdOfQ)TN zCGnb8Hdl4$RXSv_bZM0*qWB@z4Ql*|TK4LX)GVeCOd3?nZmNIbXzH%xMn|6@){VEJ zRn^c{K8`~a?kJ5S{caegW7!PN{HJzn<EY0g^n~#gKXm5>q}DuN+vpS{y5X$g!v#B! zfosQ2lR{qwSGx|B;@~X+NHsn*x%vj%AwB%Ts|@HxjaFTIiB4?ZR2ka29xzj6H4t0; zF)$m(<~&ARN{xTrFEb6PdCwkK5&c|{0&IYZ1@yR+Pq40geF>MlknerEm)_^V$gpom zdLqu|t3(?ST;eBa1I4rxuTX)n7$jz&qMgUCw@8yl9k?k3WA%<PWDO`aDr|p7N@<gZ zM&P1ces|lryM?`r_|34qV>QLbwfWl5*!0BUPS$hp(>Z?*gzom@+FA-aWz3?y1)1gB zGxK&5N5@_u-GX=h^HTajc<WK-$|F~`UEM)JPR(R!;{#Vn6a|g%4wVYK-N6tf97N@& zn6w8-?98Zt`$&3mm%St$D#IU%2I5iofJRrhFV;g%r>JkY(Yo$h=y3ExJV^?R(n+Jg zc|1mm-}8Sbuj13fd<pGd*`2yMubn-tqxAV#MrOi%tpqpM#vzrMyAvkW`wFNol-_Q% zR>gf+ZUTm7@P$_FDq;q@nVz-=gr`VYTZrI*c&^X+i*2%?kHwG^4oSgP#04B=dYvYq zu{3xFP=?k@-l(lMGvZTYt*Lj8Mw4$Abu@lzw0M8;#vwv`oQ#RWWdbB_{$s3AM3*XC z4RhJh`y&U(?z7uLyPd=RUQKn4yB4t3{uR>!3o099y(B+eL+J2NVH3ce|19hC7=)_p zf<TfJeQCEo0y1a|C!5<Yq{bvoqw++WI}*t7jbgP6y*jWJak8MDC|g8F4}?oU?P@T7 zOZ9*4Fk5UHdb-}C>AwyJ`uFoe$<nnA3ptAy)vSNgD}|01qHS&A)SW`?9+UTsD;aPG zO+z73<YrWOJhc;znmhc+jeEQBZ`1zu2ybWRt)3^t9rf-E*rQk2|H^=fU|g<z8HACF z!l9W{wcW?>->D&{L+VhTqAMHOqiI2%WaEF-UT~(6l8&cyLu(!b=<yuZ7xtfaVK-|@ zV!I3v#mWDPP~{P;aNx;sq2|4()T15~dr0SmEk5$?)1ndWf*WTUNLI8My3BgjoQdFg zb`^HqO=ljbqrtEmIo&2!O%L9Wt;AUvw7k<f`<@-U?y(&iV!e9MP^^A=X3rcv2#$Ys zj1J4D3n89N^rGtr6o0P8e;skChNj{gmI=#}P*=4qPuJCD4;OXVm8!N9oiKxo_Ge9D z^P?~&EFqCShG%sBns>!Np<mw8C;1W(m9vi9T1^X^wV^Ewl9%%JGc9v)VI=*QP3HWb zxcHSUQ*#+EOJ{enDakPFXDkX;2b6#B0ZdQkR}y>13U<5Sl&*&APy#f>L2=+)M#j7l z%4LA##Qr+DTN+Km-i}wWmV)Eu$i&0{L>U>?#LI$p=!MIz<3WP1-rnl3GB`r(M#nG3 zgRmdF2h)9{GO`OYm6hdDB@2!{OW4|^WmXPop0f?+>JIGdG?ORt;Abcz$C7_kK-A&g z<2MIIc4B{K=CKc#nhg3cG!nBeve-XUE1{>x092#Fg7!1xB0UVX4vEA1R3&Xvuj9N< zfDCkyVUw%Z9waQ3PS%YvgRWmb8NRHHX*&~wjGLV~iP^FRDy4ApK}gKFrg@AGX?qnD zldN79i`>WP#sAqtZ&2tDgEN1Km@Pt4ldnd`-W8?&1FNCYdRcYA6{-g>wn5W;v^Idg zYiZr7Y}+o8E_OYoOeN<eFG$c-`O)~n<*3v<WDRxK6M$RVI23Ec*`J%TrpG0Y*XV~D zLx-J{j-cK@j20Wt8X7I9SKl9pY+Y6q+C~g&Z0KzqyRT14LjFWkY3_f$RUQY3+f@6* zOr|d7!YsPmQj+#P8W+QctVeNFUwL)gn6LjgIqFu&*ekoW#81{nS`R*IU>_1cHnI+Q z1@?dXYIOVY+I-$8^S=yv^k4g3Q$3fA-7-IMD4`ud=Z8cX<r6h2v?!1DIv{2GmnIVO zis=U0xLoM2$Epj~B^`e)hbOe!XG^{z1YVMnH;JZTX5aCinVt^4C=lMB4zdxyPxBvS zy3DNx`LSO1C~y(w^Y4JdG@$kf)97QXM#i$f!{U+5g{H_sG}P@5ajm~dG8R$D*RYQa zhtP((I+bfi%j{qWEQdWeu$8Zv0q<YlzptTAX5RI3QTKp~ErWlNT%s7H6L{u?uDP{7 z?1l3=uDeae^-C#os;dnOH&M>0<AQ<2kG0aDMf}v$#xbz-Rb}B*A;yL!4N>B1KM21_ zBiGGni+TPO-sb1;xyxVsqcjla9)wF{^l^}d-gTlux+ky3;7@Y%mWpK;%{&vJagvyV z0KJwk)>Vi^R_cF`X3Kn+U!etm5-%rZ0pARW>5`Xg5jIA6=3K}EyUqXJr;t~{tr`4m zb?9-5Q9p6Iwp6v>b=|m9R^)F|8o6N$Bil1x6^KGXF`fmel{(43#R7;<>vFoUGrc(H zRLDazPasnG*-e;JLiSG+z0UE292^Li_o|OuAO9ZDbJu^(PoJmo9XofogBa*&oc_~M zX-dyJZ#;w9eaeVn!^FQbPC?*<qcv1+1Cls7IC~3)jGlH9&iMg)Uaa<}6>zC>O4!Gk z7^{`!gCDak4|p^yj*q?Xh)dlC&2A>|fKCx<c5S_eM)l1YNG(XT2&%}+HegGexkA$r zS1SP`;0}K_HWE3g<3oEOg#fTY-nE|wbg-XvS)6=ixQ4P!&C>Bmt&!1j!pJ6jOaxf& zV#`YJ%L8V6c?Ljx>&VZtH2)XW>_h{%;X>hsIit!U<{ihtzl=22+8ikxfkTpzhZ9M^ z)M=0@!ezSq<#p^mBEHb*Wsa9ju7ry2=Bx7z!}@>!jJTIS$ui|1VtuHp9|O<v#nwzy zyXfe+>?V`av3D#61=Dzeao`u<Pv6d<dOR6gl0s<?M^1EKJOXRV<Zc}`C$<Iq4zNTI z$0gCskbN9<=3JpFk`JE&o;asvDO*P(FHD?tm`mLz>@lma&ozh?ywvJEas<X8tV(19 z{K9{jWw%Y(HS_AbU*kvsFJH=DpY&mtv@LVX?^5LPF51IKO-E)gO>l_cDoIBGCn{sT z1G!#}0}PC0F-r}eE$d=Hk}@G~_F3T(*o3*E{bzku@|Kjt8EkXfm3R6Yc$Y-oJW)at zffFs-S2IQ?mlREOyup*e3x3|~^OdH6UlxA`$ZTuHf5%}+T>4&#!!HDe@TG<j#Hbou zv44S3DWW0TPJza|0u6dhf$PWDEfdGGAso7N<ygC8R-72ZQvkWXDI<?lRmVbBJQFr; ztjp^I(05L^-5*sj9U!t00N9!*(ok7T7CDw^1@>_pnz#&^HHm5^qRbC@6B&slc$a^V z8^7VZ1d@A{t{P+M*=%Zk@JesT@NNmEG-;GKq>xF&?MhtX_m}!2g~J+!lTKD|E4{K) z*-*p8YGS1=WMK-u@b%8O#dO!kx^cYQ8~7O`N50TBN~H_pkeZ&Fu$FY`!(>v{3s0&+ z%i$Du?>l+^6ki*F*#o1<!e%jju$F%|YU$tLpNO}v9b-AL*3+K~b66`yBcP^h>yoLz z)|q62r05w><AmD4#`{0FB3%^5V3$wbC06r_GkYhUE6}8oaXf3yQV+%OS6?xoGQO_P zWj#lGoA$8E+m}}&wxPYdP_Kd$6g}Hq0+?~^&?i^x5fBVUVfNQo3~a!Pmm7bMP*p%h z)}Om)j(kcFop^XBtxh~(+Pypo8Zh#Ya3cvz!>lIduu6>yclRHVVQ}@khh|!kbW-rN zq>$2iJjP41Gb_rA9c)w=+N$`xiQX=G-I_cD0o3YqkGJ~znx$3f0`#qCnqn4gln7;j z4|*pQzYfrUF{nKAnHdfR8L5AI*oY2+#=o)tE3s;*8z>TNhZi&|5Z5S3zm*j8X@aI{ zm6m5lhwg<sq7KK*Fn?%2^_%AMx?3_yx-`7nGEYT!_h)25)5vy-s;s);y1RzKN>8j- zdxESjy+b!tLtSCe7X;vNdl{TcGzrR$rdP)Q8wL7yy!GkGWRlKtl-hsw>iR5nlGw%_ zd(r<kX{DXtXpXRS__E049~7qt!1zn%a@8XqMxDtDnpOC?qDge}Lbbp=AN2*&6Dq0G z_gDgjuDJGo2qiQ?pe1`D`2UDzFeQ3(Nr^U8b2xdG{}u-jq|cTEzZ}M~ikZtMDRB?< z*>$=$rxGIBZu(dqZd-p~a)7grlLC&|Z#}kfIMK254FdHr8UPNMBrd$atH`teCcsHq zRuBrm;RoK+`VzZjRB9})0Al3`x#1P$LKxa>_T#1196*LH+!9mwbkLo&{Je(ee{>3h zq_i~*8FB$E@WF)naqbGkk3eRQALEeGbr@z7<AAmp6*ik8$DJaDKAIWNx_35deYFVf YK!#hmVwgcR65q!0y?jIg+XoKS{&@uYxBvhE diff --git a/static/images/docs/oauth-server/diagram-clients.avif b/static/images/docs/oauth-server/diagram-clients.avif index 06854af3cadfd590f0139d0b19e6b4a10e8fd968..2cf0fcb3e918920d958a14ea485725e0cb7aef28 100644 GIT binary patch delta 20050 zcmV)2K+M0doB^Gk0g!kBqmg-hf2(a|VRRAz3JN)DXZ@kV0vZh<GLf4BM^!8UFv1W} z0KNwdSly2u(gFYErI20Il|4T2Vue`jsRl}Rd<De?foC^tDRB&C`a7YXGi4Ps;=N<i zQ50@WUUn8;n%P|jstKkSl}kU*-`Ej&c3%o{i~s6z9d$b$%r!~4NyD1xf7APK!&PQ| z)os6x0#N;OJ&GC<u6in*VYT^|SU>wNd)uO-y&GyMua<46*9!S0dnHAO_d~HyJ>6aO z=Pu9ygtFHRpuiPBvS#J+K@YM{0Ut2a*TGM2YG;0zDzoR?fkexncoMi59zCRQo_jE$ zMH(O2v2YYB>nN~J<Hdmdf0qqOF;c8g)Jgjdbiw4n2RuT_FQ$qCpz6xcptu}^Qj2$F zTU!#nIV$&0I`OI+cl){f8A&=75z5PkMpCBNSR`pOHr#K@NEa-szsM;sgvvZ&$;eDZ z$l;|P<*$R*(Os~sQoI?1F}YQUz({&LpGrLw<!m`BaqW~Gse5>Cf29LKckCjKO37u0 zoj#oJ3wQA7+#5Z+t5e9X3vQYzg))Y_sOJwyIiqh$*FY28Hv%2GUYD6aRDWp^969ri zi(QXz*sM&VGuKd_BmlW;m}%1GhlObwGGZ!*=&~3}g)2OZ%WYu3l9tByaE)^~fA!>S zEpS$&0=}I#y;pLpf4PodJ6OWpMDYw?tYErJ9?oU~n(?>cdcsAYw-50rh=hVubw_x) zCJGd4hn3IaT6BC)7&kfPiBp}^kV2BLT*=-e4WW1JQsyQ0vS5f9Wps<EF=yGi5%h@? z6evYEEXmD36#?wesmNWvvO?bT<CJQ?_uT|2AF=M6<#e}me?s(G!?*J1Qza73$Uq>X zBgax{y1Gx}KPBxCEYf&|D0{@<NvI;g_}B~(&oLZh47x4+>C|JYlQ|HDd|x?j%9+go z6-u-MC@S%fKKSp6N2SA`ymQB##4E*=t?f#?KwH`IrN#w9X@TdL>Je}u8Sd<f>Q|@- zY%w85y-w9&f5aQUXVj(#a5cko=h~i9f~cz9(Ew(bDm)3!u1yA;`-RS5kdy=bwO32k zw;Su-qqnFvC~-H2y#}Nt0Ox4hoV&Z@O<L0}s*Vsnd|)Mkun^TzFr{lV;pB=PeJu}& z%=-Gdh40u=EjPnWzJ|VzA%14cXUy|{AY#jl6oy|`f2ONS2QVC_H5i{@LAlFoT%M)= z7%L>AsK`FXD&}j<Nv$DF0bl)xKy<&c&5%-x4m*Qr@zpUBT@IJ7O{P<TEjsnGQPrWd z21r@^Yeh_m2bO3MQ4615(BF&hh**(Z!F`=1hsNq}2q>8_m!wVWh6xlb?8^B1z-Vq- zuh9w4e>~ItCNDpY+1*!ju%W4NxST!h;MJA^KVMB_uBRmj$A@z0`uKrV)v<;JE_9kc z<_xW9CM0!Cl%^#;(@f|Sby)H9_U;FdTCET!Ys%jt0d{T*Ap``dA8#&MY=va=3th6d z=w<N+n~zevwF^%EN<WrV>IgC0nu;aEIh$ZXfBjo#9#w=rF)HM?gHZ=JC28_$*Djw_ z!Diua8JV<{s;WMDi=)zHv*%1dO6r0tYfBZs9nfshcH{x@M)6TSS@P1`DFA)Ui4oc5 zu)199#MxpEiI}IDt<@S8u&Y9n6?Gvj(45V$slXsB6srtDHT#EoyG2N5qmkc?9fL2A ze@%<u1ZRi<wP1H_ggYsNl=ifd;|gNoO~@50X)$$jOxZx$GYThkty^P9-XK8k5SwvK zeucB}e|CWdjOc+;j->`*d7|ef9_oA>a+~#uhqZq-O!w4;(!)Gu;@47HvmsaJzQ_nO z?c2D4)F}0s76=e8H>|z0U)&_P;Sf&9e*m$!tjn!a%jFRkb~6hBW7!bD2+f9o%Nzo9 z<Irn4Sy;Cxko)6C7`Oj!hw(wbHti10I1_R?5_e_qe=n_b($6<Wnd$aMJB8L!@6PFz z-1`Fbt_}XXy?3f>0_zJrU2$=6Bre(K+_9s2B`tHO<$Yc)#xkqQlxCLs6ZUNUf2sZk zM|V(KU1~kNDt?Xl9q72u<Q0)-D#>DKc2I;^I1eHTh3Zo$pM(~ir40oS_DnCUXU`+; zl=S5bT-%AD_eE^kyT`z+-3vuZqi=>LIsgaL`D~((sIxiRbnbstvfB-ZOb!jK5KbiX zlVt1Vr(e}!)C6V*!NZ@w9RT}uf12A-F{=P@6NpC=9L)P-bK1f}l+s*^OSsiO$^o>m z#e*#ykcsm$*X9seX;nk0lHQr8XVuTWl$I7#Y;WluISy5a?xd?>E_A&ny3ye`IbU?O zUwggywN=|fa-)2UEOu_P?dUd*(6obOBDb8OE_M*@xf=X}$~A-o-8}aRe}6)s*Fqp+ z_W>s%+2KNTWxJ)eP3wfPQvpM$54OJa<&iu2<Dgna%ygniQ2$A)yT=p(j=ggLEWoaZ zPD8zT&hE2k;;L^ky&^WzjSB$5Fu+*uRoCmuC10kRcnz9GCBYs_6PxZ2)3`#8G**FK z;5l(}LI3}Gpj5J81UcLff5l;vvFAsoG|=mgE_A$0Ej%r*zB%3Vj>vsdGUk*ML)%wS z5pt4$j&M%yl>`E|d7Hwz6<ZV8S55#4Y3Ouk`fs$*aA@wsxMh&^fH-iuEzb9|4)Euk zR8}YCE3NWzGMC#ACXxwqf)+=f&nO6jiKY$=Sly2u(gFYF2u0FMfAe^E@B=?Ytfq%E zj+gN?-6k4{G_$N?a5E6lC(r)LfldMY_4@pViBzf>|FZ9wzTai$C33{r3jl5UtFxT< z5t%Fybua|ETnbO<mgAY@V}}*?VWkkFuKwZ_=b8-)XQIAheo1^jZm`VjWFDFGWnJt# zTOztE`q_*#_XR<vf9UbHV&!<0RLnDFvoG7;R8UL;rg#ID90ti?o*56u4%!x>%uzqh zLQ6w=YrK`rO27JnGm(Xgpo+9Skvx+fF}DJmo3auVqNuakel|;Ot*qhlrm){diq`Sa z0t6}NY(^g+P2rA^_beFi@q2_qfdJY^o~eS6Zru0F^?^cDf1I~0m4AL~l2ZUxL6D{7 z+n8^SHj=^23>OID14y>n76x#YBLPbSCrN1E>0zoywa{)%9XHc1hhuC(4a^M3SGx%3 zWz61Yb!roWjj5KFF4;#@=#jV=C<spn_I`<;1kFGasX=&~31`TMGNu>rxSlUPcPh@A zGxLwN@;1aWf1+B;>Ev5-N{BNp)A{hfMpKY{GSYhBE*-m3kO@UEIoXx<z}P+?aG89l z0g;_!qQnhi?6Tf8iz$ydSkCid9MiqH4n&U>Awy=3eVLe4ug|9@>;1_y$VXbrzS4X2 zehrvo1y$y{08CY+Y(&3_a@Alm4#ppAebFDIdsbVRe>yq9V`(JqT`nC`*pETc=ny8a zWNIfvg(-Cw@z2_I<L4P$FuP$rb28j={m`HDvw*pyIV!rz3(#r!6D)>{{bf#(=f{)# zpzND?#q#}}A>F;zfAhBHOM(mLzG@y9TvjJW#yYuO)Fg927Hf6K5F2;O#9QaHes2Vb zY{H7Be@u{+IxT%sPj}6|=gXM?1tAHMcu4Dxqc7lTXet?&BZyBjIu%<ZoWx9JUj8RD z(YekM%?|3f4&({8tZ~M)?NUe7|2Gsw2(cLPW-&Qq0Gt)gy)0f?w`3-ANB>3b-<4Q8 znpLLz3-GJa<&K_d?E4E49B83+zZ+)26lR(BfA=LrFMYM+9_?@gtTD)GLkD`u-bhP0 zI2IkSWKt*v%U$9B+Zz&|6FNooCW^D99h&EU(s$B85+cQc9=%Bsf7idi>#5VTCivW7 zZbc5m0^e?r?K>2B&<lxhJ;*l$sCY}HMM|@OBc;zy<-7r2j8OKTH-;F^$px8~{L~`@ ze{ZA$BZ?~ARIIFwmQhW{y$dqyp%;*4|K3jYraD2*>J?%aPVBre_}cu531h$^5TZLP zq+fO3bF4O;k#ox7*feFwe0_XXKH%j26}gN}h_Yf-Z$*KYz&ov{a<BLFVGRUqqyd&N zXV8noky##-Xi$0aAVdnya5fT%td5a4e}pwnRD|@vLMITHY9KvOhaHrDJwv@&IS~5N z{k@>?=D2)MH3)gWi%QO5k0%QmUsn;;^J`U=x<`txgyD=_6q~QXh&A%dh4#%8wZsYI z<Tr5>Pjozc7S|&qbD!jS7Er>FeS0}c)>BF{E@OSZCm;R_8aLVkEBoFFsvwQ`f8xZ% zjL|qbg~$|Wx!3aT<-W%nM5q!s5|nK`#Yd6aa4W{iUH_|Z(7V>>rnQgF>%eHOZU6`i zx?04jV`0}o9K0ERl*5tS@N%sg8`GeumC7BB(0PlGFnxwc-80jz1SA%Nxw7{AT!OlE z-l)BB<J8JIYEv~_!_^rBf6{Hbe_rbs8yf}vZ-`h_R1AVIf><_e>Vzzo1U*rDF=u<M zXHu8+A`O;XhRi0R7v<?Y_7Ixk-YSHM&(y6;jTQ2q(5z?4Pr90Ny=jBgS0h}Y6nu3> z$l6A!u2~*ui{MCB#u;ZBbp*DerHZk#{W2V@%I}jKSz<OzFFvmu(O|yCe;!<&fj#_t zi2!FvC9fq4Md$mk^c{d^<BKeSt3FyNRUmCh8CCd1mORoHBpYCsrJQs;kaXJhp?j(N z3nF}nO8^kMVBL;iz!6qw{P2SFguh~5JJ$JKFLa4tUtthWt%SG0e*Qp9_tZG?`HV_+ zc1vm!45nqK+^C15v{h|ce}_OeNqI$9bVYTyl*d)*eBL+nt5>J`bfVl}*={k@l&6c@ z*r>$5lv;WA1f$|;%mDL#;Ue{^u<|Z4=rwf_9aN9m7C-}6R#|$g?fiCDm~kt;I_;;8 zNeFaN1*4)L0V*1tNcqdE6DsH(X%vXe{_Kg-K!P(`{`A!9Q^`lrfBzA8GGQ~#+~=%( z7(x$$v-p3cBL=wUeZce85>-S|(H~AQwv8Xnw`Y&kuqGE9m=F_gLG*{1SU!O1E|S&y z7ApJ^4ko(pj3nyxf7?SQAR3GO62ZuJ!vVGcZ`pk?r+~(20bp=)*O@kvqCCaH{U)1L zZrFQaHS_y=^@<X*e?y{9x&5HT>3=oigT}HC$0~B0S6TRP>}Oyk>Hi7*rbT-*@S$ZK z!3J|+O$EPRy?EJJwN6$!rn(hvmRNs4QLSNpsRBj})}oE?vcuWK8Od6tpahY~Ova<5 zrjD$lF?pg`dd`uQ#zgvMNXpVA$K4`$#B3!d?NvX_-@(1nf6XW%UrC<*7JsfFQ2uTN z&VMD@J<^HdnfSLN5a@ygMq)eAO)POz^$E{Za_GdAKO-uxDpWa+ftSxaE#o`~dKk1L zW27H=gF*lkgmVE`NISfH8g0o`fM_lpcN)#tjic<PfT=Y3^FlMKvvJHq#-`j?Mt+uF zvbA?_(nYghfAWB;(gIj^NRlDlzzs%Ow*tZ-{WQ~u9Ejou=(!?5#`Sk(Dd>O<f3XEo zML(T}xoU?LOYGt9b@d#Y0r0FD=>v@_-ZoZ*TCRjLb7VN86PIzSo8#$<WbG;aZFH$g zX$KmeRzbtAb~v?e_}&Oj<(<*dfbup191sdw+OB0{e|HLZh((3xkq;r0R;swfm5q8$ zP9~rKugu27I4aeU4}Ec7ZG*c=0?<Y(8ILdLUi8hU{#4<&6YlSy;zNxakzU<aX*PmN zsMo86j2`ZTp`qtRZ+S{40Z_Dal~Vg{oNVnc_LE~Cb)-N2)FNBgpx;6Xm&e(Oer=Gs z;>ijwf5z+dm46uvGGT1>4p*Le<pfkX4lq1QvujuUzyrUul$<g~=fa$XTlS9Kh40ft zq8;lAn13%WNI+l-*TxSFtUqf}oe4Dq5x3X-&DAZ*r_r1^dfYb3M>*TQFg)t8;l=S_ z%Ds$XekvT>pu$EYvcsK5fHQ79FR(h#OymX&e-|$;SeUXhP|U}E1~0EZyOd}Q9w;Y* zOF_UZ`AQwBDsY;>zyZJ<Tko5Tu>R@oAme0q5yhj3$tY@KMC$#s<%52I3?j5Ik6;R? zi3G4MdeciRM$F*FAV>BXDtenX575Yf)=z>}_@T335kb1>XG<$0=JG7dvQBI_wEe1e ze{$qe&Dcj`dGn28?`el)m5A}e2#Z|Dto~J}5)FtQf&fpFj~BGT0DPJ?;LX0vlYHR6 z#bVz-O$8dXk-X7uO)~+xZ_>x^)e#mP1*_VdZ{6G1uEAE*IX@f-qX_=@^_YErjTRvG zM~Fv!a~O=LYW8zvHMgB&jHlKpEx!#<fA7HNnI}8Bd@%A{QzV%Jt3cZnj92;J8z7%J zS#0^B*u6R>#O;HCiB$}?OW;0NOro58x|Xb)f47vjCxYLN_{KN;{>3Mi&<w6sIw6(l z0`{W}d+#!vP#Q6br*rhCqF<M|cu14B!Q>NNCeC3|R^ye#51~c-ts9%4S6MuPe{^cr zJL0v$!Kip*8!&i19-SfbHoVg6$rMU<o)2F4$B49E3J$4DVP?fksq1s72%l_rVeos4 zXMy(Rd+qad1hm*+Mp<W0fgXOxW`4YZ7>izlUU74~Ib63i+86V&E#+DrYej&vf{xRh z>05j>k(6SE9#UP)x>_YSnUc>0e`y^TMQuzhM<=v^u_Shy|FPd}hPE7+Ga!DEGAVg* zhfA_6Nl@KQsx^rIiHC_jlf(8*>m?cGg0FfI!3CNb@p2{Cyf5#Jg+^u~U=P`8JAmdz z_<r5{=}_z$4Xv32k|@qyn53-sqr;8a1uFNt;XiuTrGlD;3lCNQ0i`_5e?vhBPH*N8 z`D7uM@DWjnjq(#l)Lm6^3ydL^j%s{pq%XO-{FlWNGfNs*urMJp#}x4<TxSv3KW}t| zu1z&-LoX_A1Z)%ikf)6u-cVX&KB|0CWev(THJKB@|8%e7_wIVdIb53Uh0uIQ%+)#I z8Kj0w=?bUPd8J6gY2{UCf9p4hFn;JKw$;A4HR7RlcRqIj!bdE8p;uDG>Ky9iA>I(P zd$v~Js^p5(!yC@sU5eHVA-!1Cc3LS8ilzE*xb4iJo>V~{CiGmwl}i*%yVByvKJ;tj zs0nt~_O^3Sr#*D#$@mGMp=DvBSXJ4EEww98rq52sQnWB<(AE)ye`(E&cajn2_a<E> z<)f)Y;eZLd>l=o>E~JUjudgK6JjBVcKK{YL+zu?$QR@RXwx;y=z4krvBlzBxqEO!k z)`S#^Q1l;*5^d!i4JBGGpdG4JK1(}i6Kuy(_j~kMt_2RY@PJw5-=P5}IcHPYe^&uW z=U%6!J5<|UI$wzUf5q086!w+aJ$CUoAyFycd57f^)u(^#3@mgqZ~iwd!DphG4ybn$ z94Tr?7PoeZK+0{aN1i9EJQVTnd-)P@futt$^oEcU)11k1O&g>ucEdfms2?(O6C)o& zN+)SAMtF*CAeO%*A@D>-yYNEn8@{pxJ$pD8U|azVnnRU2f1K0yvbCjWMa;gE=rRTS z##^+Le&9e<xZyGs6G0-e2up=v7Glk<Fj5Gj=&v<*>cfS)WX)+AQ5R)c8l;xuhosQz z&7hF2p9bE_rM}VJDQTTdo=L*Gc#`07rs-9^yP^|bw1AScilpUEO~%}~6Gy;Gx>$Ba z<t!cT(}Zy$e+_*2EyXpX*kGllEhp7l$AO1j%3V$Bb}`fzOJh3s4o}fDLAdi!4z>F} zFwV`lgw$4w*65Oe^brhL-H#p80srL)Mbb<2cz5svKSZpihck|s@ig7*W$H+b&f}SC z(ZZr!+~nd(<Cu;_399laF@`CvPS$-)wl|uf6lo74f47<4XEx7b#aK_w$*<MMsh2Rn z4ZmBch~dlQOw5B`uKdnn6mM$Vc+4>DUeIYg$ErYP->`;i1#n{6gSnZtlAdZ5{fEpm z&Y@ePU>RSqbv{`5-MChrHB#bpy)cFeJ;=6`cK)o3XOp)jtSs|pzy!o{X=Y0PK`@je zk0OrXe@|n}$|!T#?JPJb6cNeD1<0*KylJ>uv*)axK8N<KV@^^JVqvu7y|4u5kLs@- z?xo&&Gcu$?tsWvt{;iF$umA+&pe(!C#uOzE0Dg5#*yXkt^n@Az4=}4s=jIV|vG?qL zyDVkXG=5sTjPyM+D!Vq(gs-8JJeQi5ZH_$ie-4=h)8rGjta`BeyK_5Fd1t7+ABWv@ zH*G}9be-Y0U}lqMyt84Qp0RBnpC-Cr_rt(+uI<pRN6Zruhqt%X%C<$pg!$fWX(aZ+ zdjv!qp%YXv@K2D+ZXT+09$+|QU&@LqmecyT#p&N$HombvFiGh2b~tU}ci+YjMPJee zf5G&$3!M$@&Ssc|Nl!?Vn~+*^bz+7QD*mu%g09bK5lU7Kdrga~RAj`iIK@O;N<8Vu z8=}~`UdaJ0!4;{~>9gcA!DeQOVp{M-iMSmo>Ej$Pf(9^AP3EmOpnDml7&1ncgcW3b zJTLN42tKz+Hu3<nLfvToO_LYaWb-)Xe+*c5p94eB_iJN972T(YATHpYbN+MC0eD@Q z@F_*04w5s57x6Fu%q+?+XeM!Fmra8f3O~qbne(mQ)N{FM8hsD*dP#M02N+MY|K_l5 z(pH0FeBfq-pa%K(pWYRj0PHgEp{XG|F05gy5_E?*H<_ZQS)GtaS(JI8QI$Zxf9n$O zxpX6d;C{4Y$ASY1c#MR((tH3mSB<bC1w$B9GVP|wLL^CVan}6;qhzr$n+S0}=l2Yc z^)%|Mln#yI7df@^jxRht{t4d+H%iC=x*^)I7(8!o7Jvt8qU)jm-7XL$$FU+-?D#kW zJTEx-PiNAyHNw8U<hrAVBhHkAf9fR1EWF2vmIj1|0sWsuSO@;oLZC06k|1_0pXhLZ zy%~P!XJ48y=k#+!y3D-({*;+{a4kCi^h->`v>-{cd|OzOfcXI>G}4YzfB`Nh-B%CV zAVR#!rEXd={VmOY0D9%V&YFC|)ObUQP&7A(qwbh&wFr`?jYCQ>^b(9=e|mGStU4Xu z7AUB!y;4VEdLOO&y8`C@MJ)m^cA$B)97!*<*=kv#kSmMOOpurA$yZ0Yu`>2g?s|dk zU!FA6_Dy5xul2P~vai9f)pHPYPdv5GnqC5JQPNTp8Hkh=t~Gg>!Wuwi=X+KZd!N%y zGp<+lscw0FG7^tvq-0I?e{ImTSM{^SY8^S?YGL1))qGg>(y^yQ$CWEGxInANaP&gT z;6p_n81jLr)Avx5RR?kT({mU>TkgL#1zBIhpoY8Si5OzjOIxx)b_p1`DS&W7QE0?f zd&;oSdBYS!Fb`nx*b5&S*KLSuh{7mu9N%8aMX{Y=25YqR)5Q}cf6C%bNt<z<`7>AR zf#G^S=qgtcRTLs9$Tk3P{_Mmf!!*MJu>BTduRz9Ac%};El<(};Ds&qU0A7-PZqMY^ zKcQj96xzkDmy1eQB#lFpK7i+fjKt+D@d<z@(uByFf58_tYl)EHG95LvTu3PkN`=A| zpduF?H*E38lA=rme=bAd4r`ccsosRp8#S#GBgr3BBmzU8555nap~N(p&*?kK{t5ky zLEd|AK!2TKz(yZ4cZg}4Uwqr?9F+-V^cbeH3iVoD;&d_t<}QL4h=bg_QxnqF=L-yz zE5~#)&jHjH)~>|jg(Ihbq-^QglrE*}@Wl5bFlITWP@SzLf3E(}4y>`9x#C1M4IY*+ zpM0Ub;mRDprAVuFK-2I2Wsd8^&vYw2@!Z2#<-p2AzBKtQ2<<2s`;Lce;YG~CwIMNX zyuDEAmIunh-rz8j(a?f#IM)swv?y|mh;pY|Z)d&sMR|SY(_!<UkQ38ZCM>N=g=sXG z|8itE>m`w*f6UKX060xu-0GJ+P?indFs7V)D)SEPrvzFrj$Xn-8Xi)^Zb<ZW4!|Zx zfS)nsEl@O?`t=$k++bn*Xj+;L8V}aS(AXYEiSabT5x^@{4$P;m1&EE1O6ePjcMQUZ zsu?6NE(ss@Vo$19EE~|JIHR0W@r*_XSJ5>11-_H@f7_TPDE3~Hrtz&CoaO7;i!y2I zM?3%9O9Q*grub=|F19I<$)8e`!c6q%sAm>17+4X0=E$sUHK<4)G3`N2Bz8y*la-|T z4`Ele0;|jkX}zv0feqUIOZFZj36o6$lThj<9*o`HBxgm%?p>tBo<5VYWhL-Ud-9PM z8~o?!f8DimAq_i~Yk+b2Z=Zyg5_%<3E5-tEf<Ocd3O3drH?|Z~M(WF}I~BZt_x0%v z++$R|yLg#G^%-ZxDvo1;1=TW@I9JHRZ=NmZ!BPT8TN6y=3szID^qn-@)tRnkT!tQw zVBZo4dB%wu=tYlZ>1m3UocRR%hSK3!nntYbe_GtVis9^G_h)T!r7*GaL0FEIqBZ8- zVzNHQ*oBtpjK)8Y7-)5+-p+a>V}!ce@G%aUcXV7bcUsUJr9PM39!TcQ`^He8>ET)L zDi0LCq#h3#@gAZ#MxPJ~5f-dpAvC~sdgXQKK|ah$eomI`6+)x~^sJPL#b2FjubkB! ze`lV!Zu4cRxv($tZE~ND17oo|eYH|ciTMwGT%O&9&LG#=hAXH;kJjUf#Jg@#SXd^b zYp3z{xk@p1^>5X<ZO|}z9R{0VY;E{A&GXXGse@CLx|HCG`MtXM`x+mx+=Nz#Kh@Wv zY3(HO!&>r25dSw!?2^k7?)<;7?p!tEe|xD)m7RnXs7M)7vvGO@ibKX2qrSb(67wTg zs4cW32D#_%Fb*pBr)0NEp!2yULPP*}5I#nI2=}r$rE?E*y!zg7T59a}KU7Jc)%9#t zCLxjH0Y&^lZ3O9d;8ME-Tr0y%inTV+Zh9;i9tRb3j!G*F3OCxrTs*Ru<=qD*e{~N( zZK-bKHsQ8BC7g2Je1<eufjdDJY`?~}WgKP0LRzK*_Ndgc1hvaO{|oDqW#1`nnQK~; zO0P|Bs}B(c3%?`ny7B~7_w`?K^W#Ik0&8TQgKXrkb;B8H?A+-K-?Jry?D<Q=*t7{- zn;sUv;wX^7I~w`s(F8ZZ;>k#gf2*|?4Fo%P;SHd0I$IWefC()K(npOXM3*0=i#)Gw zEks3`In9{bZ5t5VU;k1T`-fc2nPw`R;b;Pz!>2-4f6I=kXuzl5D1dc4=UQ=|Emizd z_MjMF;j}%)TfaSB9cd<u^`(;ec@b#5dD2ozZ7v7830t3_^j?nr#a1pTe}iyU8CxzG z@e4^o&{GVQz*Ue{m6A6PY#Z;9ulrA(_j}Di{nhCIguD+49iPpo?J0$iC$?T{I?&tQ zy~2U+j~1ik#_dX9@S>EHF2uiHBo38?es44T*xO0m{x0$CF949oe6q`92I^|_C2t4H z9Dim<m&Wp{tt`ZRkW4cJe~pfXsh}}`Sy|mE+GqQ~YE91aa;dAL3vtO&t=WseSM|FU zL>CJ<RdntsN{}kK7?zU7U8&P(QCN|noAKR^p8b2HuF3Bke1h{1zg%{!HoVW_ujs3O zx9A7eHA7OMaHL)T6TP`o@GaReHMY^7ajPy03CM7nvxP%OpN4dme=Ba_XUiV%4G6dx zWn>`98J$5V`$WR3m7@$s21n8(F?wfQ+zcP4Nfkl5<A3Fu%O3%EqW`D)84aU*pPP=L z469|1A=S1KnJhik#yx{DC9574o&K&-VajN9wJ3aRBDxw?mNoQZCnA=|$s6S<i$4V} z4XY@8_uwH#_rBUIe{u=QE4B*TlhSwI`1HEo8g1p3+rmqH)Vbv}w-sBAZ+Q|q8TV5w z2Plf>6^l)P+))~mV{S_)MW@x7_Al4ohCcfA;Mg`M{qe)$;5JG9d`a&aY?%i79hBgy zL7*3c3_~h5feX=_Dj3Zc$awIN@E>O_8R-(A6+3E1#lJ{je@OLn=Sr#$h72<OepQrM zbnSo6)QxtR=T}CRVU0NB$p97*2?E~W9S&E-ji9#qO?%KL@S@L_rPk^XCDi&bMqQsq z9Ey+)Z}w?1vJkyYsWtyC`)5n4qf2$_JHx=JMyus7Lp%jgxhp_XruuJ+zhRf?#@Boa zqXVY}Cc(K0f37KMcLeS!<UKUUuQ`sMzZY)RR9wIA2NaPyTzfx&F5LvaZAN@is(*SB zdpl7zJi!F5y>)z?GDks|Rdk#21P(X0BnWB&Onl|w^NK3@_9W}{*i|D;2CtC$_Gq`9 z=dA!pT5WuZ>42pk<b<R_buYjK(}0gr;=ghoYBF#of2^jKsJS|z9@}5l$7_)?l%E~5 zi_22!*N1IusWB}A#IyGO*k^4u*8k;YtWCr@;M>X9fMXYi6Y?X$P54WxSABuZM<w<y zIBo6RYR*&n!J={owLG%OWmhpEjYxr}xuJiVO^BhN^Q1*+(4wj^B1&%JcNxkf@+}dX zp&}kYe{u=fS)j9Q)7ci|`5jVbSi)hqSmr))ImnDGf#B$PQPfTaQNsQd8aWpFCu(&p z1Uy5zVOTsADW8bn#7gCC*Ee+a6YxR%qP1PS)+NlWd{bkX5Jha|S*tD^q#OL>UK3Q| z!&j^`Z6{Hkn)mt$bVZSXVmd5x+S|4;yjff(e{VY03Tf>L5{t;v01m^|!$6F=6)n{v z%|N(^45+m@uENbo3)D108HAN2cudx_w6{E(?|K<_!HE#3)~)iN?oR~+2CVbgL2HR4 zx^;#OlmL3<K}fB90rx4Rz`Bo};X%_LdDHPjkv&4!;C5%A^>sp4*kmZr3UuA&(YNph ze^9%Z{z(!HuCACudfBS|MsY@Xl5%mPTH;z6x=%j%T>n#`fD`W{GXn{a-;B<u`geAs z$9(+Y(0(-=^Hx$}VRw_yK5z}=`Q_ZayYosi*OcNWa`~W#0bW$aToi%81h>wASt+c( zsTiQUw&ykOVAX2;{-?a6rbq*f(UvNif9_U|B(cYTjkd5LtD^E^okGNR#%c#_qUVgt zpk>?5l+4kY<B{vTEbFwdRzl>ucT(-^JA5-6Sk<QY(Am;(l(25#n7b#dqquhA#vYuG zcef3upn8D|eEJ_Iq9x+)$Z$|11>ZWHvcft)#U^_1JT8CwV^MzgwOw*5Q&lYzf3S@e zk=s>=j@}y6BJ1}(Lw0PSOZQzERP#psjiRof4ZD2&$GG-7$~T}f=HAgF(H#XDE?(x& z8rPp)W0E93OfioiYp-fL5k-t5LJv_0P#J>p9|~l-TP*ANYFKaO9{i^{Sy-QK@X4pE z<PxCi9eXJMM@sOWxCCT3NOAL?f1h*!mu6dsFlHl)kuKQ#u{<ELVe<;sUl8QpW<*JY z@kkfrA>re^7M$Hwl}{Uf4jGs?_J5+R>fQ_9;hd=h1fvvqfbBZ>%HYsE3=?H(efQS7 zEbkWDRG$1<(rh(o;uq~C#3yu%Fs^~q2K*(R?1XvhE38zt;}bKS$QrIke;7?G2^{hr zy9&~j1c@fau}w__9IZRj${GP4yD>M6`K~lxt+$YZzW@OUlXa_#YjD>KP^(R95qJ~g z6+k`!uor4#kB&QXhLK{T9h2+tGV}zRU2I}?L6>=o;j(pwAs*gbu>ENlqYHRi9r;Ip zk9h-O2kZ<<o$fzC4KdJ0f0puE1mM76^W&8}S97Y;8K`EP>DBIx+V0GIq@K*LtxAUP zGIARFH{tZW$@5)C4~!|1fq`l#^?uY)*!cg7t?Ys|4{9Ilx+**Q>?1lv?7cUmt-Z_3 z4loDGUCv=~gEceda#j+7A`CfLQE{QI!q&-HK$@Eowq*(~KUp^Af73Iqy$ZQa{G!c_ z`!%##e^r$Rolu>a)?8Jzb+WvkAe8-??b2FE=<pQwu@))THVUs|7QX&#@~N4}qgKGG zBTyE`w;ebVYyrFD`X$um3bXW00Ss8(j~($kA$6OiC6aG-ezyD!b*?$^5>8JM6e1&X z_axEeGP#t($un{Xe@YZHgiqt7H#m??zzwfwH0i-p_~gDgnjY@ZM3hQH+PN$3BpR;@ zrJVp7$`8yTC0_Tt(ji$DFb*aso9fMQ(FWAM9QJqD3P|Rg3ccWwYpBKi_3$N2;0!7H zpJ+p`q3hsuvsJ!>tP}UjElNsv>Y*%qj4s+{;7Jwf2oW(Ge`{i67ejCO9}pvAo5QIA zfh0(BC!C+5PDB0RTPHJD_6csG{F~s09=zf0)D>nL&ubn;cq9E#50Ker_75MiimPx| zJMmd(gKutWnuMDpZsj-u8mo&&UE+s+=S`0!$86~r3u~5)3s>tleFcGm^y22Yx>vGR zxk_wN#6wLVfA8YP!znhx?I4E|R(!QHg~Z|aj+pic1N{AY_q_}Whc1zmvlI>m_&4v$ z=VG@^7XJK#J}VjQLj2KBCD41G2J^y?sfagyX~bF^5zNmJ<+(kq=U709HM(B)r&>G5 zT25t~Is;4vN#fqiaJbP+<<(p5$|#_NlFqhT*LUg1f8lPCJxjGLM<{l?uq$;;AbVHk zir#u=g@mA5>3kUb_TZBP4h`V!*WQ`o(~O?~!=Ji(@3GsXWa8LQ`Gf8r{HLL|TH*W# zS!(V4TMoz=pdaF(h9a-U>U~+Hne6kA4_=}kdxtv>#Jhv{BMhbvAK-1422|}2zgF!l zf@Ie9fB5RUjN6~@jmgymfRE2pjr}x{d)|LqFm1u2dP0*4faa!V98b#fjid6K@~iOO z%8&$^kA5ui|F>DGn?_B-FFD}FuFFU3^x+BL=1^tuwvd45Z7;v9SvI#J6)cxB9SBHy zq(}J?%DsZ*E*oi^rty=sxEG-3yuQ8raHP>Se=1rjqgI771y|HFHIJ*j8T*e^WsdO+ z9^tl~c(U{%ysX*tS2$Jj!q%=2=n`25n-9XhEf6qIR8-VUgkDph+gle~!}j}@KG5^s ziPLYl)s(B4dA@e@Yz%Z#MTI+W9m)jkxC`g$59x4%c_6RHg~$Rb)<BY}dDd1hNf9JE ze?iIaE@l`~H|W$SR%q5SfA-WI!6GEa>K?V%HI-xER=bN(+CE8@bOU3<7#HFQ1%a77 z+HYui=a>dFFKs&SVmqroegE~Ya1PK&?iEar^I%d7hS3~rxi&<+*Mw9dnO+v`FW#Aj z=#+2rc4B+&0tk0^QA!;e1s>mpRA9B4f20S7sy&id?45h1@ujnJQM=Po$2Jgx1&e7U zsd*xQRHBZ1U}~r+dr<CXwVp&iaym}R3K0ARz^eebvL+JRyCOycB<*sZ3<KatnxX8^ zh6=xAEuOwH(SFb?qZzT)4wODn>6P_lq~?U&xIN^--dS46IwRA~+mG$H^gW)YfA7eQ z)^f_PE;m|Jj&5hO7DacXEfD7y=`lv~0s=e}nW!QWEbIHST!A!Ga`b%HihAM(Q!q!l z#IgE8Ajb%QO|MZFn>DRalcBZ0`DW<ztVO~0!aD;C_4-x;H(5!+7q}Aq#23c(kHFoP z+oE0wGPWwlK2sr?*!gBjy|qVKe;nRv1v1nNV5Y;=($Y7)F=|X}3R&6Tgw^mZ;Kq*L z6-_!NXo(;&Wp52JsW<-$r32^I9KVJWlaCGTV}VZ_O;M0^c8z??N$@R=0w~xRcH22` z5(l}QtsPaJvJgGF!Wi4PkVLj{b|la9-}1g)jFEOPU5;w|aRn{Hh#&qbe<!xrX-!;i zrRBJZUS0m9-FPx$P@$F(^2_pTV&Zxgzvj7dI$z+OeFF}@=@mz-%Z^K}A`rVJ23BNq z?0pT#PZP&Uyfk#<$Gi)a%Gn<SY~&L=-H&g?ycsx=#Ht^t#MQ>HC060eDCHtceyktu z^-B(4Q}5wf-@oU-bjjYaf5t<7IpmX5Eni?X^S7bBIA&epysGhrBQnGKWmGEZ90z*g z>MXgxY7aVeT3<Qr!>)X}LgJuT8q54?n;Nb<l6Jb59HIfU?b_44iXN_d=rZ{DF#l_e ze4!Fo7~od3)o8b_zY3vliMRalyfu{5^nHeK+E@f6hPFE(0?#prfA|8WlZwezuuf@t z&tM?RL%r-28+v6jfDp}u!1EtpLmfMW)sNVB`@IS#LQ@}!WeBrYey3_~I%iNJHmqQG zP=yxxm^HL%ibefRs9>5!|7$p19^7~?l!R`>eNBf#15+J%_%m?o;;jahe84oA#M4C4 zH8Dy;O*R6~kElCce<=%zrTuB0xSI0YwrgIvWv=J3FL{aX3q<uOj9c9s_9T^Y+eyuB zfFJ&u$NxG{<lAb2d76VGD%*UqL=CH;<N+v>h;o&Y4UNl(%iE8%&Es?+-RV3O+xUIx z32&9bYP~PhNgU4rIc>53acz)GM%`<uWiy35c#o#l?1Erjf2!((t3P(dn)qSgWJ*&> zu5F1JUjmPH&S>YpR~j|l9e;&-ps+00Z@81?VT;pD<mA3oWPd;Ax5ls4=q|$B**>9f zjmiZ^RWc{+s5@jf5rR%5L{i+-UFHWl+u5hpM1ku}_7!zvU4Gu|?b_{U5a0wLjra`e z=;_<bFk854f7A)}Z27M|Zh1codG9a++3a|bl^fzy$A8Iv0*UCvH}-OIp`zc7nR#Hi zCi25f89&Q&yr{D$eaS5*((q}hVcQ$t=P8fIgbg%M`ypW&HeOo4VbD)Kr*V~Dv{77C z9B9%H_G+2Zb0fLMm^Kj&h814CS9PobV^UQ9y*U5Se{oIjo{9hF$AOlVqAsugbMtx= z@wlB?^O{=SYJcw7_s3DGnq}YXEn8nZ1mP;Inf<r_;zurok}K}yb0pC#eAL0_95~Ph z9R4Etq(cM#%-=Q$DLq6KV^G~;08rTPn|RjlKv6j&`|V90-}wxisrq0XP460K+zHWB zX7q0+e_!0Ss)WZ0jhaDChUHewojYFB_dE~$f3~(Q-G|=iPCK*APJ)hRH}iPj%LAR7 z;4<E9c0%!OLNfZNXTybiGCKOs#Rk*m?PeS{mH8~te#mI2%Sznx5r%aifDav}0yy@$ z4^sTpNa&x?r6HOq_!vaXNvk{}9fRNuBm6Fae-8<bd8!*9hDr-mJQO6l5q7S{P{=TB zb{;=NLIg>zta9<>zEISAa89C#lT~=)1(${Hs~_*A_JvB|RV8!h|8?{FxsHGYL;h|J z0I0zsC+nN1B!H&p>lz{K3&OGc1|SKzokZuZ!fm%>h;RXA_Jrv=CX`Ke^rH@6SeI~9 ze;7$zhJ`YCcoN|=`$?7zk&m-*Y*Y5r;Atj6^0__begY!|sB>T6YE<W3=q4G{AuuY5 zFHF7Rem4mmcJ>EESAE4X>#oW8TI;wQSRWP!*9a~Zhq{y02VZLq9V`pib-3P(Ime|w zhTyZ25P?7the1U9!@--lA36x=ZlxH%e@u3vlVyP6k+lzolC&+p)T~v9=&zk?3EvAb zoemFCLrdg|@ay`%(qPnFV+dLxGjst)l<phO#A@0BJ}j~oispKwar!7ntLMJXTP^%) zw5%kbaSjhezF!j2_pF1g!>`Cv>+0!FzBO&p@<Y>?@OtdN1szP!f_R{MPmy@Ge@&ka z`1AI;EwwjtE`P+;)zVkp90!A8*-r?iQKdAzO%j+|v}b%BM*BeQ7jLe{JEux34aeO` z<xxtaRq_nf0mVobiMR=3Qk(kr8?e8Lde$;k$78dLqx#$p2n4%dC>eC%D3>}`@lLQq zAe?GbB}BO@S0+iZDr@$2C0_?^e*}v|k|Ml>;%947Y}@Wm5w}luPzBa@2S;EZI7+QO zozRt%_0q-Gb}=5o{-|uI3bZ_de)?@4NszXnA-H)H>Vo8qi+?2e;QIZ9%pLGP=whyA z5jG?%qfX^s!Vi5mBST7<DYa3LW}#M&ck1#~ica25^Pb2*{v>NF_-c8af1H&R=BXi< z`%kc5z7Jpt9m!vs<jCi2ucp1dIi@+C(}&f^OV)qRV&MlJuPtt(c`s>Fw=e?(U;@i) zbPFu{HYIy&S|!yN%`aqS=v{U2;>rMXFoE?i?lZXW#in}b`xut0PTf}pPk$=7Tblu= z{v&jHWKFKitWw33_;+Ewe}VbAv6-RQ)S*P=grL>23yWT{icl4&V%x;okq0Z805BqJ z<4Bnp@q@yCD@iXt_XP}eX_?&(?yR5-(5kf2PrMmPU;I=+Q}zXr!nzV&m#7pX#~zuV z4=+ujPv1**HT<nNVl)m_4b~2hf3TCbyERMuGde|#V^@$cm$>CEe<JXi-en%Uw3Pj7 z0}+}=dKqZcJTVBPDbo2QoaPhsqoXb)EO%6kgj~$AZ`1i^c4flbxi$z8d-cxfdo2)g z;~O~8S~+25=+z9+$ws{{h|pV;Y1j5(I}QM}d5%PzE^mb1*#U9OV`F17+~bH1QAa9W zRYFhcy4@4msh?@#e}2Icpokw>PS2Graf#bygDN7ob?w}K*Ixi1`RaOQLhkZ5=V(C{ zx3NEVy6YYfsz)h@E9mH$^ZGCQJs3sEF*!~b%vdRwk>bb8u-=lycZC(wj=-mQss`B4 zS0{Y5+%e`@yxp<?A`VS@>;)KnegmaZq1NG?NvVgmMHM0#e}kPwuN<kCS6$zkq5}q} zP!j)+vhvmOt-`U$&j{H5tQwye2D+<YvU9VQ?HLfZCU=e6QQoW^GVREHRZ#=4_L9z? zUUJ~@>UMe1*k)o!d}rN4c#^PCM*U5elX$(wU2(0J-Or>UdCjcEXq1FPqM+A=46Xcq z`<l5aQiFq=f4=v5*fsp;`+?qnBwFrWoyzY>Rq&A0;qpq9|I+Vl)I3l@@5RfJ#l|n6 z1v-2~OJ7(sS@uMvCiHN|L(|+Q&EVp|pTzyVW?u80qgeER&k8+{xf2o_wGzU)Dja-I zcJx5I$t2dX0auvM4%Ec@_%uo)yR=o^(UUCW*#g4yf3S;%$Ijv7jpKVdc5HAg>5+<G zL{7OnUj?`LB4!j3f)SZ|t;;T)HVk0Aw8J6pR`Aw=4V-7Ko}j~1{~a45T072_R3R6? zSzXRGl%$OqhK{~-eTC<f+9K<?6YqG1Z*owC2~6g^Sb5(Yx8us=BkbHzX?xT1V|Ai- z7-aTAfAw52fjg2}+!K}oro!iDdNP8%NRT+9V={My=;g<i;j=vD4DyMuB{_tFyra1B z2GV@#KJLB+oGdwnenTfb--E-ZPQ<N;)TLyXlKqrWDVIe=)7t%3OScS$z-tX}T3&e& zxuN^bBht)C2ldbZgfo#Ds&W?bsEvs<Z12D)f48R1<U=vDoW#9OvxnQ6yOHMhOOPMz zF60L!p>3HaG|&Ye*5V)Rh1aZ+Kj`RuL~=BFCzozy7ehbn=QnSgxj}RlgfI4sg7|;K zPGj~USvg*b2qMvtVp=){cj1%>7=>jkPq#e1SkVXMEV)BRmBBb<2<#!aPQrWVOx?vS zf91$VKE<FSD|d%cuv>bsccqiwdeZAZ74j5l$PK8{<^<1XsP>?T+_W=!L_@=r%k`E# zVfrK(NbHFx4t6tVyM3x!UwS1WS@YBnqq68T%0w1hbOFv9s#wXnV0;_4;3e%WAs+@q z54{%=M-NbVaHIm^rdA6gKU>3p^o_pTe@ZELk{mT7#57~+gBi`j8G(V-XaWfz8E(9- z8qALCr-xUUNU7%!BIq~_*PU_<;8Tws*4qZcU$;U4?>66+iw9i{=sS)$LBYjbJJ>Vg z>?QnXd<xE|xqZU}cz;jW<e+aPM<yXpwFMcPbqr?Aber|%ny=dhKn3MDdX-Z4f3FOp zW9%Q$QS@;%C?>jY`crgQ3^x(iIB9j*c`O)-N_nO5@}aUN!%Jb8e98}p$EF1$T3tj? z`v00?H)K2k_KzDeKFQrIz+W!k$V)T#X%5aTe{p8XOLGp2<CSB#jx*Y6;q{TF_>m<W z0ipku4+^NAI6H-l3&-$Z8ny6(e<3d5nnS;i42375Kg6&FzGs54xJq<@S%B2y?QvdO zSuJQOFmuu(ZBp@i<$xsV8Uf<M#kV^!z;pKM7T5}%Y_L{2E9`gT0t875s7b2z)C{{c z9!=)gvv#^KgdyK@bdy19#MWz41QrpVZlz(&>oQ=rpySzCkFU{=Gbw8If7GB=N$5p% zFxy+?`k<zZbuj*|-Z<${BirPC*Bw*O7dKFJR<_>|h>h7KsLhVH{!gt+DA<@`NwB6? zh_e6PPkU0i7ioXHLg*Uw+F5ZsE<U9f%?k&z#~$taSW+qST?L4+|9y`xc8q7V(GX6o z!29NB+Le_4D&&q{M0ot$e>2H^-&hEF4MS*^7AW%#blFBJ+(kjy>O`WsjCyQNN7<e! z#2vF+HQ14UZESa~wy_6IhBwIb>CHAYE`RJ?+onFo1&X%Ih;|?YHG&8aGBO^3+SbE9 z@Md{2G7b$Rpxq8j3wDQ6e<>e(eMkq#V4)BWDvrQ`xD`s>I%F^Se{K-x)y2d$QF|m| zSX?lQ6nB?oO0lFgviBh2R#8dEHnKZ+R_#NVtW~Af{hvt}v-&ZJUzd(%0F_bTUhfax z7G8N|R(9#-kUYOz!`EEzU7gMk5_*#}{a#X+DzW81+__)LeSIQ{te`Rr`tBXSJL;a7 z{hUG;k3@!2*a=4`f2F%`3Q^3gECaid4xvhWE?&tfny>sO8YCmRY8X<fpN_yI>L_18 z;{hR6*3(PRI;T>SVck>D^r*ztYx`x8YS|U^Tnfx3hUP4DoN4{>%lb&m?$ga}4lb_R zHjG0RJAl7yR)wX1T(zz4wsd?OmrP+6dV_GDtrw?zaM{jHe=736c%0*1EL{=9p@<a# zx%z%?B8rAs`Ak0|D#pkNcY$c~{5#bt_SLKjEvXwUx)ZH+dJbp=-hw~n-=N}qyc674 z!p?UgEA)Tj=?sy+i4>@*#>C7N=)!)*@6A(W$r`VrwA@-~S=S%^O6$HEuGzgcRagP| zt&3q>&!;_6e+g+RoO)5X^;;QEh5PiOaN(+$M2xK}c1_=IFw4NB5g)VK5}Z3s88N}1 z@i_15ynp4jN8xOtP>Rse{r1tlu!oq{Gee|wKQ!PG+|84BuJK|+yxILxsTt)V5w=GF zXm-WQ$AJ5THzFIi1nZja@kI&eICf5SoYUn<f};r0e?7e{NthwQ)DH!+1CMmKZ^w2& z&3r}k4G$w4MrwYAGohWA(<;=OE%f>$4X0ZKoX3Ggw1_$*3e>0QW`@RP04%pfz=Z() zT!vIf;HR5%k&qUMO>l*}DNcL!2pejICt{AZ(>`$#kUdl{bw4m8MSsVDu}3{ZG?iK} z0qWGde?(^H<}V@A?a(z`OOFppIsnhAt)9Id+O=Mgc6V0H(AmzAAs*Bxg!9}^XitS5 zOq`uV5fwzpe-booRSj(mp=P{2?sL(6Ss7lmbnuxiFkCo|A<c62%4c%N-r($t5FFY3 zq)igI&5^R!<0>;X4={Eh_M>FhM8zMuEYpHJe_Z)z6nfk6qH0|0Vy6!)0Vhv>E*5Db z&_s_*-_UOH#^$#2U-`UDi1VK2><s0}GZt7UUXbtFnAMTMGA0p@P$?9ebMDv-H8ABo zJb>i?pC!;X`CN$bFXqA){KL#n#=|P1Vr`bV2i+@n$Abefvw<W55fhL;(<y;n81g^S ze}YfwI}62w>{Ktni4R~uQ~&cyvCrr-v6sQp2Vm~&{i9SDm&ePewk<7VSEYN~$qrV4 zY+OUDk=;jZX>Tz2s-e$11AofVEjkMchQ|gNdRH_7A&PAVBS9x6s-Qrm6fN!OVPJRA z`^V>vYXqHYxmOo?b%<^NSxq?%b>zh|e?m>fhxjoESx##A6Qr5y9w^k|1#Pv`wpuT! z#=D?}+;7|I2gv~+4&d>M_I*hub!-uK9yesWox$+^mtZ!f5fJIs`0(r0y3VK>?POAA zR<OXyMkV&OEgkbbfEFn!$|B6G&oCkJ9B>VK4lihybo=v$Am~z71IA}WOEu4neA1md zPk$@uF3e{)1YBge@JF%lrt=zPwQy5qGU~6$<cvt-uh71)T#K841;N#`>f7<IOW7a) z&4IRvQF}L|rrI2!=0MTX+A>`N08NTJ5!bQ_ad<)P`q_4gY)CKN2@a%BiK9Awr2P?8 z$oW2S8i}K#{kC^zIF9w)X10;-7PP}^q<=d=hA7`d-?z=(0Ew=OHX;3!c7C+lxcNxG z^Han28gM2Pu3bsFQXxY0U+6N~Q5oA&)&sNpyw{8kxzy{rA?j(=8J!ncbi)3{={&K- zzdK{8b!}@$HH4YLH4q5qc5SpX1c*Ki?P|kIqq@97OCtf{LG^8%p0t`aUwq(fYkyvK zXg`&tyRl_GbjgHOl<%3RzB9VX_F)>UR*Q|BvV=AaGKQ%i)Jbg;l=L%>0gEW;3kkgO zuE5E@7aT1fZ3z)F*I-)K1;*_Q?fOeK0e`5h*z@PUM#&}Gd+1)NZy-*y0s|Jn-y?3n zEs||3TEeVO;crXV0E2=;cgkrAdw-QYURFwMX+R&7kf64#{65}nI_Vmb96?f-h1{^p z{C#JOgRPm#-UTE25iLaV9$h#NQi6%L8Zl1Hlblh>fZuIR!TwJ_Rgff}!*nf0LTTo7 zkCR?Om<YBi=9YgE<2Kp5?Tr2k+lb~Z-nbi-iB@i4<;bo0x&vwx#apA*Uw?L!zw6jP zd`glnB!D&4gI!>9lLu3h5h76+K>6>*o}1K%!R`-XPbF9KbFNA>i$DR2Zv{_V>*_oR zoNQlOiW0^STb38PV+;Xs&&eT{s5qGN?OqXQM1TV~muYCSRDQW$1Os@Iy#rr4?MA1f zW?2>Tt3ERSlzd9EBxa$<%zwd2v;r!bkqrR_24dU=c&tIC9`sGVsh5i^DFe?9!dr1( zKk`k+&3zn+<*H?n9W9F2vOvcGrQoFmwP!s;m{H9#3!OQo-rFnI!v!A5)#l1h;)UMM zq=;xMayYFIAlAUvwXn`KgiCl8!7R6hZk$#$Z(WfiYgKG<c)%1lGJoY9Wh6S_m!$7* zsVH=5n?M{;*Sitxtf2mKWreA3($~~(@7Du(nMyI?Dh(TgIY9|CVhO!w28ofolWrjO zdt~`vFjo<){xl2dma2>>prxa-MG;vx_c3^&9-G}B;MCUsbw}4`s`-2#GF7Qj-=hW< zl;q-VQ8xhj8B+TR-G3bL@EKkmcZIr`#F6k%OhMu9D)E|462bfDCZlk>w3Sq}y*k5; z0g%Z|YdaU@)b5DMdb>;#kO05K1^r@`geH0N@$9as)DW)mXTC<yu4~{}HM3&p6zIk* zCHc+Y(of?bhN$fAT=`<n8Q#}433W9U-o`xapGdk-5U$#$uz!;8)G0u^3`dYi_jkjM zKoPtn1zc`irT;2Af|$nLIqw<kz|{}o&@Jj?D9s-6CnBahXpU)v>QoSkq%^wQcpJC< z84o^P89N^UNw39NBql(O339sfE3vgzd8s^MKq|>Wr*K{4Ww9kbm*%G_n?Z*dWWMt0 z69`U1{ln~v@qZZ}LS3^oUmGu!uB(Cv4yqj5#kW4C&<U;h2Ix2)q=IG^-B_c?eWf6z zP;A8~2@a>RliKT;Y9}n*Zqp9?yL4BgMdjU=fcOs$m1_l<loT9J!9g$NHo+1HVS~_S z^_U_060GmVxzDFJHEbS!$<wz@t7rFnjmoRxRnA{xiGPj9o#b@;Hec<xu3(^p9~5{b z>YP9*{9o^x=JA*r4Q--z$*rawXW!D1TKiu)0WVXDuDg$d)an`3-LmTtAO;3Ib2{0? zP&Cm;OhH^z2GGTgU@ejD*Z_~!NeyLqOO4aZ-zfe32*$*$9imm))G~Y*5MjWh2l<#a zv}uY({eMlUV46k$Yd4Z!*k|Ev=}d6eWktwod|I!xt}spSrboy0(hY1=$*tgf$0e`J z>KJF0xR(ri?5QSWPa!<>RT^%QUQ}|`SXpli38sSr2}1mf{4e0k#2z_u>yYk%m7!JN zYL(6Iy|QYtFi`^m^(uG-xi-Ul(U{vRAzj*vCx2EDZrJvix9!#a%Y?%#7&%Vz`}*~l zJAZ8~B4g+=zSVOHiRwOdvJ_;cBHrlg^GILDv-GFy#4QQ;kI~z28hDFxub=GzxB_E; zA+%F|cMU1HyQZcm<?a$qUrne{9nmQQBUs&~`TD^48B%UT!r^Lk_739JM_NQqm$r3j z5Pu-6x4MEgMMbJpyPwQj>x%Pf5lB7a0cF7H)#K<$b{&{!V0o2!@&UE*qdjjc^sIm@ z2?+MSWWVUlsAQcZB~j+$Xj;MUgrCeLo7n%U%*Jb$cUbQqnw@U;;n2uq#W9aaD(O{} zKqekWwDl8=TyGn=Zjj1kbHNJ8Jn;yp%zu0a>ulDexS#FP_~K|2PUwbNJ=(rJ*#($k z04dlm@t7on;G-?<m3|`D-@qTX+q1~K+H=?I!ptHx9UizH`-nzVcw!`dKP();V(21` zC}`Fyu3AwIPjg<Hz(K=VX9K8wCKfQ_Ky+5U-K8tNjCD;NC_8`kiljyD3e-0NoqwW4 zYTY)4n@6k(V1UG$WlOD;g^6aSH<WEvd_JUagDItO<LABk2r=1mIcqI6srBYC>%9ps z&&b>7x2<yoIcWd!e!tuLy)NAXx2_kCiazXEOTm2T@Md$<88SZGejOEI-AqaAbWAf| zYe%&Vy`OW9x20ErIr%|Zz4R#S!GBnrI<LH&#nOzx%w&;9iQRhEGPYLb<?v7bqVT&K z8*pDn#XTMfNos_lPe7=QVPo#=qmA@}hAsdYE7cnNI~?GBAy;@}3qEI1j$6jVL^m}x z!y@BSJZHWCsx7>Q&CrNt8Qe*`XYjKwBglGC8nrW)Yr8-!ZQ@v0aVnsx1b>w7TnJ-5 zu{HGyuwj(9J&VG(sk5?>w>^P5D?7M%{@Fe%Wm_$D)5KcAMf*w(eXH0!6|=N1v4Wrk zIhg?84}Z+RFD2#}Ew-8Z>Y-ktBq1zYrkaSU<!vSVQ3o3|1k#CSn<Zf#Uzl5N*lur{ ze?nC{$X)+Vq3;_`zG_ti+kYV=^VzOk%B6r--jG?^?*BmJ`{Jz9halmz1vjfiI0tDO zr&;5<a6=8W6E}M12UZ->m6;@yi|oq(vG57Df4(aK!m$pR#0DDCXR5l>^O=;EV-we6 z6eRbG9UnpX>sQ?1SKQ9!uaF3L)7GbWNSb7Q7hL#-^`lM2y4O>3&VS%}{aa-EngUp> zGE6c9Zz}J-muZlrVXpl)1LHDImDn>bC7F0@2#yedC<F-}H+;`rF6;-n@&`ax3S+*! z1+8CH#^`5hlH{Q3Ls&U9W)XF$kvjON{=gp~{=*qtlVF2;jBz<EMBOVJxuXph|3IVa zGE{hX!YmcLuF=>aKYvv2{v?B~i^low**enOsYj7Slc+iN6xka8O67^m-l!PZKX-il z2Mye!ze;&P=~nesrlthtJ+#x$s>(6xi}$}=6eoXm9O+)}r}J4t+6!)?ta^{)<IW!e zZgqy72;UW83V!Ua-{c4T{b!@LA3|4)%>|tuQx|T5IsM%15PvO>4PkOE%o>uO?uU-L zIKR-vZ?WqiY9&1(&;xWg>>~!t*6p<6I7KF16ql$m)~oF$mP3D7z9Q`x3L45;Lw4A1 zT)>CFA4bgYG?R9zmTxbzng%Lz&k2&Xa;79|q`nAoxH<HPhup6C>I?X9wE1?5<+#+l zr~gjkc^wWy@qYs0GOhiyMq~adfx^z@?1dyF8=A%=c`~C~Jc_S45yenf6x!Z@qPsa( z3Eit}ONvq97<jvZSlYw%mwmo_Aq5zy=akNO+>`ratra)Ff@q(Wg<ilHi>H_Uj|%GS z!5$9(J&kn>X2!8v*K@*IexT^jtB8GC_GR`IuIWG*dw;A4CP0`<-UViz_hcjSA=4)Y zkV`t{-$~l@0|Pesm6&v%AvHVFrKQ@@IC;5ijhh}2@^`!-LrPku^xK{zYPC=EKw$-r z%&Ocyef6bwRP4)YdEbgR4*0FF7@a^uKD@w4lqJQ}Pto}i=y*qv>74^{VN{aq1pHOp zZvbnZWq)<)-fl?k6{<kTGozIXTA75=wCq_%U)kc>V*vDEUm7N3jA#MMHJ&E$@P!gg zo%#y<JPd%U<&1o(@XSfUJ-C>mwsuF^j>5zzN%7lw{Z`{+QnFXfUa+y-X;eZHbr`#& zMLYK*k-7Yv;73@js6Tvs3`wS4(~CqI+ZWveHh;M+hQT%EXCU|AI&8qz{}7=x(y9iX z2ghAyB;i>xdn=if@iOw~q%ZfUKx5{|2l2fB9}koNB9+ATyaFZu1OI-bi{tou<FtS5 z&A$+0Oz(cZMLo^ktV;kw0@SaL(D~6+EUua*K+0|Nb(+L4o9WoeYu%YZ*$O|K<#0NP z(SPz&8MOS7#Vwn!i&^mG7|SDKx*Kq#`i3wM_NC&}u%XAf=|04%^{+=(yY#x7hadN& zpzuke_Vi^vEze0++Uq@R9sTD^+y6%?Jp7V&p2Trf7(UaQsU|9w0yJ)SbI)(TbLIhZ zt=HwBDcBtE#?03`8UaeCiqY>Sp%KRWCPczlmsfSo+)!r)7Y`}82Ixyz8Z%J1Sp!WW tFQ4uyH_oa%Rs!zd_WF~@F$mpep`bxXe4B6VB9rzLn%|>uo?&*_sT4FJ7N`IK delta 19939 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 diff --git a/static/images/docs/oauth-server/diagram-device-flow.avif b/static/images/docs/oauth-server/diagram-device-flow.avif index ced67950ce6bef01b6fb8337ed3ceed70056f996..e7580a0fd783e4f4e0316ee33d5dcfd3775a90dc 100644 GIT binary patch delta 24343 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 W=poF8B~+Aq^sWe`Y!$xx!j>G(_9%b= delta 25185 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 diff --git a/static/images/docs/oauth-server/diagram-overview.avif b/static/images/docs/oauth-server/diagram-overview.avif index 531e123229903be66ca7eb9f3f9d5618c1e48ceb..b3b0bb33ee2ea88942e72dfffdf77953b99f4e7e 100644 GIT binary patch delta 14596 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 delta 13663 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 diff --git a/static/images/docs/oauth-server/diagram-scopes.avif b/static/images/docs/oauth-server/diagram-scopes.avif index aabd371fc8703389877e58383142bc822bd596f6..0ff8f6dc340296710c6eb04dd929cc73cec37358 100644 GIT binary patch delta 11822 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 delta 11055 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 RzWN6$AYFA)esgFm^j{GPYJdO$ diff --git a/static/images/docs/oauth-server/diagram-tokens.avif b/static/images/docs/oauth-server/diagram-tokens.avif index 83a12298ecbcb0d61342ca6bba4066ee316cba63..19e4daa836a5587a1936970ec396e17d7e993d8c 100644 GIT binary patch delta 20824 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 delta 18953 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 From 70d507709d868cf32670fbcfaf94edaefd2582f1 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Tue, 28 Jul 2026 19:47:32 +0530 Subject: [PATCH 35/38] Update folders docs to include new list folders example --- .../products/storage/folders/+page.markdoc | 340 ++++++++---------- 1 file changed, 140 insertions(+), 200 deletions(-) diff --git a/src/routes/docs/products/storage/folders/+page.markdoc b/src/routes/docs/products/storage/folders/+page.markdoc index 4da4c4ed92..b503b59da2 100644 --- a/src/routes/docs/products/storage/folders/+page.markdoc +++ b/src/routes/docs/products/storage/folders/+page.markdoc @@ -294,143 +294,12 @@ For example, `Query.equal('folder', ['photos/2026/'])` matches files in `photos/ # List folders {% #list-folders %} -To browse the folders inside a bucket, use the `listFolders` method. -It returns the folders directly inside a given folder, or the top-level folders of the bucket when no folder is passed. +Folders are aggregated from the files inside a bucket. +To browse them, [paginate](/docs/products/databases/pagination) through the bucket's files and collect the unique folder paths from each file's `folder` attribute, including the implied parent folders. {% multicode %} ```client-web - import { Client, Storage } from "appwrite"; - - const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') - .setProject('<PROJECT_ID>'); - - const storage = new Storage(client); - - const result = await storage.listFolders({ - bucketId: '<BUCKET_ID>', - folder: 'photos/' // Omit to list top-level folders - }); - - console.log(result.folders); - ``` - - ```server-nodejs - const sdk = require('node-appwrite'); - - const client = new sdk.Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') - .setProject('<PROJECT_ID>') - .setKey('<API_KEY>'); - - const storage = new sdk.Storage(client); - - const result = await storage.listFolders({ - bucketId: '<BUCKET_ID>', - folder: 'photos/' // Omit to list top-level folders - }); - - console.log(result.folders); - ``` - - ```client-flutter - import 'package:appwrite/appwrite.dart'; - - void main() async { - final client = Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') - .setProject('<PROJECT_ID>'); - - final storage = Storage(client); - - final result = await storage.listFolders( - bucketId: '<BUCKET_ID>', - folder: 'photos/', // Omit to list top-level folders - ); - } - ``` - - ```client-android-kotlin - import io.appwrite.Client - import io.appwrite.services.Storage - - suspend fun main() { - val client = Client(applicationContext) - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") // Your API Endpoint - .setProject("<PROJECT_ID>") // Your project ID - - val storage = Storage(client) - - val result = storage.listFolders( - bucketId = "<BUCKET_ID>", - folder = "photos/" // Omit to list top-level folders - ) - } - ``` - - ```client-apple - import Appwrite - - func main() async throws { - let client = Client() - .setEndpoint("https://<REGION>.cloud.appwrite.io/v1") - .setProject("<PROJECT_ID>") - - let storage = Storage(client) - - let result = try await storage.listFolders( - bucketId: "<BUCKET_ID>", - folder: "photos/" // Omit to list top-level folders - ) - } - ``` - - ```client-react-native - import { Client, Storage } from 'react-native-appwrite'; - - const client = new Client() - .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') - .setProject('<PROJECT_ID>'); - - const storage = new Storage(client); - - const result = await storage.listFolders({ - bucketId: '<BUCKET_ID>', - folder: 'photos/' // Omit to list top-level folders - }); - ``` -{% /multicode %} - -Each folder in the response has a `key` (the full folder path), a `name` (the last segment of the path), and a `parent` (the path of the folder that contains it). - -```json -{ - "folders": [ - { - "key": "photos/2025/", - "name": "2025", - "parent": "photos/" - }, - { - "key": "photos/2026/", - "name": "2026", - "parent": "photos/" - } - ] -} -``` - -## Pagination {% #pagination %} - -`listFolders` returns up to `limit` folders per page, 25 by default and 100 at most, sorted by path. -Because folders are derived from files instead of being stored as records, the response doesn't include a total count. - -To fetch the next page, pass the `key` of the last folder you received as the `cursor` parameter. -When a page comes back with fewer folders than the limit, you've reached the end of the listing. - -{% multicode %} - ```client-web - import { Client, Storage } from "appwrite"; + import { Client, Storage, Query } from "appwrite"; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') @@ -438,26 +307,37 @@ When a page comes back with fewer folders than the limit, you've reached the end const storage = new Storage(client); - const limit = 25; + const limit = 100; let cursor = ''; - let folders = []; + const folders = new Set(); while (true) { - const page = await storage.listFolders({ + const page = await storage.listFiles({ bucketId: '<BUCKET_ID>', - folder: 'photos/', - limit, - cursor + queries: [ + Query.limit(limit), + ...(cursor ? [Query.cursorAfter(cursor)] : []) + ] }); - folders.push(...page.folders); + for (const file of page.files) { + let path = ''; + + // Add the folder and its implied parent folders + for (const part of file.folder.split('/').filter(Boolean)) { + path += `${part}/`; + folders.add(path); + } + } - if (page.folders.length < limit) { - break; // Listing is complete + if (page.files.length < limit) { + break; // All files scanned } - cursor = page.folders[page.folders.length - 1].key; + cursor = page.files[page.files.length - 1].$id; } + + console.log([...folders].sort()); ``` ```server-nodejs @@ -470,31 +350,41 @@ When a page comes back with fewer folders than the limit, you've reached the end const storage = new sdk.Storage(client); - const limit = 25; + const limit = 100; let cursor = ''; - let folders = []; + const folders = new Set(); while (true) { - const page = await storage.listFolders({ + const page = await storage.listFiles({ bucketId: '<BUCKET_ID>', - folder: 'photos/', - limit, - cursor + queries: [ + sdk.Query.limit(limit), + ...(cursor ? [sdk.Query.cursorAfter(cursor)] : []) + ] }); - folders.push(...page.folders); + for (const file of page.files) { + let path = ''; + + // Add the folder and its implied parent folders + for (const part of file.folder.split('/').filter(Boolean)) { + path += `${part}/`; + folders.add(path); + } + } - if (page.folders.length < limit) { - break; // Listing is complete + if (page.files.length < limit) { + break; // All files scanned } - cursor = page.folders[page.folders.length - 1].key; + cursor = page.files[page.files.length - 1].$id; } + + console.log([...folders].sort()); ``` ```client-flutter import 'package:appwrite/appwrite.dart'; - import 'package:appwrite/models.dart'; void main() async { final client = Client() @@ -503,32 +393,43 @@ When a page comes back with fewer folders than the limit, you've reached the end final storage = Storage(client); - const limit = 25; + const limit = 100; var cursor = ''; - final folders = <Folder>[]; + final folders = <String>{}; while (true) { - final page = await storage.listFolders( + final page = await storage.listFiles( bucketId: '<BUCKET_ID>', - folder: 'photos/', - limit: limit, - cursor: cursor, + queries: [ + Query.limit(limit), + if (cursor.isNotEmpty) Query.cursorAfter(cursor), + ], ); - folders.addAll(page.folders); + for (final file in page.files) { + var path = ''; + + // Add the folder and its implied parent folders + for (final part in file.folder.split('/').where((p) => p.isNotEmpty)) { + path += '$part/'; + folders.add(path); + } + } - if (page.folders.length < limit) { - break; // Listing is complete + if (page.files.length < limit) { + break; // All files scanned } - cursor = page.folders.last.key; + cursor = page.files.last.$id; } + + print(folders.toList()..sort()); } ``` ```client-android-kotlin import io.appwrite.Client - import io.appwrite.models.Folder + import io.appwrite.Query import io.appwrite.services.Storage suspend fun main() { @@ -538,32 +439,40 @@ When a page comes back with fewer folders than the limit, you've reached the end val storage = Storage(client) - val limit = 25L + val limit = 100 var cursor = "" - val folders = mutableListOf<Folder>() + val folders = mutableSetOf<String>() while (true) { - val page = storage.listFolders( + val page = storage.listFiles( bucketId = "<BUCKET_ID>", - folder = "photos/", - limit = limit, - cursor = cursor + queries = listOfNotNull( + Query.limit(limit), + if (cursor.isNotEmpty()) Query.cursorAfter(cursor) else null + ) ) - folders.addAll(page.folders) + for (file in page.files) { + var path = "" - if (page.folders.size < limit) { - break // Listing is complete + // Add the folder and its implied parent folders + for (part in file.folder.split("/").filter { it.isNotEmpty() }) { + path += "$part/" + folders.add(path) + } } - cursor = page.folders.last().key + if (page.files.size < limit) { + break // All files scanned + } + + cursor = page.files.last().id } } ``` ```client-apple import Appwrite - import AppwriteModels func main() async throws { let client = Client() @@ -572,31 +481,42 @@ When a page comes back with fewer folders than the limit, you've reached the end let storage = Storage(client) - let limit = 25 + let limit = 100 var cursor = "" - var folders: [AppwriteModels.Folder] = [] + var folders = Set<String>() while true { - let page = try await storage.listFolders( + var queries = [Query.limit(limit)] + if !cursor.isEmpty { + queries.append(Query.cursorAfter(cursor)) + } + + let page = try await storage.listFiles( bucketId: "<BUCKET_ID>", - folder: "photos/", - limit: limit, - cursor: cursor + queries: queries ) - folders.append(contentsOf: page.folders) + for file in page.files { + var path = "" + + // Add the folder and its implied parent folders + for part in file.folder.split(separator: "/") { + path += "\(part)/" + folders.insert(path) + } + } - if page.folders.count < limit { - break // Listing is complete + if page.files.count < limit { + break // All files scanned } - cursor = page.folders.last!.key + cursor = page.files.last!.id } } ``` ```client-react-native - import { Client, Storage } from 'react-native-appwrite'; + import { Client, Storage, Query } from 'react-native-appwrite'; const client = new Client() .setEndpoint('https://<REGION>.cloud.appwrite.io/v1') @@ -604,35 +524,55 @@ When a page comes back with fewer folders than the limit, you've reached the end const storage = new Storage(client); - const limit = 25; + const limit = 100; let cursor = ''; - let folders = []; + const folders = new Set(); while (true) { - const page = await storage.listFolders({ + const page = await storage.listFiles({ bucketId: '<BUCKET_ID>', - folder: 'photos/', - limit, - cursor + queries: [ + Query.limit(limit), + ...(cursor ? [Query.cursorAfter(cursor)] : []) + ] }); - folders.push(...page.folders); + for (const file of page.files) { + let path = ''; - if (page.folders.length < limit) { - break; // Listing is complete + // Add the folder and its implied parent folders + for (const part of file.folder.split('/').filter(Boolean)) { + path += `${part}/`; + folders.add(path); + } + } + + if (page.files.length < limit) { + break; // All files scanned } - cursor = page.folders[page.folders.length - 1].key; + cursor = page.files[page.files.length - 1].$id; } + + console.log([...folders].sort()); ``` {% /multicode %} -The cursor must be a folder directly inside the folder you are listing. Passing any other path returns an error. +For example, a file with the folder `photos/2026/july/` produces three folders: + +```text +photos/ +photos/2026/ +photos/2026/july/ +``` + +Scanning every file works well for small buckets. +For buckets with many files, maintain your own folder index instead, for example in a [Databases](/docs/products/databases) table that you update whenever you upload or delete files. # Permissions {% #permissions %} Folders don't carry their own permissions. Access is derived from the files inside them. -When a bucket uses [file security](/docs/products/storage/permissions), listing folders only returns folders that contain at least one file the user can read. +When a bucket uses [file security](/docs/products/storage/permissions), listing files returns only the files a user can read, so aggregating folders discovers only the folders that contain at least one such file. {% arrow_link href="/docs/products/storage/permissions" %} Learn more about storage permissions From b95c07af4a04cf42eae062f0d7fb074432dd7e7f Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Tue, 28 Jul 2026 19:55:19 +0530 Subject: [PATCH 36/38] docs updates --- src/routes/docs/products/storage/s3/+page.markdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc index 4a61b38b45..9bda99c7bf 100644 --- a/src/routes/docs/products/storage/s3/+page.markdoc +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -17,11 +17,11 @@ Configure your client with the following values. S3 clients authenticate with an | Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | | Access key ID | Your Appwrite project ID | | Secret access key | An Appwrite API key secret | -| Region | `auto` | +| Region | `auto` or your project's Appwrite region code | | Signature version | AWS Signature Version 4 (SigV4) | | Addressing style | Path-style only | -The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same region you use for the rest of the Appwrite API. The S3 `region` setting is separate: some clients require a region to sign requests, but Appwrite ignores the value, so set it to `auto`. +The `<REGION>` in the endpoint is your Appwrite Cloud region (for example, `fra` or `nyc`), the same region you use for the rest of the Appwrite API. The S3 `region` setting accepts `auto` or that same region code; some clients require a region to sign requests, and either value works. The examples below apply these settings in the AWS CLI and the AWS SDKs. @@ -160,7 +160,7 @@ Because a new file ID is generated on every plain upload, uploading twice with t # Folders {% #folders %} -Appwrite Storage buckets are flat. There is no folder resource, and folders are never created or deleted on their own: they exist only as `/`-separated prefixes in object keys. Uploading to `reports/2024/january.pdf` stores a single object whose name contains those prefixes; it does not create `reports/` or `reports/2024/` as separate entities. +Appwrite Storage organizes the files in a bucket with [virtual folders](/docs/products/storage/folders), derived from the paths of your files and never created or deleted on their own. Over the S3 API, folders appear as `/`-separated prefixes in object keys: uploading to `reports/2024/january.pdf` stores a single object whose name contains those prefixes, and does not create `reports/` or `reports/2024/` as separate entities. To browse a bucket like a directory tree, list objects with the `/` delimiter and, optionally, a `prefix`. Appwrite groups object names at each `/` boundary: names sharing a prefix up to the next `/` collapse into a single entry under `CommonPrefixes` (the "folders"), while objects at the current level are returned under `Contents` (the "files"). From edaecc4fb3eafe77b67c8f51ff67d38331e113d9 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Tue, 28 Jul 2026 20:02:19 +0530 Subject: [PATCH 37/38] improvements --- src/routes/docs/products/storage/buckets/+page.markdoc | 2 +- src/routes/docs/products/storage/s3/+page.markdoc | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/routes/docs/products/storage/buckets/+page.markdoc b/src/routes/docs/products/storage/buckets/+page.markdoc index 004f9b2691..bb206a25c6 100644 --- a/src/routes/docs/products/storage/buckets/+page.markdoc +++ b/src/routes/docs/products/storage/buckets/+page.markdoc @@ -23,7 +23,7 @@ You can create a bucket by heading to the **Storage** page and clicking **Create {% /tabsitem %} {% tabsitem #server-sdk title="Server SDK" %} -You can also create tables programmatically using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/security/api-keys). +You can also create buckets programmatically using a [Server SDK](/docs/sdks#server). Appwrite [Server SDKs](/docs/sdks#server) require an [API key](/docs/advanced/security/api-keys). {% multicode %} diff --git a/src/routes/docs/products/storage/s3/+page.markdoc b/src/routes/docs/products/storage/s3/+page.markdoc index 9bda99c7bf..91199ba61d 100644 --- a/src/routes/docs/products/storage/s3/+page.markdoc +++ b/src/routes/docs/products/storage/s3/+page.markdoc @@ -164,9 +164,9 @@ Appwrite Storage organizes the files in a bucket with [virtual folders](/docs/pr To browse a bucket like a directory tree, list objects with the `/` delimiter and, optionally, a `prefix`. Appwrite groups object names at each `/` boundary: names sharing a prefix up to the next `/` collapse into a single entry under `CommonPrefixes` (the "folders"), while objects at the current level are returned under `Contents` (the "files"). -Grouping is applied to the object's name (the key you uploaded), so folder prefixes come back clean, without the generated file ID. Pass a `prefix` such as `reports/` to open that folder and list one level deeper. Listing without a delimiter returns every matching object with its full name, which is how you enumerate a bucket recursively. +Grouping is applied to the object's name rather than its canonical key, so folder prefixes come back clean, without the generated file ID. Pass a `prefix` such as `reports/` to open that folder and list one level deeper, or list without a delimiter to enumerate a bucket recursively. -Objects under `Contents` are still identified by their canonical `{fileId}-{fileName}` key (see [Object key mapping](#object-key-mapping)); use that key to read, copy, or delete a file. `CommonPrefixes` are folder paths only, with nothing to download at the prefix itself. +Objects under `Contents` are still identified by their [canonical key](#object-key-mapping); use that key to read, copy, or delete a file. `CommonPrefixes` are folder paths only, with nothing to download at the prefix itself. `/` is the only supported delimiter. Setting `delimiter` to any other value returns `NotImplemented` (HTTP 501). @@ -262,12 +262,12 @@ The S3 API targets the operations most clients depend on. Keep the following in - **Path-style addressing only.** Virtual-hosted-style URLs (`https://<bucket>.host/...`) are not supported. Enable path-style addressing in your client, as shown in [Connect an S3 client](#connect-an-s3-client). - **Signature Version 4 only.** Requests are authenticated with SigV4, and the request timestamp must be within 15 minutes of the server's clock. -- **Objects are addressed by canonical key.** Reads, copies, overwrites, and deletes address objects by their canonical `{fileId}-{fileName}` key from a list operation, not by the raw key you uploaded with. See [Object key mapping](#object-key-mapping). +- **Objects are addressed by canonical key.** Reads, copies, overwrites, and deletes use the canonical key from a list operation, not the raw key you uploaded with. See [Object key mapping](#object-key-mapping). - **ACLs are compatibility responses.** `GetObjectAcl`, `PutObjectAcl`, `GetBucketAcl`, and `PutBucketAcl` return a canned private ACL and are accepted for tooling compatibility. They do not change access. Manage access with [Appwrite permissions](/docs/products/storage/permissions) and API key scopes instead. - **No folder resource or folder markers.** Folders are virtual: they are `/`-separated prefixes in object keys, browsed by listing with `delimiter=/`. See [Folders](#folders). Using any other delimiter value or uploading a folder-marker object (a key ending in `/`) returns `NotImplemented` (HTTP 501). -- **Large listings increase latency.** `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped. For large buckets, prefer `ListObjectsV2` with pagination. -- **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. +- **Prefer `ListObjectsV2` for large buckets.** `ListObjects` returns every matching object in a single response, while `ListObjectsV2` honors `max-keys` (capped at 1000) and paginates with `IsTruncated` and a `NextContinuationToken`. No objects are silently dropped. - **Unsupported S3 features.** Object tagging, CORS, lifecycle, bucket policies and policy status, encryption configuration, ownership controls, notifications, and versioning are not supported. Requests to these sub-resources return `NotImplemented` (HTTP 501). +- **Custom file IDs with hyphens.** The canonical key is split on the first `-`. Objects created through the S3 API use generated IDs without hyphens, so this only affects interop with pre-existing files whose custom ID contains a `-`. A mismatch returns `NoSuchKey` rather than the wrong object. # Error responses {% #error-responses %} From 29da59a5e62715b9dcb775b6ced9fca3ae5c2021 Mon Sep 17 00:00:00 2001 From: adityaoberai <adityaoberai1@gmail.com> Date: Tue, 28 Jul 2026 21:56:51 +0530 Subject: [PATCH 38/38] update stardust storage announcement --- .optimize-cache.json | 1 + .../blog/author/torsten-dittmann/+page.markdoc | 10 ++++++++++ .../blog/post/announcing-s3-api/+page.markdoc | 6 +++--- static/images/blog/announcing-s3-api/cover.avif | Bin 0 -> 6668 bytes 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/routes/blog/author/torsten-dittmann/+page.markdoc create mode 100644 static/images/blog/announcing-s3-api/cover.avif diff --git a/.optimize-cache.json b/.optimize-cache.json index bae6e30d52..6dce77d890 100644 --- a/.optimize-cache.json +++ b/.optimize-cache.json @@ -244,6 +244,7 @@ "static/images/blog/announcing-realtime-queries/cover.png": "2e11ad5d30399bced1817ce0edb6d266cc57a70955d2102af173d26461c9bf57", "static/images/blog/announcing-relationship-queries/cover.png": "7e615c0a9dcbb3949d5fb7ed71f36bb44de40ae67c8cd832b96ff5bbd4b0f451", "static/images/blog/announcing-rust-runtime/cover.png": "a203fe2ef16c40592813ae7efb3c746d4250e68414c9b7d763893dae264f61d7", + "static/images/blog/announcing-s3-api/cover.png": "ec31c0613b86ea5d249f076056fee1b9fbf6ad69dfcda0a8622aa5e84bd9130c", "static/images/blog/announcing-screenshots-api/cover.png": "56555006946b9ead5cd4258544b6a9dda44bce6841706749f7539bc31356383e", "static/images/blog/announcing-self-serve-baa.png": "b66eb0be9b323fb4b28f16218887a463bd1d45f7838c08d6d49e4822a6f95609", "static/images/blog/announcing-self-serve-baa/enable-baa-modal.png": "b07c61f88fad334847c9c7c918511485fb85d682b2dfde5231f81925bc7475ff", diff --git a/src/routes/blog/author/torsten-dittmann/+page.markdoc b/src/routes/blog/author/torsten-dittmann/+page.markdoc new file mode 100644 index 0000000000..2834310265 --- /dev/null +++ b/src/routes/blog/author/torsten-dittmann/+page.markdoc @@ -0,0 +1,10 @@ +--- +layout: author +slug: torsten-dittmann +name: Torsten Dittmann +role: Product Architect +bio: Open-source and the web +avatar: /images/avatars/torsten.avif +github: https://github.com/TorstenDittmann +linkedin: https://www.linkedin.com/in/torstendittmann/ +--- diff --git a/src/routes/blog/post/announcing-s3-api/+page.markdoc b/src/routes/blog/post/announcing-s3-api/+page.markdoc index e714ce11a2..1518735f91 100644 --- a/src/routes/blog/post/announcing-s3-api/+page.markdoc +++ b/src/routes/blog/post/announcing-s3-api/+page.markdoc @@ -5,7 +5,7 @@ description: Appwrite Storage now exposes an S3-compatible API. Point the AWS CL date: 2026-07-31 cover: /images/blog/announcing-s3-api/cover.avif timeToRead: 5 -author: aditya-oberai +author: torsten-dittmann category: announcement featured: false callToAction: true @@ -48,7 +48,7 @@ S3 clients authenticate with an access key ID and a secret access key. Appwrite | Endpoint | `https://<REGION>.cloud.appwrite.io/v1/s3` | | Access key ID | Your Appwrite project ID | | Secret access key | An Appwrite API key secret | -| Region | `auto` | +| Region | `auto` or your project's Appwrite region | | Signature version | AWS Signature Version 4 (SigV4) | | Addressing style | Path-style only | @@ -127,7 +127,7 @@ S3 buckets map directly to Appwrite Storage buckets, and S3 objects map to files This means files created through the native Storage API or the Console are usable over S3 too: list the bucket to discover a file's canonical key, then address it with that key. -Folders work the way they do on S3 itself: they are virtual, existing as `/`-separated prefixes in object keys. List a bucket with the `/` delimiter and an optional `prefix` to browse it like a directory tree, with folders grouped under `CommonPrefixes` and files under `Contents`. +[Folders](/docs/products/storage/folders) work the way they do on S3 itself: they are virtual, existing as `/`-separated prefixes in object keys. List a bucket with the `/` delimiter and an optional `prefix` to browse it like a directory tree, with folders grouped under `CommonPrefixes` and files under `Contents`. # What's supported diff --git a/static/images/blog/announcing-s3-api/cover.avif b/static/images/blog/announcing-s3-api/cover.avif new file mode 100644 index 0000000000000000000000000000000000000000..a0e82110d29383c53f9776dbd516ae7c5f8ba8bf GIT binary patch literal 6668 zcmai2Wl&sglf_*E3@(F9(81ja?!ny|ba2-Y+}$O?U4y#@*AO7MLx5nxVM*S4zum3< zv0Zgr&gpaS?Wdk!4Fv^7V(IDyF>wc5LcN+j*b?+7w+EZN*3b}p3s;jr_^VM^o7*}6 zlR`m3z-F%h=Kn?v2-wyBZvp-4Il*?0W`8P4Q79OwKL`|b@;?y@3jgI5do{wOe-S9J z*OC_ucKG`ne_7nu!s2h+tJ=h!4fIFx-{33rFIWSHI742^NHE0A@in5ExPv5uX#Q#e zU>AtRA0-qN{ObcV{p#L8z@Feg2rLp3(rfsqAD-k7^g6{q9P}TC*Tl_J;t%ZR?7(ji zv9S8<#QDv@W)OZCFBew}dl&xK9<UwQ#Mz7A#13Np_q<5K5c|K$tMqkx*dQ2KC>Xd9 z82HdvfC%ht@z0pApL-SC{XL-9AqfKQ%}rdfp-@oxY^<L0`e2CA$=Od?r7h&4&_Hki zD4JKX-&cMU^|rbPz7HQ)G_~Yqak}<Tl*2CKbP0_1#o{T;xIT$yqyBf_Jt+TwSIGb2 z>X8&-ZwrbPq5A?`>&A2UhT<!_urv>Q=B;=n(|j<zG1zoWy1RHZzkpl=#q$VC-?)lh zSIOa7ru9qC8pbnqhqJEICA8Q7az<O(oO@OSGw`DK99+ym-4M!v^Q9z=<51P#kJff9 zn6*c`{m7OMoWRA%MNyzqo%v3Lpqc7}gA&#@K|Bl6$Lc%>a*|HrD>LNLHkpo^#raCY zxKqN=mxh<2h#tqxQ=>WUL_rvD!K7=por8JgyzI(;qm_Cuw@7C0iQ+DMHAAU-#O7Zj z1k&EKJ!t3Dhkz?!?R{M-bx|+Yp}%lvfB!fnPIuU9d!N&6!|YLlc*yM7kri8sk*VY1 zvza&dX*@S&X^U+wsDeVEbJ%oFD7+9jqIyvha4x18vRy1Vo_70o1$JOX>X@|Vq%0{R z2_<J-SNR<@5;?e176Yx5XTFQ3_AIZXi^iE7ZAdldcuU4CSF5efH>+Sg+s%2-zYVbg zl9(})$c?i6#Xt;Qw8SwvOr;?Ps{w~eZl<uhTIIuq@V!nN&WsohEzku1o4?5CI{sjd zbqZKUKD+5?vi4E#6-H%IXWo8;btdJ83wo3Zwa(DsI%dYuGbfHIHd}=xMzQ+uU1mch za;qn(;auu%E)mrMyJF==j^xU-(R*He*+?%Zfrmq4wOi8D4xS^<O~ZqzWER$|a4=U? zK3;8L9aA=v>?d*)pW7^lPUxI(zR^3EE!k<82s}F0=SO<eZi%<2X@-)Xk)IB##ru+? z4=`IHwU{F>hDm_}xK*E}B_c;bU1Gzq<0^Ji)xsXuSuEQv?SmYejPwr*sIKk$n=N}; z#vvql#ttv~MbrRX<DtGlA~-BEHMhiaN*Q3S3LEV6`fcc)!#(_4y}-!*6W)Bco8Q_W z)=s8HJ7e7CN>RES363)h*Dh2J<8@;g4=8&Jwz#zVN1(LJp$9{Tjzo%bO-w5I4i4&b z#~iyoy@bqjPzbU*pY`A3r~jg%N&o?&Ts(Xhw9Or~mKWQ??{x%;Cc*6V7*gJKwuF1x z;7dpNSXTPx7vn_r#wG)Kh5fxbh0j#i{p<ZmIUE?n(B40G(yp~B7e3FwXKY|8W+;}2 zR1ID>ZkuDxrH43_)W=#VJSR&gqyPT+7&n40yDa7w{fK(y^Z*J$--{pI&v1$fkTMHl zkO{yJ@u|yF9VpAwsjBhpQQ%_o=TTMNGzcUd0q&K-z0Bpu%x7PHrNKBV-b~zCeK^WQ zTp-~t0Uta5knJi}fFOJSeAuAwfFxIH5a@I1iddxva1hG5`c$6@At01rwhgXVtG6Ku z*0oIt`48;HI7Jyq<lUY01u6ML8@@}@AUC=!*302zLB2+wj$m`NlWUB;9+p`z7_bkf z#q_%R%GNQAxD}FI)3y=P#OEFTZ1HjNsgZRz!wmoNS<Hf4{N>DDw$~js;C_45a`(`S zgyA&gN|Xl=EzrbE1Zis|Xo6>%>*8&9h#rw?Yj8y7>yfr>1d#icrs~^QCei~mwTU!4 zzNqUY`QxXPUHd&~uU0?$qNojbR4|XDM#4-IWR6vj1qoj3wI;v-%-wuR{JLzE-Edgo zby~N+2V(7A^0Fd4uttfMWM8=)C0HoLE1^~ed|pWuZBX^>mG?JmV&|Xz){|!|WnK6F z@;88`07Q3NMCHvGVkT4OxSCd^9tx#A6NY|yIRvFM^uq(r&r*!_5DgqGN(t&~+kPWd z7n8DH7>G2TkOmi!j;(8$XU#-!Y#cMYp=&kQJSJu?H8qrddOR(yiBN<x!!M10e*}_> zxaUgrYXf2bP&<y98jBV+)aE!bdn~BkPszGjg{w1AgJ`9XDrvZO76xXDb7n_P^|%$p zPea^pX3h`rs;@yV>@5?PZ2R%9o8R(o&zFuwTps&#Z@ayNV;<j7Q)|L$)~f{BkL!Zk zO5JOyIXiUd<5r+Ilf)q8mC|uYCqR1+(+K|5=+&Ol%QbGb2l<IB#K~MId?BAbL1;b} zqHgGf6`6qjw^$n2kp{&i95j#PsMu3v)ur`^vAj34h3m1CN%H$E5;L~%zdfjA^1iS1 zgPgBZ`Yw#r5eqj9S_`E03Rp2@n5u^TzzBQb$(5D3;%3e$UQlmqBU?)j|G4mNc;b;j z;C!tqgdpX9fbb}gd-~asBER>fiI1EPmSpk`&g_^jY!^I|7EY4#(DaFDjp8Ri?v=(g zs(bRZmM(%`eWCa#I#N^_?iQ@RomRB4&O;Xom4x&HkMJ$n{?B1`u;6l553ez4b{=+Y z+LOM6D72D^Jv@ZYP04QCWS-v6<4>wzoV|=fl*ieC@u~#!Xpe%BtLZTplWUwBJ|5%( z<)566k>XiCtJQtvf>Vnh0iId!j9V7`x-!*2<;KEECx7kjj&q$6EW1qP!Www^_}&w^ zF`bdhE!@*G5N)OkiMN;`Z3v2WtKfW}7-RXw1}mXyj2*&+mjwchG1nFW_}CbRSHjPs z$Z~)3ALnAigh}k=N2(|PtO`sJ)Fe67QN-vY`DIfJ@yM^YCvidH6QND3G2ND6i#C$E z9ctdrF9<kRK_4}z=_c;EI^{q-T>WHx;p&_6!Ee$_3L-EE?hlhGsUEtgcC#UAmh30z zM5^@7G|_gRP!g<ia;S*wV+Jl$#Chi*51#q1-X4695m}QFcsE9txt)r?Tz<?=a=<Cx zGrI)E-RVfziQpc{pc%u{lxS-Fw%lD01px0#Xu(T4-4KyI(7#?tqvOH;;*F<=D`dUk z46Y08;>03|o*T<mX5yU0Noy-DGj$gj5p;#NPjN(C=3emO$2%MfL2fPL(rtNQn&fY^ z=<DHkOJaCD<IT|BG$Q7BDYyol_-~iF&^`zoB4`&{rt<gmm@1wU^NzO|tL1QQS}~+o z;<k8%Plq0HS{V9sdRBPG=DY~arfErCw7W>OxQq<d+q|<oaNFXGs93x}pu>Stz>13` zk}ucDp6{to@nbMH`N^(*ktSx6lsR{z6uy8@OD%ZHGLk&29SL1}XW6TWxfHZ-n;P)^ zGbEg&UDd+wOqJ`*e5<B2GQPfQfWD-ru;M`$=l0up>cjhu3lr+Wj#Xk)2hxPdk_Cme z%ck~~nE9p!LFx{tn7lX?IANHQ#0dJ#o(yR9iJJh`U>cdwVidKbez7CT@9%zha_J;H z>O7~gpIn;4R9IDaAraxEtFsO+cY`>L2qIo6&h`zxWCuz^Ofe#SiNtdw4Sjz9#%3*n z-m<(yjwLfeNvXQb`UtG*m20r|tVWAwR+=Ovaw9*b-3TkDx2B|xi5LH@b1H2m*rBBH zTe_do{a789jrhmUWg)BG;O?aA)dU!UbcZH2As4;*?EGQeW9PKYrx_qjB8neZCXoiW zwL4{~L`(hKuWTZ0qOeTt-}S=Hrd~$1Z=&M-u+h!;41D#@_jmZMvj)(X6&OfW2ka?F zpbFsVq)&@#mO8{fC<&I{6o7*0we+?7x8AsDd3mKz2JlP{<m0Nbf%r-^L8kCG(|H2l z%-@@VU?V#&CVJNL@)PaaWDmsva3e;GB&g|*Ruvq=AXKT=j9D_<Coh3#z_h+hj6J`5 z?B@P1#k)g#vCFueusq4_#FC~^UoWd`0PDe+Z2qaH?y<$>cOf5H*_`S!10*gq#>=|O z5cOXJ?2!j4dO34HjU{5e`pr4`OD@Al&>#6CDXiLnApw|F0gg)__#IcfeArnw^u*Ms z$+U|^40s$B3$3H&Doy2X`rz%bk<|hqj7iQb+XN1}aBT^-l5kZGMa#m8NHbnsR@#{w z3u7L2zS>u6TO3S!D~?Gf@r~8NQ+ot7mNsiQ3rb9T^7<w6eexQ!OoR&~EwVaC!ixsP zEp-9nKT}3z6i>+R3lHGOGUb540M#|XA_KaA+!?&5gi~4`eNzAcX@-DRMQkx~aE!<% zU6<jfADXhnbh3H5bx@wip$2T~{lG@7N?rTy0ieQJjV-lZ(i8z8W5(9#&F+YpjX}Q+ zB);yz{IH<~I+q02U95esDH*uGC4k?8>D+?g>1^kn7KBXVO?yd1BxdT!l0~*Vm|^%B z%>vx}XTak3>b}QB&Z`lJdgJpeu-pj@yPpD1ErsVJ7`Wg^J_kRtxBxBVo%%UzYie%6 z5g(38WGWtU2e5Hri>|L`%8eL~C<X=^GSLxI3QKqavcZA#SeOw}qZ!C^2Vvsv{Z(DR zhoO1j2%23mlalmkgT6D`pEmX{GA`hZ&m<tjoKB`s!8tB}Npyjn>kc+2=ly8MC#=oV zG0l3jkUH4Jgj6=qbt0@x!wuZe>+c`t%YQmKQKx-Rsd|RCAxqUg#uzMyTl_KEJ#)Hz zGwFcl>GRX-2${}>=9;rw4C-d*&JBa1$2FIBaIw|9V?#E}k_Y^bQ`wa%Z0qJ8P`7un zfP~$$e<+t=&C4mr`wh$=sl%aC-t4@_-O#fI@EjLs-+H|LjDNyxAR9*0u1mX*?hIN& z3sV>nu2rlv7m<Z;SpO<7$IJ)wYlczK?S0>@4yqZYAx*P0hA^3&X`(R~gyLgF*bU8l zNGQSGAz%2{X%S-<yo|RAK)$q4%>LNHFE87RC&>*q2;x7}iCSL1lDtiOW29DDT0DKz zJxMn@nOjk5V4b$Kur!aCjN`h8OnqTzkTfzFCKo(|-R|DoLtY_0A+~#wzP{gi%+|0L zG9Ujg!1TyfzDz-9x|o}R9`PWIOuI@jqp{zO_Up~p2aJC5<Z|)soC{mm>}*#9Etfv! z-u&x$x2Gg#D1<#4AvTOUVFtAB4vpt&9?(eRodu0EFq$mMVq3$Hi<MeQP|RC6AwD}A zG0%FHFj8-!b=5&jPL1L$9-Sr&>7!2KfoqV<J#1w}=g%+pq$|7p?@MdvRgEp$U+NGe z6>VcIqKv#CB}9^`u8S-KbTL+iN}B>|!xR99p5_WHcj8^&Q^{rOV_;$}rAg16)IxU$ zB?I+ACR%8_t`fc}Rha*DVD*#2M#Q?)8~?nm4)qIf>^N@ID>It-WYn8fakQ8Mn(jnQ zNr&I2#Q^~cb5R8dZAKsK-9IJMLSQ#+0FE*(zng|O@YiK%gY%tV#Af57x(&WxjG4%^ z>%-duH{RjcHJp?m>(U_>@A}{TVs7C5#LdDyu=uuqdNqiQo((ks=`@6AoB^V<UYDpT zbo*`<E;8ZNWU2KCPh@>^j|V?ksCjph9fglB1?f&5TO|0pGm&--V()(pA601VJO$On zqgGfq6V&MhvTYmbiv?s|DUM#F?v@}d2xp6JB9ePY)%q>r9<{<Po=TWE*mWf#gzy8Z zYQkYJLNnY{aqFjnOkF8*4#Nx=<Ax24vGaUP-PWnO&Wo%B)Vl&6-;bQq9Mgk7PIw>b z1u*Kdzhty?#s#&}GjHq=eK1USwcBKHk!LZ8%c#W&4C9kA7_0ZD>NNTo`2j$+Q_nJZ z`+)h}<QJuO3Y!ntq(L}!JN*R{*ps&Hcbi$Wx_Qre8L_Wgvai@hgK8;|_l=Y{sDTp) zT{>9DV176%ZSSg#;w3v<F@=2|9fB`2yTBtnm{A@Y$Zk$oHcIJrRzlj8@!iw!*@<_? z!GvghS;yRgr=$DRJg&7b>gmO|=;p}ly35tnmS5P2vE47e!aw#a*2MKV$K&S};{%F| zu8Ql(LR8vu1BM2Scgcn&8NQq+Q(<WgE{fGq%0%YzhX~=XFRj9C%yJUhi?CBPJNPl? zH6B~a;t{VK`LTurSxMMGTTKNH!>z57io6}2=Kt=bLZsCxCcQvnL1E_QXQh5_r@!|# z@>bI$ydVgJR<eE<U-{%hHD^ztuiJni(HkZ3ngyF67t4O@IR(IY(D<qJq>H?J_T?o) z)$=7g#oBtwW-HlS@i5MK?Im`u^|lTaf8|DJlIu^p`zw+!{Z6(j!vn+cF~#g!HbebG z#BvY`PGq;5(y}tclkL(HT@~TVj)rFbQ|NOlG+S8Lbpy#-MnPP(&95EdgZ(PcTp2M0 zUH|wKN%x~O{myp|Y0}23*E8@6<5i(e!%aAGC0ujA!}l%sSm%G=`Tzhw&EWeifo7`9 zOp}1C$zpn+Ud5C?{fn>+zdgcjuMjD51Tqdj_s?+j?B|r83AtQ4#0-2pqPbN=K1mt4 zs_zv?2iqF-9jl}6h7t0Ur2?G}tl1Onva5RXB`UbB^fAi53&vbMmG04h<4JU47#F|o zK-8srNUswR6Xt)<MI)$&o&v{H40YLg5<jwwjPM2^aT~=%$z~;vnRllM?B{kut&}RG z-K@RReB>HL&Q?S3oY747qHzj_BvzjFJiamJ-(BeZJVrH2!L7Uor{CQ$DlNg!a!X%C zA{beu1)gf?)~8Gu6F8GWLADS-T4H4$$75u}*YkP%DLkkL1AQmWknJwt16$b#N6m6P zd3(;Z8lhZdrx4tfyqJx&p&;CDypN9GKKFXt!f!ey!7B@DhEu6Z-YhnosYb?m%z@u> zUT~mYmsrPsxghD=ysHSj3&ChrAuhOw+c^Q*(rGL}$T;)5)^i*c`t8xGxp(=Eu#T)1 z(B}uEH5j)=B2>q1y0r4e$dz8wWk2;~Rm=Z^q@%44%W7t5H%3n4{C>X<9P~52oit!d zP59aj-(j-Jx#J`;zO~8nm_{G|VYN4$pcodc4pp}?`-9aY{ayxhJ57{6P6=g7Y#kmS zbV;fT88+*<L=EmeEv4BQ9T{v75G8)>!nyatq|hRQ#fg`aGO^(SxxjP1*bX;*#XLIa z0$qPv9%uL6XY-uDymiy@KK7w~GDMyr?g$M7hC;BasQgpHjeKe<15;<#n`pz%gyiS= zm=#+I7@f(Y5@0sJ%RYabeldb(y3>ZiDC@FWO7snFI{q!I#4DmiJRzhLQ>}eo9&}vZ zHdPlnv?HGmE!P`}N1BC1)tkn{)sR9Z;;rhyT~1$WqMIo1+J?tEhDgS7Bv=YeTR-~w zcEu4ngw*#lLdPm4thTtkBk;kK<MBj}oS9{b({6!U@9kc*kn$ZtU^%Blb0ZL#)a@v1 z?G6LP=#}+nTas_sV)FLE5^0k9LGt#@b<?|g?X$0_aBJC=VXl_paanJ4y9_JH#KCaW zB;wh-&AQnGfao>O@7bL#p_aqn*I{=ex2Iv}78oBxbRtzIRJ;75pa+<#)`k;XNz5Fq z%T*V|u~ao$UN#V_Wz@fA3J1C@#tNB^3bnoo9B=k63>zOJ(JnRhuv1C8fQz9kCNMT? zcV)70D{!2SMN&0<;dHrMjdgBPw6wkPM>Wryy=V7fDRupzZWCX(^3mVbW(A>@_p4-W zsTI$iXA%);9Vpph?bIG1^uyB;fP5nNG$?rI0=-0xm+9b+WMj_6DIf|QX(}>ImJ<D+ z%UcoX^D{-{`B_*ark$_x3p}J_s1<k|W%lPt^Lld4%Xr3<e)h9P0F@0Dzw|*Wl^g2z z5;J#il6T);^hj{E+B$N)<;la>D<cRc9ySibM7QBlyY6n53LoTwv(a{vUz^6~LZH^{ zwnAY@F{~=#8gHfp)rKc<X7h?jHl)mr)+;br)CjOKm>=)kJMi<Ly@53W^jiII<vMRm zkB7KkG~iTdgq-k0!A|JBg_-(zZI^GXKnL7=o9~mV9fr7VpnrbN(H=>CIiY{dy6R~Q zuogvkZ4xtO-W5J<V)0Kub@s^~@)xjj3PlPEm!~zHs|At<6Mv<VI}f6I`wJ1T$JvXp zSQwf9hwtwPGP-`b*)eiA6g84~-Jn4vLWN)Sl*dV-VZX;=@kC}Z-)5L8h#&N--E&)K zP}6zE^tt$DEX`L)j`~0yz)an-mpDGke#=f#N18i<!6EQ=9`DfrBvR$Ee30^22W50W zKCRs8mlRDztycXC`l&u7E2cfS=xqYNTbOl4`C9s8^Xt>6ja^5)EsHFiH*u*6fZK0{ zR=WA%2Bygy?zxQ`TtFC7@11N$;~S2G?+K#(ydQ^IqX}=F|L0nsE&t!ee*K%*^*<uv r-}Qe!yB%pD6BHBx3K5$RXXX-hj{N^7@P8?c|4aM_`TslqdBuMLE16=) literal 0 HcmV?d00001