Honeycomb SLOs API

Define Service Level Objectives backed by a derived-column SLI, attach Burn Alerts that fire when error-budget burn rate crosses a configured threshold, and pull historical SLO compliance through the Reporting endpoint. SLO Reporting is an Enterprise-tier surface used to feed reliability dashboards and quarterly review packs.

Honeycomb SLOs API is one of 12 APIs that Honeycomb publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 3 machine-runnable capabilities that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Observability, SLO, Burn Alerts, Reliability, and Reporting. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 3 Naftiko capability specs.

OpenAPI Specification

honeycomb-slos-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Honeycomb SLOs API
  version: 1.0.0
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    email: [email protected]
  description: 'The API allows programmatic management of many resources within Honeycomb.


    Please report any discrepancies with actual API behavior in <a href="https://docs.honeycomb.io/troubleshoot/community/">Pollinators Slack</a> or to <a href="https://support.honeycomb.io/">Honeycomb
    Support</a>.

    '
externalDocs:
  url: https://docs.honeycomb.io
servers:
- url: https://api.honeycomb.io
- url: https://api.eu1.honeycomb.io
tags:
- name: Burn Alerts
  description: 'This feature is available as part of the [Honeycomb Pro and Enterprise plans](https://www.honeycomb.io/pricing/).


    Burn Alerts notify you when issues impact your SLO budget. Learn more about [Burn Alerts here](https://docs.honeycomb.io/notify/alert/slos/monitor/).


    This API allows you to list, create, update, and delete burn alerts.


    ## Authorization


    The API key must have the **Manage SLOs** permission. Learn more about [API keys here](https://docs.honeycomb.io/configure/environments/manage-api-keys/).

    '
- name: Reporting
  description: 'The Reporting API provides access to historical performance data.


    ## Authorization


    The API key must have the **Manage SLOs** permission. Learn more about [API keys here](https://docs.honeycomb.io/configure/environments/manage-api-keys/).

    '
- name: SLOs
  description: 'This feature is available as part of the [Honeycomb Pro and Enterprise plans](https://www.honeycomb.io/pricing).


    Honeycomb SLOs allow you to define and monitor Service Level Objectives (SLOs) for your organization.


    This API allows you to list, create, update, and delete SLO objects.


    You can also access historical reporting for your SLOs to analyze long-term performance trends. For more information, see [Get SLO History](https://api-docs.honeycomb.io/api/reporting/getslohistory)


    ## Authorization


    The API key must have the **Manage SLOs** permission. Learn more about [API keys here](https://docs.honeycomb.io/configure/environments/manage-api-keys/).

    '
paths:
  /1/burn_alerts/{datasetSlug}:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    post:
      security:
      - configuration_key: []
      summary: Create a Burn Alert
      description: 'Create a Burn Alert against a specified SLO.

        '
      tags:
      - Burn Alerts
      operationId: createBurnAlert
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBurnAlertRequest'
        required: true
      responses:
        '201':
          description: Created
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlertDetailResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    get:
      security:
      - configuration_key: []
      summary: List All Burn Alerts for an SLO
      description: 'Get all burn alerts associated with the SLO specified in the `slo_id` query param. It is not currently possible to retrieve all burn alerts for a dataset, environment, or team.

        '
      tags:
      - Burn Alerts
      operationId: listBurnAlertsBySlo
      parameters:
      - in: query
        name: slo_id
        schema:
          type: string
        description: For use with the list endpoint to retrieve all burn alerts for a specified SLO.
        required: true
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/BurnAlertListResponse'
                example:
                - id: fS7vfB81Wcy
                  alert_type: exhaustion_time
                  description: Use this runbook (link) if this alert fires.
                  triggered: true
                  exhaustion_minutes: 120
                  slo:
                    id: 2LBq9LckbcA
                  created_at: '2022-09-22T17:32:11Z'
                  updated_at: '2022-10-22T17:32:11Z'
                - id: gT7wgC82Xcz
                  alert_type: budget_rate
                  description: Use this runbook (link) if this alert fires.
                  triggered: true
                  budget_rate_window_minutes: 60
                  budget_rate_decrease_threshold_per_million: 1000
                  slo:
                    id: 2LBq9LckbcA
                  created_at: '2022-09-22T17:32:11Z'
                  updated_at: '2022-10-22T17:32:11Z'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/burn_alerts/{datasetSlug}/{burnAlertId}:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    - name: burnAlertId
      description: The unique identifier (ID) of a Burn Alert.
      in: path
      required: true
      schema:
        type: string
    get:
      security:
      - configuration_key: []
      summary: Get a Burn Alert
      description: 'Get a single Burn Alert by ID.

        '
      tags:
      - Burn Alerts
      operationId: getBurnAlert
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlertDetailResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    put:
      security:
      - configuration_key: []
      summary: Update a Burn Alert
      description: 'Update a Burn Alert by specifying its ID and full details.

        '
      tags:
      - Burn Alerts
      operationId: updateBurnAlert
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateBurnAlertRequest'
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BurnAlertDetailResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    delete:
      security:
      - configuration_key: []
      summary: Delete a Burn Alert
      description: Delete a Burn Alert by specifying its ID.
      tags:
      - Burn Alerts
      operationId: deleteBurnAlert
      responses:
        '204':
          description: Success - no content
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/slos/{datasetSlug}:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    post:
      security:
      - configuration_key: []
      summary: Create an SLO
      description: 'Create an SLO on the provided dataset.

        '
      tags:
      - SLOs
      operationId: createSlo
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SLOCreate'
        required: true
      responses:
        '201':
          description: Success - SLO created
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLOCreate'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    get:
      security:
      - configuration_key: []
      summary: Get all SLOs
      description: 'Get all SLOs for a dataset or environment (using  `__all__`). This action returns any SLOs, including those applied with multiple datasets.

        '
      tags:
      - SLOs
      operationId: listSlos
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SLO'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/slos/{datasetSlug}/{sloId}:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    - name: sloId
      description: Unique identifier (ID) of the SLO.
      in: path
      required: true
      schema:
        type: string
    get:
      security:
      - configuration_key: []
      summary: Get an SLO
      description: 'Get an SLO by ID.

        '
      tags:
      - SLOs
      operationId: getSlo
      parameters:
      - in: query
        name: detailed
        schema:
          type: boolean
        description: 'Allows SLO reporting data (`status`, `burn_rate`, `budget_remaining` and `compliance`) to be returned when retrieving a single SLO.


          This feature is available as part of the [Honeycomb Enterprise plan](https://www.honeycomb.io/pricing/).


          **Note:** `burn_rate` is calculated based on the last 4 hours of data.

          '
        required: false
        allowEmptyValue: true
        example: ''
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/SLO'
                - $ref: '#/components/schemas/SLODetailedResponse'
              examples:
                get-slo:
                  description: Get an SLO by ID
                  value:
                    id: bZ1aRHAUsjG
                    name: My SLO
                    description: My SLO description
                    sli:
                      alias: my-sli
                    time_period_days: 30
                    target_per_million: 989900
                    reset_at: '2022-10-15T13:53:11Z'
                    created_at: '2022-09-15T05:39:42Z'
                    updated_at: '2022-12-20T08:10:05Z'
                    dataset_slugs:
                    - mydataset1
                get-slo-detailed:
                  description: Get SLO by ID with detailed response
                  value:
                    id: bZ1aRHAUsjG
                    name: My SLO
                    description: My SLO description
                    sli:
                      alias: my-sli
                    time_period_days: 30
                    target_per_million: 989900
                    compliance: 95.39
                    budget_remaining: 7.73
                    status: normal
                    burn_rate: 5.39
                    reset_at: '2022-10-15T13:53:11Z'
                    created_at: '2022-09-15T05:39:42Z'
                    updated_at: '2022-12-20T08:10:05Z'
                    dataset_slugs:
                    - mydataset1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    put:
      security:
      - configuration_key: []
      summary: Update an SLO
      description: 'Update an SLO by specifying its ID and full SLO details.

        '
      tags:
      - SLOs
      operationId: updateSlo
      requestBody:
        description: 'Partial updates are not supported.

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SLO'
        required: true
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLO'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
    delete:
      security:
      - configuration_key: []
      summary: Delete an SLO
      description: 'Delete an SLO by specifying its ID.

        '
      tags:
      - SLOs
      operationId: deleteSlo
      responses:
        '204':
          description: Success - no content
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/slos/{datasetSlug}/{sloId}/counts:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    - name: sloId
      description: Unique identifier (ID) of the SLO.
      in: path
      required: true
      schema:
        type: string
    get:
      security:
      - configuration_key: []
      summary: Get SLO Realtime Counts
      description: "Get per-minute success and failure event counts for an SLO, updated approximately once per minute from a rolling 24-hour window.\n\nThis endpoint is intended for near-real-time integrations\
        \ such as external SLO dashboards and alerting tools (e.g. nobl9). For weekly compliance history, use the [Get SLO History endpoint](https://api-docs.honeycomb.io/api/reporting/getSloHistory/).\n\
        \n**Requirements:**\n- Available on the [Enterprise plan](https://www.honeycomb.io/pricing/) only.\n- This feature must be enabled for your team. Contact your account team\n  to request access.\n\
        \n\n**Gaps:** Some minutes may have no entry in the `windows` array. The first window after a gap may contain a larger-than-usual delta. Treat missing timestamps as unavailable data, not zero-event\
        \ periods.\n\n**Epoch:** The response includes an `epoch` field \u2014 a hash of the SLO's SLI expression and dataset configuration. If this value changes between responses, the underlying SLO definition\
        \ has changed and any client-side cache should be invalidated.\n\n**Partial windows:** Windows marked `is_partial: true` may still receive additional events. This occurs for the most recent 10 minutes\
        \ (late-arriving data settlement) or when no prior snapshot exists to compute a delta from.\n"
      tags:
      - SLOs
      operationId: getSloRealtimeCounts
      parameters:
      - in: query
        name: start_time
        required: true
        schema:
          type: integer
        description: 'Start of the time range as a Unix timestamp (seconds). Must be within the last 24 hours and no later than `end_time`.

          '
        example: 1745251200
      - in: query
        name: end_time
        required: true
        schema:
          type: integer
        description: 'End of the time range as a Unix timestamp (seconds). Must be greater than `start_time` and within the same clock hour as `start_time`. Realtime counts accumulate from the start of
          each hour and reset at hour boundaries; use the [Get SLO Hourly Counts History endpoint](https://api-docs.honeycomb.io/api/slos/getSloHourlyCountsHistory/) for completed hours.

          '
        example: 1745254740
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLOCountsResponse'
              example:
                slo_id: bZ1aRHAUsjG
                resolution_seconds: 60
                epoch: a3f9c2d1e8b74056
                period_start: 1745251200
                windows:
                - window_start: 1745251200
                  window_end: 1745251260
                  total_count: 1243
                  error_count: 3
                  is_partial: false
                - window_start: 1745251260
                  window_end: 1745251320
                  total_count: 1188
                  error_count: 1
                  is_partial: false
                - window_start: 1745251320
                  window_end: 1745251380
                  total_count: 1301
                  error_count: 0
                  is_partial: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/slos/{datasetSlug}/{sloId}/counts/history:
    parameters:
    - $ref: '#/components/parameters/datasetSlugOrAll'
    - name: sloId
      description: Unique identifier (ID) of the SLO.
      in: path
      required: true
      schema:
        type: string
    get:
      security:
      - configuration_key: []
      summary: Get SLO Hourly Counts History
      description: "Get hourly-bucketed total and error event counts for an SLO from the persistent historical store. Use this endpoint to retrieve completed historical hours; pair with the [Get SLO Realtime\
        \ Counts endpoint](https://api-docs.honeycomb.io/api/slos/getslorealtimecounts/) for the current in-progress hour.\n\n**Requirements:**\n- Available on the [Enterprise plan](https://www.honeycomb.io/pricing/)\
        \ only.\n- This feature must be enabled for your team. Contact your account team\n  to request access.\n\n\n**Partial buckets:** The most recent bucket may be marked `is_partial: true` if it covers\
        \ the current in-progress hour. Counts for that bucket will increase until the hour completes.\n"
      tags:
      - SLOs
      operationId: getSloHourlyCountsHistory
      parameters:
      - in: query
        name: start_time
        required: true
        schema:
          type: integer
        description: 'Start of the time range as a Unix timestamp (seconds).

          '
        example: 1745168400
      - in: query
        name: end_time
        required: true
        schema:
          type: integer
        description: 'End of the time range as a Unix timestamp (seconds). Must be greater than `start_time`.

          '
        example: 1745254800
      responses:
        '200':
          description: Success
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLOHourlyCountsResponse'
              example:
                slo_id: bZ1aRHAUsjG
                resolution_seconds: 3600
                buckets:
                - start_time: 1745168400
                  end_time: 1745172000
                  total_count: 74520
                  error_count: 182
                  is_partial: false
                - start_time: 1745172000
                  end_time: 1745175600
                  total_count: 71043
                  error_count: 97
                  is_partial: false
                - start_time: 1745251200
                  end_time: 1745254800
                  total_count: 12300
                  error_count: 14
                  is_partial: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
        default:
          $ref: '#/components/responses/GenericError'
  /1/reporting/slos/historical:
    post:
      security:
      - configuration_key: []
      summary: Get SLO History
      description: 'Get a weekly breakdown of historical data for a list of SLOs for a given time range.

        '
      tags:
      - Reporting
      operationId: getSloHistory
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SLOHistoryRequest'
        required: true
      responses:
        '200':
          description: "A mapping from SLO IDs (e.g., \"2LBq9LckbcA\") to their historical data. Each SLO ID maps to an array of compliance and budget intervals.\n\n **Note**: An empty array indicates that\
            \ no historical data was found for the given time range for that SLO.\n"
          headers:
            Ratelimit:
              $ref: '#/components/headers/RateLimit'
            RateLimitPolicy:
              $ref: '#/components/headers/RateLimitPolicy'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SLOHistoryResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/ValidationFailed'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        default:
          $ref: '#/components/responses/GenericError'
components:
  parameters:
    datasetSlugOrAll:
      name: datasetSlug
      description: 'The dataset slug or use `__all__` for endpoints that support environment-wide operations.

        '
      in: path
      required: true
      schema:
        type: string
  schemas:
    SLOHourlyCountsResponse:
      type: object
      properties:
        slo_id:
          type: string
          description: The unique identifier of the SLO.
          readOnly: true
          example: bZ1aRHAUsjG
        resolution_seconds:
          type: integer
          description: The width of each bucket in seconds. Always `3600`.
          readOnly: true
          example: 3600
        buckets:
          type: array
          description: 'Ordered list of hourly count buckets within the requested time range. Gaps indicate hours with no recorded data. An empty array means no data exists for the requested range.

            '
          items:
            $ref: '#/components/schemas/SLOHourBucket'
    JSONAPIError:
      x-tags:
      - Errors
      type: object
      description: A JSONAPI-formatted error message.
      properties:
        errors:
          type: array
          items:
            type: object
            readOnly: true
            required:
            - id
            - code
            properties:
              id:
                type: string
                readOnly: true
              status:
                type: string
                readOnly: true
              code:
                type: string
                readOnly: true
              title:
                type: string
                readOnly: true
              detail:
                type: string
                readOnly: true
              source:
                type: object
                readOnly: true
                properties:
                  pointer:
                    type: string
                    readOnly: true
                  header:
                    type: string
                    readOnly: true
                  parameter:
                    type: string
                    readOnly: true
    BudgetRateBurnAlertDetailResponse:
      allOf:
      - $ref: '#/components/schemas/BudgetRateBurnAlertListResponse'
      - type: object
        properties:
          recipients:
            type: array
            minItems: 1
            description: 'A list of [Recipients](/api/recipients/) to notify when an alert fires. Using `type`+`target` is deprecated. First, create the Recipient via the Recipients API, and then specify
              the ID.

              '
            items:
              $ref: '#/components/schemas/NotificationRecipient'
            example:
            - id: abcd123
              type: email
              target: [email protected]
    ExhaustionTimeBurnAlertDetailResponse:
      title: Exhaustion Time
      allOf:
      - $ref: '#/components/schemas/ExhaustionTimeBurnAlertListResponse'
      - type: object
        properties:
          recipients:
            type: array
            minItems: 1
            description: 'A list of [Recipients](/api/recipients/) to notify when an alert fires. Using `type`+`target` is deprecated. First, create the Recipient via the Recipients API, and then specify
              the ID.

              '
            items:
              $ref: '#/components/schemas/NotificationRecipient'
            example:
            - id: abcd123
              type: email
              target: [email protected]
    SLOHourBucket:
      type: object
      properties:
        start_time:
          type: integer
          format: int64
          description: Start of the hour as a Unix timestamp (seconds).
          readOnly: true
          example: 1745168400
        end_time:
          type: integer
          format: int64
          description: 'End of the hour as a Unix timestamp (seconds). Always `start_time + 3600`.

            '
          readOnly: true
          example: 1745172000
        total_count:
          type: integer
          description: Total number of events (good + bad) in this hour.
          readOnly: true
          example: 74520
        error_count:
          type: integer
          description: Number of failed (bad) events in this hour.
          readOnly: true
          example: 182
        is_partial:
          type: boolean
          description: 'When `true`, this bucket covers the current in-progress hour and its counts will increase until the hour completes. Clients should treat `is_partial: true` buckets as provisional.

            '
          readOnly: true
          example: false
    UpdateBudgetRateBurnAlertRequest:
      title: Budget Rate
      allOf:
      - $ref: '#/components/schemas/BudgetRateBurnAlert'
      - type: object
        required:
        - recipients
        properties:
          recipients:
            type: array
            minItems: 1
            description: 'A list of [Recipients](/api/recipients/) to notify when an alert fires. Using `type`+`target` is deprecated. First, create the Recipient via the Recipients API, and then specify
              the ID.

              '
            items:
              $ref: '#/components/schemas/NotificationRecipient'
            example:
            - id: abcd123
              type: email
              target: [email protected]
    SLOHistoryRequest:
      type: object
      required:
      - ids
      - start_time
      - end_time
      properties:
        ids:
          type: array
          description: 'A list of SLO IDs to retrieve history for. Cannot be an empty array or more than 24 in length.

            '
          minItems: 1
          maxItems: 24
          example:
          - 2LBq9LckbcA
          - CzcpPs7cJ4d
        start_time:
          type: integer
          description: The starting Unix timestamp, in seconds since the epoch, to retrieve historical data for. Cannot be more than a year in the past.
          example: 1742230800
        end_time:
          type: integer
          description: The ending Unix timestamp, in seconds since the epoch, to retrieve historical data for. Must be greater than `start_time`. Cannot be a future timestamp.
          example: 1745254800
    UpdateExhaustionTimeBurnAlertRequest:
      allOf:
      - $ref: '#/components/schemas/ExhaustionTimeBurnAlert'
      - type: object
        required:
        - recipients
        properties:
          recipients:
            type: array
            minItems: 1
            description: 'A list of [Recipients](/api/recipients/) to notify when an alert fires. Using `type`+`target` is deprecated. First, create the Recipient via the Recipients API, and then specify
              the ID.

              '
            items:
              $ref: '#/components/schemas/NotificationRecipient'
            example:
            - id: abcd123
              type: email
              target: [email protected]
    ExhaustionTimeBurnAlert:
      title: Exhaustion Time
      allOf:
      - $ref: '#/components/schemas/BurnAlertSharedParams'
      - type: object
        required:
        - exhaustion_minutes
        properties:
          alert_type:
            type: string
            description: 'One of the supported alert types:

              1. `exhaustion_time`: Notifies when you are about to run out of SLO budget within a specified number of hours.

              1. `budget_rate`: Notifies when budget drops by at least a specified percentage within a defined time window.

              '
            default: exhaustion_time
            enum:
            - exhaustion_time
            - budget_rate
            example: exhaustion_time
          exhaustion_minutes:
            type: integer
         

# --- truncated at 32 KB (64 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/honeycomb-io/refs/heads/main/openapi/honeycomb-slos-api-openapi.yml