Skip to content

docs(savanna): REST API reference with OpenAPI-generated endpoint pages - #175

Merged
Tushar-TG-14 merged 22 commits into
tigergraph:mainfrom
ngarakapati:docs/savanna-rest-api
Sep 25, 2026
Merged

Tushar-TG-14 merged 22 commits into
tigergraph:mainfrom
ngarakapati:docs/savanna-rest-api

Conversation

@ngarakapati

Copy link
Copy Markdown
Contributor

Summary

Replaces the monolithic Savanna control-plane API docs with a full REST API reference module: task-oriented overview, per-endpoint pages generated from the vendored OpenAPI catalog, and tooling to keep nav and pages in sync.

Docs & structure

  • Split _catalog/endpoints.adoc into one Antora page per allowlisted endpoint, grouped nav (workgroups, workspaces, cloud providers, add-ons, backups, IP allow list, org users, etc.).
  • New overview, Create an API key, and data-plane APIs pages; authentication and standalone definitions page removed (schemas live inline on each endpoint page).
  • API key how-to moved from Administration into rest-api; cross-links updated across admin and overview.
  • Run in Postman on the overview via page-postman-url (hosted collection; no checked-in Postman artifact).

Build & authoring

  • lib/split-endpoints.js — parses catalog + OpenAPI, enforces a public route allowlist, writes pages/endpoints/* and nav.adoc.
  • lib/api-page.js — renders each page (parameters, expanded schemas, multi-language request samples, response examples) with curated api-descriptions.json / api-examples.json.
  • npm run endpoints:split and gulp devHot / npm run dev for local preview with ../antora-ui bundle rebuild.

Companion change: requires the matching antora-ui PR for section tabs, API sidebar (method badges), and the two-column API reference layout.

Test plan

  • From cloud-docs: npm run endpoints:split completes without errors.
  • PLAYBOOK=antora-playbook.local.yml npm run dev (with local antora-ui bundle) and open Savanna → API reference.
  • Overview links, nav groups, and a sample of GET/POST endpoint pages render (request bar, schemas, language samples, responses).
  • Run in Postman on the overview opens the hosted collection.
  • Administration → Settings → API keys links to rest-api:create-api-key.
  • Spot-check aliases: old authentication, definitions, and index-previous URLs resolve to the overview where configured.

Add split-endpoints.js to generate nav and one page per endpoint from the
_catalog source, replacing the monolithic endpoints.adoc reference.
Replace the preview landing page and standalone authentication topic with a
task-oriented overview, data-plane guide, and API key how-to under rest-api.
Move the API key how-to into the rest-api module and update nav and xrefs
across administration and overview.
Watch local Savanna content and antora-ui sources, rebuild the UI bundle,
and regenerate the site via gulp devHot and npm run dev.
Extend split-endpoints to ingest _catalog/openapi.json alongside the curated
catalog so new control-plane endpoints and schema definitions stay in sync.
Add billing, add-ons, cloud provider, API key, and MCP endpoints; refresh
nav, definitions, and org user paths from the updated catalog.
Drop OpenAPI snapshot ingestion and only emit pages for routes explicitly
listed in LABELS so internal Swagger surface is not published by default.
Remove billing, add-on, cloud provider, and other internal-only pages and
refresh nav and definitions to match the curated control-plane catalog.
Rename several allowlisted routes to more descriptive titles (for example
workspace details and list workspace schedules) for nav and page slugs.
Refresh nav, overview xrefs, and per-endpoint pages to match the updated
allowlist titles and slugs.
Introduce api-page.js with vendored OpenAPI, curated attribute descriptions,
and response examples to generate rich per-endpoint reference content.
Wire split-endpoints to api-page.js, extend the public allowlist for cloud
providers and add-ons, and fail dev preview when the UI bundle ships empty JS.
Rebuild all endpoint pages and nav from the catalog, drop the separate
definitions page, and refresh overview copy and deep links.
Remove index-previous from nav and redirect it with a page alias on the
current overview.
Add postman-collection.js to emit a v2.1 collection when running
endpoints:split and export requestBodyJson from the API page renderer.
Remove postman-collection.js and the checked-in collection artifact; the
REST API overview still links to the hosted Postman collection.
Render synthesized string fields as <string> and stop forcing empty Message
values on success responses in generated examples.
@netlify

netlify Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for thriving-strudel-91d4a9 ready!

Name Link
🔨 Latest commit 1b05375
🔍 Latest deploy log https://app.netlify.com/projects/thriving-strudel-91d4a9/deploys/6ab64c917f84ff0008abe36e
😎 Deploy Preview https://deploy-preview-175--thriving-strudel-91d4a9.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Remove Data-plane APIs from REST API nav, mark the page hidden for deep
links, and point the overview at TigerGraph Server GSQL and REST++ docs.
@Tushar-TG-14

Tushar-TG-14 commented Sep 25, 2026 •

Copy link
Copy Markdown
Collaborator

@ngarakapati

  1. I noticed the generator checks that catalog endpoints are in the public allowlist, but does it also verify that every endpoint in the allowlist exists in the catalog and gets generated? Otherwise, could an endpoint be accidentally omitted without the build failing?
  2. Before merging, can we confirm the generated pages have been tested with the exact #56 ui-bundle.zip, especially one GET and one POST endpoint, including request samples, response tabs, schemas, copy buttons, and API navigation?
  3. For the old endpoint URLs, are we preserving redirects/aliases for existing external bookmarks as well, or are we only updating internal xrefs to the new endpoint pages?

@ngarakapati

Copy link
Copy Markdown
Contributor Author

Thanks @Tushar-TG-14.

  1. Yeah - it only failed if the catalog had something that isn't in the allowlist. The other direction wasn't checked, so an allowlist endpoint missing from the catalog would just not get a page. I added that check; the generator now fails if either side is missing.

  2. Yes. adding Nov 393 release notes #56 is merged, and the deploy preview was rebuilt against that bundle. I went through a GET and a POST (samples, response tabs, schemas, copy, nav).

  3. Internal xrefs were rewritten to the new pages. We're not adding aliases/redirects for the old endpoints.html#_https_... hashes. Those bookmarks will 404.

@Tushar-TG-14
Tushar-TG-14 merged commit 322d27a into tigergraph:main Sep 25, 2026
4 of 5 checks passed
@ngarakapati
ngarakapati deleted the docs/savanna-rest-api branch September 25, 2026 10:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants