openapi: 3.2.0 info: contact: name: Kibana Team description: 'The Kibana REST APIs enable you to manage resources such as connectors, data views, and saved objects. The API calls are stateless. Each request that you make happens in isolation from other calls and must include all of the necessary information for Kibana to fulfill the request. API requests return JSON output, which is a format that is machine-readable and works well for automation. To interact with Kibana APIs, use the following operations: - GET: Fetches the information. - PATCH: Applies partial modifications to the existing information. - POST: Adds new information. - PUT: Updates the existing information. - DELETE: Removes the information. You can prepend any Kibana API endpoint with `kbn:` and run the request in **Dev Tools → Console**. For example: ``` GET kbn:/api/data_views ``` For more information about the console, refer to [Run API requests](https://www.elastic.co/docs/explore-analyze/query-filter/tools/console). NOTE: Access to internal Kibana API endpoints will be restricted in Kibana version 9.0. Please move any integrations to publicly documented APIs. ## Documentation source and versions This documentation is derived from the `main` branch of the [kibana](https://github.com/elastic/kibana) repository. It is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/). This documentation contains work-in-progress information for future Elastic Stack releases. ' title: Kibana Slo API version: '' x-doc-license: name: Attribution-NonCommercial-NoDerivatives 4.0 International url: https://creativecommons.org/licenses/by-nc-nd/4.0/ x-feedbackLink: label: Feedback url: https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+ servers: - url: https://{kibana_url} variables: kibana_url: default: localhost:5601 security: - apiKeyAuth: [] - basicAuth: [] tags: - description: SLO APIs enable you to define, manage and track service-level objectives name: slo x-displayName: Service level objectives paths: /s/{spaceId}/api/observability/slos: get: description: 'You must have the `read` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: findSlosOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - description: A valid kql query to filter the SLO with example: 'slo.name:latency* and slo.tags : "prod"' in: query name: kqlQuery schema: type: string - description: The page size to use for cursor-based pagination, must be greater or equal than 1 example: 1 in: query name: size schema: default: 1 type: integer - description: The cursor to use for fetching the results from, when using a cursor-base pagination. in: query name: searchAfter schema: items: type: string type: array - description: The page to use for pagination, must be greater or equal than 1 example: 1 in: query name: page schema: default: 1 type: integer - description: Number of SLOs returned by page example: 25 in: query name: perPage schema: default: 25 maximum: 5000 type: integer - description: Sort by field example: status in: query name: sortBy schema: default: status enum: - sli_value - status - error_budget_consumed - error_budget_remaining type: string - description: Sort order example: asc in: query name: sortDirection schema: default: asc enum: - asc - desc type: string - description: Hide stale SLOs from the list as defined by stale SLO threshold in SLO settings in: query name: hideStale schema: type: boolean responses: '200': content: application/json: examples: findSloResponse: summary: A paginated list of SLOs value: page: 1 perPage: 25 results: - budgetingMethod: occurrences createdAt: '2025-01-12T10:03:19.000Z' description: Availability of my web service enabled: true groupBy: '*' id: 8853df00-ae2e-11ed-90af-09bb6422b258 indicator: params: filter: 'field.environment : "production" and service.name : "my-service"' good: 'request.status_code : "2xx"' index: logs-* timestampField: '@timestamp' total: 'request.status_code : *' type: sli.kql.custom instanceId: '*' name: My Service Availability objective: target: 0.99 revision: 1 settings: frequency: 5m syncDelay: 5m summary: errorBudget: consumed: 0.17 initial: 0.01 isEstimated: false remaining: 0.83 sliValue: 0.9983 status: HEALTHY tags: - production - web-service timeWindow: duration: 30d type: rolling updatedAt: '2025-01-12T10:03:19.000Z' version: 2 total: 42 schema: $ref: '#/components/schemas/SLOs_find_slo_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''invalid'' supplied to: sortBy' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_read] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Get a paginated list of SLOs tags: - slo x-metaTags: - content: Kibana name: product_name post: description: 'You must have `all` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: createSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' requestBody: content: application/json: examples: createSloKqlExample: summary: Create an SLO with a KQL indicator value: budgetingMethod: occurrences description: Availability of my web service measured by successful HTTP responses indicator: params: filter: 'field.environment : "production" and service.name : "my-service"' good: 'request.status_code : "2xx"' index: logs-* timestampField: '@timestamp' total: 'request.status_code : *' type: sli.kql.custom name: My Service Availability objective: target: 0.99 settings: frequency: 5m syncDelay: 5m tags: - production - web-service timeWindow: duration: 30d type: rolling schema: $ref: '#/components/schemas/SLOs_create_slo_request' required: true responses: '200': content: application/json: examples: createSloResponse: summary: Create SLO response value: id: 8853df00-ae2e-11ed-90af-09bb6422b258 schema: $ref: '#/components/schemas/SLOs_create_slo_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: indicator/type' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '409': content: application/json: examples: conflictExample: summary: Conflict value: error: Conflict message: SLO [d077e940-1515-11ee-9c50-9d096392f520] already exists statusCode: 409 schema: $ref: '#/components/schemas/SLOs_409_response' description: Conflict - The SLO id already exists summary: Create an SLO tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/_bulk_delete: post: description: 'Bulk delete SLO definitions and their associated summary and rollup data. This endpoint initiates a bulk deletion operation for SLOs, which may take some time to complete. The status of the operation can be checked using the `GET /api/slo/_bulk_delete/{taskId}` endpoint. ' operationId: bulkDeleteOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' requestBody: content: application/json: examples: bulkDeleteRequest: summary: Bulk delete two SLOs value: list: - 8853df00-ae2e-11ed-90af-09bb6422b258 - d077e940-1515-11ee-9c50-9d096392f520 schema: $ref: '#/components/schemas/SLOs_bulk_delete_request' required: true responses: '200': content: application/json: examples: bulkDeleteResponse: summary: Bulk delete response with task ID value: taskId: d08506b7-f0e8-4f8b-a06a-a83940f4db91 schema: $ref: '#/components/schemas/SLOs_bulk_delete_response' description: Successful response '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: list' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Bulk delete SLO definitions and their associated summary and rollup data. tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/_bulk_delete/{taskId}: get: description: 'Retrieve the status of the bulk deletion operation for SLOs. This endpoint returns the status of the bulk deletion operation, including whether it is completed and the results of the operation. ' operationId: bulkDeleteStatusOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - description: The task id of the bulk delete operation in: path name: taskId required: true schema: example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string responses: '200': content: application/json: examples: bulkDeleteStatusComplete: summary: Completed bulk deletion value: isDone: true results: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 success: true - id: d077e940-1515-11ee-9c50-9d096392f520 success: true bulkDeleteStatusPartialFailure: summary: Completed with partial failure value: isDone: true results: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 success: true - error: SLO [d077e940-1515-11ee-9c50-9d096392f520] not found id: d077e940-1515-11ee-9c50-9d096392f520 success: false schema: $ref: '#/components/schemas/SLOs_bulk_delete_status_response' description: Successful response '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: taskId' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Retrieve the status of the bulk deletion tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/_bulk_purge_rollup: post: description: 'The deletion occurs for the specified list of `sloId`. You must have `all` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: deleteRollupDataOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' requestBody: content: application/json: examples: purgeByAgeExample: summary: Purge rollup data older than 7 days value: list: - 8853df00-ae2e-11ed-90af-09bb6422b258 purgePolicy: age: 7d purgeType: fixed-age purgeByTimestampExample: summary: Purge rollup data before a specific date value: list: - 8853df00-ae2e-11ed-90af-09bb6422b258 - d077e940-1515-11ee-9c50-9d096392f520 purgePolicy: purgeType: fixed-time timestamp: '2024-12-31T00:00:00.000Z' schema: $ref: '#/components/schemas/SLOs_bulk_purge_rollup_request' required: true responses: '200': content: application/json: examples: bulkPurgeResponse: summary: Bulk purge response with task ID value: taskId: 8853df00-ae2e-11ed-90af-09bb6422b258 schema: $ref: '#/components/schemas/SLOs_bulk_purge_rollup_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: purgePolicy/purgeType' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Batch delete rollup and summary data tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/_bulk_snapshot: post: description: 'Compute the summary of multiple SLO instances at a given point in time. The endpoint is synchronous and returns results directly. Each result contains either a summary (on success) or a per-instance error. The list of requests is limited to 100 entries. When `instanceId` is omitted or set to `''*''`, the API returns a result for each matching instance (up to 1000 per SLO). You must have the `read` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: bulkSnapshotOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' requestBody: content: application/json: examples: bulkSnapshotRequest: summary: Compute snapshots for two SLO instances value: at: '2025-01-12T10:00:00.000Z' requests: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 instanceId: '*' - id: d077e940-1515-11ee-9c50-9d096392f520 instanceId: host.name:web-01 schema: $ref: '#/components/schemas/SLOs_bulk_snapshot_request' required: true responses: '200': content: application/json: examples: bulkSnapshotResponse: summary: Bulk snapshot response with mixed success and per-instance error value: at: '2025-01-12T10:00:00.000Z' results: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 instanceId: '*' summary: errorBudget: consumed: 0.24 initial: 0.01 remaining: 0.76 good: 9976 sliValue: 0.9976 status: HEALTHY total: 10000 - error: message: SLO [d077e940-1515-11ee-9c50-9d096392f520] not found statusCode: 404 id: d077e940-1515-11ee-9c50-9d096392f520 instanceId: host.name:web-01 schema: $ref: '#/components/schemas/SLOs_snapshot_response' description: Successful response '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: '`requests` is limited to 100 entries' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_read] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Compute SLO instance summaries in bulk at a point in time tags: - slo x-state: Generally available; added in 9.6.0 x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/_delete_instances: post: description: 'The deletion occurs for the specified list of `sloId` and `instanceId`. You must have `all` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: deleteSloInstancesOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' requestBody: content: application/json: examples: deleteInstancesExample: summary: Delete specific SLO instances value: list: - instanceId: host-abc123 sloId: 8853df00-ae2e-11ed-90af-09bb6422b258 - instanceId: host-def456 sloId: 8853df00-ae2e-11ed-90af-09bb6422b258 schema: $ref: '#/components/schemas/SLOs_delete_slo_instances_request' required: true responses: '204': description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: list/0/sloId' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Batch delete rollup and summary data tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/{sloId}: delete: description: 'You must have the `write` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: deleteSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' responses: '204': description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: id' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Delete an SLO tags: - slo x-metaTags: - content: Kibana name: product_name get: description: 'You must have the `read` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: getSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' - description: the specific instanceId used by the summary calculation example: host-abcde in: query name: instanceId schema: type: string responses: '200': content: application/json: examples: getSloResponse: summary: Get SLO response value: budgetingMethod: occurrences createdAt: '2025-01-12T10:03:19.000Z' description: Availability of my web service enabled: true groupBy: '*' id: 8853df00-ae2e-11ed-90af-09bb6422b258 indicator: params: filter: 'field.environment : "production" and service.name : "my-service"' good: 'request.status_code : "2xx"' index: logs-* timestampField: '@timestamp' total: 'request.status_code : *' type: sli.kql.custom instanceId: '*' name: My Service Availability objective: target: 0.99 revision: 1 settings: frequency: 5m syncDelay: 5m summary: errorBudget: consumed: 0.17 initial: 0.01 isEstimated: false remaining: 0.83 sliValue: 0.9983 status: HEALTHY tags: - production - web-service timeWindow: duration: 30d type: rolling updatedAt: '2025-01-12T10:03:19.000Z' version: 2 schema: $ref: '#/components/schemas/SLOs_slo_with_summary_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: id' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_read] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Get an SLO tags: - slo x-metaTags: - content: Kibana name: product_name put: description: 'You must have the `write` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: updateSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' requestBody: content: application/json: examples: updateSloNameExample: summary: Update the SLO name and tags value: name: Updated Service Availability tags: - production - updated updateSloObjectiveExample: summary: Update the SLO objective value: objective: target: 0.995 schema: $ref: '#/components/schemas/SLOs_update_slo_request' required: true responses: '200': content: application/json: examples: updateSloResponse: summary: Update SLO response value: budgetingMethod: occurrences createdAt: '2025-01-12T10:03:19.000Z' description: Availability of my web service enabled: true groupBy: '*' id: 8853df00-ae2e-11ed-90af-09bb6422b258 indicator: params: filter: 'field.environment : "production" and service.name : "my-service"' good: 'request.status_code : "2xx"' index: logs-* timestampField: '@timestamp' total: 'request.status_code : *' type: sli.kql.custom name: Updated Service Availability objective: target: 0.99 revision: 2 settings: frequency: 5m syncDelay: 5m tags: - production - updated timeWindow: duration: 30d type: rolling updatedAt: '2025-03-26T14:30:00.000Z' version: 2 schema: $ref: '#/components/schemas/SLOs_slo_definition_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: indicator/type' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Update an SLO tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/{sloId}/_reset: post: description: 'You must have the `write` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: resetSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' responses: '200': content: application/json: examples: resetSloResponse: summary: Reset SLO response value: budgetingMethod: occurrences createdAt: '2025-01-12T10:03:19.000Z' description: Availability of my web service enabled: true groupBy: '*' id: 8853df00-ae2e-11ed-90af-09bb6422b258 indicator: params: filter: 'field.environment : "production" and service.name : "my-service"' good: 'request.status_code : "2xx"' index: logs-* timestampField: '@timestamp' total: 'request.status_code : *' type: sli.kql.custom name: My Service Availability objective: target: 0.99 revision: 2 settings: frequency: 5m syncDelay: 5m tags: - production - web-service timeWindow: duration: 30d type: rolling updatedAt: '2025-03-26T14:30:00.000Z' version: 2 schema: $ref: '#/components/schemas/SLOs_slo_definition_response' description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: id' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Reset an SLO tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/{sloId}/_snapshot: get: description: 'Compute the summary of an SLO at a given point in time. When `instanceId` is provided, returns that instance. When `instanceId` is omitted or set to `''*''`, returns all matching instances (up to 1000). The endpoint is synchronous and returns results directly. You must have the `read` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: getSnapshotOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' - description: The point in time at which to compute the SLO instance summary (ISO 8601 date-time) in: query name: at required: true schema: example: '2025-01-12T10:00:00.000Z' format: date-time type: string - description: 'The SLO instance ID. Omit this parameter or set it to `''*''` to return all instances for the SLO (up to 1000). Set a specific value (for example `host.name:web-01`) to return that instance only. ' in: query name: instanceId required: false schema: example: '*' type: string responses: '200': content: application/json: examples: getSnapshotResponse: summary: Snapshot result for a healthy SLO instance value: at: '2025-01-12T10:00:00.000Z' results: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 instanceId: '*' summary: errorBudget: consumed: 0.24 initial: 0.01 remaining: 0.76 good: 9976 sliValue: 0.9976 status: HEALTHY total: 10000 getSnapshotResponseViolated: summary: Snapshot result for a violated SLO instance value: at: '2025-01-12T10:00:00.000Z' results: - id: 8853df00-ae2e-11ed-90af-09bb6422b258 instanceId: host.name:web-01 summary: errorBudget: consumed: 5 initial: 0.01 remaining: -4 good: 9500 sliValue: 0.95 status: VIOLATED total: 10000 schema: $ref: '#/components/schemas/SLOs_snapshot_response' description: Successful response '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: at' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_read] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [8853df00-ae2e-11ed-90af-09bb6422b258] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Compute an SLO instance summary at a point in time tags: - slo x-state: Generally available; added in 9.6.0 x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/{sloId}/disable: post: description: 'You must have the `write` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: disableSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' responses: '204': description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: id' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Disable an SLO tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/api/observability/slos/{sloId}/enable: post: description: 'You must have the `write` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: enableSloOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - $ref: '#/components/parameters/SLOs_slo_id' responses: '204': description: Successful request '400': content: application/json: examples: badRequestExample: summary: Bad request value: error: Bad Request message: 'Invalid value ''foo'' supplied to: id' statusCode: 400 schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: examples: unauthorizedExample: summary: Unauthorized value: error: Unauthorized message: 'security_exception: unable to authenticate user for REST request [/api/observability/slos]' statusCode: 401 schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: examples: forbiddenExample: summary: Forbidden value: error: Forbidden message: 'security_exception: action [slo_write] is unauthorized for user' statusCode: 403 schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response '404': content: application/json: examples: notFoundExample: summary: Not found value: error: Not Found message: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found statusCode: 404 schema: $ref: '#/components/schemas/SLOs_404_response' description: Not found response summary: Enable an SLO tags: - slo x-metaTags: - content: Kibana name: product_name /s/{spaceId}/internal/observability/slos/_definitions: get: description: 'You must have the `read` privileges for the **SLOs** feature in the **Observability** section of the Kibana feature privileges. ' operationId: getDefinitionsOp parameters: - $ref: '#/components/parameters/SLOs_kbn_xsrf' - $ref: '#/components/parameters/SLOs_space_id' - description: Indicates if the API returns only outdated SLO or all SLO definitions in: query name: includeOutdatedOnly schema: type: boolean - description: Indicates if the API returns SLO health data with definitions example: true in: query name: includeHealth schema: type: boolean - description: Filters the SLOs by tag in: query name: tags schema: type: string - description: Filters the SLOs by name example: my service availability in: query name: search schema: type: string - description: The page to use for pagination, must be greater or equal than 1 example: 1 in: query name: page schema: type: number - description: Number of SLOs returned by page example: 100 in: query name: perPage schema: default: 100 maximum: 1000 type: integer responses: '200': content: application/json: schema: $ref: '#/components/schemas/SLOs_find_slo_definitions_response' description: Successful request '400': content: application/json: schema: $ref: '#/components/schemas/SLOs_400_response' description: Bad request '401': content: application/json: schema: $ref: '#/components/schemas/SLOs_401_response' description: Unauthorized response '403': content: application/json: schema: $ref: '#/components/schemas/SLOs_403_response' description: Forbidden response summary: Get the SLO definitions tags: - slo x-metaTags: - content: Kibana name: product_name components: schemas: SLOs_settings: description: Defines properties for SLO settings. properties: frequency: default: 1m description: The interval between checks for changes in the source data. The minimum value is 1m and the maximum is 59m. The default value is 1 minute. example: 5m type: string preventCrossProjectSearch: default: false deprecated: true description: Pin the L1 rollup transform to the local/origin project only, preventing flat-world (cross-linked-project) reads. Only applies on serverless. Default is false, meaning rollup transforms target all linked projects. example: true type: boolean preventInitialBackfill: default: false description: Start aggregating data from the time the SLO is created, instead of backfilling data from the beginning of the time window. example: true type: boolean projectRoutings: description: ES ProjectRouting expression controlling which linked projects the L1 rollup reads. When set (including null), overrides preventCrossProjectSearch. null and `_alias:_origin` mean origin only; `_alias:*` means all linked projects. Subset example `_id:p1 AND _id:p2`. example: _alias:_origin maxLength: 8192 type: - string - 'null' syncDelay: default: 1m description: The time delay in minutes between the current time and the latest source data time. Increasing the value will delay any alerting. The default value is 1 minute. The minimum value is 1m and the maximum is 359m. It should always be greater then source index refresh interval. example: 5m type: string syncField: description: The date field that is used to identify new documents in the source. It is strongly recommended to use a field that contains the ingest timestamp. If you use a different field, you might need to set the delay such that it accounts for data transmission delays. When unspecified, we use the indicator timestamp field. example: event.ingested type: string title: Settings type: object SLOs_error_budget: title: Error budget type: object properties: consumed: description: The error budget consummed, as a percentage of the initial value. example: 0.8 type: number initial: description: The initial error budget, as 1 - objective example: 0.02 type: number isEstimated: description: Only for SLO defined with occurrences budgeting method and calendar aligned time window. example: true type: boolean remaining: description: The error budget remaining, as a percentage of the initial value. example: 0.2 type: number required: - initial - consumed - remaining - isEstimated SLOs_timeslice_metric_doc_count_metric: type: object properties: aggregation: description: The aggregation type of the metric. Only valid option is "doc_count" enum: - doc_count example: doc_count type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: "success"' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation title: Timeslice Metric Doc Count Metric SLOs_slo_with_summary_response: title: SLO response type: object properties: budgetingMethod: $ref: '#/components/schemas/SLOs_budgeting_method' createdAt: description: The creation date example: '2023-01-12T10:03:19.000Z' type: string description: description: The description of the SLO. example: My SLO description type: string enabled: description: Indicate if the SLO is enabled example: true type: boolean groupBy: $ref: '#/components/schemas/SLOs_group_by' id: description: The identifier of the SLO. example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string indicator: discriminator: mapping: sli.apm.transactionDuration: '#/components/schemas/SLOs_indicator_properties_apm_latency' sli.apm.transactionErrorRate: '#/components/schemas/SLOs_indicator_properties_apm_availability' sli.histogram.custom: '#/components/schemas/SLOs_indicator_properties_histogram' sli.kql.custom: '#/components/schemas/SLOs_indicator_properties_custom_kql' sli.metric.custom: '#/components/schemas/SLOs_indicator_properties_custom_metric' sli.metric.timeslice: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' propertyName: type oneOf: - $ref: '#/components/schemas/SLOs_indicator_properties_custom_kql' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_availability' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_latency' - $ref: '#/components/schemas/SLOs_indicator_properties_custom_metric' - $ref: '#/components/schemas/SLOs_indicator_properties_histogram' - $ref: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' instanceId: description: the value derived from the groupBy field, if present, otherwise '*' example: host-abcde type: string name: description: The name of the SLO. example: My Service SLO type: string objective: $ref: '#/components/schemas/SLOs_objective' revision: description: The SLO revision example: 2 type: number settings: $ref: '#/components/schemas/SLOs_settings' summary: $ref: '#/components/schemas/SLOs_summary' tags: description: List of tags items: type: string type: array timeWindow: $ref: '#/components/schemas/SLOs_time_window' updatedAt: description: The last update date example: '2023-01-12T10:03:19.000Z' type: string version: description: The internal SLO version example: 2 type: number required: - id - name - description - indicator - timeWindow - budgetingMethod - objective - settings - revision - summary - enabled - groupBy - instanceId - tags - createdAt - updatedAt - version SLOs_delete_slo_instances_request: description: 'The delete SLO instances request takes a list of SLO id and instance id, then delete the rollup and summary data. This API can be used to remove the staled data of an instance SLO that no longer get updated. ' properties: list: description: An array of slo id and instance id items: type: object properties: instanceId: description: The SLO instance identifier example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string sloId: description: The SLO unique identifier example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string required: - sloId - instanceId type: array required: - list title: Delete SLO instances request type: object SLOs_bulk_purge_rollup_response: description: 'The bulk purge rollup data response returns a task id from the elasticsearch deleteByQuery response. ' properties: taskId: description: The task id of the purge operation example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string title: Bulk Purge Rollup data response type: object SLOs_indicator_properties_apm_availability: description: Defines properties for the APM availability indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: environment: description: The APM service environment or "*" example: production type: string filter: description: KQL query used for filtering the data example: 'service.foo : "bar"' type: string index: description: The index used by APM metrics example: metrics-apm*,apm* type: string service: description: The APM service name example: o11y-app type: string transactionName: description: The APM transaction name or "*" example: GET /my/api type: string transactionType: description: The APM transaction type or "*" example: request type: string required: - service - environment - transactionType - transactionName - index type: description: The type of indicator. example: sli.apm.transactionDuration type: string required: - type - params title: APM availability SLOs_bulk_purge_rollup_request: description: 'The bulk purge rollup data request takes a list of SLO ids and a purge policy, then deletes the rollup data according to the purge policy. This API can be used to remove the staled data of an instance SLO that no longer get updated. ' properties: list: description: An array of slo ids items: description: The SLO Definition id example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string type: array purgePolicy: description: Policy that dictates which SLI documents to purge based on age oneOf: - type: object properties: age: description: The duration to determine which documents to purge, formatted as {duration}{unit}. This value should be greater than or equal to the time window of every SLO provided. example: 7d type: string purgeType: description: Specifies whether documents will be purged based on a specific age or on a timestamp enum: - fixed-age type: string - type: object properties: purgeType: description: Specifies whether documents will be purged based on a specific age or on a timestamp enum: - fixed-time type: string timestamp: description: The timestamp to determine which documents to purge, formatted in ISO. This value should be older than the applicable time window of every SLO provided. example: '2024-12-31T00:00:00.000Z' type: string type: object required: - list - purgePolicy title: Bulk Purge Rollup data request type: object SLOs_update_slo_request: description: 'The update SLO API request body varies depending on the type of indicator, time window and budgeting method. Partial update is handled. ' properties: artifacts: $ref: '#/components/schemas/SLOs_artifacts' budgetingMethod: $ref: '#/components/schemas/SLOs_budgeting_method' description: description: A description for the SLO. type: string groupBy: $ref: '#/components/schemas/SLOs_group_by' indicator: oneOf: - $ref: '#/components/schemas/SLOs_indicator_properties_custom_kql' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_availability' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_latency' - $ref: '#/components/schemas/SLOs_indicator_properties_custom_metric' - $ref: '#/components/schemas/SLOs_indicator_properties_histogram' - $ref: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' name: description: A name for the SLO. type: string objective: $ref: '#/components/schemas/SLOs_objective' settings: $ref: '#/components/schemas/SLOs_settings' tags: description: List of tags items: type: string type: array timeWindow: $ref: '#/components/schemas/SLOs_time_window' title: Update SLO request type: object SLOs_snapshot_result: description: 'The result of computing an SLO instance summary at a point in time. Contains either a summary (on success) or an error (on failure). ' properties: error: description: Error information when the computation failed for this SLO instance. Present when the computation failed. type: object properties: message: description: The error message example: SLO [8853df00-ae2e-11ed-90af-09bb6422b258] not found type: string statusCode: description: The HTTP status code of the error example: 404 type: number required: - statusCode - message id: description: The SLO definition id example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string instanceId: description: The SLO instance id. '*' represents the default (ungrouped) instance. example: '*' type: string summary: description: The SLO instance summary at the requested point in time. Present when the computation succeeded. type: object properties: errorBudget: type: object properties: consumed: description: The error budget consumed, or null when no data is available example: 0.24 type: - number - 'null' initial: description: The initial error budget, derived from the SLO objective example: 0.01 type: number remaining: description: The error budget remaining, or null when no data is available example: 0.76 type: - number - 'null' required: - initial - consumed - remaining good: description: The number of good events example: 9976 type: number sliValue: description: The SLI value at the requested point in time, or null when no data is available example: 0.9976 type: - number - 'null' status: description: The SLO health status enum: - NO_DATA - HEALTHY - DEGRADING - VIOLATED example: HEALTHY type: string total: description: The total number of events example: 10000 type: number required: - status - sliValue - errorBudget - good - total required: - id - instanceId title: Snapshot result type: object SLOs_401_response: title: Unauthorized type: object properties: error: example: Unauthorized type: string message: example: "[security_exception\n\tRoot causes:\n\t\tsecurity_exception: unable to authenticate user [elastics] for REST request [/_security/_authenticate]]: unable to authenticate user [elastics] for REST request [/_security/_authenticate]" type: string statusCode: example: 401 type: number required: - statusCode - error - message SLOs_timeslice_metric_basic_metric_with_field: type: object properties: aggregation: description: The aggregation type of the metric. enum: - sum - avg - min - max - std_deviation - last_value - cardinality example: sum type: string field: description: The field of the metric. example: processor.processed type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: "success"' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation - field title: Timeslice Metric Basic Metric with Field SLOs_objective: description: Defines properties for the SLO objective type: object properties: target: description: the target objective between 0 and 1 excluded example: 0.99 type: number exclusiveMinimum: 0 exclusiveMaximum: 100 timesliceTarget: description: the target objective for each slice when using a timeslices budgeting method example: 0.995 maximum: 100 minimum: 0 type: number timesliceWindow: description: the duration of each slice when using a timeslices budgeting method, as {duraton}{unit} example: 5m type: string required: - target title: Objective SLOs_group_by: description: optional group by field or fields to use to generate an SLO per distinct value example: - - service.name - service.name - - service.name - service.environment oneOf: - type: string - items: type: string type: array title: Group by SLOs_indicator_properties_custom_metric: description: Defines properties for a custom metric indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: dataViewId: description: The kibana data view id to use, primarily used to include data view runtime mappings. Make sure to save SLO again if you add/update run time fields to the data view and if those fields are being used in slo queries. example: 03b80ab3-003d-498b-881c-3beedbaf1162 type: string filter: description: the KQL query to filter the documents with. example: 'field.environment : "production" and service.name : "my-service"' type: string good: description: 'An object defining the "good" metrics and equation ' type: object properties: equation: description: The equation to calculate the "good" metric. example: A type: string metrics: description: List of metrics with their name, aggregation type, and field. items: oneOf: - type: object properties: aggregation: description: The aggregation type of the metric. enum: - sum example: sum type: string field: description: The field of the metric. example: processor.processed type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: *' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation - field - type: object properties: aggregation: description: The aggregation type of the metric. enum: - doc_count example: doc_count type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: *' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation type: array required: - metrics - equation index: description: The index or index pattern to use example: my-service-* type: string timestampField: description: 'The timestamp field used in the source indice. ' example: timestamp type: string total: description: 'An object defining the "total" metrics and equation ' type: object properties: equation: description: The equation to calculate the "total" metric. example: A type: string metrics: description: List of metrics with their name, aggregation type, and field. items: oneOf: - type: object properties: aggregation: description: The aggregation type of the metric. enum: - sum example: sum type: string field: description: The field of the metric. example: processor.processed type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: *' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation - field - type: object properties: aggregation: description: The aggregation type of the metric. enum: - doc_count example: doc_count type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: *' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string required: - name - aggregation type: array required: - metrics - equation required: - index - timestampField - good - total type: description: The type of indicator. example: sli.metric.custom type: string required: - type - params title: Custom metric SLOs_bulk_snapshot_request: description: 'The bulk snapshot SLO request takes a point in time and a list of SLO instances to compute summaries for. The list is limited to 100 entries. ' properties: at: description: The point in time at which to compute the SLO instance summaries example: '2025-01-12T10:00:00.000Z' format: date-time type: string requests: description: The list of SLO instances to compute. Limited to 100 entries. items: type: object properties: id: description: The SLO definition id example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string instanceId: description: 'The SLO instance ID. Omit this parameter or set it to `''*''` to return all instances for the SLO (up to 1000). Set a specific value to return that instance only. ' example: '*' type: string required: - id maxItems: 100 type: array required: - at - requests title: Bulk snapshot SLO request type: object SLOs_indicator_properties_custom_kql: description: Defines properties for a custom query indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: dataViewId: description: The kibana data view id to use, primarily used to include data view runtime mappings. Make sure to save SLO again if you add/update run time fields to the data view and if those fields are being used in slo queries. example: 03b80ab3-003d-498b-881c-3beedbaf1162 type: string filter: $ref: '#/components/schemas/SLOs_kql_with_filters' good: $ref: '#/components/schemas/SLOs_kql_with_filters_good' index: description: The index or index pattern to use example: my-service-* type: string timestampField: description: 'The timestamp field used in the source indice. ' example: timestamp type: string total: $ref: '#/components/schemas/SLOs_kql_with_filters_total' required: - index - timestampField - good - total type: description: The type of indicator. example: sli.kql.custom type: string required: - type - params title: Custom Query SLOs_400_response: title: Bad request type: object properties: error: example: Bad Request type: string message: example: 'Invalid value ''foo'' supplied to: [...]' type: string statusCode: example: 400 type: number required: - statusCode - error - message SLOs_create_slo_request: description: 'The create SLO API request body varies depending on the type of indicator, time window and budgeting method. ' properties: artifacts: $ref: '#/components/schemas/SLOs_artifacts' budgetingMethod: $ref: '#/components/schemas/SLOs_budgeting_method' description: description: A description for the SLO. type: string groupBy: $ref: '#/components/schemas/SLOs_group_by' id: description: A optional and unique identifier for the SLO. Must be between 8 and 48 chars example: my-super-slo-id type: string indicator: oneOf: - $ref: '#/components/schemas/SLOs_indicator_properties_custom_kql' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_availability' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_latency' - $ref: '#/components/schemas/SLOs_indicator_properties_custom_metric' - $ref: '#/components/schemas/SLOs_indicator_properties_histogram' - $ref: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' name: description: A name for the SLO. type: string objective: $ref: '#/components/schemas/SLOs_objective' settings: $ref: '#/components/schemas/SLOs_settings' tags: description: List of tags items: type: string type: array timeWindow: $ref: '#/components/schemas/SLOs_time_window' required: - name - description - indicator - timeWindow - budgetingMethod - objective title: Create SLO request type: object SLOs_artifacts: description: Links to related assets for the SLO properties: dashboards: description: Array of dashboard references items: type: object properties: id: description: Dashboard saved-object id type: string required: - id type: array title: Artifacts type: object SLOs_404_response: title: Not found type: object properties: error: example: Not Found type: string message: example: SLO [3749f390-03a3-11ee-8139-c7ff60a1692d] not found type: string statusCode: example: 404 type: number required: - statusCode - error - message SLOs_find_slo_response: description: 'A paginated response of SLOs matching the query. ' properties: page: example: 1 type: number perPage: example: 25 type: number results: items: $ref: '#/components/schemas/SLOs_slo_with_summary_response' type: array searchAfter: type: string size: description: Size provided for cursor based pagination example: 25 type: number total: example: 34 type: number title: Find SLO response type: object SLOs_indicator_properties_histogram: description: Defines properties for a histogram indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: dataViewId: description: The kibana data view id to use, primarily used to include data view runtime mappings. Make sure to save SLO again if you add/update run time fields to the data view and if those fields are being used in slo queries. example: 03b80ab3-003d-498b-881c-3beedbaf1162 type: string filter: description: the KQL query to filter the documents with. example: 'field.environment : "production" and service.name : "my-service"' type: string good: description: 'An object defining the "good" events ' type: object properties: aggregation: description: The type of aggregation to use. enum: - value_count - range example: value_count type: string field: description: The field use to aggregate the good events. example: processor.latency type: string filter: description: The filter for good events. example: 'processor.outcome: "success"' type: string from: description: The starting value of the range. Only required for "range" aggregations. example: 0 type: number to: description: The ending value of the range. Only required for "range" aggregations. example: 100 type: number required: - aggregation - field index: description: The index or index pattern to use example: my-service-* type: string timestampField: description: 'The timestamp field used in the source indice. ' example: timestamp type: string total: description: 'An object defining the "total" events ' type: object properties: aggregation: description: The type of aggregation to use. enum: - value_count - range example: value_count type: string field: description: The field use to aggregate the good events. example: processor.latency type: string filter: description: The filter for total events. example: 'processor.outcome : *' type: string from: description: The starting value of the range. Only required for "range" aggregations. example: 0 type: number to: description: The ending value of the range. Only required for "range" aggregations. example: 100 type: number required: - aggregation - field required: - index - timestampField - good - total type: description: The type of indicator. example: sli.histogram.custom type: string required: - type - params title: Histogram indicator SLOs_kql_with_filters_total: description: The KQL query used to define all events. oneOf: - description: the KQL query to filter the documents with. example: 'field.environment : "production" and service.name : "my-service"' type: string - type: object properties: filters: items: $ref: '#/components/schemas/SLOs_filter' type: array kqlQuery: type: string title: KQL query for all events SLOs_create_slo_response: title: Create SLO response type: object properties: id: example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string required: - id SLOs_find_slo_definitions_response: description: 'A paginated response of SLO definitions matching the query. ' oneOf: - type: object properties: page: example: 1 type: number perPage: example: 25 type: number results: items: $ref: '#/components/schemas/SLOs_slo_with_summary_response' type: array total: example: 34 type: number - type: object properties: page: default: 1 description: for backward compability type: number perPage: description: for backward compability example: 25 type: number results: items: $ref: '#/components/schemas/SLOs_slo_with_summary_response' type: array searchAfter: description: the cursor to provide to get the next paged results example: - some-slo-id - other-cursor-id items: type: string type: array size: example: 25 type: number total: example: 34 type: number title: Find SLO definitions response type: object SLOs_403_response: title: Forbidden type: object properties: error: example: Forbidden type: string message: example: "[security_exception\n\tRoot causes:\n\t\tsecurity_exception: action [slo_write] is unauthorized for user [limited_user] for REST request [/api/observability/slos]]: action [slo_write] is unauthorized for user [limited_user]" type: string statusCode: example: 403 type: number required: - statusCode - error - message SLOs_bulk_delete_request: description: 'The bulk delete SLO request takes a list of SLOs Definition id to delete. ' properties: list: description: An array of SLO Definition id items: description: The SLO Definition id example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string type: array required: - list title: Bulk delete SLO request type: object SLOs_snapshot_response: description: 'The snapshot SLO response returns the point in time and the per-instance results. Each result contains either a summary (success) or an error (per-instance failure). ' properties: at: description: The point in time at which the summaries were computed example: '2025-01-12T10:00:00.000Z' format: date-time type: string results: description: The per-instance computation results items: $ref: '#/components/schemas/SLOs_snapshot_result' type: array required: - at - results title: Snapshot SLO response type: object SLOs_kql_with_filters: description: Defines properties for a filter oneOf: - description: the KQL query to filter the documents with. example: 'field.environment : "production" and service.name : "my-service"' type: string - type: object properties: filters: items: $ref: '#/components/schemas/SLOs_filter' type: array kqlQuery: type: string title: KQL with filters SLOs_time_window: description: Defines properties for the SLO time window type: object properties: duration: description: 'the duration formatted as {duration}{unit}. Accepted values for rolling: 7d, 30d, 90d. Accepted values for calendar aligned: 1w (weekly) or 1M (monthly)' example: 30d type: string type: description: Indicates weither the time window is a rolling or a calendar aligned time window. enum: - rolling - calendarAligned example: rolling type: string required: - duration - type title: Time window SLOs_409_response: title: Conflict type: object properties: error: example: Conflict type: string message: example: SLO [d077e940-1515-11ee-9c50-9d096392f520] already exists type: string statusCode: example: 409 type: number required: - statusCode - error - message SLOs_bulk_delete_response: description: 'The bulk delete SLO response returns a taskId that can be used to poll for its status ' properties: taskId: description: The taskId of the bulk delete operation example: d08506b7-f0e8-4f8b-a06a-a83940f4db91 type: string title: Bulk delete SLO response type: object SLOs_filter: description: Defines properties for a filter properties: meta: $ref: '#/components/schemas/SLOs_filter_meta' query: type: object title: Filter type: object SLOs_indicator_properties_timeslice_metric: description: Defines properties for a timeslice metric indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: dataViewId: description: The kibana data view id to use, primarily used to include data view runtime mappings. Make sure to save SLO again if you add/update run time fields to the data view and if those fields are being used in slo queries. example: 03b80ab3-003d-498b-881c-3beedbaf1162 type: string filter: description: the KQL query to filter the documents with. example: 'field.environment : "production" and service.name : "my-service"' type: string index: description: The index or index pattern to use example: my-service-* type: string metric: description: 'An object defining the metrics, equation, and threshold to determine if it''s a good slice or not ' type: object properties: comparator: description: The comparator to use to compare the equation to the threshold. enum: - GT - GTE - LT - LTE example: GT type: string equation: description: The equation to calculate the metric. example: A type: string metrics: description: List of metrics with their name, aggregation type, and field. items: anyOf: - $ref: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' - $ref: '#/components/schemas/SLOs_timeslice_metric_percentile_metric' - $ref: '#/components/schemas/SLOs_timeslice_metric_doc_count_metric' discriminator: mapping: avg: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' cardinality: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' doc_count: '#/components/schemas/SLOs_timeslice_metric_doc_count_metric' last_value: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' max: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' min: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' percentile: '#/components/schemas/SLOs_timeslice_metric_percentile_metric' std_deviation: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' sum: '#/components/schemas/SLOs_timeslice_metric_basic_metric_with_field' propertyName: aggregation type: array threshold: description: The threshold used to determine if the metric is a good slice or not. example: 100 type: number required: - metrics - equation - comparator - threshold timestampField: description: 'The timestamp field used in the source indice. ' example: timestamp type: string required: - index - timestampField - metric type: description: The type of indicator. example: sli.metric.timeslice type: string required: - type - params title: Timeslice metric SLOs_slo_definition_response: title: SLO definition response type: object properties: artifacts: $ref: '#/components/schemas/SLOs_artifacts' budgetingMethod: $ref: '#/components/schemas/SLOs_budgeting_method' createdAt: description: The creation date example: '2023-01-12T10:03:19.000Z' type: string description: description: The description of the SLO. example: My SLO description type: string enabled: description: Indicate if the SLO is enabled example: true type: boolean groupBy: $ref: '#/components/schemas/SLOs_group_by' id: description: The identifier of the SLO. example: 8853df00-ae2e-11ed-90af-09bb6422b258 type: string indicator: discriminator: mapping: sli.apm.transactionDuration: '#/components/schemas/SLOs_indicator_properties_apm_latency' sli.apm.transactionErrorRate: '#/components/schemas/SLOs_indicator_properties_apm_availability' sli.histogram.custom: '#/components/schemas/SLOs_indicator_properties_histogram' sli.kql.custom: '#/components/schemas/SLOs_indicator_properties_custom_kql' sli.metric.custom: '#/components/schemas/SLOs_indicator_properties_custom_metric' sli.metric.timeslice: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' propertyName: type oneOf: - $ref: '#/components/schemas/SLOs_indicator_properties_custom_kql' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_availability' - $ref: '#/components/schemas/SLOs_indicator_properties_apm_latency' - $ref: '#/components/schemas/SLOs_indicator_properties_custom_metric' - $ref: '#/components/schemas/SLOs_indicator_properties_histogram' - $ref: '#/components/schemas/SLOs_indicator_properties_timeslice_metric' name: description: The name of the SLO. example: My Service SLO type: string objective: $ref: '#/components/schemas/SLOs_objective' revision: description: The SLO revision example: 2 type: number settings: $ref: '#/components/schemas/SLOs_settings' tags: description: List of tags items: type: string type: array timeWindow: $ref: '#/components/schemas/SLOs_time_window' updatedAt: description: The last update date example: '2023-01-12T10:03:19.000Z' type: string version: description: The internal SLO version example: 2 type: number required: - id - name - description - indicator - timeWindow - budgetingMethod - objective - settings - revision - enabled - groupBy - tags - createdAt - updatedAt - version SLOs_timeslice_metric_percentile_metric: type: object properties: aggregation: description: The aggregation type of the metric. Only valid option is "percentile" enum: - percentile example: percentile type: string field: description: The field of the metric. example: processor.processed type: string filter: description: The filter to apply to the metric. example: 'processor.outcome: "success"' type: string name: description: The name of the metric. Only valid options are A-Z example: A pattern: ^[A-Z]$ type: string percentile: description: The percentile value. example: 95 type: number required: - name - aggregation - field - percentile title: Timeslice Metric Percentile Metric SLOs_filter_meta: description: Defines properties for a filter properties: alias: type: - string - 'null' controlledBy: type: string disabled: type: boolean field: type: string group: type: string index: type: string isMultiIndex: type: boolean key: type: string negate: type: boolean params: type: object type: type: string value: type: string title: FilterMeta type: object SLOs_summary: description: The SLO computed data properties: errorBudget: $ref: '#/components/schemas/SLOs_error_budget' sliValue: example: 0.9836 type: number status: $ref: '#/components/schemas/SLOs_summary_status' required: - status - sliValue - errorBudget title: Summary type: object SLOs_indicator_properties_apm_latency: description: Defines properties for the APM latency indicator type type: object properties: params: description: An object containing the indicator parameters. type: object properties: environment: description: The APM service environment or "*" example: production type: string filter: description: KQL query used for filtering the data example: 'service.foo : "bar"' type: string index: description: The index used by APM metrics example: metrics-apm*,apm* type: string service: description: The APM service name example: o11y-app type: string threshold: description: The latency threshold in milliseconds example: 250 type: number transactionName: description: The APM transaction name or "*" example: GET /my/api type: string transactionType: description: The APM transaction type or "*" example: request type: string required: - service - environment - transactionType - transactionName - index - threshold type: description: The type of indicator. example: sli.apm.transactionDuration type: string required: - type - params title: APM latency SLOs_budgeting_method: description: The budgeting method to use when computing the rollup data. enum: - occurrences - timeslices example: occurrences title: Budgeting method type: string SLOs_bulk_delete_status_response: description: Indicates if the bulk deletion is completed, with the detailed results of the operation. properties: error: description: The error message if the bulk deletion operation failed example: Task not found type: string isDone: description: Indicates if the bulk deletion operation is completed example: true type: boolean results: description: The results of the bulk deletion operation, including the success status and any errors for each SLO items: type: object properties: error: description: The error message if the deletion operation failed for this SLO example: SLO [d08506b7-f0e8-4f8b-a06a-a83940f4db91] not found type: string id: description: The ID of the SLO that was deleted example: d08506b7-f0e8-4f8b-a06a-a83940f4db91 type: string success: description: The result of the deletion operation for this SLO example: true type: boolean type: array title: The status of the bulk deletion type: object SLOs_kql_with_filters_good: description: The KQL query used to define the good events. oneOf: - description: the KQL query to filter the documents with. example: 'request.latency <= 150 and request.status_code : "2xx"' type: string - type: object properties: filters: items: $ref: '#/components/schemas/SLOs_filter' type: array kqlQuery: type: string title: KQL query for good events SLOs_summary_status: enum: - NO_DATA - HEALTHY - DEGRADING - VIOLATED example: HEALTHY title: summary status type: string parameters: SLOs_slo_id: description: An identifier for the slo. in: path name: sloId required: true schema: example: 9c235211-6834-11ea-a78c-6feb38a34414 type: string SLOs_kbn_xsrf: description: Cross-site request forgery protection in: header name: kbn-xsrf required: true schema: type: string SLOs_space_id: description: An identifier for the space. If `/s/` and the identifier are omitted from the path, the default space is used. in: path name: spaceId required: true schema: example: default type: string securitySchemes: apiKeyAuth: description: 'These APIs use key-based authentication. You must create an API key and use the encoded value in the request header. For example: `Authorization: ApiKey base64AccessApiKey` ' in: header name: Authorization type: apiKey basicAuth: scheme: basic type: http x-topics: - title: Kibana spaces content: "Spaces enable you to organize your dashboards and other saved objects into meaningful categories.\nYou can use the default space or create your own spaces.\n\nTo run APIs in non-default spaces, you must add `s/{space_id}/` to the path.\nFor example:\n\n```bash\ncurl -X GET \"http://${KIBANA_URL}/s/marketing/api/data_views\" \\\n -H \"Authorization: ApiKey ${API_KEY}\"\n```\n\nIf you use the Kibana console to send API requests, it automatically adds the appropriate space identifier.\n\nTo learn more, check out [Spaces](https://www.elastic.co/docs/deploy-manage/manage-spaces).\n"