Skip to content
This repository was archived by the owner on Sep 2, 2026. It is now read-only.

feat(references): consume standards-based spec metadata and expose new services - #3194

Merged
ChiragAgg5k merged 2 commits into
mainfrom
feat/spec-driven-references
Aug 21, 2026
Merged

feat(references): consume standards-based spec metadata and expose new services#3194
ChiragAgg5k merged 2 commits into
mainfrom
feat/spec-driven-references

Conversation

@ChiragAgg5k

Copy link
Copy Markdown
Member

What

Updates @appwrite.io/specs to the latest commit (ad50888d) and redesigns how the website consumes spec data. The 1.9.x specs intentionally moved to standard OpenAPI fields, dropping the website-only x-appwrite metadata (method, weight, x-example) — which broke every 1.9.x/cloud reference page: all method ids were undefined, the "On This Page" sidebar rendered href="#undefined" for every entry, deep links died, and Svelte threw each_key_duplicate on hydration. Instead of asking the spec generator to reinstate the fields, the website now derives everything from standard fields and treats every remaining x-appwrite field as optional.

How

  • Method identity: ids derive from operationId (strip the service-tag prefix, lowercase the first char). The legacy x-appwrite.method wins when present, and the derivation reproduces it exactly for 402/402 operations on 1.8.x — so all existing anchors and deep links stay byte-identical across versions.
  • Ordering: sorted by x-appwrite.weight only when the spec carries weights; otherwise the generator's path order stands.
  • Service availability from spec tags: prerender entries only emit (version, platform, service) combos that exist in the spec. Health (removed in 1.9.x) stops being generated for new versions, and adding a new service is now just a Service entry plus a description file.
  • Platform availability from the examples tree: the shipped examples/<version>/<platform>/ directories are the ground truth for which SDKs a release was generated with. Deno (discontinued in 1.9.x) disappears from the 1.9.x/cloud platform picker automatically; Go/Rust correctly absent before 1.6.x.
  • Methods without SDK examples render anyway, omitting only the code panel (with a build-time warning). This un-blanks all 1.9.x Deno pages, which were previously completely empty.
  • GraphQL webAuth skip: OAuth2 redirect methods are excluded on GraphQL platforms, mirroring the SDK generator's own exclusion (GraphQL.php skips type: webAuth example generation).
  • Consistency fixes: example ?? x-example fallback, one shared resolveVersion() so cloud means latestVersion everywhere (models page and the .md markdown generators previously hardcoded 1.8.x), and inline (non-$ref) response schemas no longer crash getService.
  • New services exposed (all present in the 1.9.x spec with descriptions and SDK examples): OAuth2, Apps, Organization, Webhooks, Proxy, Backups, Advisor, Activities.

Screenshots

Cloud account page — anchors, sidebar, and deep links (#createEmailPasswordSession) working again:

account anchors fixed

New OAuth2 service reference (Appwrite as an OAuth2/OIDC identity provider):

oauth2 service

New Apps service reference (OAuth2 application management):

apps service

Deno on 1.9.x (SDK discontinued upstream): full endpoint reference without code panels instead of a blank page, and Deno is dropped from the 1.9.x platform picker:

deno endpoint-only

Testing

  • Swept 1,080 reference pages (12 versions × 6 platforms × 15 services) on the dev server: all 200, zero #undefined anchors.
  • Browser-verified: no each_key_duplicate on 1.9.x/cloud pages, deep links scroll to the right method, 1.8.x pages unchanged.
  • svelte-check, ESLint, and Prettier clean across the touched files (also fixed 10 pre-existing lint errors in the references tree).

…w services

The 1.9.x specs intentionally dropped website-only x-appwrite metadata
(method, weight, x-example) in favor of standard OpenAPI fields, which
broke every 1.9.x/cloud reference page (undefined anchors, hydration
crash). Derive everything from the spec instead of requiring custom
fields:

- derive method ids from operationId (legacy x-appwrite.method wins on
  older specs, so existing anchors stay byte-identical)
- sort by x-appwrite.weight only when the spec carries weights
- derive service availability from spec tags and platform availability
  from the shipped examples tree (drops Deno for >=1.9.x, gates Health,
  and makes new services a two-file addition)
- render methods without SDK examples instead of hiding them, omitting
  only the code panel (un-blanks all 1.9.x Deno pages)
- skip webAuth methods on GraphQL platforms, mirroring the generator's
  own exclusion
- read example ?? x-example, resolve cloud -> latestVersion everywhere,
  and tolerate inline (non-$ref) response schemas
- expose the new 1.9.x services: oauth2, apps, organization, webhooks,
  proxy, backups, advisor, activities
@appwrite

appwrite Bot commented Aug 21, 2026

Copy link
Copy Markdown

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Ready Ready View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Queued Queued View Logs Preview URL QR Code


Tip

Sites support three domain rule types: Active deployment, Git branch, and Redirect

@ChiragAgg5k
ChiragAgg5k merged commit 7341ce1 into main Aug 21, 2026
6 checks passed
@ChiragAgg5k
ChiragAgg5k deleted the feat/spec-driven-references branch August 21, 2026 14:15
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants