diff --git a/api-docs/README.md b/api-docs/README.md index 3e59d120c..3c35387d1 100755 --- a/api-docs/README.md +++ b/api-docs/README.md @@ -48,6 +48,7 @@ ``` 3. To generate the HTML files for local testing, follow the instructions to [generate API docs locally](#generate-api-docs-locally). + 4. To commit your updated spec files, push your branch to `influxdata/docs-v2`, and create a PR against the `master` branch. ## Update API docs for an InfluxDB OSS release @@ -106,8 +107,8 @@ # Copy the old version directory to a directory for the new version: cp -r v2.2 v2.3 ``` - -8. In your editor, update custom content files in NEW_VERSION/content. + +8. In your editor, update custom content files in NEW\_VERSION/content. 9. Enter the following commands into your terminal to fetch and process the contracts: @@ -117,6 +118,7 @@ ``` 10. To generate the HTML files for local testing, follow the instructions to [generate API docs locally](#generate-api-docs-locally). + 11. To commit your updated spec files, push your branch to `influxdata/docs-v2`, and create a PR against the `master` branch. ## Update API docs for OSS spec changes between releases @@ -142,6 +144,8 @@ Follow these steps to update OSS API docs between version releases--for example, git cherry-pick [COMMIT_SHAs] git push -f origin docs-release/influxdb-oss + ``` + 4. Go into your `docs-v2` directory and create a branch for your changes--for example: ```sh @@ -165,6 +169,7 @@ Follow these steps to update OSS API docs between version releases--for example, ``` 7. To generate the HTML files for local testing, follow the instructions to [generate API docs locally](#generate-api-docs-locally). + 8. To commit your updated spec files, push your branch to `influxdata/docs-v2`, and create a PR against the `master` branch. ## Generate InfluxDB API docs @@ -197,7 +202,7 @@ The script uses `npx` to download and execute the Redocly CLI. If `npx` returns errors, [download](https://nodejs.org/en/) and run a recent version of the Node.js installer for your OS. -2. To generate API docs for _all_ InfluxDB versions in `./openapi`, enter the following command into your terminal: +2. To generate API docs for *all* InfluxDB versions in `./openapi`, enter the following command into your terminal: ```sh sh generate-api-docs.sh @@ -239,9 +244,9 @@ We regenerate API reference docs from `influxdata/openapi` ### InfluxDB OSS v2 version - Given that - `influxdata/openapi` **master** may contain OSS spec changes not implemented - in the current OSS release, we (Docs team) maintain a release branch, `influxdata/openapi` +Given that +`influxdata/openapi` **master** may contain OSS spec changes not implemented +in the current OSS release, we (Docs team) maintain a release branch, `influxdata/openapi` **docs-release/influxdb-oss**, used to generate OSS reference docs. ### How to find the API spec used by an InfluxDB OSS version @@ -249,7 +254,7 @@ We regenerate API reference docs from `influxdata/openapi` `influxdata/openapi` does not version the InfluxData API. To find the `influxdata/openapi` commit SHA used in a specific version of InfluxDB OSS, see `/scripts/fetch-swagger.sh` in `influxdata/influxdb`--for example, -for the `influxdata/openapi` commit used in OSS v2.2.0, see https://github.com/influxdata/influxdb/blob/v2.2.0/scripts/fetch-swagger.sh#L13=. +for the `influxdata/openapi` commit used in OSS v2.2.0, see . For convenience, we tag `influxdata/influxdb` (OSS) release points in `influxdata/openapi` as `influxdb-oss-v[OSS_VERSION]`. See . @@ -281,16 +286,17 @@ To add new YAML files for other nodes in the contracts, follow these steps: `@redocly/cli` also provides some [built-in decorators](https://redocly.com/docs/cli/decorators/) that you can configure in `.redocly` without having to write JavaScript. + ### How to add tag content or describe a group of paths In API reference docs, we use OpenAPI `tags` elements for navigation, the `x-traitTag` vendor extension for providing custom content, and the `x-tagGroups` vendor extension for grouping tags in navigation. -| Example | OpenAPI field | | -|:-------------------------------------------------------------------------------------------------------|-------------------------------------------------------|--------------------------------------------| -| [Add supplementary documentation](https://docs.influxdata.com/influxdb/cloud/api/#tag/Quick-start) | `tags: [ { name: 'Quick start', x-traitTag: true } ]` | [Source](https://github.com/influxdata/openapi/master/src/cloud/tags.yml) | -| Group tags in navigation | `x-tagGroups: [ { name: 'All endpoints', tags: [...], ...} ]` | [Source](https://github.com/influxdata/docs-v2/blob/da6c2e467de7212fc2197dfe0b87f0f0296688ee/api-docs/cloud-iox/content/tag-groups.yml)) | +| Example | OpenAPI field | | +| :------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| [Add supplementary documentation](https://docs.influxdata.com/influxdb/cloud/api/#tag/Quick-start) | `tags: [ { name: 'Quick start', x-traitTag: true } ]` | [Source](https://github.com/influxdata/openapi/master/src/cloud/tags.yml) | +| Group tags in navigation | `x-tagGroups: [ { name: 'All endpoints', tags: [...], ...} ]` | [Source](https://github.com/influxdata/docs-v2/blob/da6c2e467de7212fc2197dfe0b87f0f0296688ee/api-docs/cloud-iox/content/tag-groups.yml)) | #### Add and update x-tagGroups @@ -302,6 +308,47 @@ those tags. If you assign an empty array(`[]`) to the `All endpoints` x-tagGroup in `PLATFORM/content/tag-groups.yml`, the decorator replaces the empty array with the list of tags from all Operations in the spec. +## Documentation links in OpenAPI specs + +Use the `/influxdb/version/` placeholder when including InfluxDB links in OpenAPI spec description and summary fields. +The build process automatically transforms these placeholders to product-specific paths based on the spec file location. + +### Writing links + +```yaml +# In api-docs/influxdb3/core/openapi/ref.yml +info: + description: | + See [authentication](/influxdb/version/api/authentication/) for details. + Related: [tokens](/influxdb/version/admin/tokens/) +``` + +After build, these become: + +- `/influxdb3/core/api/authentication/` +- `/influxdb3/core/admin/tokens/` + +### How it works + +The product path is derived from the spec file location: + +- `api-docs/influxdb3/core/...` → `/influxdb3/core` +- `api-docs/influxdb3/enterprise/...` → `/influxdb3/enterprise` +- `api-docs/influxdb/v2/...` → `/influxdb/v2` + +Only `description` and `summary` fields are transformed. +Explicit cross-product links (e.g., `/telegraf/v1/plugins/`) remain unchanged. + +### Link validation + +Run with the `--validate-links` flag to check for broken links: + +```bash +yarn build:api-docs --validate-links +``` + +This validates that transformed links point to existing Hugo content files and warns about any broken links. + ## How to test your spec or API reference changes You can use `getswagger.sh` to fetch contracts from any URL. diff --git a/api-docs/influxdb/cloud/v2/ref.yml b/api-docs/influxdb/cloud/v2/ref.yml index 365e6d7db..925601e9c 100644 --- a/api-docs/influxdb/cloud/v2/ref.yml +++ b/api-docs/influxdb/cloud/v2/ref.yml @@ -126,7 +126,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes, sent to the database. | | `Content-Type` | string | The format of the data in the request body. | name: Headers diff --git a/api-docs/influxdb/v2/v2/ref.yml b/api-docs/influxdb/v2/v2/ref.yml index 778aceacc..1c8347ac3 100644 --- a/api-docs/influxdb/v2/v2/ref.yml +++ b/api-docs/influxdb/v2/v2/ref.yml @@ -142,7 +142,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes, sent to the database. | | `Content-Type` | string | The format of the data in the request body. | name: Headers diff --git a/api-docs/influxdb3/cloud-dedicated/v2/ref.yml b/api-docs/influxdb3/cloud-dedicated/v2/ref.yml index f4b3e76fe..556963d06 100644 --- a/api-docs/influxdb3/cloud-dedicated/v2/ref.yml +++ b/api-docs/influxdb3/cloud-dedicated/v2/ref.yml @@ -98,7 +98,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes, sent to the database. | | `Content-Type` | string | The format of the data in the request body. | name: Headers diff --git a/api-docs/influxdb3/cloud-serverless/v2/ref.yml b/api-docs/influxdb3/cloud-serverless/v2/ref.yml index 3b8ac502e..154ecab86 100644 --- a/api-docs/influxdb3/cloud-serverless/v2/ref.yml +++ b/api-docs/influxdb3/cloud-serverless/v2/ref.yml @@ -159,7 +159,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | | `Content-Type` | string | The format of the data in the request body. | name: Headers diff --git a/api-docs/influxdb3/clustered/v2/ref.yml b/api-docs/influxdb3/clustered/v2/ref.yml index a93a582f1..c9a593197 100644 --- a/api-docs/influxdb3/clustered/v2/ref.yml +++ b/api-docs/influxdb3/clustered/v2/ref.yml @@ -98,7 +98,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes, sent to the database. | | `Content-Type` | string | The format of the data in the request body. | name: Headers diff --git a/api-docs/influxdb3/core/v3/ref.yml b/api-docs/influxdb3/core/v3/ref.yml index cc134e0db..911e207ce 100644 --- a/api-docs/influxdb3/core/v3/ref.yml +++ b/api-docs/influxdb3/core/v3/ref.yml @@ -124,7 +124,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | | `Content-Type` | string | The format of the data in the request body. | name: Headers and parameters diff --git a/api-docs/influxdb3/enterprise/v3/ref.yml b/api-docs/influxdb3/enterprise/v3/ref.yml index 66010f7b7..bdfa3cfea 100644 --- a/api-docs/influxdb3/enterprise/v3/ref.yml +++ b/api-docs/influxdb3/enterprise/v3/ref.yml @@ -103,7 +103,7 @@ tags: | Header | Value type | Description | |:------------------------ |:--------------------- |:-------------------------------------------| | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization scheme and credential. | + | `Authorization` | string | The [authorization scheme and credential](/influxdb/version/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | | `Content-Type` | string | The format of the data in the request body. | name: Headers and parameters diff --git a/api-docs/scripts/dist/generate-openapi-articles.js b/api-docs/scripts/dist/generate-openapi-articles.js index 7b32ce7f4..1b7d2e6de 100644 --- a/api-docs/scripts/dist/generate-openapi-articles.js +++ b/api-docs/scripts/dist/generate-openapi-articles.js @@ -77,10 +77,17 @@ var __importStar = }; })(); Object.defineProperty(exports, '__esModule', { value: true }); -exports.productConfigs = void 0; +exports.LINK_PATTERN = + exports.MARKDOWN_FIELDS = + exports.productConfigs = + void 0; exports.processProduct = processProduct; exports.generateDataFromOpenAPI = generateDataFromOpenAPI; exports.generatePagesFromArticleData = generatePagesFromArticleData; +exports.deriveProductPath = deriveProductPath; +exports.transformDocLinks = transformDocLinks; +exports.validateDocLinks = validateDocLinks; +exports.resolveContentPath = resolveContentPath; const child_process_1 = require('child_process'); const path = __importStar(require('path')); const fs = __importStar(require('fs')); @@ -89,6 +96,8 @@ const openapiPathsToHugo = require('./openapi-paths-to-hugo-data/index.js'); // Calculate the relative paths const DOCS_ROOT = '.'; const API_DOCS_ROOT = 'api-docs'; +// CLI flags +const validateLinks = process.argv.includes('--validate-links'); /** * Execute a shell command and handle errors * @@ -573,6 +582,122 @@ const productConfigs = { }, }; exports.productConfigs = productConfigs; +/** Fields that can contain markdown with links */ +const MARKDOWN_FIELDS = new Set(['description', 'summary']); +exports.MARKDOWN_FIELDS = MARKDOWN_FIELDS; +/** Link placeholder pattern */ +const LINK_PATTERN = /\/influxdb\/version\//g; +exports.LINK_PATTERN = LINK_PATTERN; +/** + * Derive documentation root from spec file path. + * + * @example + * 'api-docs/influxdb3/core/v3/ref.yml' → '/influxdb3/core' + * 'api-docs/influxdb3/enterprise/v3/ref.yml' → '/influxdb3/enterprise' + * 'api-docs/influxdb/v2/ref.yml' → '/influxdb/v2' + */ +function deriveProductPath(specPath) { + // Match: api-docs/(influxdb3|influxdb)/(product-or-version)/... + const match = specPath.match(/api-docs\/(influxdb3?)\/([\w-]+)\//); + if (!match) { + throw new Error(`Cannot derive product path from: ${specPath}`); + } + return `/${match[1]}/${match[2]}`; +} +/** + * Transform documentation links in OpenAPI spec markdown fields. + * Replaces `/influxdb/version/` with the actual product path. + * + * @param spec - Parsed OpenAPI spec object + * @param productPath - Target path (e.g., '/influxdb3/core') + * @returns Spec with transformed links (new object, original unchanged) + */ +function transformDocLinks(spec, productPath) { + function transformValue(value) { + if (typeof value === 'string') { + return value.replace(LINK_PATTERN, `${productPath}/`); + } + if (Array.isArray(value)) { + return value.map(transformValue); + } + if (value !== null && typeof value === 'object') { + return transformObject(value); + } + return value; + } + function transformObject(obj) { + const result = {}; + for (const [key, value] of Object.entries(obj)) { + if (MARKDOWN_FIELDS.has(key) && typeof value === 'string') { + result[key] = value.replace(LINK_PATTERN, `${productPath}/`); + } else if (value !== null && typeof value === 'object') { + result[key] = transformValue(value); + } else { + result[key] = value; + } + } + return result; + } + return transformObject(spec); +} +/** + * Resolve a URL path to a content file path. + * + * @example + * '/influxdb3/core/api/auth/' → 'content/influxdb3/core/api/auth/_index.md' + */ +function resolveContentPath(urlPath, contentDir) { + const normalized = urlPath.replace(/\/$/, ''); + const indexPath = path.join(contentDir, normalized, '_index.md'); + const directPath = path.join(contentDir, normalized + '.md'); + if (fs.existsSync(indexPath)) { + return indexPath; + } + if (fs.existsSync(directPath)) { + return directPath; + } + return indexPath; // Return expected path for error message +} +/** + * Validate that transformed links point to existing content. + * + * @param spec - Transformed OpenAPI spec + * @param contentDir - Path to Hugo content directory + * @returns Array of error messages for broken links + */ +function validateDocLinks(spec, contentDir) { + const errors = []; + const linkPattern = /\[([^\]]+)\]\(([^)]+)\)/g; + function extractLinks(value, jsonPath) { + if (typeof value === 'string') { + let match; + while ((match = linkPattern.exec(value)) !== null) { + const [, linkText, linkUrl] = match; + // Only validate internal links (start with /) + if (linkUrl.startsWith('/') && !linkUrl.startsWith('//')) { + const contentPath = resolveContentPath(linkUrl, contentDir); + if (!fs.existsSync(contentPath)) { + errors.push( + `Broken link at ${jsonPath}: [${linkText}](${linkUrl})` + ); + } + } + } + // Reset regex lastIndex for next string + linkPattern.lastIndex = 0; + } else if (Array.isArray(value)) { + value.forEach((item, index) => + extractLinks(item, `${jsonPath}[${index}]`) + ); + } else if (value !== null && typeof value === 'object') { + for (const [key, val] of Object.entries(value)) { + extractLinks(val, `${jsonPath}.${key}`); + } + } + } + extractLinks(spec, 'spec'); + return errors; +} /** * Process a single product: fetch spec, generate data, and create pages * @@ -614,31 +739,47 @@ function processProduct(productKey, config) { if (!fs.existsSync(staticPath)) { fs.mkdirSync(staticPath, { recursive: true }); } - // Step 3: Copy the generated OpenAPI spec to static folder (YAML) + // Step 3: Load spec, transform documentation links, and write to static folder if (fs.existsSync(config.specFile)) { - fs.copyFileSync(config.specFile, staticSpecPath); - console.log(`✓ Copied spec to ${staticSpecPath}`); - // Step 4: Generate JSON version of the spec try { const yaml = require('js-yaml'); const specContent = fs.readFileSync(config.specFile, 'utf8'); const specObject = yaml.load(specContent); + // Transform documentation links (/influxdb/version/ -> actual product path) + const productPath = deriveProductPath(config.specFile); + const transformedSpec = transformDocLinks(specObject, productPath); + console.log(`✓ Transformed documentation links to ${productPath}`); + // Validate links if enabled + if (validateLinks) { + const contentDir = path.resolve(__dirname, '../../content'); + const linkErrors = validateDocLinks(transformedSpec, contentDir); + if (linkErrors.length > 0) { + console.warn( + `\n⚠️ Link validation warnings for ${config.specFile}:` + ); + linkErrors.forEach((err) => console.warn(` ${err}`)); + } + } + // Write transformed spec to static folder (YAML) + fs.writeFileSync(staticSpecPath, yaml.dump(transformedSpec)); + console.log(`✓ Wrote transformed spec to ${staticSpecPath}`); + // Step 4: Generate JSON version of the spec fs.writeFileSync( staticJsonSpecPath, - JSON.stringify(specObject, null, 2) + JSON.stringify(transformedSpec, null, 2) ); console.log(`✓ Generated JSON spec at ${staticJsonSpecPath}`); - } catch (jsonError) { - console.warn(`⚠️ Could not generate JSON spec: ${jsonError}`); + } catch (specError) { + console.warn(`⚠️ Could not process spec: ${specError}`); } } - // Step 5: Generate Hugo data from OpenAPI spec + // Step 5: Generate Hugo data from OpenAPI spec (using transformed spec) if (config.useTagBasedGeneration) { // Tag-based generation: group operations by OpenAPI tag const staticTagsPath = path.join(staticPath, `${staticDirName}/tags`); console.log(`\n📋 Using tag-based generation for ${productKey}...`); openapiPathsToHugo.generateHugoDataByTag({ - specFile: config.specFile, + specFile: staticSpecPath, dataOutPath: staticTagsPath, articleOutPath: articlesPath, includePaths: true, // Also generate path-based files for backwards compatibility @@ -650,7 +791,7 @@ function processProduct(productKey, config) { `\n📋 Generating path-specific specs in ${staticPathsPath}...` ); const pathSpecFiles = openapiPathsToHugo.generatePathSpecificSpecs( - config.specFile, + staticSpecPath, staticPathsPath ); // Step 6: Generate Hugo content pages from tag-based article data @@ -664,7 +805,7 @@ function processProduct(productKey, config) { }); } else { // Path-based generation: group paths by URL prefix (legacy) - generateDataFromOpenAPI(config.specFile, staticPathsPath, articlesPath); + generateDataFromOpenAPI(staticSpecPath, staticPathsPath, articlesPath); // Step 6: Generate Hugo content pages from path-based article data generatePagesFromArticleData({ articlesPath, diff --git a/api-docs/scripts/generate-openapi-articles.ts b/api-docs/scripts/generate-openapi-articles.ts index 1b3abba40..dad764764 100644 --- a/api-docs/scripts/generate-openapi-articles.ts +++ b/api-docs/scripts/generate-openapi-articles.ts @@ -72,6 +72,9 @@ type ProductConfigMap = Record; const DOCS_ROOT = '.'; const API_DOCS_ROOT = 'api-docs'; +// CLI flags +const validateLinks = process.argv.includes('--validate-links'); + /** * Execute a shell command and handle errors * @@ -712,6 +715,141 @@ const productConfigs: ProductConfigMap = { }, }; +/** Fields that can contain markdown with links */ +const MARKDOWN_FIELDS = new Set(['description', 'summary']); + +/** Link placeholder pattern */ +const LINK_PATTERN = /\/influxdb\/version\//g; + +/** + * Derive documentation root from spec file path. + * + * @example + * 'api-docs/influxdb3/core/v3/ref.yml' → '/influxdb3/core' + * 'api-docs/influxdb3/enterprise/v3/ref.yml' → '/influxdb3/enterprise' + * 'api-docs/influxdb/v2/ref.yml' → '/influxdb/v2' + */ +function deriveProductPath(specPath: string): string { + // Match: api-docs/(influxdb3|influxdb)/(product-or-version)/... + const match = specPath.match(/api-docs\/(influxdb3?)\/([\w-]+)\//); + if (!match) { + throw new Error(`Cannot derive product path from: ${specPath}`); + } + return `/${match[1]}/${match[2]}`; +} + +/** + * Transform documentation links in OpenAPI spec markdown fields. + * Replaces `/influxdb/version/` with the actual product path. + * + * @param spec - Parsed OpenAPI spec object + * @param productPath - Target path (e.g., '/influxdb3/core') + * @returns Spec with transformed links (new object, original unchanged) + */ +function transformDocLinks( + spec: Record, + productPath: string +): Record { + function transformValue(value: unknown): unknown { + if (typeof value === 'string') { + return value.replace(LINK_PATTERN, `${productPath}/`); + } + if (Array.isArray(value)) { + return value.map(transformValue); + } + if (value !== null && typeof value === 'object') { + return transformObject(value as Record); + } + return value; + } + + function transformObject( + obj: Record + ): Record { + const result: Record = {}; + for (const [key, value] of Object.entries(obj)) { + if (MARKDOWN_FIELDS.has(key) && typeof value === 'string') { + result[key] = value.replace(LINK_PATTERN, `${productPath}/`); + } else if (value !== null && typeof value === 'object') { + result[key] = transformValue(value); + } else { + result[key] = value; + } + } + return result; + } + + return transformObject(spec); +} + +/** + * Resolve a URL path to a content file path. + * + * @example + * '/influxdb3/core/api/auth/' → 'content/influxdb3/core/api/auth/_index.md' + */ +function resolveContentPath(urlPath: string, contentDir: string): string { + const normalized = urlPath.replace(/\/$/, ''); + const indexPath = path.join(contentDir, normalized, '_index.md'); + const directPath = path.join(contentDir, normalized + '.md'); + + if (fs.existsSync(indexPath)) { + return indexPath; + } + if (fs.existsSync(directPath)) { + return directPath; + } + return indexPath; // Return expected path for error message +} + +/** + * Validate that transformed links point to existing content. + * + * @param spec - Transformed OpenAPI spec + * @param contentDir - Path to Hugo content directory + * @returns Array of error messages for broken links + */ +function validateDocLinks( + spec: Record, + contentDir: string +): string[] { + const errors: string[] = []; + const linkPattern = /\[([^\]]+)\]\(([^)]+)\)/g; + + function extractLinks(value: unknown, jsonPath: string): void { + if (typeof value === 'string') { + let match; + while ((match = linkPattern.exec(value)) !== null) { + const [, linkText, linkUrl] = match; + // Only validate internal links (start with /) + if (linkUrl.startsWith('/') && !linkUrl.startsWith('//')) { + const contentPath = resolveContentPath(linkUrl, contentDir); + if (!fs.existsSync(contentPath)) { + errors.push( + `Broken link at ${jsonPath}: [${linkText}](${linkUrl})` + ); + } + } + } + // Reset regex lastIndex for next string + linkPattern.lastIndex = 0; + } else if (Array.isArray(value)) { + value.forEach((item, index) => + extractLinks(item, `${jsonPath}[${index}]`) + ); + } else if (value !== null && typeof value === 'object') { + for (const [key, val] of Object.entries( + value as Record + )) { + extractLinks(val, `${jsonPath}.${key}`); + } + } + } + + extractLinks(spec, 'spec'); + return errors; +} + /** * Process a single product: fetch spec, generate data, and create pages * @@ -758,33 +896,52 @@ function processProduct(productKey: string, config: ProductConfig): void { fs.mkdirSync(staticPath, { recursive: true }); } - // Step 3: Copy the generated OpenAPI spec to static folder (YAML) + // Step 3: Load spec, transform documentation links, and write to static folder if (fs.existsSync(config.specFile)) { - fs.copyFileSync(config.specFile, staticSpecPath); - console.log(`✓ Copied spec to ${staticSpecPath}`); - - // Step 4: Generate JSON version of the spec try { const yaml = require('js-yaml'); const specContent = fs.readFileSync(config.specFile, 'utf8'); - const specObject = yaml.load(specContent); + const specObject = yaml.load(specContent) as Record; + + // Transform documentation links (/influxdb/version/ -> actual product path) + const productPath = deriveProductPath(config.specFile); + const transformedSpec = transformDocLinks(specObject, productPath); + console.log(`✓ Transformed documentation links to ${productPath}`); + + // Validate links if enabled + if (validateLinks) { + const contentDir = path.resolve(__dirname, '../../content'); + const linkErrors = validateDocLinks(transformedSpec, contentDir); + if (linkErrors.length > 0) { + console.warn( + `\n⚠️ Link validation warnings for ${config.specFile}:` + ); + linkErrors.forEach((err) => console.warn(` ${err}`)); + } + } + + // Write transformed spec to static folder (YAML) + fs.writeFileSync(staticSpecPath, yaml.dump(transformedSpec)); + console.log(`✓ Wrote transformed spec to ${staticSpecPath}`); + + // Step 4: Generate JSON version of the spec fs.writeFileSync( staticJsonSpecPath, - JSON.stringify(specObject, null, 2) + JSON.stringify(transformedSpec, null, 2) ); console.log(`✓ Generated JSON spec at ${staticJsonSpecPath}`); - } catch (jsonError) { - console.warn(`⚠️ Could not generate JSON spec: ${jsonError}`); + } catch (specError) { + console.warn(`⚠️ Could not process spec: ${specError}`); } } - // Step 5: Generate Hugo data from OpenAPI spec + // Step 5: Generate Hugo data from OpenAPI spec (using transformed spec) if (config.useTagBasedGeneration) { // Tag-based generation: group operations by OpenAPI tag const staticTagsPath = path.join(staticPath, `${staticDirName}/tags`); console.log(`\n📋 Using tag-based generation for ${productKey}...`); openapiPathsToHugo.generateHugoDataByTag({ - specFile: config.specFile, + specFile: staticSpecPath, dataOutPath: staticTagsPath, articleOutPath: articlesPath, includePaths: true, // Also generate path-based files for backwards compatibility @@ -797,7 +954,7 @@ function processProduct(productKey: string, config: ProductConfig): void { `\n📋 Generating path-specific specs in ${staticPathsPath}...` ); const pathSpecFiles = openapiPathsToHugo.generatePathSpecificSpecs( - config.specFile, + staticSpecPath, staticPathsPath ); @@ -812,7 +969,7 @@ function processProduct(productKey: string, config: ProductConfig): void { }); } else { // Path-based generation: group paths by URL prefix (legacy) - generateDataFromOpenAPI(config.specFile, staticPathsPath, articlesPath); + generateDataFromOpenAPI(staticSpecPath, staticPathsPath, articlesPath); // Step 6: Generate Hugo content pages from path-based article data generatePagesFromArticleData({ @@ -891,4 +1048,10 @@ export { processProduct, generateDataFromOpenAPI, generatePagesFromArticleData, + deriveProductPath, + transformDocLinks, + validateDocLinks, + resolveContentPath, + MARKDOWN_FIELDS, + LINK_PATTERN, }; diff --git a/data/article_data/influxdb/influxdb3_core/articles.json b/data/article_data/influxdb/influxdb3_core/articles.json index 276c9b278..d5d90db78 100644 --- a/data/article_data/influxdb/influxdb3_core/articles.json +++ b/data/article_data/influxdb/influxdb3_core/articles.json @@ -54,8 +54,8 @@ } ], "tagDescription": "Manage tokens for authentication and authorization", - "source": "static/openapi/influxdb3-core/tags/tags/ref-auth-token.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-auth-token.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-auth-token.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-auth-token.yaml" } }, { @@ -102,8 +102,8 @@ } ], "tagDescription": "Depending on your workflow, use one of the following schemes to authenticate to the InfluxDB 3 API:\n\n| Authentication scheme | Works with |\n|:----------------------|:-----------|\n| Bearer authentication | All endpoints |\n| Token authentication | v1 and v2 compatibility endpoints (`/write`, `/query`, `/api/v2/write`) |\n| Basic authentication | v1 compatibility endpoints (`/write`, `/query`) |\n| Querystring authentication | v1 compatibility endpoints (`/write`, `/query`) |\n\nSee the **Security Schemes** section below for details on each authentication method.\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-authentication.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-authentication.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-authentication.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-authentication.yaml" } }, { @@ -158,8 +158,8 @@ } ], "tagDescription": "Manage the in-memory cache.\n\n#### Distinct Value Cache\n\nThe Distinct Value Cache (DVC) lets you cache distinct\nvalues of one or more columns in a table, improving the performance of\nqueries that return distinct tag and field values. \n\nThe DVC is an in-memory cache that stores distinct values for specific columns\nin a table. When you create an DVC, you can specify what columns' distinct\nvalues to cache, the maximum number of distinct value combinations to cache, and\nthe maximum age of cached values. A DVC is associated with a table, which can\nhave multiple DVCs.\n\n#### Last value cache\n\nThe Last Value Cache (LVC) lets you cache the most recent\nvalues for specific fields in a table, improving the performance of queries that\nreturn the most recent value of a field for specific series or the last N values\nof a field.\n\nThe LVC is an in-memory cache that stores the last N number of values for\nspecific fields of series in a table. When you create an LVC, you can specify\nwhat fields to cache, what tags to use to identify each series, and the\nnumber of values to cache for each unique series.\nAn LVC is associated with a table, which can have multiple LVCs.\n\n#### Related guides\n\n- [Manage the Distinct Value Cache](/influxdb3/core/admin/distinct-value-cache/)\n- [Manage the Last Value Cache](/influxdb3/core/admin/last-value-cache/)\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-cache-data.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-cache-data.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-cache-data.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-cache-data.yaml" } }, { @@ -214,8 +214,8 @@ } ], "tagDescription": "Manage databases", - "source": "static/openapi/influxdb3-core/tags/tags/ref-database.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-database.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-database.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-database.yaml" } }, { @@ -224,14 +224,14 @@ "name": "Headers and parameters", "describes": [], "title": "Headers and parameters", - "description": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n\n### Common parameters\n\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\n\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The authorization scheme and credential. |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", + "description": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n\n### Common parameters\n\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\n\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The [authorization scheme and credential](/influxdb3/core/api/authentication/). |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", "tag": "Headers and parameters", "isConceptual": true, "menuGroup": "Concepts", "operations": [], - "tagDescription": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n\n### Common parameters\n\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\n\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The authorization scheme and credential. |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-headers-and-parameters.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-headers-and-parameters.yaml" + "tagDescription": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n\n### Common parameters\n\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\n\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The [authorization scheme and credential](/influxdb3/core/api/authentication/). |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-headers-and-parameters.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-headers-and-parameters.yaml" } }, { @@ -246,8 +246,8 @@ "menuGroup": "Other", "operations": [], "tagDescription": "Migrate your existing InfluxDB v1 or v2 workloads to InfluxDB 3.\n\nInfluxDB 3 provides compatibility endpoints that work with InfluxDB 1.x and 2.x client libraries and tools.\nOperations marked with v1 or v2 badges are compatible with the respective InfluxDB version.\n\n### Migration guides\n\n- [Migrate from InfluxDB v1](/influxdb3/core/guides/migrate/influxdb-1x/) - For users migrating from InfluxDB 1.x\n- [Migrate from InfluxDB v2](/influxdb3/core/guides/migrate/influxdb-2x/) - For users migrating from InfluxDB 2.x or Cloud\n- [Use compatibility APIs to write data](/influxdb3/core/write-data/http-api/compatibility-apis/) - v1 and v2 write endpoints\n- [Use the v1 HTTP query API](/influxdb3/core/query-data/execute-queries/influxdb-v1-api/) - InfluxQL queries via HTTP\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-migrate-from-influxdb-v1-or-v2.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-migrate-from-influxdb-v1-or-v2.yaml" } }, { @@ -382,8 +382,8 @@ } ], "tagDescription": "Manage Processing engine triggers, test plugins, and send requests to trigger On Request plugins.\n\nInfluxDB 3 Core provides the InfluxDB 3 processing engine, an embedded Python VM that can dynamically load and trigger Python plugins in response to events in your database.\nUse Processing engine plugins and triggers to run code and perform tasks for different database events.\n\nTo get started with the processing engine, see the [Processing engine and Python plugins](/influxdb3/core/processing-engine/) guide.\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-processing-engine.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-processing-engine.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-processing-engine.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-processing-engine.yaml" } }, { @@ -470,8 +470,8 @@ "related": [ "/influxdb3/core/query-data/execute-queries/influxdb-v1-api/" ], - "source": "static/openapi/influxdb3-core/tags/tags/ref-query-data.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-query-data.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-query-data.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-query-data.yaml" } }, { @@ -486,8 +486,8 @@ "menuGroup": "Concepts", "operations": [], "tagDescription": "1. [Create an admin token](#section/Authentication) to authorize API requests.\n\n ```bash\n curl -X POST \"http://localhost:8181/api/v3/configure/token/admin\"\n ```\n2. [Check the status](#section/Server-information) of the InfluxDB server.\n\n ```bash\n curl \"http://localhost:8181/health\" \\\n --header \"Authorization: Bearer ADMIN_TOKEN\"\n ```\n\n3. [Write data](#operation/PostWriteLP) to InfluxDB.\n\n ```bash\n curl \"http://localhost:8181/api/v3/write_lp?db=sensors&precision=auto\"\n --header \"Authorization: Bearer ADMIN_TOKEN\" \\\n --data-raw \"home,room=Kitchen temp=72.0\n home,room=Living\\ room temp=71.5\"\n ```\n\n If all data is written, the response is `204 No Content`.\n\n4. [Query data](#operation/GetExecuteQuerySQL) from InfluxDB.\n\n ```bash\n curl -G \"http://localhost:8181/api/v3/query_sql\" \\\n --header \"Authorization: Bearer ADMIN_TOKEN\" \\\n --data-urlencode \"db=sensors\" \\\n --data-urlencode \"q=SELECT * FROM home WHERE room='Living room'\" \\\n --data-urlencode \"format=jsonl\"\n ```\n \n Output:\n\n ```jsonl\n {\"room\":\"Living room\",\"temp\":71.5,\"time\":\"2025-02-25T20:19:34.984098\"}\n ```\n \nFor more information about using InfluxDB 3 Core, see the [Get started](/influxdb3/core/get-started/) guide.\n", - "source": "static/openapi/influxdb3-core/tags/tags/ref-quick-start.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-quick-start.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-quick-start.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-quick-start.yaml" } }, { @@ -545,8 +545,8 @@ } ], "tagDescription": "Retrieve server metrics, status, and version information", - "source": "static/openapi/influxdb3-core/tags/tags/ref-server-information.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-server-information.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-server-information.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-server-information.yaml" } }, { @@ -582,8 +582,8 @@ } ], "tagDescription": "Manage table schemas and data", - "source": "static/openapi/influxdb3-core/tags/tags/ref-table.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-table.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-table.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-table.yaml" } }, { @@ -643,8 +643,8 @@ "related": [ "/influxdb3/core/write-data/http-api/compatibility-apis/" ], - "source": "static/openapi/influxdb3-core/tags/tags/ref-write-data.yaml", - "staticFilePath": "/openapi/influxdb3-core/tags/tags/ref-write-data.yaml" + "source": "static/openapi/influxdb3-core/tags/tags/influxdb3-core-write-data.yaml", + "staticFilePath": "/openapi/influxdb3-core/tags/tags/influxdb3-core-write-data.yaml" } } ] diff --git a/data/article_data/influxdb/influxdb3_core/articles.yml b/data/article_data/influxdb/influxdb3_core/articles.yml index b68eb76ea..871879489 100644 --- a/data/article_data/influxdb/influxdb3_core/articles.yml +++ b/data/article_data/influxdb/influxdb3_core/articles.yml @@ -38,8 +38,8 @@ articles: tags: - Auth token tagDescription: Manage tokens for authentication and authorization - source: static/openapi/influxdb3-core/tags/tags/ref-auth-token.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-auth-token.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-auth-token.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-auth-token.yaml - path: api/authentication fields: name: Authentication @@ -116,8 +116,9 @@ articles: See the **Security Schemes** section below for details on each authentication method. - source: static/openapi/influxdb3-core/tags/tags/ref-authentication.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-authentication.yaml + source: >- + static/openapi/influxdb3-core/tags/tags/influxdb3-core-authentication.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-authentication.yaml - path: api/cache-data fields: name: Cache data @@ -279,8 +280,8 @@ articles: Cache](/influxdb3/core/admin/distinct-value-cache/) - [Manage the Last Value Cache](/influxdb3/core/admin/last-value-cache/) - source: static/openapi/influxdb3-core/tags/tags/ref-cache-data.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-cache-data.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-cache-data.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-cache-data.yaml - path: api/database fields: name: Database @@ -318,8 +319,8 @@ articles: tags: - Database tagDescription: Manage databases - source: static/openapi/influxdb3-core/tags/tags/ref-database.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-database.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-database.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-database.yaml - path: api/headers-and-parameters fields: name: Headers and parameters @@ -373,8 +374,8 @@ articles: | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization - scheme and credential. | + | `Authorization` | string | The [authorization + scheme and credential](/influxdb3/core/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | @@ -433,16 +434,18 @@ articles: | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization - scheme and credential. | + | `Authorization` | string | The [authorization + scheme and credential](/influxdb3/core/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | | `Content-Type` | string | The format of the data in the request body. | - source: static/openapi/influxdb3-core/tags/tags/ref-headers-and-parameters.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-headers-and-parameters.yaml + source: >- + static/openapi/influxdb3-core/tags/tags/influxdb3-core-headers-and-parameters.yaml + staticFilePath: >- + /openapi/influxdb3-core/tags/tags/influxdb3-core-headers-and-parameters.yaml - path: api/migrate-from-influxdb-v1-or-v2 fields: name: Migrate from InfluxDB v1 or v2 @@ -515,9 +518,9 @@ articles: API](/influxdb3/core/query-data/execute-queries/influxdb-v1-api/) - InfluxQL queries via HTTP source: >- - static/openapi/influxdb3-core/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml + static/openapi/influxdb3-core/tags/tags/influxdb3-core-migrate-from-influxdb-v1-or-v2.yaml staticFilePath: >- - /openapi/influxdb3-core/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml + /openapi/influxdb3-core/tags/tags/influxdb3-core-migrate-from-influxdb-v1-or-v2.yaml - path: api/processing-engine fields: name: Processing engine @@ -639,8 +642,9 @@ articles: To get started with the processing engine, see the [Processing engine and Python plugins](/influxdb3/core/processing-engine/) guide. - source: static/openapi/influxdb3-core/tags/tags/ref-processing-engine.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-processing-engine.yaml + source: >- + static/openapi/influxdb3-core/tags/tags/influxdb3-core-processing-engine.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-processing-engine.yaml - path: api/query-data fields: name: Query data @@ -701,8 +705,8 @@ articles: tagDescription: Query data using SQL or InfluxQL related: - /influxdb3/core/query-data/execute-queries/influxdb-v1-api/ - source: static/openapi/influxdb3-core/tags/tags/ref-query-data.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-query-data.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-query-data.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-query-data.yaml - path: api/quick-start fields: name: Quick start @@ -800,8 +804,8 @@ articles: For more information about using InfluxDB 3 Core, see the [Get started](/influxdb3/core/get-started/) guide. - source: static/openapi/influxdb3-core/tags/tags/ref-quick-start.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-quick-start.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-quick-start.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-quick-start.yaml - path: api/server-information fields: name: Server information @@ -842,8 +846,9 @@ articles: tags: - Server information tagDescription: Retrieve server metrics, status, and version information - source: static/openapi/influxdb3-core/tags/tags/ref-server-information.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-server-information.yaml + source: >- + static/openapi/influxdb3-core/tags/tags/influxdb3-core-server-information.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-server-information.yaml - path: api/table fields: name: Table @@ -868,8 +873,8 @@ articles: tags: - Table tagDescription: Manage table schemas and data - source: static/openapi/influxdb3-core/tags/tags/ref-table.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-table.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-table.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-table.yaml - path: api/write-data fields: name: Write data @@ -984,5 +989,5 @@ articles: All timestamps are stored internally as nanoseconds. related: - /influxdb3/core/write-data/http-api/compatibility-apis/ - source: static/openapi/influxdb3-core/tags/tags/ref-write-data.yaml - staticFilePath: /openapi/influxdb3-core/tags/tags/ref-write-data.yaml + source: static/openapi/influxdb3-core/tags/tags/influxdb3-core-write-data.yaml + staticFilePath: /openapi/influxdb3-core/tags/tags/influxdb3-core-write-data.yaml diff --git a/data/article_data/influxdb/influxdb3_enterprise/articles.json b/data/article_data/influxdb/influxdb3_enterprise/articles.json index 0e49c9cb8..2da1a5b06 100644 --- a/data/article_data/influxdb/influxdb3_enterprise/articles.json +++ b/data/article_data/influxdb/influxdb3_enterprise/articles.json @@ -64,8 +64,8 @@ } ], "tagDescription": "Manage tokens for authentication and authorization", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-auth-token.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-auth-token.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-auth-token.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-auth-token.yaml" } }, { @@ -122,8 +122,8 @@ } ], "tagDescription": "Depending on your workflow, use one of the following schemes to authenticate to the InfluxDB 3 API:\n| Authentication scheme | Works with |\n|:----------------------|:-----------|\n| Bearer authentication | All endpoints |\n| Token authentication | v1 and v2 compatibility endpoints (`/write`, `/query`, `/api/v2/write`) |\n| Basic authentication | v1 compatibility endpoints (`/write`, `/query`) |\n| Querystring authentication | v1 compatibility endpoints (`/write`, `/query`) |\nSee the **Security Schemes** section below for details on each authentication method.\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-authentication.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-authentication.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-authentication.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-authentication.yaml" } }, { @@ -178,8 +178,8 @@ } ], "tagDescription": "Manage the in-memory cache.\n#### Distinct Value Cache\nThe Distinct Value Cache (DVC) lets you cache distinct\nvalues of one or more columns in a table, improving the performance of\nqueries that return distinct tag and field values. \nThe DVC is an in-memory cache that stores distinct values for specific columns\nin a table. When you create an DVC, you can specify what columns' distinct\nvalues to cache, the maximum number of distinct value combinations to cache, and\nthe maximum age of cached values. A DVC is associated with a table, which can\nhave multiple DVCs.\n#### Last value cache\nThe Last Value Cache (LVC) lets you cache the most recent\nvalues for specific fields in a table, improving the performance of queries that\nreturn the most recent value of a field for specific series or the last N values\nof a field.\nThe LVC is an in-memory cache that stores the last N number of values for\nspecific fields of series in a table. When you create an LVC, you can specify\nwhat fields to cache, what tags to use to identify each series, and the\nnumber of values to cache for each unique series.\nAn LVC is associated with a table, which can have multiple LVCs.\n#### Related guides\n- [Manage the Distinct Value Cache](/influxdb3/enterprise/admin/distinct-value-cache/)\n- [Manage the Last Value Cache](/influxdb3/enterprise/admin/last-value-cache/)\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-cache-data.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-cache-data.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-cache-data.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-cache-data.yaml" } }, { @@ -244,8 +244,8 @@ } ], "tagDescription": "Manage databases", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-database.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-database.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-database.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-database.yaml" } }, { @@ -254,14 +254,14 @@ "name": "Headers and parameters", "describes": [], "title": "Headers and parameters", - "description": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n### Common parameters\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The authorization scheme and credential. |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", + "description": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n### Common parameters\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The [authorization scheme and credential](/influxdb3/enterprise/api/authentication/). |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", "tag": "Headers and parameters", "isConceptual": true, "menuGroup": "Concepts", "operations": [], - "tagDescription": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n### Common parameters\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The authorization scheme and credential. |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-headers-and-parameters.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-headers-and-parameters.yaml" + "tagDescription": "Most InfluxDB API endpoints require parameters in the request--for example, specifying the database to use.\n### Common parameters\nThe following table shows common parameters used by many InfluxDB API endpoints.\nMany endpoints may require other parameters in the query string or in the\nrequest body that perform functions specific to those endpoints.\n| Query parameter | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `db` | string | The database name |\nInfluxDB HTTP API endpoints use standard HTTP request and response headers.\nThe following table shows common headers used by many InfluxDB API endpoints.\nSome endpoints may use other headers that perform functions more specific to those endpoints--for example,\nthe write endpoints accept the `Content-Encoding` header to indicate that line protocol is compressed in the request body.\n| Header | Value type | Description |\n|:------------------------ |:--------------------- |:-------------------------------------------|\n| `Accept` | string | The content type that the client can understand. |\n| `Authorization` | string | The [authorization scheme and credential](/influxdb3/enterprise/api/authentication/). |\n| `Content-Length` | integer | The size of the entity-body, in bytes. |\n| `Content-Type` | string | The format of the data in the request body. |\n", + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-headers-and-parameters.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-headers-and-parameters.yaml" } }, { @@ -276,8 +276,8 @@ "menuGroup": "Other", "operations": [], "tagDescription": "Migrate your existing InfluxDB v1 or v2 workloads to InfluxDB 3.\nInfluxDB 3 provides compatibility endpoints that work with InfluxDB 1.x and 2.x client libraries and tools.\nOperations marked with v1 or v2 badges are compatible with the respective InfluxDB version.\n### Migration guides\n- [Migrate from InfluxDB v1](/influxdb3/enterprise/guides/migrate/influxdb-1x/) - For users migrating from InfluxDB 1.x\n- [Migrate from InfluxDB v2](/influxdb3/enterprise/guides/migrate/influxdb-2x/) - For users migrating from InfluxDB 2.x or Cloud\n- [Use compatibility APIs to write data](/influxdb3/enterprise/write-data/http-api/compatibility-apis/) - v1 and v2 write endpoints\n- [Use the v1 HTTP query API](/influxdb3/enterprise/query-data/execute-queries/influxdb-v1-api/) - InfluxQL queries via HTTP\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-migrate-from-influxdb-v1-or-v2.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-migrate-from-influxdb-v1-or-v2.yaml" } }, { @@ -412,8 +412,8 @@ } ], "tagDescription": "Manage Processing engine triggers, test plugins, and send requests to trigger On Request plugins.\nInfluxDB 3 Enterprise provides the InfluxDB 3 processing engine, an embedded Python VM that can dynamically load and trigger Python plugins in response to events in your database.\nUse Processing engine plugins and triggers to run code and perform tasks for different database events.\nTo get started with the processing engine, see the [Processing engine and Python plugins](/influxdb3/enterprise/processing-engine/) guide.\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-processing-engine.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-processing-engine.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-processing-engine.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-processing-engine.yaml" } }, { @@ -500,8 +500,8 @@ "related": [ "/influxdb3/enterprise/query-data/execute-queries/influxdb-v1-api/" ], - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-query-data.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-query-data.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-query-data.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-query-data.yaml" } }, { @@ -516,8 +516,8 @@ "menuGroup": "Concepts", "operations": [], "tagDescription": "1. [Create an admin token](#section/Authentication) to authorize API requests.\n ```bash\n curl -X POST \"http://localhost:8181/api/v3/configure/token/admin\"\n ```\n2. [Check the status](#section/Server-information) of the InfluxDB server.\n ```bash\n curl \"http://localhost:8181/health\" \\\n --header \"Authorization: Bearer ADMIN_TOKEN\"\n ```\n3. [Write data](#operation/PostWriteLP) to InfluxDB.\n ```bash\n curl \"http://localhost:8181/api/v3/write_lp?db=sensors&precision=auto\"\n --header \"Authorization: Bearer ADMIN_TOKEN\" \\\n --data-raw \"home,room=Kitchen temp=72.0\n home,room=Living\\ room temp=71.5\"\n ```\n If all data is written, the response is `204 No Content`.\n4. [Query data](#operation/GetExecuteQuerySQL) from InfluxDB.\n ```bash\n curl -G \"http://localhost:8181/api/v3/query_sql\" \\\n --header \"Authorization: Bearer ADMIN_TOKEN\" \\\n --data-urlencode \"db=sensors\" \\\n --data-urlencode \"q=SELECT * FROM home WHERE room='Living room'\" \\\n --data-urlencode \"format=jsonl\"\n ```\n \n Output:\n ```jsonl\n {\"room\":\"Living room\",\"temp\":71.5,\"time\":\"2025-02-25T20:19:34.984098\"}\n ```\n \nFor more information about using InfluxDB 3 Enterprise, see the [Get started](/influxdb3/enterprise/get-started/) guide.\n", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-quick-start.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-quick-start.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-quick-start.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-quick-start.yaml" } }, { @@ -585,8 +585,8 @@ } ], "tagDescription": "Retrieve server metrics, status, and version information", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-server-information.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-server-information.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-server-information.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-server-information.yaml" } }, { @@ -631,8 +631,8 @@ } ], "tagDescription": "Manage table schemas and data", - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-table.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-table.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-table.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-table.yaml" } }, { @@ -692,8 +692,8 @@ "related": [ "/influxdb3/enterprise/write-data/http-api/compatibility-apis/" ], - "source": "static/openapi/influxdb3-enterprise/tags/tags/ref-write-data.yaml", - "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/ref-write-data.yaml" + "source": "static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-write-data.yaml", + "staticFilePath": "/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-write-data.yaml" } } ] diff --git a/data/article_data/influxdb/influxdb3_enterprise/articles.yml b/data/article_data/influxdb/influxdb3_enterprise/articles.yml index 3e99f708f..3a06d3f58 100644 --- a/data/article_data/influxdb/influxdb3_enterprise/articles.yml +++ b/data/article_data/influxdb/influxdb3_enterprise/articles.yml @@ -45,8 +45,10 @@ articles: tags: - Auth token tagDescription: Manage tokens for authentication and authorization - source: static/openapi/influxdb3-enterprise/tags/tags/ref-auth-token.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-auth-token.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-auth-token.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-auth-token.yaml - path: api/authentication fields: name: Authentication @@ -126,8 +128,10 @@ articles: See the **Security Schemes** section below for details on each authentication method. - source: static/openapi/influxdb3-enterprise/tags/tags/ref-authentication.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-authentication.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-authentication.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-authentication.yaml - path: api/cache-data fields: name: Cache data @@ -275,8 +279,10 @@ articles: - [Manage the Last Value Cache](/influxdb3/enterprise/admin/last-value-cache/) - source: static/openapi/influxdb3-enterprise/tags/tags/ref-cache-data.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-cache-data.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-cache-data.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-cache-data.yaml - path: api/database fields: name: Database @@ -321,8 +327,10 @@ articles: tags: - Database tagDescription: Manage databases - source: static/openapi/influxdb3-enterprise/tags/tags/ref-database.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-database.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-database.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-database.yaml - path: api/headers-and-parameters fields: name: Headers and parameters @@ -371,8 +379,8 @@ articles: | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization - scheme and credential. | + | `Authorization` | string | The [authorization + scheme and credential](/influxdb3/enterprise/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | @@ -426,8 +434,8 @@ articles: | `Accept` | string | The content type that the client can understand. | - | `Authorization` | string | The authorization - scheme and credential. | + | `Authorization` | string | The [authorization + scheme and credential](/influxdb3/enterprise/api/authentication/). | | `Content-Length` | integer | The size of the entity-body, in bytes. | @@ -435,8 +443,9 @@ articles: | `Content-Type` | string | The format of the data in the request body. | source: >- - static/openapi/influxdb3-enterprise/tags/tags/ref-headers-and-parameters.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-headers-and-parameters.yaml + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-headers-and-parameters.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-headers-and-parameters.yaml - path: api/migrate-from-influxdb-v1-or-v2 fields: name: Migrate from InfluxDB v1 or v2 @@ -503,9 +512,9 @@ articles: API](/influxdb3/enterprise/query-data/execute-queries/influxdb-v1-api/) - InfluxQL queries via HTTP source: >- - static/openapi/influxdb3-enterprise/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-migrate-from-influxdb-v1-or-v2.yaml staticFilePath: >- - /openapi/influxdb3-enterprise/tags/tags/ref-migrate-from-influxdb-v1-or-v2.yaml + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-migrate-from-influxdb-v1-or-v2.yaml - path: api/processing-engine fields: name: Processing engine @@ -623,8 +632,10 @@ articles: To get started with the processing engine, see the [Processing engine and Python plugins](/influxdb3/enterprise/processing-engine/) guide. - source: static/openapi/influxdb3-enterprise/tags/tags/ref-processing-engine.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-processing-engine.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-processing-engine.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-processing-engine.yaml - path: api/query-data fields: name: Query data @@ -685,8 +696,10 @@ articles: tagDescription: Query data using SQL or InfluxQL related: - /influxdb3/enterprise/query-data/execute-queries/influxdb-v1-api/ - source: static/openapi/influxdb3-enterprise/tags/tags/ref-query-data.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-query-data.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-query-data.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-query-data.yaml - path: api/quick-start fields: name: Quick start @@ -768,8 +781,10 @@ articles: For more information about using InfluxDB 3 Enterprise, see the [Get started](/influxdb3/enterprise/get-started/) guide. - source: static/openapi/influxdb3-enterprise/tags/tags/ref-quick-start.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-quick-start.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-quick-start.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-quick-start.yaml - path: api/server-information fields: name: Server information @@ -818,8 +833,9 @@ articles: - Server information tagDescription: Retrieve server metrics, status, and version information source: >- - static/openapi/influxdb3-enterprise/tags/tags/ref-server-information.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-server-information.yaml + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-server-information.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-server-information.yaml - path: api/table fields: name: Table @@ -850,8 +866,9 @@ articles: tags: - Table tagDescription: Manage table schemas and data - source: static/openapi/influxdb3-enterprise/tags/tags/ref-table.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-table.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-table.yaml + staticFilePath: /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-table.yaml - path: api/write-data fields: name: Write data @@ -958,5 +975,7 @@ articles: All timestamps are stored internally as nanoseconds. related: - /influxdb3/enterprise/write-data/http-api/compatibility-apis/ - source: static/openapi/influxdb3-enterprise/tags/tags/ref-write-data.yaml - staticFilePath: /openapi/influxdb3-enterprise/tags/tags/ref-write-data.yaml + source: >- + static/openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-write-data.yaml + staticFilePath: >- + /openapi/influxdb3-enterprise/tags/tags/influxdb3-enterprise-write-data.yaml