diff --git a/oas_docs/output/kibana.serverless.yaml b/oas_docs/output/kibana.serverless.yaml index 27fb2a44226a8..f5f8981d30e28 100644 --- a/oas_docs/output/kibana.serverless.yaml +++ b/oas_docs/output/kibana.serverless.yaml @@ -75605,6 +75605,7 @@ paths: name: product_name /api/status: get: + description: Returns Kibana's overall operational status and a per-service breakdown for Elasticsearch, Saved Objects, and registered plugins. The endpoint is intended for liveness and readiness checks (for example, by Kubernetes probes) and for operators monitoring a Kibana deployment. Unauthenticated callers receive a redacted response that exposes only the overall status level. operationId: get-status parameters: - description: Set to "true" to get the response in v7 format. @@ -75623,6 +75624,39 @@ paths: '200': content: application/json: + examples: + statusAvailableResponse: + description: A successful response when Kibana and its core services are operating normally. + summary: Kibana is available + value: + metrics: + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 4 + totalIdleSockets: 2 + totalQueuedRequests: 0 + last_updated: '2026-04-30T12:00:05.000Z' + name: kibana + status: + core: + elasticsearch: + level: available + summary: Elasticsearch is available + savedObjects: + level: available + summary: SavedObjects service has completed migrations and is available + overall: + level: available + summary: All services are available + plugins: {} + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + build_date: '2026-04-30T12:00:00.000Z' + build_flavor: traditional + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + number: 9.3.0 schema: anyOf: - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_response' @@ -75632,12 +75666,45 @@ paths: '503': content: application/json: + examples: + statusUnavailableResponse: + description: A response when one or more core services are unavailable. + summary: Kibana is unavailable + value: + metrics: + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 0 + totalIdleSockets: 0 + totalQueuedRequests: 0 + last_updated: '2026-04-30T12:00:05.000Z' + name: kibana + status: + core: + elasticsearch: + level: unavailable + summary: Unable to connect to Elasticsearch + savedObjects: + level: unavailable + summary: SavedObjects service depends on Elasticsearch + overall: + level: unavailable + summary: Some services are unavailable + plugins: {} + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + build_date: '2026-04-30T12:00:00.000Z' + build_flavor: traditional + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + number: 9.3.0 schema: anyOf: - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_response' - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_redactedResponse' description: Kibana's operational status. A minimal response is sent for unauthorized users. - description: Kibana or some of it's essential services are unavailable. Kibana may be degraded or unavailable. + description: Kibana or some of its essential services are unavailable. Kibana may be degraded or unavailable. summary: Get Kibana's current status tags: - system diff --git a/oas_docs/output/kibana.yaml b/oas_docs/output/kibana.yaml index 7ff3705761610..2de21ed2666d0 100644 --- a/oas_docs/output/kibana.yaml +++ b/oas_docs/output/kibana.yaml @@ -81462,6 +81462,7 @@ paths: name: product_name /api/status: get: + description: Returns Kibana's overall operational status and a per-service breakdown for Elasticsearch, Saved Objects, and registered plugins. The endpoint is intended for liveness and readiness checks (for example, by Kubernetes probes) and for operators monitoring a Kibana deployment. Unauthenticated callers receive a redacted response that exposes only the overall status level. operationId: get-status parameters: - description: Set to "true" to get the response in v7 format. @@ -81480,6 +81481,39 @@ paths: '200': content: application/json: + examples: + statusAvailableResponse: + description: A successful response when Kibana and its core services are operating normally. + summary: Kibana is available + value: + metrics: + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 4 + totalIdleSockets: 2 + totalQueuedRequests: 0 + last_updated: '2026-04-30T12:00:05.000Z' + name: kibana + status: + core: + elasticsearch: + level: available + summary: Elasticsearch is available + savedObjects: + level: available + summary: SavedObjects service has completed migrations and is available + overall: + level: available + summary: All services are available + plugins: {} + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + build_date: '2026-04-30T12:00:00.000Z' + build_flavor: traditional + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + number: 9.3.0 schema: anyOf: - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_response' @@ -81489,12 +81523,45 @@ paths: '503': content: application/json: + examples: + statusUnavailableResponse: + description: A response when one or more core services are unavailable. + summary: Kibana is unavailable + value: + metrics: + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 0 + totalIdleSockets: 0 + totalQueuedRequests: 0 + last_updated: '2026-04-30T12:00:05.000Z' + name: kibana + status: + core: + elasticsearch: + level: unavailable + summary: Unable to connect to Elasticsearch + savedObjects: + level: unavailable + summary: SavedObjects service depends on Elasticsearch + overall: + level: unavailable + summary: Some services are unavailable + plugins: {} + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + build_date: '2026-04-30T12:00:00.000Z' + build_flavor: traditional + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + number: 9.3.0 schema: anyOf: - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_response' - $ref: '#/components/schemas/Kibana_HTTP_APIs_core_status_redactedResponse' description: Kibana's operational status. A minimal response is sent for unauthorized users. - description: Kibana or some of it's essential services are unavailable. Kibana may be degraded or unavailable. + description: Kibana or some of its essential services are unavailable. Kibana may be degraded or unavailable. summary: Get Kibana's current status tags: - system diff --git a/src/core/packages/status/server-internal/src/routes/status.examples.yaml b/src/core/packages/status/server-internal/src/routes/status.examples.yaml new file mode 100644 index 0000000000000..76b92a54408cb --- /dev/null +++ b/src/core/packages/status/server-internal/src/routes/status.examples.yaml @@ -0,0 +1,75 @@ +responses: + '200': + description: Overall status is OK and Kibana should be functioning normally. + content: + application/json: + examples: + statusAvailableResponse: + summary: Kibana is available + description: A successful response when Kibana and its core services are operating normally. + value: + name: kibana + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + number: 9.3.0 + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + build_flavor: traditional + build_date: '2026-04-30T12:00:00.000Z' + status: + overall: + level: available + summary: All services are available + core: + elasticsearch: + level: available + summary: Elasticsearch is available + savedObjects: + level: available + summary: SavedObjects service has completed migrations and is available + plugins: {} + metrics: + last_updated: '2026-04-30T12:00:05.000Z' + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 4 + totalIdleSockets: 2 + totalQueuedRequests: 0 + '503': + description: Kibana or some of its essential services are unavailable. Kibana may be degraded or unavailable. + content: + application/json: + examples: + statusUnavailableResponse: + summary: Kibana is unavailable + description: A response when one or more core services are unavailable. + value: + name: kibana + uuid: 5b2de169-2785-441b-ae8c-186a1936b17d + version: + number: 9.3.0 + build_hash: ad8f0fa4d5022f56bbe2c4d51e9d0fcfa1ee67fc + build_number: 100200 + build_snapshot: false + build_flavor: traditional + build_date: '2026-04-30T12:00:00.000Z' + status: + overall: + level: unavailable + summary: Some services are unavailable + core: + elasticsearch: + level: unavailable + summary: Unable to connect to Elasticsearch + savedObjects: + level: unavailable + summary: SavedObjects service depends on Elasticsearch + plugins: {} + metrics: + last_updated: '2026-04-30T12:00:05.000Z' + collection_interval_in_millis: 5000 + elasticsearch_client: + totalActiveSockets: 0 + totalIdleSockets: 0 + totalQueuedRequests: 0 diff --git a/src/core/packages/status/server-internal/src/routes/status.ts b/src/core/packages/status/server-internal/src/routes/status.ts index 47c5385d209e1..d37ee462e21fa 100644 --- a/src/core/packages/status/server-internal/src/routes/status.ts +++ b/src/core/packages/status/server-internal/src/routes/status.ts @@ -7,6 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import path from 'node:path'; import { type Observable, combineLatest, ReplaySubject, firstValueFrom, startWith } from 'rxjs'; import { schema } from '@kbn/config-schema'; import type { PackageInfo } from '@kbn/config'; @@ -100,7 +101,9 @@ export const registerStatusRoute = ({ tags: ['api', 'security:acceptJWT', 'oas-tag:system'], access: 'public', // needs to be public to allow access from "system" users like k8s readiness probes. summary: `Get Kibana's current status`, + description: `Returns Kibana's overall operational status and a per-service breakdown for Elasticsearch, Saved Objects, and registered plugins. The endpoint is intended for liveness and readiness checks (for example, by Kubernetes probes) and for operators monitoring a Kibana deployment. Unauthenticated callers receive a redacted response that exposes only the overall status level.`, excludeFromRateLimiter: true, + oasOperationObject: () => path.resolve(__dirname, './status.examples.yaml'), }, validate: { request: { diff --git a/src/platform/packages/private/kbn-validate-oas/src/oas_error_baseline.json b/src/platform/packages/private/kbn-validate-oas/src/oas_error_baseline.json index 4b03ac5cc4c4f..9f7bbfbc1b9c0 100644 --- a/src/platform/packages/private/kbn-validate-oas/src/oas_error_baseline.json +++ b/src/platform/packages/private/kbn-validate-oas/src/oas_error_baseline.json @@ -1,4 +1,4 @@ { - "./oas_docs/output/kibana.yaml": 200, - "./oas_docs/output/kibana.serverless.yaml": 183 + "./oas_docs/output/kibana.yaml": 197, + "./oas_docs/output/kibana.serverless.yaml": 180 } \ No newline at end of file