Commit Graph

29 Commits (api-docs-uplift)

Author SHA1 Message Date
Jason Stirnaman b05ce426ec Merge remote-tracking branch 'origin/api-docs-uplift' into clean-squash 2026-03-16 15:45:03 -05:00
Jason Stirnaman bbe513e0c5 feat(api-docs): add externalDocs to tags, strip absolute URLs, fix link pipeline
- Add standard OpenAPI `externalDocs` field to all tags.yml files that
  have `x-related` entries (uses first link as the primary doc link)
- Convert `externalDocs` to `{title, href}` objects in related links
  instead of bare URL strings
- Strip `https://docs.influxdata.com` from description/summary fields
  in `transformDocLinks()` so Hugo pages use relative paths
- Fix article generation reading from absolutified download spec instead
  of the Hugo spec with relative links (new `hugoSpecPath` output)
- Add `externalDocs.url` support to `absolutifyLinks()` for downloads
2026-03-16 15:34:43 -05:00
Jason Stirnaman 561f241ce0
Update api-docs/influxdb/v1/content/info.yml 2026-03-16 15:28:44 -05:00
Jason Stirnaman f5535c9d5c feat(api): Hugo-native API reference rendering
Hugo-native templates for API
reference documentation. Operations render as server-side HTML instead
of client-side Redoc, providing faster page loads, full SEO
indexability, and consistent styling.

Architecture:
- Tag-based navigation: operations grouped by OpenAPI tag, accessed
  via tag pages only (no individual operation URLs)
- Generation script auto-discovers products from .config.yml files,
  deriving Hugo paths and menu keys from directory structure
- Per-tag JSON/YAML chunks for fast Hugo template rendering
- Inline curl examples generated from OpenAPI specs at build time

Templates (layouts/api/, layouts/partials/api/):
- tag-renderer.html: renders all operations for a tag
- operation.html: individual operation with parameters, request body,
  responses, and schema rendering
- code-sample.html: curl examples with Ask AI integration
- section-children.html: tag listing on section index pages
- all-endpoints-list.html: all operations sorted by path

Generation (api-docs/scripts/generate-openapi-articles.ts):
- Auto-discovery from .config.yml replaces hardcoded productConfigs
- Each API section generates independently (no cross-spec merging)
- Frontmatter-driven template data (specDownloadPath, articleDataKey)
- Link transformation: /influxdb/version/ placeholders resolved to
  product-specific paths

Removed:
- Redoc renderer, JavaScript components, and CSS
- Shadow DOM test infrastructure (~160 lines)
- Operation page generation (dead generatePathPages function)
- mergeArticleData() and slugifyDisplayName()

Styles (assets/styles/layouts/_api-*.scss):
- 3-column layout: sidebar, content, sticky TOC
- Theme-aware code blocks for curl examples
- Method badges (GET/POST/PUT/DELETE) with color coding
- Collapsible schema sections with depth tracking

Tests (cypress/e2e/content/api-reference.cy.js):
- Tag page rendering with operation structure
- Download button verification per section
- All-endpoints page with operation cards
- Related links from x-related OpenAPI extension
- Code sample and Ask AI link validation
2026-03-15 22:17:33 -05:00
Jason Stirnaman 95a5a29625 fix(api-docs): restore full tag descriptions for API compatibility and Supported operations
Replace truncated "Overview of..." one-liners in tags.yml with proper
descriptions:

- API compatibility (Cloud Dedicated, Cloud Serverless, Clustered):
  restore multi-paragraph descriptions from origin/master specs covering
  write endpoints, query protocols, and v1/v2 compatibility. Move
  external doc links to x-related.

- Supported operations (Cloud v2, OSS v2, Cloud Serverless): replace
  with reference-style descriptions and HTTP method convention table.
2026-03-15 22:15:43 -05:00
Jason Stirnaman ebc91d2263 fix(api-docs): split v2 Compatibility tag, fix auth descriptions and info.yml
- Split generic "v2 Compatibility" tag into "Buckets (v2 compatible)"
  and "Delete (v2 compatible)" in both v1 specs and tags.yml
- Rewrite Authentication tag descriptions: explain that auth is
  disabled by default, move explanation before security definitions
- Fix broken markdown link in auth descriptions ([enabled in the
  configuration] had no URL)
- Fix x-related format in both v1 tags.yml (flat object → list)
- Fix Enterprise v1 x-related href to correct page path
- Fix Cloud Dedicated info.yml indentation (broke YAML parsing)
2026-03-12 15:59:13 -05:00
Jason Stirnaman ccd80297bb fix(api-docs): enforce one-tag-per-operation, fix Enterprise v1 spec
- Remove dual tags from v2-compat operations in both v1 specs,
  add x-compatibility-version: v2 for Hugo-native badge rendering
- Fix Enterprise v1 spec version 1.11.6 → 1.12.2 (spec, examples)
- Add GET /shard-status endpoint to Enterprise v1 spec (was only
  in the legacy content page)
- Document one-tag-per-operation convention in api-docs/README.md
- Update api-docs.instructions.md for current file layout and pipeline
- Add analyze-api-source agent for cross-product API docs analysis
2026-03-12 13:04:32 -05:00
Jason Stirnaman 54f9695613 fix(api-docs): restore Redoc security scheme injection in Authentication tags
Add ReDoc-Inject: <security-definitions> directive and scheme links to
the Authentication tag description in all 9 tags.yml files. This renders
the security scheme definitions inline in the Redoc HTML, matching the
pre-uplift behavior. Each product lists its actual security schemes with
anchor links to the scheme definitions section.
2026-03-12 09:34:13 -05:00
Jason Stirnaman 62bd023616 fix(api-docs): add x-traitTag support to post-processor and tags.yml
Add x-traitTag to TagConfig interface so the post-processor propagates
it from tags.yml into specs. Mark all supplementary documentation tags
(Authentication, Quick start, Headers, Usage, etc.) with x-traitTag: true
so Redoc renders them as documentation sections with descriptions rather
than empty operation groups. Also exclude root .config.yml from the
Redoc HTML generation find command.
2026-03-11 17:46:32 -05:00
Jason Stirnaman e2f4d80014 refactor(api-docs): flatten v3 dirs, rewrite build pipeline, add --static-only mode
- Flatten Core/Enterprise v3/ subdirectories to product root
- Rewrite generate-api-docs.sh as clean 3-step pipeline:
  post-process-specs → Redoc HTML → static spec downloads
- Add --static-only flag to generate-openapi-articles.ts
- Remove circular getswagger.sh call from generate-openapi-articles.ts
- Remove dead execCommand function and --skip-fetch flag
- Apply post-processed tag enrichments to all spec files
2026-03-11 17:02:18 -05:00
Jason Stirnaman 24c1e60f2f refactor(api-docs): unify v2 APIs, remove v1-compat specs, migrate mgmt links
Flatten Cloud v2 and OSS v2 spec directories to product root with
self-documenting filenames, matching the pattern used for influxdb3 products.
Remove all 5 v1-compatibility directories — those endpoints are already
included in the main spec (tagged as v1/v2 Compatibility).

Old v1-compat URLs are preserved as Hugo aliases for redirects.

Also includes:
- Migrate inline markdown links from management API spec descriptions
  into tags.yml x-related fields (Cloud Dedicated + Clustered)
- Wire post-process-specs.ts into generate-api-docs.sh build pipeline
- Fix doubled static/openapi download filenames
- Update project plan with design decisions
2026-03-11 11:04:07 -05:00
Jason Stirnaman abc789013f refactor(api-docs): flatten version subdirectories for v2-compat and v1 products
Drop redundant version subdirectories and use self-documenting
filenames for 5 products:

v2-compat influxdb3:
  cloud-dedicated/v2/ref.yml  → cloud-dedicated/influxdb3-cloud-dedicated-openapi.yaml
  cloud-serverless/v2/ref.yml → cloud-serverless/influxdb3-cloud-serverless-openapi.yaml
  clustered/v2/ref.yml        → clustered/influxdb3-clustered-openapi.yaml

v1:
  influxdb/v1/v1/ref.yml           → influxdb/v1/influxdb-oss-v1-openapi.yaml
  enterprise_influxdb/v1/v1/ref.yml → enterprise_influxdb/v1/influxdb-enterprise-v1-openapi.yaml

Update .config.yml, getswagger.sh, and generate-openapi-articles.ts
to reference new paths.
2026-03-10 14:24:49 -05:00
Jason Stirnaman aa863012a5 feat(api-docs): add tag post-processor and per-product tags.yml configs
Add apply-tag-config.ts that reads colocated tags.yml files and patches
OpenAPI spec tags in place (descriptions, x-related links, renames).
Runs between getswagger.sh and generate-openapi-articles.ts in the
build pipeline.

Create tags.yml for all 11 product specs:
- Core, Enterprise: extracted from existing spec tag metadata
- v2-compat, v2, v1: new descriptions and x-related links

Include test suite (16 assertions) covering description setting, tag
rename propagation, x-related links, stale/uncovered tag warnings,
silent skip when no config, and malformed YAML failure.
2026-03-10 14:23:37 -05:00
Jason Stirnaman b841590f9f chore(api-docs): remove dead x-tagGroups from all spec files
Remove the x-tagGroups vendor extension from 8 remaining OpenAPI spec
files. This Redocly extension was used for navigation grouping in the
old RapiDoc layout but is ignored by the Hugo-native API templates,
which generate pages from operation tags[] arrays.
2026-03-09 22:07:08 -05:00
Jason Stirnaman 914380ea54 feat(api-docs): extract api-docs changes from feat-api-uplift
Extract all api-docs/ changes from feat-api-uplift into a standalone
branch for independent testing and merging to master.

Changes include:
- Updated generation scripts (generate-openapi-articles.ts,
  openapi-paths-to-hugo-data/index.ts) for Hugo-native templates
- Removed dead x-tagGroups infrastructure (decorator, config files)
- Updated Core and Enterprise specs with tag descriptions, x-related
  links, and Cache Data tag split
- Added v1 product configs and specs (OSS v1, Enterprise v1)
- Updated getswagger.sh for renamed spec files
- Updated generate-api-docs.sh with clean regeneration support
2026-03-09 12:25:00 -05:00
Jason Stirnaman 48380fd168 fix(influxdb3): Auth schemes in 3core, 3ent, cloud-dedicated, and clustered:Explains compatibility for different schemasProvides more auth examplesFills missing schemes in API refFixes placeholdersShows that username is optional 2025-07-07 23:10:37 -05:00
Jason Stirnaman a930272769 fix(ossv2): duplicated description 2025-07-07 15:03:24 -05:00
Jason Stirnaman c738dfd82f chore(v2): OSS v2 query API: add, fix, cleanup:
- Adds missing examples for v1-compatible /query
- Fixes curl params in examples
- Removes unsupported async option from examples
- Updates terms for consistency with branding and influxdb3 docs
- Copies the missing POST /query operation from swaggerv1compat to the v2 ref.yml
- Effectively removes the separate v1-compat spec, and adds redirects and tags for v1-compat endpoints in v2/ref.yml
- Updates affected links
2025-07-07 14:09:47 -05:00
Jason Stirnaman 8d0d4acf55 fix(oss2): Troubleshoot partial writes for v2 and Cloud
- OSS v2 supports partial writes and returns a 422 that describes rejected points, depending on the problem.
- Update API spec
- Move file to content/shared for Cloud
2025-05-22 16:30:41 -05:00
Jason Stirnaman 1dce052e56 fix(JS): Rename CommonJS scripts to .cjs extension, keep type: module as the project default. Update and fix ESLint configuration.
- Renames JavaScript files in flux-build-scripts and api-docs/openapi/plugins to .cjs file extension to declare them as CommonJS module syntax.
2025-05-19 11:34:42 -05:00
Jason Stirnaman 3d4f78f5c4 fix(cloudv2): Doesn't support environment references in templates 2025-03-14 18:11:16 -05:00
Jason Stirnaman 4887aa5b66 fix(api): links and headings in local API refs.
- Fix broken links reported by the e2e link checker.
- Add an e2e test for checking internal and external links in API reference docs. Low effort, big win.
2025-02-26 16:20:14 -06:00
Jason Stirnaman bd93174d29 fix(api): confusing nav behavior with endpoints duplicated among tag groups. Closes Remove tag groups from API ref docs that duplicate endpoints in the "All endpoints" tag group. #5868 2025-02-26 16:14:37 -06:00
Jason Stirnaman 4194ef5eb9 fix(api): Add shortDescription to replace summary
- Add a custom x-influxdata-short-description field that replaces the previous non-standard summary field used by Redocly.
- Double quote the title and description vars to preserve the entire value when passing them to the CLI
2025-02-26 16:07:28 -06:00
Jason Stirnaman b3bb9c40f1 feat(api): InfluxDB3 Core API reference, API fixes, and e2e tests
- Adds InfluxDB 3 Core API reference
- Updates scripts
- Removes non-valid info.summary field from specs, replaces with description in metadata
- Simplifies frontmatter generation for HTML template
- Reorg of file structure to mirror the content structure.
- Moves OSS v2 into v2/v2/ref.yml to follow the same pattern as others
- Replaces isDefault API config field with specific aliases.
- Misc. fixes.
- Remove generated HTML files.
2025-02-25 17:10:09 -06:00
Jason Stirnaman 846d3a9e46 fix(api): Update glossary links. Remove old cloud-serverless directory 2025-02-25 17:10:09 -06:00
Jason Stirnaman f15d7857a9 chore(monolith): Core HTTP API and OpenAPI .info content for Core and Enterprise 2025-02-25 17:09:03 -06:00
Jason Stirnaman 8509ea36d6 fix(api-ref): Update getswagger.sh destination paths to use the new directory structure when fetching spec files. Update the redocly plugin module path. 2025-01-28 12:31:47 -06:00
Jason Stirnaman f1d82f4b00 fix(api-docs): Update API reference directories and generation script for influxdb3 URL paths, update links and names in reference content 2025-01-28 10:53:07 -06:00