From 6e77ed3a28599e26bfb209e827520b2fd10593b2 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Thu, 25 Jun 2026 22:05:55 +0200 Subject: [PATCH 01/10] feat(search): index API endpoint REST paths in content field Append the HTTP method and REST path to each API endpoint's search content so users can find endpoints by typing the path. Capture the method and path in api-pages-full-index.json and pass them to the per-endpoint indexer. --- layouts/partials/algolia/api-page-index.json | 7 ++++++- .../algolia/api-pages-full-index.json | 20 +++++++++++-------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index 10c946414b3..83b8e6f29a9 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -5,6 +5,8 @@ {{ $lang := .lang }} {{ $api_version := .api_version }} {{/* "v1" or "v2" */}} {{ $endpoint_data := .endpoint_data }} +{{ $endpoint_path := .endpoint_path }} +{{ $method := .method }} {{ $api_v1_translate_actions := .api_v1_translate_actions }} {{ $api_v2_translate_actions := .api_v2_translate_actions }} @@ -19,7 +21,10 @@ {{ $translate_actions_datafile := cond (eq $api_version "v1") $api_v1_translate_actions $api_v2_translate_actions }} {{ $action_data := index $translate_actions_datafile $operationId }} {{ $section_header := $action_data.summary }} -{{ $section_content := $action_data.description }} +{{ $section_content := $action_data.description | default "" }} + +{{/* Append the HTTP method + REST path so endpoint paths are searchable via the content field (kept at the end to avoid polluting the start of the auto-embedded content). */}} +{{ $section_content = printf "%s\n\n%s %s" $section_content (upper $method) $endpoint_path | strings.TrimSpace }} {{ $endpoint_slug := $section_header | anchorize }} {{ $full_url := print $permalink $endpoint_slug "/" }} {{ $relpermalink = print $relpermalink $endpoint_slug "/" }} diff --git a/layouts/partials/algolia/api-pages-full-index.json b/layouts/partials/algolia/api-pages-full-index.json index 461f06979b3..3bde684ff69 100644 --- a/layouts/partials/algolia/api-pages-full-index.json +++ b/layouts/partials/algolia/api-pages-full-index.json @@ -32,10 +32,10 @@ {{/* Get all v1 api actions for this page by matching title with spec data's tag property */}} {{ range $endpoint_path, $endpoint_data := $api_v1_data.paths }} - {{ range $endpoint_data }} + {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} - {{ if isset . "tags" }} - {{ $tags = .tags }} + {{ if isset $action "tags" }} + {{ $tags = $action.tags }} {{ end }} {{ if in $tags $title }} @@ -47,7 +47,9 @@ "title" $title "lang" $lang "api_version" "v1" - "endpoint_data" . + "endpoint_data" $action + "endpoint_path" $endpoint_path + "method" $method "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) @@ -60,10 +62,10 @@ {{/* Get all v2 api actions for this page by matching title with spec data's tag property */}} {{ range $endpoint_path, $endpoint_data := $api_v2_data.paths }} - {{ range $endpoint_data }} + {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} - {{ if isset . "tags" }} - {{ $tags = .tags }} + {{ if isset $action "tags" }} + {{ $tags = $action.tags }} {{ end }} {{ if in $tags $title }} @@ -75,7 +77,9 @@ "title" $title "lang" $lang "api_version" "v2" - "endpoint_data" . + "endpoint_data" $action + "endpoint_path" $endpoint_path + "method" $method "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) From 52d05187ccc2614cc2074714bf1bc127df2f12f4 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 11:26:53 +0200 Subject: [PATCH 02/10] docs(search): comment API endpoint path/method capture --- layouts/partials/algolia/api-pages-full-index.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/layouts/partials/algolia/api-pages-full-index.json b/layouts/partials/algolia/api-pages-full-index.json index 3bde684ff69..7c50272556b 100644 --- a/layouts/partials/algolia/api-pages-full-index.json +++ b/layouts/partials/algolia/api-pages-full-index.json @@ -31,6 +31,7 @@ {{ end }} {{/* Get all v1 api actions for this page by matching title with spec data's tag property */}} + {{/* $endpoint_path is the REST path (map key, e.g. "/api/v1/..."); $method is the HTTP verb (map key, e.g. "get"). Both are forwarded so api-page-index.json can make the path searchable via the content field. */}} {{ range $endpoint_path, $endpoint_data := $api_v1_data.paths }} {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} @@ -61,6 +62,7 @@ {{ end }} {{/* Get all v2 api actions for this page by matching title with spec data's tag property */}} + {{/* $endpoint_path is the REST path (map key, e.g. "/api/v2/..."); $method is the HTTP verb (map key, e.g. "get"). Both are forwarded so api-page-index.json can make the path searchable via the content field. */}} {{ range $endpoint_path, $endpoint_data := $api_v2_data.paths }} {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} From 636aaf1701ba02c3c710240554a592de151cedd8 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 11:42:19 +0200 Subject: [PATCH 03/10] chore(search): revert API path indexing to baseline Remove the endpoint path/method indexing changes so this branch builds the master baseline search.json for diffing. To be re-added later. --- layouts/partials/algolia/api-page-index.json | 7 +----- .../algolia/api-pages-full-index.json | 22 +++++++------------ 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index 83b8e6f29a9..10c946414b3 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -5,8 +5,6 @@ {{ $lang := .lang }} {{ $api_version := .api_version }} {{/* "v1" or "v2" */}} {{ $endpoint_data := .endpoint_data }} -{{ $endpoint_path := .endpoint_path }} -{{ $method := .method }} {{ $api_v1_translate_actions := .api_v1_translate_actions }} {{ $api_v2_translate_actions := .api_v2_translate_actions }} @@ -21,10 +19,7 @@ {{ $translate_actions_datafile := cond (eq $api_version "v1") $api_v1_translate_actions $api_v2_translate_actions }} {{ $action_data := index $translate_actions_datafile $operationId }} {{ $section_header := $action_data.summary }} -{{ $section_content := $action_data.description | default "" }} - -{{/* Append the HTTP method + REST path so endpoint paths are searchable via the content field (kept at the end to avoid polluting the start of the auto-embedded content). */}} -{{ $section_content = printf "%s\n\n%s %s" $section_content (upper $method) $endpoint_path | strings.TrimSpace }} +{{ $section_content := $action_data.description }} {{ $endpoint_slug := $section_header | anchorize }} {{ $full_url := print $permalink $endpoint_slug "/" }} {{ $relpermalink = print $relpermalink $endpoint_slug "/" }} diff --git a/layouts/partials/algolia/api-pages-full-index.json b/layouts/partials/algolia/api-pages-full-index.json index 7c50272556b..461f06979b3 100644 --- a/layouts/partials/algolia/api-pages-full-index.json +++ b/layouts/partials/algolia/api-pages-full-index.json @@ -31,12 +31,11 @@ {{ end }} {{/* Get all v1 api actions for this page by matching title with spec data's tag property */}} - {{/* $endpoint_path is the REST path (map key, e.g. "/api/v1/..."); $method is the HTTP verb (map key, e.g. "get"). Both are forwarded so api-page-index.json can make the path searchable via the content field. */}} {{ range $endpoint_path, $endpoint_data := $api_v1_data.paths }} - {{ range $method, $action := $endpoint_data }} + {{ range $endpoint_data }} {{ $tags := slice }} - {{ if isset $action "tags" }} - {{ $tags = $action.tags }} + {{ if isset . "tags" }} + {{ $tags = .tags }} {{ end }} {{ if in $tags $title }} @@ -48,9 +47,7 @@ "title" $title "lang" $lang "api_version" "v1" - "endpoint_data" $action - "endpoint_path" $endpoint_path - "method" $method + "endpoint_data" . "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) @@ -62,12 +59,11 @@ {{ end }} {{/* Get all v2 api actions for this page by matching title with spec data's tag property */}} - {{/* $endpoint_path is the REST path (map key, e.g. "/api/v2/..."); $method is the HTTP verb (map key, e.g. "get"). Both are forwarded so api-page-index.json can make the path searchable via the content field. */}} {{ range $endpoint_path, $endpoint_data := $api_v2_data.paths }} - {{ range $method, $action := $endpoint_data }} + {{ range $endpoint_data }} {{ $tags := slice }} - {{ if isset $action "tags" }} - {{ $tags = $action.tags }} + {{ if isset . "tags" }} + {{ $tags = .tags }} {{ end }} {{ if in $tags $title }} @@ -79,9 +75,7 @@ "title" $title "lang" $lang "api_version" "v2" - "endpoint_data" $action - "endpoint_path" $endpoint_path - "method" $method + "endpoint_data" . "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) From b59b050c1c6fe502b4ea7963a4a8418cf84a2123 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 14:47:44 +0200 Subject: [PATCH 04/10] fix(search): dedupe v1/v2 API records by anchorized summary Compare anchorized summaries in the v1/v2 disambiguation so endpoints whose translated summaries differ only by punctuation (e.g. trailing period) still get a unique -v1/-v2 anchor instead of colliding on one objectID and churning on every sync. --- layouts/partials/algolia/api-page-index.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index 10c946414b3..acde686b281 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -26,7 +26,7 @@ {{/* When the same operationId+summary exists in both v1 and v2, both versions share one endpoint page with version tabs. Disambiguate the records by linking to the tab anchor. */}} {{ $other_action := cond (eq $api_version "v1") (index $api_v2_translate_actions $operationId) (index $api_v1_translate_actions $operationId) }} -{{ if and (ne $other_action nil) (eq $other_action.summary $section_header) }} +{{ if and (ne $other_action nil) (eq ($other_action.summary | anchorize) ($section_header | anchorize)) }} {{ $tab_anchor := (print $section_header "-" $api_version) | anchorize }} {{ $full_url = print $full_url "#" $tab_anchor }} {{ $relpermalink = print $relpermalink "#" $tab_anchor }} From 2dd211f5adca69018839bf5e85a8765258b30991 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 16:25:51 +0200 Subject: [PATCH 05/10] [empty] trigger build to test updated api From 72a7fdd08d5e644559810f5f8f163e1d45b6c912 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 18:48:13 +0200 Subject: [PATCH 06/10] [test] tweak bits_chat overview wording to verify single-record sync diff --- content/en/bits_ai/bits_chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/bits_ai/bits_chat.md b/content/en/bits_ai/bits_chat.md index 35c8b0d82b0..bdfa1270252 100644 --- a/content/en/bits_ai/bits_chat.md +++ b/content/en/bits_ai/bits_chat.md @@ -22,7 +22,7 @@ aliases: --- ## Overview -Bits Chat helps you search and act across Datadog using natural language. Bits Chat is available across the web application, mobile app, and Slack. +Bits Chat helps you search and act across Datadog using natural language. Bits Chat is available in the web application, mobile app, and Slack. Ask Bits Chat questions across these categories: From e484b199d73b938b0a0f95698e755a4ae55cc309 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 19:37:28 +0200 Subject: [PATCH 07/10] Revert [test] bits_chat wording change --- content/en/bits_ai/bits_chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/bits_ai/bits_chat.md b/content/en/bits_ai/bits_chat.md index bdfa1270252..35c8b0d82b0 100644 --- a/content/en/bits_ai/bits_chat.md +++ b/content/en/bits_ai/bits_chat.md @@ -22,7 +22,7 @@ aliases: --- ## Overview -Bits Chat helps you search and act across Datadog using natural language. Bits Chat is available in the web application, mobile app, and Slack. +Bits Chat helps you search and act across Datadog using natural language. Bits Chat is available across the web application, mobile app, and Slack. Ask Bits Chat questions across these categories: From 8d8546dc4ef8ebbad3ef079ab7caf0ba8b270cd1 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 19:37:29 +0200 Subject: [PATCH 08/10] Re-add API path/method indexing as a commented, inert toggle Forward $endpoint_path/$method into api-page-index.json and add a commented-out append to the content field. Disabled by default (uncomment one line to enable); output is unchanged from baseline. --- layouts/partials/algolia/api-page-index.json | 8 +++++++ .../algolia/api-pages-full-index.json | 23 ++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index acde686b281..f2f24f722cb 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -5,6 +5,8 @@ {{ $lang := .lang }} {{ $api_version := .api_version }} {{/* "v1" or "v2" */}} {{ $endpoint_data := .endpoint_data }} +{{ $endpoint_path := .endpoint_path }} {{/* REST path, e.g. "/api/v2/..." (used only by the commented-out path-indexing toggle below) */}} +{{ $method := .method }} {{/* HTTP verb, e.g. "get" (used only by the commented-out path-indexing toggle below) */}} {{ $api_v1_translate_actions := .api_v1_translate_actions }} {{ $api_v2_translate_actions := .api_v2_translate_actions }} @@ -20,6 +22,12 @@ {{ $action_data := index $translate_actions_datafile $operationId }} {{ $section_header := $action_data.summary }} {{ $section_content := $action_data.description }} + +{{/* PATH-INDEXING TOGGLE: uncomment the line below to append "METHOD /path" to the + content field so endpoint REST paths become searchable. Appended at the END so it + doesn't pollute the start of the auto-embedded content. Left commented out for now. */}} +{{/* {{ $section_content = printf "%s\n\n%s %s" ($section_content | default "") (upper $method) $endpoint_path | strings.TrimSpace }} */}} + {{ $endpoint_slug := $section_header | anchorize }} {{ $full_url := print $permalink $endpoint_slug "/" }} {{ $relpermalink = print $relpermalink $endpoint_slug "/" }} diff --git a/layouts/partials/algolia/api-pages-full-index.json b/layouts/partials/algolia/api-pages-full-index.json index 461f06979b3..103db4284ee 100644 --- a/layouts/partials/algolia/api-pages-full-index.json +++ b/layouts/partials/algolia/api-pages-full-index.json @@ -31,11 +31,13 @@ {{ end }} {{/* Get all v1 api actions for this page by matching title with spec data's tag property */}} + {{/* $endpoint_path (REST path, map key) and $method (HTTP verb, map key) are forwarded so + api-page-index.json's commented-out path-indexing toggle can use them; inert otherwise. */}} {{ range $endpoint_path, $endpoint_data := $api_v1_data.paths }} - {{ range $endpoint_data }} + {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} - {{ if isset . "tags" }} - {{ $tags = .tags }} + {{ if isset $action "tags" }} + {{ $tags = $action.tags }} {{ end }} {{ if in $tags $title }} @@ -47,7 +49,9 @@ "title" $title "lang" $lang "api_version" "v1" - "endpoint_data" . + "endpoint_data" $action + "endpoint_path" $endpoint_path + "method" $method "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) @@ -59,11 +63,12 @@ {{ end }} {{/* Get all v2 api actions for this page by matching title with spec data's tag property */}} + {{/* Same capture as the v1 loop: $endpoint_path and $method forwarded for the commented-out toggle. */}} {{ range $endpoint_path, $endpoint_data := $api_v2_data.paths }} - {{ range $endpoint_data }} + {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} - {{ if isset . "tags" }} - {{ $tags = .tags }} + {{ if isset $action "tags" }} + {{ $tags = $action.tags }} {{ end }} {{ if in $tags $title }} @@ -75,7 +80,9 @@ "title" $title "lang" $lang "api_version" "v2" - "endpoint_data" . + "endpoint_data" $action + "endpoint_path" $endpoint_path + "method" $method "api_v1_translate_actions" $api_v1_translate_actions "api_v2_translate_actions" $api_v2_translate_actions ) From ac554c21abb9d1dbf1bb9cf57dbb502ac8b7cef6 Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 19:39:44 +0200 Subject: [PATCH 09/10] Enable API endpoint path/method indexing in content field Append "METHOD /path" to each API endpoint record's content so endpoint REST paths are searchable. Appended at the end to keep it out of the start of the auto-embedded content. --- layouts/partials/algolia/api-page-index.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index f2f24f722cb..a018f9aa6b7 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -23,10 +23,9 @@ {{ $section_header := $action_data.summary }} {{ $section_content := $action_data.description }} -{{/* PATH-INDEXING TOGGLE: uncomment the line below to append "METHOD /path" to the - content field so endpoint REST paths become searchable. Appended at the END so it - doesn't pollute the start of the auto-embedded content. Left commented out for now. */}} -{{/* {{ $section_content = printf "%s\n\n%s %s" ($section_content | default "") (upper $method) $endpoint_path | strings.TrimSpace }} */}} +{{/* Append "METHOD /path" to the content field so endpoint REST paths are searchable. + Appended at the END so it doesn't pollute the start of the auto-embedded content. */}} +{{ $section_content = printf "%s\n\n%s %s" ($section_content | default "") (upper $method) $endpoint_path | strings.TrimSpace }} {{ $endpoint_slug := $section_header | anchorize }} {{ $full_url := print $permalink $endpoint_slug "/" }} From d8d7abf33a6ff55720b9c8a52a9b7b20a13e725d Mon Sep 17 00:00:00 2001 From: Reda El Issati Date: Fri, 26 Jun 2026 19:48:31 +0200 Subject: [PATCH 10/10] Trim stale/low-value comments on API path indexing --- layouts/partials/algolia/api-page-index.json | 7 +++---- layouts/partials/algolia/api-pages-full-index.json | 3 --- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/layouts/partials/algolia/api-page-index.json b/layouts/partials/algolia/api-page-index.json index a018f9aa6b7..427284a07ad 100644 --- a/layouts/partials/algolia/api-page-index.json +++ b/layouts/partials/algolia/api-page-index.json @@ -5,8 +5,8 @@ {{ $lang := .lang }} {{ $api_version := .api_version }} {{/* "v1" or "v2" */}} {{ $endpoint_data := .endpoint_data }} -{{ $endpoint_path := .endpoint_path }} {{/* REST path, e.g. "/api/v2/..." (used only by the commented-out path-indexing toggle below) */}} -{{ $method := .method }} {{/* HTTP verb, e.g. "get" (used only by the commented-out path-indexing toggle below) */}} +{{ $endpoint_path := .endpoint_path }} +{{ $method := .method }} {{ $api_v1_translate_actions := .api_v1_translate_actions }} {{ $api_v2_translate_actions := .api_v2_translate_actions }} @@ -23,8 +23,7 @@ {{ $section_header := $action_data.summary }} {{ $section_content := $action_data.description }} -{{/* Append "METHOD /path" to the content field so endpoint REST paths are searchable. - Appended at the END so it doesn't pollute the start of the auto-embedded content. */}} +{{/* Append "METHOD /path" so the endpoint's REST path is searchable. Kept at the end to stay out of the embedding's truncated input. */}} {{ $section_content = printf "%s\n\n%s %s" ($section_content | default "") (upper $method) $endpoint_path | strings.TrimSpace }} {{ $endpoint_slug := $section_header | anchorize }} diff --git a/layouts/partials/algolia/api-pages-full-index.json b/layouts/partials/algolia/api-pages-full-index.json index 103db4284ee..3bde684ff69 100644 --- a/layouts/partials/algolia/api-pages-full-index.json +++ b/layouts/partials/algolia/api-pages-full-index.json @@ -31,8 +31,6 @@ {{ end }} {{/* Get all v1 api actions for this page by matching title with spec data's tag property */}} - {{/* $endpoint_path (REST path, map key) and $method (HTTP verb, map key) are forwarded so - api-page-index.json's commented-out path-indexing toggle can use them; inert otherwise. */}} {{ range $endpoint_path, $endpoint_data := $api_v1_data.paths }} {{ range $method, $action := $endpoint_data }} {{ $tags := slice }} @@ -63,7 +61,6 @@ {{ end }} {{/* Get all v2 api actions for this page by matching title with spec data's tag property */}} - {{/* Same capture as the v1 loop: $endpoint_path and $method forwarded for the commented-out toggle. */}} {{ range $endpoint_path, $endpoint_data := $api_v2_data.paths }} {{ range $method, $action := $endpoint_data }} {{ $tags := slice }}