Marginalia MCP Server
by bmorphism
openapi: 3.1.0
info:
title: Honeycomb API
x-logo:
url: https://docs.honeycomb.io/images/2021-HC-Logo-RGB.svg
href: https://www.honeycomb.io/
version: 1.0.0
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0.html
contact:
email: support@honeycomb.io
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: Auth
description: >
API Keys have various scopes permissions and belong to a specific Team or
Environment.
Any valid Honeycomb ingest or configuration API Key will work with this
endpoint. Learn more about [API
keys](https://docs.honeycomb.io/get-started/best-practices/api-keys).
These endpoints can be used to validate authentication for a key, to
determine what authorizations have been granted
to a key, and to determine the Team and Environment that a key belongs to.
- name: Boards
description: >
Boards are a place to pin and save useful queries and graphs you want to
retain for later reuse and reference.
This API allows you to list, create, update, and delete Boards.
## Authorization
The API key must have the **Manage Public Boards** permission. Learn more
about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- 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/get-started/configure/environments/manage-api-keys/).
- name: Columns
description: >
Columns are fields in the events you send to Honeycomb.
This API allows you to list, create, update, and delete columns in a
dataset.
## Authorization
The API key must have the **Manage Queries and Columns** permission. Learn
more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Datasets
description: >
A Dataset represents a collection of related events that come from the
same source, or are related to the same source.
This API allows you to list, create, and update datasets.
## Authorization
The API key must have the **Create Datasets** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Dataset Definitions
description: >
Dataset definitions describe the fields with special meaning in the
Dataset.
Refer to the [Dataset
Definitions](https://docs.honeycomb.io/get-started/configure/datasets/definitions/)
documentation for more information.
**Honeycomb automatically creates these Dataset definition fields when the
Dataset is created.** Manual creation of Dataset definitions is **not**
needed.
## Authorization
The API key must have the **Create Datasets** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Derived Columns
description: >
Derived columns allow you to run queries based on the value of an
expression that is derived from the columns in an event.
This API allows you to list, create, update, and delete derived columns in
a dataset or across a whole environment, paralleling the behavior of the
Schema tab within a Dataset's or Environment's Settings UI.
## Authorization
The API key must have the **Manage Queries and Columns** permission. Learn
more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Events
description: >
The Events API endpoints are the lowest-level way to send Events to
Honeycomb. **This should be your last resort!**
If unsure where to start when instrumenting an application, read about how
to [Send Data to Honeycomb](https://docs.honeycomb.io/send-data/).
If you are building a tracing or metrics library, we recommend using
[OpenTelemetry](https://docs.honeycomb.io/send-data/opentelemetry/).
## Authorization
It is recommended that an Ingest API key is used for sending events.
A Configuration API key will work, and must have the **Send Events**
permission.
Learn more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Environments
description: |
This API allows you to list, create, and update, and delete Environments.
- name: Key Management
description: >
This API allows you to list, create, update, and delete API Keys for a
Team.
- name: Kinesis Events
description: >
The Kinesis Events API endpoints allow Honeycomb to process streaming
events from Amazon Kinesis.
Refer to the [Honeycomb AWS
integrations](https://docs.honeycomb.io/integrations/aws/how-aws-integrations-work/)
documentation for more information.
## Authorization
It is recommended that an Ingest API key is used for sending events.
A Configuration API key will work, and must have the **Send Events**
permission.
Learn more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Markers
description: >
Markers indicate points in time on graphs where interesting things happen,
such as deploys or outages.
This API allows you to list, create, update, and delete Markers.
## Authorization
The API key must have the **Manage Markers** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Marker Settings
description: >
Marker Settings apply to groups of similar Markers.
For example, "deploys" markers appear with the same color on a graph.
This API allows you to list, create, update, and delete Marker Settings.
## Authorization
The API key must have the **Manage Markers** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Queries
description: >
Queries in Honeycomb are specifications for queries, and are used to
identify queries in other parts of the API - in particular: boards,
triggers, and query annotations.
This API allows you to create and get query objects.
## Authorization
The API key must have the **Manage Queries and Columns** permission. Learn
more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Query Annotations
description: >
Query Annotations in Honeycomb allow you to associate names and
descriptions to queries to add additional information in collaboration
features.
This API allows you to list, create, update, and delete Query Annotations.
## Authorization
The API key must have the **Manage Queries and Columns** permission. Learn
more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Query Data
description: >
This feature is available as part of the [Honeycomb Enterprise
plan](https://www.honeycomb.io/pricing/).
Query Results are the aggregated data from a Query, similar to what is
displayed in graphs or heatmaps within the Honeycomb UI. Receiving results
from a Query is a three-step process:
Create the Query (or Query Spec), which validates that the query
parameters are valid. Creating a query does not actually run the query to
get results.
Run the query asynchronously by creating a Query Result referencing the
Query’s ID. This returns a Query Result ID.
Poll the query result endpoint (with the Query Result ID) until the data
is ready.
Note that many Query Results can be created from a single Query. This is
particularly useful when using a relative time_range parameter in the
Query.
For example, a Query with `time_range: 7200` and no explicit `start_time`
or `end_time` can be re-run over and over, with each resulting Query
Result containing the most recent 2 hours of data.
This is conceptually similar to clicking Run Query in the Honeycomb UI
without changing any query parameters.
**IMPORTANT API RESTRICTIONS:**
To ensure the stability of Honeycomb systems, we have enabled the
following API restrictions. These restrictions may change over time.
* Query Results can only be created for events with timestamps within the
past 7 days.
* When creating a Query Result, the time ranges from the Query are
truncated according to the following rules. For queries with a time range
of:
* less than or equal to 6 hours, results are truncated to the nearest 1 minute. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:28:00Z.
* greater than 6 hours and less than or equal to 2 days, results are truncated to the nearest 5 minutes. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:25:00Z.
* greater than 2 days and less than or equal to 7 days, results are truncated to the nearest 30 minutes. For example, a start/end time of 2021-04-22T05:28:12Z will be truncated to 2021-04-22T05:00:00Z.
* Creating a Query Result is rate limited to 10 requests per minute.
Status code 429 will be returned when rate limited.
* Query Results cannot take longer than 10 seconds to run.
## Authorization
The API key must have the **Manage Queries and Columns** and **Run
Queries** permission. Learn more about [API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Recipients
description: >
Honeycomb Recipients allow you to define and manage the Recipients that
will get notified by a Trigger or Burn Alert.
The types of Recipients supported are: PagerDuty, Email, Webhook,
Microsoft Teams, and Slack.
## Authorization
The API key must have the **Manage Recipients** permission. Recipients are
team-wide and NOT environment-specific.
API Keys with the **Manage Recipients** permission can modify recipients
used by ALL environments for a given team.
Learn more about [API keys
here](https://docs.honeycomb.io/get-started/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.
## Authorization
The API key must have the **Manage SLOs** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Triggers
description: >
Triggers let you receive notifications when your data in Honeycomb crosses
the thresholds that you configure.
The graph on which to alert is as flexible as a Honeycomb query, which
helps reduce false positives due to known errors.Triggers fire
This API allows you to list, create, update, and delete Triggers.
## Authorization
The API key must have the **Manage Triggers** permission. Learn more about
[API keys
here](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
- name: Errors
description: >
The Honeycomb API returns standardized error responses, as documented
here.
paths:
/1/auth:
get:
security:
- configuration_key: []
- ingest_key: []
summary: List Authorizations
description: >
Returns metadata about the API Key used to call the API.
Note: a Honeycomb Classic API key will return an empty string for both
of the `environment` values.
tags:
- Auth
operationId: getAuth
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Auth'
examples:
environment:
description: Environment API Key
value:
id: FL_xMM5LapLC
type: configuration
api_key_access:
events: true
markers: true
triggers: false
boards: false
queries: false
columns: false
createDatasets: true
slos: false
recipients: false
privateBoards: false
environment:
name: Production
slug: production
team:
name: Honeycomb Docs
slug: honeycomb-docs
classic:
description: Classic Environment API Key
value:
id: A3jatwoWSxA
type: configuration
api_key_access:
events: true
markers: true
triggers: false
boards: false
queries: false
columns: false
createDatasets: false
slos: false
recipients: false
privateBoards: false
environment:
name: ''
slug: ''
team:
name: Honeycomb Docs
slug: honeycomb-docs
ingest:
description: Ingest API Key
value:
id: hcxik_01j1824es7n4evcmv81cn392jb
type: ingest
api_key_access:
createDatasets: true
environment:
name: Production
slug: production
team:
name: Honeycomb Docs
slug: honeycomb-docs
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/GenericError'
/2/auth:
get:
security:
- bearerAuth: []
summary: List Authorizations V2
description: |
Returns metadata about the Management API Key used to call the API.
tags:
- Auth
operationId: getV2Auth
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/AuthV2Response'
'401':
$ref: '#/components/responses/Unauthorized'
/1/boards:
post:
security:
- configuration_key: []
summary: Create a Board
description: |
Create a Board comprised of one or more Queries.
tags:
- Boards
operationId: createBoard
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Board'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Board'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/ValidationFailed'
default:
$ref: '#/components/responses/GenericError'
get:
security:
- configuration_key: []
summary: List All Boards
description: >
Retrieves a list of all non-secret Boards within an environment.
**Note**: For Honeycomb Classic users, all boards within Classic will be
returned.
tags:
- Boards
operationId: listBoards
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Board'
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/GenericError'
/1/boards/{boardId}:
parameters:
- name: boardId
description: The unique identifier (ID) of a Board.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Board
description: Get a single Board by ID.
tags:
- Boards
operationId: getBoard
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Board'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
put:
security:
- configuration_key: []
summary: Update a Board
description: >
Update a Board by specifying its ID and full details.
**Note**: Queries can be added to, removed from, and re-ordered by
updating the board itself. It is not possible to reference individual
queries via the API.
tags:
- Boards
operationId: updateBoard
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Board'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Board'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
default:
$ref: '#/components/responses/GenericError'
delete:
security:
- configuration_key: []
summary: Delete a Board
description: Delete a public Board by specifying its ID.
tags:
- Boards
operationId: deleteBoard
responses:
'204':
description: Success - no Content
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/burn_alerts/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
post:
security:
- configuration_key: []
summary: Create a Burn Alert
description: |
Create a Burn Alert in a specified dataset against a specified SLO.
tags:
- Burn Alerts
operationId: createBurnAlert
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBurnAlertRequest'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/BurnAlertDetailResponse'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
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
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'
default:
$ref: '#/components/responses/GenericError'
/1/burn_alerts/{datasetSlug}/{burnAlertId}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
- 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
content:
application/json:
schema:
$ref: '#/components/schemas/BurnAlertDetailResponse'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
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
content:
application/json:
schema:
$ref: '#/components/schemas/BurnAlertDetailResponse'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
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'
default:
$ref: '#/components/responses/GenericError'
/1/datasets:
post:
security:
- configuration_key: []
summary: Create a Dataset
description: >
Create a Dataset in the environment associated with your API key.
If a Dataset already exists by that name (or slug), then the existing
dataset will be returned.
tags:
- Datasets
operationId: createDataset
requestBody:
description: >
The dataset will be created within the environment associated with
your API key.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetCreationPayload'
required: true
responses:
'200':
description: OK - Dataset already exists
content:
application/json:
schema:
$ref: '#/components/schemas/Dataset'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Dataset'
example:
name: MyDataset!
slug: mydataset-
description: A nice description of my dataset
expand_json_depth: 3
created_at: '2022-07-21T18:39:23Z'
last_written_at: null
regular_columns_count: 0
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: we could not create a dataset with that name
'422':
$ref: '#/components/responses/ValidationFailed'
default:
$ref: '#/components/responses/GenericError'
get:
security:
- configuration_key: []
summary: List All Datasets
description: >
Lists all Datasets for an environment.
**Note**: For Honeycomb Classic users, all datasets in Classic are
returned.
tags:
- Datasets
operationId: listDatasets
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Dataset'
example:
- name: my dataset!
description: my dataset described!
slug: my-dataset-
expand_json_depth: 2
created_at: '2022-07-21T18:39:23Z'
last_written_at: '2022-07-22T19:52:00Z'
regular_columns_count: 12
- name: another dataset
description: ''
slug: another-dataset
expand_json_depth: 0
created_at: '2022-07-21T18:39:23Z'
last_written_at: '2022-07-22T19:52:00Z'
regular_columns_count: 98
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/GenericError'
/1/datasets/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
get:
security:
- configuration_key: []
summary: Get a Dataset
description: |
Get a single Dataset by slug.
tags:
- Datasets
operationId: getDataset
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Dataset'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
delete:
security:
- configuration_key: []
summary: Delete a Dataset
description: >
Deletes the Dataset. This is an irreversible operation.
It may take several minutes for the deletion process to complete.
**WARNING**: This endpoint will allow anyone with an API key that has
the
manage dataset permission to delete any dataset in the environment (or
any dataset in the whole team for Classic customers).
Datasets with Deletion Protection enabled cannot be deleted.
To delete a Dataset with Deletion Protection enabled, first disable
Deletion Protection by updating the Dataset with
`settings.delete_protected = false`.
tags:
- Datasets
operationId: deleteDataset
responses:
'202':
description: Deleted
content:
application/json: {}
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
default:
$ref: '#/components/responses/GenericError'
put:
security:
- configuration_key: []
summary: Update a Dataset
description: |
Update a Dataset's settings.
tags:
- Datasets
operationId: updateDataset
requestBody:
description: >
Update a Dataset's settings.
All fields must be specified, as omitting one will have the effect of
reverting the setting to the default.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetUpdatePayload'
example:
expand_json_depth: 3
description: my updated description
settings:
delete_protected: false
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Dataset'
example:
name: My Dataset!
slug: my-dataset-
description: my updated description
settings:
delete_protected: false
expand_json_depth: 3
created_at: '2022-07-21T18:39:23Z'
last_written_at: '2022-09-22T17:32:03Z'
regular_columns_count: 100
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/1/batch/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
post:
security:
- configuration_key: []
- ingest_key: []
summary: Create Events
description: >
Supports batch creation of events.
Dataset names are case insensitive. `POST` requests to "MyDatasET" will
land in the same dataset as "mydataset". Names may contain URL-encoded
spaces or other special characters, but not URL-encoded slashes. For
example, "My%20Dataset" will show up in the UI as "My Dataset".
The first event received for a dataset determines the casing of the
displayed name. All subsequent variations in casing will use the
originally specified case.
tags:
- Events
operationId: createEvents
parameters:
- in: header
name: Content-Encoding
description: >
Included when sending events in a file. Size limitations may be
addressed by compressing request bodies with gzip or zstd
compression. Be sure to set the Content-Encoding to gzip or zst.
schema:
type: string
enum:
- gzip
- zst
example: gzip
requestBody:
description: >
The array should contain one or more JSON objects representing Events.
Each Event contains its payload under the `data` key. Values of `time`
and/or `samplerate` can be included as well.
The JSON payload should have the structure:
`[{ "data": { "key1": "value1", "key2": 2.0 } }, ... ]`
Size limitations may be addressed by compressing request bodies with
`gzip` or `zstd` compression.
An empty `202` response indicates that the event has been queued for
processing.
content:
application/octet-stream:
schema:
type: string
format: binary
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/BatchEvent'
example:
- time: '2006-01-02T15:04:05.99Z'
samplerate: 1
data:
method: GET
endpoint: /foo
shard: users
duration_ms: 32
- time: '2006-01-02T15:04:05.99Z'
data:
some_other_key: value
duration_ms: 40
required: true
responses:
'200':
description: Enqueued for processing
content:
application/json:
schema:
type: array
items:
type: object
properties:
status:
type: number
error:
type: string
example:
- status: 202
- status: 400
error: Request body should not be empty.
- status: 400
error: Event has too many columns.
- status: 400
error: Request body is malformed and cannot be read.
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
not-empty:
description: The body is empty, or blank.
value:
error: Request body should not be empty.
dataset-too-many-columns:
description: The dataset has reached the maximum number of columns.
value:
error: Dataset has too many columns.
malformed-request:
description: The API failed to decode the body as JSON.
value:
error: Request body is malformed and cannot be read.
too-large:
description: The body is too large.
value:
error: Request body is too large.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
description: Dropped due to administrative throttling
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Event dropped due to administrative throttling
'404':
$ref: '#/components/responses/NotFound'
'429':
description: Dropped due to rate limiting
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
rate-limiting:
value:
error: Request dropped due to rate limiting.
deny-list:
value:
error: Event dropped due to administrative denylist
/1/dataset_definitions/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
patch:
security:
- configuration_key: []
summary: Set or Update Dataset Definitions
description: >
Set or update one or more definitions for a Dataset.
**Note**: While the PATCH payload can include the `column_type`,
Honeycomb does not use this field when updating Dataset Definitions.
tags:
- Dataset Definitions
operationId: patchDatasetDefinitions
requestBody:
description: >
The PATCH payload takes a map of Dataset definition type to Dataset
definition. Fields not defined in the request are not modified on the
server.
**Note**: In order to **CLEAR** a column of a Dataset definition set
the column’s name field to an empty string.
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetDefinitions'
examples:
setting:
description: Set the duration_ms definition.
value:
duration_ms:
name: duration_we_send
column_type: derived_column
clearing:
description: Clear the definitions.
value:
error:
name: ''
link_trace_id:
name: ''
required: true
responses:
'200':
description: Dataset Definitions have been updated
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetDefinitions'
example:
duration_ms:
name: duration_ms
column_type: column
error: null
name: null
parent_id: null
route: null
service_name: null
span_id:
name: my_span_id
column_type: column
span_kind: null
annotation_type: null
link_trace_id: null
link_span_id: null
status: null
trace_id: null
user: null
log_severity: null
log_message: null
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/DetailedError'
example:
status: 400
type: https://api.honeycomb.io/problems/unparseable
title: The request body could not be parsed.
detail: could not parse request body
error: could not parse request body
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
description: 422 Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: 'The following columns were not found: duration_we_send'
get:
security:
- configuration_key: []
summary: Get all Dataset Definitions
description: >
Get all definitions for a Dataset.
The response returns an object with a Dataset Definition for each set
Dataset Definition type.
tags:
- Dataset Definitions
operationId: listDatasetDefinitions
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DatasetDefinitions'
example:
duration_ms:
name: duration_ms
column_type: column
error: null
name: null
parent_id: null
route: null
service_name: null
span_id:
name: my_span_id
column_type: column
span_kind: null
annotation_type: null
link_trace_id: null
link_span_id: null
status: null
trace_id: null
user: null
log_severity: null
log_message: null
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/1/events/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
post:
security:
- configuration_key: []
- ingest_key: []
summary: Create an Event
description: >
Using this endpoint for anything more than testing is highly
discouraged.
Sending events in batches will be much more efficient and should be
preferred if at all possible.
tags:
- Events
operationId: createEvent
parameters:
- in: header
name: X-Honeycomb-Event-Time
description: The Event's timestamp. Optional. Defaults to server time.
schema:
type: integer
- in: header
name: X-Honeycomb-Samplerate
description: Optional. Defaults to 1.
schema:
type: integer
requestBody:
description: >
The request body is limited to raw (potentially compressed) size of
100KB.
The maximum number of distinct columns (fields) allowed in an event is
`2000`.
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
example:
method: GET
endpoint: /foo
shard: users
duration_ms: 32
required: true
responses:
'200':
description: Enqueued for processing
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
not-empty:
description: The body is empty, or blank.
value:
error: Request body should not be empty.
dataset-too-many-columns:
description: The dataset has reached the maximum number of columns.
value:
error: Dataset has too many columns.
events-too-many-columns:
description: The event has reached the maximum number of columns.
value:
error: Event has too many columns.
malformed-request:
description: The API failed to decode the body as JSON.
value:
error: Request body is malformed and cannot be read.
too-large:
description: The body is too large.
value:
error: Request body is too large.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
description: Dropped due to administrative throttling
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Event dropped due to administrative throttling
'404':
$ref: '#/components/responses/NotFound'
'429':
description: Dropped due to rate limiting
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
rate-limiting:
value:
error: Request dropped due to rate limiting.
deny-list:
value:
error: Event dropped due to administrative denylist
/1/kinesis_events/{datasetSlug}:
parameters:
- in: header
name: X-Amz-Firehose-Request-Id
description: |
AWS Request ID associated with the Kinesis Firehose.
schema:
type: string
required: true
example: 33658b45-a8f1-4007-92e8-f601ae33db14
- $ref: '#/components/parameters/datasetSlug'
post:
summary: Create Kinesis Events
description: >
This endpoint processes events and metrics coming from AWS through
Kinesis Firehose.
tags:
- Kinesis Events
operationId: createKinesisEvents
security:
- firehose_access_key: []
requestBody:
description: >
The request body expected from Amazon Kinesis Firehose. Events and
metrics have the same shape but the base64 encoded data blob for
metrics is expected to be Protowire-encoded as well. CloudWatch Logs
data coming through Amazon Kinesis Firehose is expected to have a gzip
Content-Encoding.
content:
application/json:
schema:
$ref: '#/components/schemas/KinesisEvent'
required: true
responses:
'200':
description: Events queued for processing
content:
application/json:
schema:
$ref: '#/components/schemas/KinesisResponse'
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/GenericError'
/1/markers/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Marker
description: >
Create a Marker in the specified dataset. To create an environment
marker, use the `__all__` keyword and an API key associated with the
desired environment.
tags:
- Markers
operationId: createMarker
requestBody:
description: |
The marker body can include as many of the Marker fields as desired.
content:
application/json:
schema:
$ref: '#/components/schemas/Marker'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/Marker'
example:
created_at: '2016-08-13T05:39:42Z'
updated_at: '2016-08-13T05:39:42Z'
start_time: 1471040808
message: 'backend deploy #123'
type: deploy
id: d1c84ec0
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
get:
security:
- configuration_key: []
summary: List All Markers
description: |
Lists all Markers for a dataset.
tags:
- Markers
operationId: getMarker
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Marker'
example:
- created_at: '2016-08-13T05:39:42Z'
updated_at: '2016-08-13T05:39:42Z'
start_time: 1471040808
message: 'backend deploy #123'
type: deploy
id: d1c84ec0
- created_at: '2016-08-14T05:39:42Z'
updated_at: '2016-08-14T05:39:42Z'
start_time: 1471040808
message: 'frontend deploy #123'
type: deploy
id: c2b52fa0
'401':
$ref: '#/components/responses/Unauthorized'
default:
$ref: '#/components/responses/GenericError'
/1/markers/{datasetSlug}/{markerId}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: markerId
description: The unique identifier (ID) of a Marker.
in: path
required: true
schema:
type: string
put:
security:
- configuration_key: []
summary: Update a Marker
description: >
Update a Marker in the specified dataset. To update an environment
marker, use the `__all__` keyword and an API key associated with the
desired environment.
tags:
- Markers
operationId: updateMarker
requestBody:
description: >
If an existing field is not included in the payload, it will be
erased.
content:
application/json:
schema:
$ref: '#/components/schemas/Marker'
required: true
responses:
'200':
description: Updated
content:
application/json:
schema:
$ref: '#/components/schemas/Marker'
example:
created_at: '2016-08-13T05:39:42Z'
updated_at: '2016-08-13T05:39:42Z'
start_time: 1471040808
message: 'backend deploy #123'
type: deploy
id: d1c84ec0
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
delete:
security:
- configuration_key: []
summary: Delete a Marker
tags:
- Markers
operationId: deleteMarker
responses:
'200':
description: |
Success
The deleted Marker will be in the body of the response.
content:
application/json:
schema:
$ref: '#/components/schemas/Marker'
example:
created_at: '2016-08-13T05:39:42Z'
updated_at: '2016-08-13T05:39:42Z'
start_time: 1471040808
message: 'backend deploy #123'
type: deploy
id: d1c84ec0
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/marker_settings/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Marker Setting
tags:
- Marker Settings
operationId: createMarkerSetting
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MarkerSetting'
required: true
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/MarkerSetting'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
get:
security:
- configuration_key: []
summary: Get a Marker Setting
tags:
- Marker Settings
operationId: listMarkerSettings
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MarkerSetting'
'404':
$ref: '#/components/responses/NotFound'
/1/marker_settings/{datasetSlug}/{id}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: id
description: The unique identifier (ID) of a marker setting.
in: path
required: true
schema:
type: string
put:
security:
- configuration_key: []
summary: Update a Marker Setting
description: |
A marker setting's `type` may not be changed after creation.
tags:
- Marker Settings
operationId: updateMarkerSettings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MarkerSetting'
example:
type: deploy
color: '#1fa297'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/MarkerSetting'
example:
type: deploy
color: '#1fa297'
id: gwAHiE5TS4j
created_at: '2022-09-15T05:39:42Z'
updated_at: '2022-12-20T08:10:05Z'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
delete:
security:
- configuration_key: []
summary: Delete a Marker Setting
tags:
- Marker Settings
operationId: deleteMarkerSettings
responses:
'204':
description: Success
'404':
$ref: '#/components/responses/NotFound'
/1/queries/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Query
description: >
Create a query from a specification. DOES NOT run the query to retrieve
results.
tags:
- Queries
operationId: createQuery
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Query'
examples:
Simple Query:
value:
calculations:
- op: COUNT
orders:
- op: COUNT
order: descending
time_range: 7200
Query With Filter and Group By:
value:
calculations:
- op: COUNT
breakdowns:
- user_agent
filters:
- op: '>='
column: response.status_code
value: 400
orders:
- op: COUNT
order: descending
time_range: 7200
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Query'
examples:
Simple Query:
value:
id: abc3419d
calculations:
- op: COUNT
orders:
- op: COUNT
order: descending
time_range: 7200
Query With Filter and Group By:
value:
id: xyz321a
calculations:
- op: COUNT
breakdowns:
- user_agent
filters:
- op: '>='
column: response.status_code
value: 400
orders:
- op: COUNT
order: descending
time_range: 7200
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
/1/queries/{datasetSlug}/{queryId}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: queryId
description: The unique identifier (ID) of a query.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Query
description: |
Retrieve a query by its ID.
tags:
- Queries
operationId: getQuery
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Query'
example:
id: abc3419d
breakdowns:
- user_agent
calculations:
- op: COUNT
orders:
- op: COUNT
order: descending
limit: 10
time_range: 7200
end_time: 1676467828
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
/1/query_annotations/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Query Annotation
description: |
Create a Query Annotation for the specified query ID.
tags:
- Query Annotations
operationId: createQueryAnnotation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/QueryAnnotation'
required: true
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/QueryAnnotation'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
invalid-query-id:
description: The query ID is invalid.
value:
error: Query ID included in body is invalid
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
get:
security:
- configuration_key: []
summary: List Query Annotations
description: |
List all Query Annotations in the specified dataset.
tags:
- Query Annotations
operationId: listQueryAnnotations
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/QueryAnnotation'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/query_annotations/{datasetSlug}/{queryAnnotationId}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: queryAnnotationId
description: The unique identifier (ID) of the annotation.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Query Annotation
description: |
Get a Query Annotation by its ID.
tags:
- Query Annotations
operationId: getQueryAnnotation
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/QueryAnnotation'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
put:
security:
- configuration_key: []
summary: Update a Query Annotation
description: >
Update a Query Annotation by specifying its ID. The Query ID associated
with the Query Annotation cannot be updated. Partial updates are not
supported.
tags:
- Query Annotations
operationId: updateQueryAnnotation
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/QueryAnnotation'
example:
name: My Updated Annotation
description: A nice description of My Update Annotation
query_id: mabAMpSPDjH
id: sGUnkBHgRFN
created_at: '2022-10-26T21:36:04Z'
updated_at: '2022-12-16T10:44:08Z'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/QueryAnnotation'
example:
name: My Updated Annotation
description: A nice description of My Update Annotation
query_id: mabAMpSPDjH
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
update-includes-bad-id:
description: >-
The ID in the URL and the ID in the request body do not
match.
value:
error: Query annotation id included in body does not match URL
invalid-query-id:
description: The query ID is invalid.
value:
error: Query id included in body is invalid
cannot-update-query-id:
description: The query ID cannot be updated.
value:
error: queries in annotations cannot be changed
query-not-in-dataset:
description: The query ID does not exist in the specified dataset.
value:
error: Query is not in the dataset
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
delete:
security:
- configuration_key: []
summary: Delete a Query Annotation
description: |
Delete a Query Annotation by specifying its ID.
tags:
- Query Annotations
operationId: deleteQueryAnnotation
responses:
'204':
description: Success - no content
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/query_results/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Query Result
description: >
Kick off processing of a Query to then get back the Query Results.
Once the Query Result has been created, the query will be run
asynchronously, allowing the result data to be fetched from the GET
query result endpoint.
Only the last 7 days of data can be queried. Any queries with a
`start_time`, `end_time`, or `time_range` older than last 7 days will
result in a `400` error response.
tags:
- Query Data
operationId: createQueryResult
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateQueryResultRequest'
required: true
responses:
'201':
description: Created
headers:
Location:
schema:
type: string
description: >-
The Location header will contain the URL where the results can
be fetched.
example: >-
https://api.honeycomb.io/1/query_results/test-via-curl/HprJhV1fYyr
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
examples:
Simple Query:
value:
query:
calculations:
- op: COUNT
orders:
- op: COUNT
order: descending
limit: 10000
time_range: 7200
complete: false
id: dfg456
links:
query_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456
graph_image_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456/snapshot
Query with Filter and Group By:
value:
query:
calculations:
- op: COUNT
breakdowns:
- user_agent
filters:
- op: '>='
column: response.status_code
value: 400
orders:
- op: COUNT
order: descending
limit: 10000
time_range: 7200
complete: false
id: hij678a
links:
query_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/hij678a
graph_image_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/hij678a/snapshot
'400':
$ref: '#/components/responses/BadRequest'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
default:
$ref: '#/components/responses/GenericError'
/1/query_results/{datasetSlug}/{queryResultId}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: queryResultId
description: The unique identifier (ID) of the query result.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get Query Result
description: >
Get the Query Result details for a specific Query Result ID.
This endpoint is used to fetch the results of a query that had
previously been created. It is recommended to follow the Location header
included in the Create Query Result output, but the URL can also be
constructed manually with the <query-result-id>.
tags:
- Query Data
operationId: getQueryResult
responses:
'200':
description: Success
headers:
Last-Modified:
schema:
type: string
description: >-
The Last-Modified response HTTP header contains a date and time
when the origin server believes the resource was last modified.
example: Mon, 02 Jan 2006 15:04:05 GMT
Cache-Control:
schema:
type: string
description: >-
The max-age=N response directive indicates that the response
remains fresh until N seconds after the response is generated.
example: private, max-age=86400
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResultDetails'
examples:
Simple Query:
value:
query:
calculations:
- op: COUNT
orders:
- op: COUNT
order: descending
limit: 10000
time_range: 7200
complete: true
id: dfg456
data:
series: []
results:
- data:
COUNT: 20769
links:
query_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456
graph_image_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/dfg456/snapshot
Query with Filter and Group By:
value:
query:
calculations:
- op: COUNT
breakdowns:
- user_agent
filters:
- op: '>='
column: response.status_code
value: 400
orders:
- op: COUNT
order: descending
limit: 10000
time_range: 7200
complete: false
id: hij678a
data:
series: []
results:
- data:
COUNT: 2728
user_agent: Mozilla/5.0 (X11; Linux x86_64)
- data:
COUNT: 4
user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
- data:
COUNT: 7
user_agent: >-
Mozilla/5.0 (Linux; Android 7.1.2; AFTMM
Build/NS6265; wv)
links:
query_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/hij678a
graph_image_url: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/hij678a/snapshot
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/recipients:
post:
security:
- configuration_key: []
summary: Create a Recipient
description: >
Unlike many resources, Recipients are not linked to a specific
Environment or Dataset. The Recipient will be created for the Team
associated with your API key.
The `details` fields will vary depending on the `type` of Recipient. Use
the drop-down to view the specific fields for each `type` value.
Before Slack Recipients can be created, the Slack OAuth flow in the
Integration Center must be completed.
tags:
- Recipients
operationId: createRecipient
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
required: true
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
get:
security:
- configuration_key: []
summary: List all Recipients
description: |
Retrieve all recipients for a team.
tags:
- Recipients
operationId: listRecipients
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Recipient'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: unknown API key - check your credentials
/1/recipients/{recipientId}:
parameters:
- $ref: '#/components/parameters/recipientId'
get:
security:
- configuration_key: []
summary: Get a single Recipient
description: |
Retrieve a Recipient by recipient ID.
tags:
- Recipients
operationId: getRecipient
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
security:
- configuration_key: []
summary: Update a Recipient
description: >
Update a Recipient by specifying the recipient ID and full recipient
details. (Partial PUT is not supported.)
Updates to the Recipient Type is not supported. For example, changing an
existing Recipient from PagerDuty to Email is not allowed.
**Important**: Modifying an existing recipient will change the
destination of all triggers/burn alerts that use that recipient.
tags:
- Recipients
operationId: updateRecipient
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Recipient'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/ValidationFailed'
delete:
security:
- configuration_key: []
summary: Delete a Recipient
description: >
Delete a recipient by specifying the recipient ID.
A Recipient can only be deleted if it is NOT in use by any Triggers or
Burn Alerts associated to the team.
tags:
- Recipients
operationId: deleteRecipient
responses:
'204':
description: Success - no content
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: unknown API key - check your credentials
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
/1/slos/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
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/SLO'
required: true
responses:
'201':
description: Success - SLO created
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'
default:
$ref: '#/components/responses/GenericError'
get:
security:
- configuration_key: []
summary: Get all SLOs
description: Get all SLOs for a dataset
tags:
- SLOs
operationId: listSlos
responses:
'200':
description: Success
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'
default:
$ref: '#/components/responses/GenericError'
/1/slos/{datasetSlug}/{sloId}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
- 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 (`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/).
required: false
allowEmptyValue: true
example: ''
responses:
'200':
description: Success
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'
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
reset_at: '2022-10-15T13:53:11Z'
created_at: '2022-09-15T05:39:42Z'
updated_at: '2022-12-20T08:10:05Z'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
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
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'
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
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/triggers/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
get:
security:
- configuration_key: []
summary: List All Triggers
description: |
List all triggers on the provided dataset.
tags:
- Triggers
operationId: listTriggers
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TriggerResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
post:
security:
- configuration_key: []
summary: Create a Trigger
description: |
Create a trigger on the provided dataset.
tags:
- Triggers
operationId: createTrigger
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTriggerRequest'
required: true
responses:
'201':
description: Success - trigger created
headers:
Location:
schema:
type: string
description: Relative path to fetch this trigger via API.
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/1/triggers/{datasetSlug}/{triggerId}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
- name: triggerId
description: The unique identifier (ID) of a Trigger.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Trigger
description: |
Fetch details for a single Trigger by Trigger ID.
tags:
- Triggers
operationId: getTrigger
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
security:
- configuration_key: []
summary: Update a Trigger
description: >
Update a trigger by specifying the trigger ID and the same fields used
when creating a new trigger.
tags:
- Triggers
operationId: updateTrigger
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerResponse'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerResponse'
'400':
$ref: '#/components/responses/GenericError'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
delete:
security:
- configuration_key: []
summary: Delete a Trigger
description: >
Delete a trigger by specifying the trigger ID. The body of the DELETE
request should be empty.
tags:
- Triggers
operationId: deleteTrigger
responses:
'204':
description: Success - no content
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/1/recipients/{recipientId}/triggers:
parameters:
- $ref: '#/components/parameters/recipientId'
get:
security:
- configuration_key: []
summary: Get Triggers Associated with a Recipient
description: >
List all triggers that will alert a given Recipient. **Important:** This
request will return all Triggers associated with the specific Recipient
across your entire Honeycomb team rather than being scoped to a dataset
or environment.
tags:
- Triggers
operationId: listTriggersWithRecipient
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TriggerResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/GenericError'
/1/derived_columns/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
post:
security:
- configuration_key: []
summary: Create a Derived Column
description: >
Create a derived column. Derived columns allow you to run queries based
on the value of an expression that is derived from the columns in an
event.
tags:
- Derived Columns
operationId: createDerivedColumn
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DerivedColumn'
required: true
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DerivedColumn'
example:
id: yUheCUmgZ8p
alias: one
description: just one
expression: INT(1)
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-11-16T17:34:01Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
get:
security:
- configuration_key: []
summary: List all Derived Columns
description: >-
Get all the Derived Columns in a dataset or environment. With the
`?alias=X` query parameter, can return a single derived column by its
`alias`.
tags:
- Derived Columns
operationId: listDerivedColumns
parameters:
- name: alias
description: The derived column `alias`.
in: query
schema:
type: string
responses:
'200':
description: >
When listing all columns, an array of DerivedColumn objects will be
returned. When using `key_name`, will return a single DerivedColumn
object if found.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/DerivedColumnList'
- $ref: '#/components/schemas/DerivedColumn'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/1/derived_columns/{datasetSlug}/{derivedColumnId}:
parameters:
- $ref: '#/components/parameters/datasetSlugOrAll'
- name: derivedColumnId
description: Unique identifier (ID) of a derived column.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Derived Column
tags:
- Derived Columns
operationId: getDerivedColumn
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DerivedColumn'
example:
id: yUheCUmgZ8p
alias: one
description: just one
expression: INT(1)
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-11-16T17:34:01Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
security:
- configuration_key: []
summary: Update a Derived Column
description: |
Update a derived column.
tags:
- Derived Columns
operationId: updateDerivedColumn
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DerivedColumn'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/DerivedColumn'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
delete:
security:
- configuration_key: []
summary: Delete a Derived Column
description: >
Delete a derived column. **Note**: A Derived Column used by a SLO,
Trigger, or Board cannot be deleted without removing or modifying the
SLO, Trigger, or Board first.
tags:
- Derived Columns
operationId: deleteDerivedColumn
responses:
'204':
description: Success - no content
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
/1/columns/{datasetSlug}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
post:
security:
- configuration_key: []
summary: Create a Column
description: |
Create a column by providing corresponding details for that type.
tags:
- Columns
operationId: createColumn
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateColumn'
required: true
responses:
'201':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Column'
example:
id: yUheCUmgZ8p
key_name: my_column
hidden: false
description: An integer column
type: integer
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Key name cannot be blank
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'422':
$ref: '#/components/responses/UnprocessableEntity'
get:
security:
- configuration_key: []
summary: List all Columns
description: Get all the Columns in a dataset
tags:
- Columns
operationId: listColumns
parameters:
- name: key_name
description: the column key name
in: query
schema:
type: string
responses:
'200':
description: >
When listing all columns, an array of Column objects will be
returned. When using `key_name`, will return a single Column object
if found.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ColumnList'
- $ref: '#/components/schemas/Column'
examples:
list-of-columns:
description: Lists all columns.
value:
- id: yUheCUmgZ8p
key_name: my_column
hidden: false
description: ''
type: integer
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
- id: yUheCUmgZ8q
key_name: other_column
hidden: false
description: ''
type: string
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
get-column-by-key-name:
description: Get back column details for a key name
value:
id: yUheCUmgZ8p
key_name: my_column
hidden: false
description: ''
type: integer
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/1/columns/{datasetSlug}/{columnId}:
parameters:
- $ref: '#/components/parameters/datasetSlug'
- name: columnId
description: Unique identifier (ID) of a column.
in: path
required: true
schema:
type: string
get:
security:
- configuration_key: []
summary: Get a Column
tags:
- Columns
operationId: getColumn
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Column'
example:
id: yUheCUmgZ8p
key_name: my_column
hidden: false
description: ''
type: integer
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: >-
The id provided in the URL is malformed - we expected a
12-char base58-safe string.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
security:
- configuration_key: []
summary: Update a Column
description: |
Update a column
tags:
- Columns
operationId: updateColumn
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Column'
required: true
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/Column'
example:
id: yUheCUmgZ8p
key_name: my_column
hidden: false
description: ''
type: string
last_written: '2022-07-26T22:38:05Z'
created_at: '2022-07-26T22:38:04Z'
updated_at: '2022-07-26T22:38:04Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Key name cannot be blank
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/ValidationFailed'
delete:
security:
- configuration_key: []
summary: Delete a Column
description: >
Delete a column. **Note**: Deleted columns are no longer queryable, but
data in existing permalinks (query results and trace views) will remain
stored and available at those links.
tags:
- Columns
operationId: deleteColumn
responses:
'204':
description: Success - no content
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
/2/teams/{teamSlug}/api-keys:
parameters:
- $ref: '#/components/parameters/teamSlug'
get:
security:
- bearerAuth:
- api-keys:read
tags:
- Key Management
summary: List all API Keys
operationId: listApiKeys
parameters:
- $ref: '#/components/parameters/PaginationCursor'
- $ref: '#/components/parameters/PaginationSize'
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyListResponse'
'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'
'500':
$ref: '#/components/responses/InternalError'
post:
security:
- bearerAuth:
- api-keys:write
tags:
- Key Management
summary: Create an API Key
description: >
This creates an API Key, which will return the API Key components in the
response. The Key ID will be found at `data.id` and
the Key Secret will be found at `data.attributes.secret`. For security
reasons the Key Secret will only be available during creation so make
sure to save it.
To use a newly-created Ingest Key it should be passed in the
`X-Honeycomb-Team` header with the API Key's ID and secret
concatenated (and with no separator). For example, `X-Honeycomb-Team:
hcxik_1234567890123456789012345612345678901234567890123456789012`
Check out our [best practices for API
Keys](https://docs.honeycomb.io/get-started/best-practices/api-keys/#ingest-keys).
operationId: createApiKey
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyCreateRequest'
responses:
'201':
description: Created
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyCreateResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'415':
$ref: '#/components/responses/UnsupportedMediaType'
'422':
$ref: '#/components/responses/ValidationFailed'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
/2/teams/{teamSlug}/api-keys/{ID}:
parameters:
- $ref: '#/components/parameters/teamSlug'
- $ref: '#/components/parameters/ID'
get:
security:
- bearerAuth:
- api-keys:read
tags:
- Key Management
summary: Get an API Key
operationId: getApiKey
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
patch:
security:
- bearerAuth:
- api-keys:write
tags:
- Key Management
summary: Update an API Key
operationId: updateApiKey
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyUpdateRequest'
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/ApiKeyResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'415':
$ref: '#/components/responses/UnsupportedMediaType'
'422':
$ref: '#/components/responses/ValidationFailed'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
delete:
security:
- bearerAuth:
- api-keys:write
tags:
- Key Management
summary: Delete an API Key
description: >-
This deletes and immediately deactivates the API Key. This is an
irreversible operation.
operationId: deleteApiKey
responses:
'204':
description: 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'
'500':
$ref: '#/components/responses/InternalError'
/2/teams/{teamSlug}/environments:
parameters:
- $ref: '#/components/parameters/teamSlug'
get:
security:
- bearerAuth:
- environments:read
tags:
- Environments
summary: List all Environments
operationId: listEnvironments
parameters:
- $ref: '#/components/parameters/PaginationCursor'
- $ref: '#/components/parameters/PaginationSize'
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EnvironmentListResponse'
'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'
'500':
$ref: '#/components/responses/InternalError'
post:
security:
- bearerAuth:
- environments:write
tags:
- Environments
summary: Create an Environment
operationId: createEnvironment
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/CreateEnvironmentRequest'
responses:
'201':
description: Created
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EnvironmentResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'415':
$ref: '#/components/responses/UnsupportedMediaType'
'422':
$ref: '#/components/responses/ValidationFailed'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
/2/teams/{teamSlug}/environments/{ID}:
parameters:
- $ref: '#/components/parameters/teamSlug'
- $ref: '#/components/parameters/ID'
get:
security:
- bearerAuth:
- environments:read
tags:
- Environments
summary: Get an Environment
operationId: getEnvironment
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EnvironmentResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
patch:
security:
- bearerAuth:
- environments:write
tags:
- Environments
summary: Update an Environment
operationId: updateEnvironment
requestBody:
required: true
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/UpdateEnvironmentRequest'
responses:
'200':
description: Success
headers:
Ratelimit:
$ref: '#/components/headers/RateLimit'
RateLimitPolicy:
$ref: '#/components/headers/RateLimitPolicy'
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/EnvironmentResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'413':
$ref: '#/components/responses/PayloadTooLarge'
'415':
$ref: '#/components/responses/UnsupportedMediaType'
'422':
$ref: '#/components/responses/ValidationFailed'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
delete:
security:
- bearerAuth:
- environments:write
tags:
- Environments
summary: Delete an Environment
description: >
This deletes and immediately deactivates the Environment. This is an
irreversible operation.
Environments with Deletion Protection enabled cannot be deleted. To
delete an Environment with Deletion Protection enabled, first disable
Deletion Protection by updating the Environment with
`settings.delete_protected = false`.
operationId: deleteEnvironment
responses:
'204':
description: 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'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
components:
parameters:
datasetSlug:
name: datasetSlug
description: |
The dataset slug.
in: path
required: true
schema:
type: string
datasetSlugOrAll:
name: datasetSlug
description: >
The dataset slug or use `__all__` for endpoints that support
environment-wide operations.
in: path
required: true
schema:
type: string
recipientId:
name: recipientId
description: Unique identifier (ID) of a Recipient.
in: path
required: true
schema:
type: string
teamSlug:
name: teamSlug
description: The slug of the Team
in: path
required: true
schema:
type: string
ID:
name: ID
description: A unique identifier
in: path
required: true
schema:
type: string
PaginationCursor:
name: page[next]
description: >
The string value of the `next` attribute from a previous result page.
The cursor value must be empty or omitted for the first request of a
cursor-paginated query.
in: query
schema:
type: string
example: eyxJjcmAVhdGVkX
PaginationSize:
name: page[size]
description: The number of entries to include per response. Maximum
in: query
schema:
type: number
minimum: 1
maximum: 100
default: 20
example: 10
headers:
RateLimit:
description: |
The (draft07) recommended header from the IETF on rate limiting.
The value of the header is formatted "limit=X, remaining=Y, reset=Z".
Where:
- X is the maximum number of requests allowed in the window
- Y is the number of requests remaining in the window
- Z is the number of seconds until the limit resets
schema:
type: string
example: limit=100, remaining=50, reset=60
RateLimitPolicy:
description: |
The (draft07) recommended header from the IETF on rate limiting.
The value of the header is formatted "X;w=Y".
Where:
- X is the maximum number of requests allowed in a window
- Y is the size of the window in seconds
schema:
type: string
example: 100;w=60
RetryAfter:
description: >
The RFC7231 header used to indicate when a client should retry requests
in UTC time.
schema:
type: string
example: '2024-03-22T18:37:83Z'
ETag:
description: >
The ETag header is a response header that allows a client to cache the
response. If the client has a cached copy of the pipeline configuration,
it can provide the ETag value of the cached copy in the If-None-Match
header. If the configuration has not changed since the client last
fetched it, the server will respond with a 304 Not Modified status code.
schema:
type: string
responses:
InternalError:
description: InternalError
content:
application/problem+json:
schema:
$ref: '#/components/schemas/DetailedError'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
deny-management-apis:
description: Team cannot access management APIs.
value:
error: >-
Your team has been denied access to Management APIs, please
contact support to be unblocked.
application/problem+json:
schema:
$ref: '#/components/schemas/DetailedError'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
NotFound:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: dataset not found
application/problem+json:
schema:
$ref: '#/components/schemas/DetailedError'
example:
status: 404
type: https://api.honeycomb.io/problems/not-found
title: The requested resource cannot be found.
error: Dataset not found
detail: Dataset not found
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: dataset not found
application/problem+json:
schema:
$ref: '#/components/schemas/DetailedError'
example:
status: 409
type: https://api.honeycomb.io/problems/conflict
title: >-
Request could not be completed due to a conflict with the current
state of the target resource.
error: A resource by that name already exists.
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
PayloadTooLarge:
description: The provided request body was over the maximum allowed size.
content:
application/json:
schema:
$ref: '#/components/schemas/DetailedError'
example:
status: 413
type: https://api.honeycomb.io/problems/payload-too-large
title: Request body is too large.
error: Body size is larger than maximum size of 100000 bytes
UnsupportedMediaType:
description: The provided request body had an invalid Content-Type.
content:
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: unknown API key - check your credentials
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
UnprocessableEntity:
description: Invalid request
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ValidationError'
application/json:
schema:
$ref: '#/components/schemas/Error'
BadRequest:
description: >
The provided request body was invalid. Most APIs will return a
DetailedError for this condition, explaining what went wrong, but some
older APIs only return a GenericError.
content:
application/problem+json:
schema:
$ref: '#/components/schemas/DetailedError'
examples:
DetailedError:
value:
status: 400
type: https://api.honeycomb.io/problems/unparseable
title: The request body could not be parsed.
error: invalid gzip data
application/json:
schema:
$ref: '#/components/schemas/Error'
examples:
GenericError:
value:
error: invalid Query data
ValidationFailed:
description: Validation Failed
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ValidationError'
example:
status: 422
type: https://api.honeycomb.io/problems/validation-failed
error: The provided input is invalid.
title: The provided input is invalid
type_detail:
- field: type
code: invalid
description: 'type: must be a valid value'
application/json:
schema:
$ref: '#/components/schemas/Error'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
GenericError:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: RateLimited
headers:
Retry-After:
$ref: '#/components/headers/RetryAfter'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: Rate Limited
application/vnd.api+json:
schema:
$ref: '#/components/schemas/JSONAPIErrors'
schemas:
Error:
x-tags:
- Errors
type: object
description: A legacy error, containing only a textual description.
properties:
error:
type: string
readOnly: true
JSONAPIErrors:
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
DetailedError:
x-tags:
- Errors
description: An RFC7807 'Problem Detail' formatted error message.
type: object
required:
- error
- status
- type
- title
properties:
error:
type: string
readOnly: true
default: something went wrong!
status:
type: number
readOnly: true
description: The HTTP status code of the error.
type:
type: string
readOnly: true
description: Type is a URI used to uniquely identify the type of error.
title:
type: string
readOnly: true
description: >-
Title is a human-readable summary that explains the `type` of the
problem.
detail:
type: string
readOnly: true
description: The general, human-readable error message.
instance:
type: string
readOnly: true
description: The unique identifier (ID) for this specific error.
ValidationError:
x-tags:
- Errors
allOf:
- $ref: '#/components/schemas/DetailedError'
- type: object
properties:
status:
type: number
readOnly: true
default: 422
type:
type: string
readOnly: true
default: https://api.honeycomb.io/problems/validation-failed
title:
type: string
readOnly: true
default: The provided input is invalid.
type_detail:
type: array
items:
type: object
properties:
field:
type: string
readOnly: true
code:
type: string
readOnly: true
enum:
- invalid
- missing
- incorrect_type
- already_exists
description:
type: string
readOnly: true
BatchEvent:
type: object
properties:
data:
type: object
allOf:
- $ref: '#/components/schemas/Event'
time:
type: string
description: >
Should be in RFC3339 high precision format (for example,
YYYY-MM-DDTHH:MM:SS.mmmZ). May be a Unix epoch (seconds since 1970)
with second or greater precision (for example, 1452759330927).
Optional. If not set, defaults to the time that the API receives the
event.
samplerate:
type: integer
description: >
An integer representing the denominator in the fraction 1/n when
client-side sampling has been applied. Optional. If not set,
defaults to `1`, meaning "not sampled". Refer to
[Sampling](https://docs.honeycomb.io/manage-data-volume/sample/sampled-data-in-honeycomb/)
for more detail.
Event:
type: object
additionalProperties:
minItems: 1
maxItems: 2000
description: >
A collection of key-value properties that represent the Event.
Honeycomb supports basic data types for the values of each Event
attribute.
### Limits
- 2,000 fields per event. The entire event must be less than 100KB of
uncompressed JSON.
- String Fields: Each string field has a maximum length of 64KB.
- Number Fields: Integers and Floats are both 64-bit.
type:
- string
- number
- boolean
Auth:
type: object
required:
- id
- type
- api_key_access
- environment
- team
properties:
id:
type: string
description: Unique identifier (ID) of the API Key.
type:
type: string
enum:
- configuration
- ingest
description: The type of API Key.
api_key_access:
type: object
properties:
events:
type: boolean
default: false
markers:
type: boolean
default: false
triggers:
type: boolean
default: false
boards:
type: boolean
default: false
queries:
type: boolean
default: false
columns:
type: boolean
default: false
createDatasets:
type: boolean
default: false
slos:
type: boolean
default: false
recipients:
type: boolean
default: false
privateBoards:
type: boolean
default: false
environment:
type: object
properties:
name:
type: string
description: >-
The name of the Environment. Will be empty for Classic
environments.
slug:
type: string
description: >-
The slug of the Environment. Will be empty for Classic
environments.
team:
type: object
properties:
name:
type: string
slug:
type: string
Board:
type: object
required:
- name
properties:
name:
type: string
description: The name of the Board.
minLength: 1
maxLength: 255
example: My Board
description:
type: string
description: A description of the Board.
minLength: 0
maxLength: 1024
example: A board created via the API
style:
type: string
description: >-
All boards are displayed visually in the UI. The field can still be
sent, but it will have no functional effect in the UI.
default: visual
deprecated: true
column_layout:
type: string
description: The number of columns to layout on the board.
enum:
- multi
- single
default: multi
queries:
type: array
items:
$ref: '#/components/schemas/BoardQuery'
slos:
type: array
description: A list of SLO IDs to add to the board
items:
type: string
minLength: 0
maxLength: 24
example:
- BGfyxhFto
- dF1URaPGL
- oSxbG7eiA
links:
type: object
readOnly: true
properties:
board_url:
type: string
example: >-
https://ui.honeycomb.io/myteam/environments/myenvironment/board/2NeeaE9bBLd
id:
type: string
readOnly: true
description: Unique identifier (ID), returned in response bodies.
example: 2NeeaE9bBLd
BoardQuery:
type: object
properties:
caption:
type: string
description: >-
Descriptive text to contextualize the value of the Query within the
Board.
maxLength: 1023
example: context for this query
graph_settings:
type: object
description: >
A map of boolean values to control the display settings for the
Query on the Board. Unspecified values are assumed to be `false`.
properties:
hide_markers:
type: boolean
default: false
log_scale:
type: boolean
default: false
omit_missing_values:
type: boolean
default: false
stacked_graphs:
type: boolean
default: false
utc_xaxis:
type: boolean
default: false
overlaid_charts:
type: boolean
default: false
query_style:
type: string
description: How the query should be displayed on the board.
enum:
- graph
- table
- combo
default: graph
dataset:
type: string
description: >
The Dataset to Query. Required if using the deprecated `query`. Does
not support the Environment-wide `__all__` value. Environment-wide
queries must be specified by `query_id`. Note: this field can take
either `name` ("My Dataset") or `slug` ("my_dataset"); the response
will always use the name.
example: My Dataset
query_id:
type: string
description: >
The ID of a Query object. Cannot be used with `query`. Query IDs can
be retrieved from the UI or from the Query API.
example: abc1234e
query:
type:
- 'null'
- object
description: |
An inline Query Specification. Cannot be used with `query_id`.
writeOnly: true
deprecated: true
query_annotation_id:
type: string
description: >
The ID of a Query Annotation that provides a name and description
for the Query. The Query Annotation must apply to the `query_id` or
`query` specified.
example: e4c24a35
ColumnList:
type: array
items:
$ref: '#/components/schemas/Column'
DerivedColumn:
type: object
required:
- id
- alias
- expression
- created_at
- updated_at
properties:
id:
type: string
readOnly: true
description: Unique identifier (ID), returned in response bodies.
alias:
type: string
description: >-
The human-readable name of the derived column, as it will be
referenced when building queries.
minLength: 1
maxLength: 255
expression:
type: string
description: >
The expression to evaluate to construct this derived column's value.
Refer to the [Derived Column
Reference](https://docs.honeycomb.io/reference/derived-column-formula/).
minLength: 1
maxLength: 4095
description:
type: string
description: >-
A human-readable description for the derived column that displays in
the UI.
default: ''
maxLength: 255
created_at:
type: string
readOnly: true
description: ISO8601 formatted time when the column was created.
updated_at:
type: string
readOnly: true
description: ISO8601 formatted time when the column was updated.
DerivedColumnList:
type: array
items:
$ref: '#/components/schemas/DerivedColumn'
CreateColumn:
type: object
required:
- key_name
properties:
key_name:
type: string
description: Name of the Column.
example: my_column
minLength: 1
maxLength: 255
type:
type: string
default: string
enum:
- string
- float
- integer
- boolean
description: Type of the data that the Column will contain.
example: integer
description:
type: string
description: Column description.
maxLength: 255
example: An integer column
hidden:
type: boolean
default: false
description: >-
If `true`, the column is excluded from autocomplete and raw data
field lists.
id:
type: string
readOnly: true
description: Unique identifier (ID), returned in response bodies.
last_written:
type: string
readOnly: true
description: >-
ISO8601 formatted time the column was last written to (received
event data).
created_at:
type: string
readOnly: true
description: ISO8601 formatted time the column was created.
updated_at:
type: string
readOnly: true
description: ISO8601 formatted time the column was updated.
Column:
allOf:
- $ref: '#/components/schemas/CreateColumn'
properties:
key_name:
readOnly: true
DatasetDefinition:
type:
- 'null'
- object
required:
- name
properties:
name:
type: string
description: >-
The name of the Column or Derived Column to map to this Dataset
Definition Type. An empty string clears the mapping, potentially
reverting to a default mapping.
minLength: 0
maxLength: 255
column_type:
type: string
readOnly: true
description: >-
Optional: `column` for regular columns and `derived_column` for
derived columns when setting Dataset Definitions. Honeycomb does not
use this field when updating Dataset definitions.
enum:
- column
- derived_column
DatasetDefinitions:
type: object
description: >
Dataset Definitions describe the fields with special meaning in the
Dataset.
properties:
span_id:
description: The unique identifier (ID) for each span.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
trace_id:
description: The ID of the trace this span belongs to.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
parent_id:
description: >-
The Parent Span ID - The ID of this span's parent span, the call
location the current span was called from.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
name:
description: The name of the function or method where the span was created.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
service_name:
description: The name of the instrumented service.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
duration_ms:
description: Span Duration - How much time the span took, in milliseconds.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
span_kind:
description: >-
Metadata: Kind - The kind of Span. For example, `client` or
`server`. The use of this field to identify Span Events and Links is
deprecated. Use the field Metadata: Annotation Type.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
annotation_type:
description: >-
Metadata: Annotation Type - The type of span annotation. For
example, `span_event` or `link`. This lets Honeycomb visualize this
type of event differently in a trace. Do not use this field for
other purposes.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
link_span_id:
description: >-
Metadata: Link Span ID - Links let you tie traces and spans to one
another. The Link Span ID lets you link to a different span (when
used with Link Trace ID).
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
link_trace_id:
description: >-
Metadata: Link Trace ID - Links let you tie traces and spans to one
another. The Link Trace Id lets you link to a different trace or a
different span in the same trace (when used with Link Span ID).
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
error:
description: Use a Boolean or String to indicate error.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
status:
description: Indicates the success, failure, or other status of a request.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
route:
description: The HTTP URL or equivalent route processed by the request.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
user:
description: The user making the request in the system.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
log_severity:
description: >-
Severity level of the event (also known as log level). Supported
values: trace, debug, info, warn, error, fatal, unspecified.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
log_message:
description: >-
A value containing the log event message. Can be a human-readable
string message (including multi-line) describing the event in a free
form.
allOf:
- $ref: '#/components/schemas/DatasetDefinition'
Dataset:
type: object
description: >
Datasets are a collection of events from a specific source or related
source.
required:
- name
properties:
name:
type: string
description: The name of the dataset.
example: My Dataset!
minLength: 1
maxLength: 255
description:
type: string
default: ''
description: A description for the dataset.
example: A nice description of my dataset
minLength: 0
maxLength: 1024
settings:
type: object
properties:
delete_protected:
type: boolean
description: If true, the dataset cannot be deleted.
expand_json_depth:
type: integer
description: The maximum unpacking depth of nested JSON fields.
example: 3
default: 0
minimum: 0
maximum: 10
slug:
type: string
example: my-dataset-
description: The 'slug' of the dataset to be used in URLs.
readOnly: true
regular_columns_count:
type:
- 'null'
- integer
description: >
The total number of unique fields for this Dataset. The value will
be null if the dataset does not contain any fields yet.
example: 100
readOnly: true
last_written_at:
type:
- 'null'
- string
description: >
The ISO8601-formatted time when the dataset last received event
data. The value will be null if no data has been received yet.
example: '2022-07-21T18:39:23Z'
readOnly: true
created_at:
type: string
description: The ISO8601-formatted time when the dataset was created.
example: '2022-09-22T17:32:11Z'
readOnly: true
DatasetCreationPayload:
type: object
description: an object to send to the Dataset API via PUT
required:
- name
properties:
name:
type: string
description: The name of the dataset.
minLength: 1
maxLength: 255
description:
type: string
default: ''
description: A description for the dataset.
example: A nice description of my dataset
minLength: 0
maxLength: 1024
expand_json_depth:
type: integer
description: The maximum unpacking depth of nested JSON fields.
example: 3
default: 0
minimum: 0
maximum: 10
DatasetUpdatePayload:
type: object
description: an object to send to the Dataset API via PUT
required:
- description
- expand_json_depth
properties:
description:
type: string
default: ''
description: A description for the dataset.
example: A nice description of my dataset
minLength: 0
maxLength: 1024
expand_json_depth:
type: integer
description: The maximum unpacking depth of nested JSON fields.
example: 3
default: 0
minimum: 0
maximum: 10
settings:
type: object
properties:
delete_protected:
type: boolean
description: If true, the dataset cannot be deleted.
KinesisEvent:
type: object
properties:
requestId:
type: string
timestamp:
type: integer
records:
type: array
items:
$ref: '#/components/schemas/KinesisEventRecord'
KinesisEventRecord:
type: object
properties:
data:
type: string
description: Base64 encoded Kinesis record from AWS
KinesisResponse:
type: object
properties:
requestId:
type: string
timestamp:
type: integer
errorMessage:
type: string
Marker:
type: object
properties:
start_time:
type: integer
description: >-
Indicates the time the Marker should be placed. If missing, defaults
to the time the request arrives. Expressed in Unix Time.
example: 1471040808
end_time:
type: integer
description: >-
Specifies end time, and allows a Marker to be recorded as
representing a time range, such as a 5 minute deploy. Expressed in
Unix Time.
example: 1668453920
message:
type: string
description: A message to describe this specific Marker.
example: 'backend deploy #123'
type:
type: string
description: >-
Groups similar Markers. For example, `deploys`. All Markers of the
same type appear with the same color on the graph. Refer to the
[Marker Settings](/api/marker-settings/) API for altering the color
of each type.
example: deploy
url:
type: string
description: >-
A target for the marker. Clicking the marker text will take you to
this URL.
example: http://link-to-build.here
id:
type: string
description: A 6 character hexadecimal string assigned on Marker creation.
readOnly: true
created_at:
type: string
description: The ISO8601-formatted time when the Marker was created.
readOnly: true
updated_at:
type: string
description: The ISO8601-formatted time when the Marker was updated.
readOnly: true
color:
type: string
description: >-
Color can be assigned to Markers using the Marker Settings endpoint.
This field will be populated when List All Markers is called.
readOnly: true
MarkerSetting:
type: object
required:
- type
- color
properties:
type:
type: string
description: >
Groups similar Markers. For example, 'deploys'. All Markers of the
same type appears with the same color on the graph.
example: deploy
color:
type: string
description: >
Color to use for display of this marker type. Specified as
hexadecimal RGB. For example, "#F96E11".
example: '#7b1fa2'
id:
type: string
description: The unique identifier (ID) for the Marker Setting.
readOnly: true
example: gwAHiE5TS4j
created_at:
type: string
description: The ISO8601-formatted time when the Marker Setting was created.
readOnly: true
example: '2022-09-15T05:39:42Z'
updated_at:
type:
- 'null'
- string
description: The ISO8601-formatted time when the Marker Setting was updated.
readOnly: true
example: '2022-12-15T04:25:14Z'
NotificationRecipient:
type: object
properties:
id:
type: string
type:
deprecated: true
description: >
One of the allowed Recipient types.
Deprecated: Use the Recipients API first, then pass the Recipient
ID.
allOf:
- $ref: '#/components/schemas/RecipientType'
target:
type: string
deprecated: true
description: >
The target of the notification. For example, the specific Slack
channel or email address.
For Recipients of `type = "webhook"` or `type =
"msteams_workflow"`,
this will be the Name in the UI and `webhook_name` in the Recipients
API.
Deprecated: Use the Recipients API first, then pass the Recipient
ID.
details:
$ref: '#/components/schemas/NotificationRecipientDetails'
NotificationRecipientDetails:
type: object
properties:
pagerduty_severity:
description: >
When using a Recipient of `type = "pagerduty"`, the severity of the
alert can be specified.
type: string
default: critical
enum:
- critical
- error
- warning
- info
FilterOp:
type: string
enum:
- '='
- '!='
- '>'
- '>='
- <
- <=
- starts-with
- does-not-start-with
- ends-with
- does-not-end-with
- exists
- does-not-exist
- contains
- does-not-contain
- in
- not-in
HavingOp:
type: string
enum:
- '='
- '!='
- '>'
- '>='
- <
- <=
HavingCalculateOp:
type: string
enum:
- COUNT
- CONCURRENCY
- SUM
- AVG
- COUNT_DISTINCT
- MAX
- MIN
- P001
- P01
- P05
- P10
- P20
- P25
- P50
- P75
- P80
- P90
- P95
- P99
- P999
- RATE_AVG
- RATE_SUM
- RATE_MAX
QueryOp:
type: string
enum:
- COUNT
- CONCURRENCY
- SUM
- AVG
- COUNT_DISTINCT
- HEATMAP
- MAX
- MIN
- P001
- P01
- P05
- P10
- P20
- P25
- P50
- P75
- P80
- P90
- P95
- P99
- P999
- RATE_AVG
- RATE_SUM
- RATE_MAX
Query:
type: object
properties:
id:
type: string
readOnly: true
breakdowns:
type: array
default:
- user_agent
maxItems: 100
items:
type: string
description: the columns by which to break events down into groups
calculations:
type: array
description: the calculations to return as a time series and summary table
maxItems: 100
items:
type: object
required:
- op
properties:
op:
allOf:
- $ref: '#/components/schemas/QueryOp'
- default: COUNT
column:
type:
- 'null'
- string
description: the name of the column
filters:
type: array
maxItems: 100
required:
- column
- op
items:
type: object
required:
- op
properties:
op:
$ref: '#/components/schemas/FilterOp'
column:
type:
- 'null'
- string
value:
anyOf:
- type: 'null'
- type: integer
- type: number
- type: string
- type: boolean
- type: array
description: the filters with which to restrict the considered events
filter_combination:
type: string
default: AND
enum:
- AND
- OR
description: set to "OR" to match ANY filter in the filter list
granularity:
type: integer
minimum: 1
description: >
The time resolution of the query's graph, in seconds. Given a query
time range T, valid values (T/1000...T/10).
orders:
type: array
maxItems: 100
items:
type: object
properties:
column:
type: string
op:
$ref: '#/components/schemas/QueryOp'
order:
type: string
default: ascending
enum:
- ascending
- descending
description: >
The terms on which to order the query results. Each term must appear
in either the `breakdowns` field or the `calculations` field.
limit:
type: integer
default: 100
minimum: 1
maximum: 10000
description: >
The maximum number of unique groups returned in 'results'.
Aggregating many unique groups across a large time range is
computationally expensive, and too high a limit with too many unique
groups may cause queries to fail completely. Limiting the results to
only the needed values can significantly speed up queries.
The normal allowed maximum value when creating a query is 1_000.
When running 'disable_series' queries, this can be overridden to be
up to 10_000, so the maximum value returned from the API when
fetching a query may be up to 10_000.
start_time:
type: integer
minimum: 1
default: 1676399428
description: >
Absolute start time of query, in seconds since UNIX epoch. Must be
<= `end_time`.
end_time:
type: integer
minimum: 1
default: 1676467828
description: Absolute end time of query, in seconds since UNIX epoch.
time_range:
type: integer
minimum: 1
default: 7200
description: >
Time range of query in seconds. Can be used with either `start_time`
(seconds after `start_time`), `end_time` (seconds before
`end_time`), or without either (seconds before now).
havings:
type: array
description: >
The Having clause allows you to filter on the results table. This
operation is distinct from the Where clause, which filters the
underlying events. Order By allows you to order the results, and
Having filters them.
maxItems: 100
items:
type: object
required:
- calculate_op
properties:
calculate_op:
allOf:
- $ref: '#/components/schemas/HavingCalculateOp'
column:
type:
- 'null'
- string
description: The name of the column to filter against
op:
allOf:
- $ref: '#/components/schemas/HavingOp'
value:
type: number
default: 10
QueryAnnotation:
type: object
description: >-
A Query Annotation consists of a name and description associated with a
query to add context when collaborating.
required:
- name
- query_id
properties:
name:
type: string
description: A name for the Query.
example: My Named Query
minLength: 1
maxLength: 80
description:
type: string
description: A description of the Query.
example: A nice description of My Named Query
maxLength: 280
query_id:
type: string
description: >
The ID of the Query that the annotation describes. **Note**: Once
created, it is NOT possible to change the query ID associated with
an annotation. It is possible to have multiple annotations
associated with a Query.
example: mabAMpSPDjH
id:
type: string
description: The unique identifier (ID) of a Query Annotation.
readOnly: true
example: sGUnkBHgRFN
created_at:
type: string
format: date-time
description: ISO8601 formatted time when the Query Annotation was created.
example: '2022-10-26T21:36:04Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO8601 formatted time when the Query Annotation was updated.
example: '2022-12-04T08:14:26Z'
readOnly: true
CreateQueryResultRequest:
type: object
description: A Query Result is created with the Query ID.
required:
- query_id
properties:
query_id:
type: string
writeOnly: true
description: >
The ID of a query returned from the [Queries
endpoint](/api/queries/).
example: mabAMpSPDjH
disable_series:
type: boolean
writeOnly: true
description: >
If true, will disable calculation and return of the full time-series
data, usually included in the 'series' response field, instead only
returning the summarized 'results'.
limit:
type: integer
writeOnly: true
maximum: 10000
description: >
If 'disable_series' is true, then a limit may optionally be given,
which will override the limit normally associated with the query.
Unlike normal query results which are limited to 1_000 results,
'disable_series' results may have a limit of up to 10_000. If
'disable_series' is false, then this field will be ignored.
QueryResult:
type: object
description: A Query Result is created with the Query ID.
properties:
query:
readOnly: true
allOf:
- $ref: '#/components/schemas/Query'
id:
type: string
description: The unique identifier (ID) of a Query Result.
readOnly: true
example: sGUnkBHgRFN
complete:
type: boolean
description: >-
Indicates if the query results are available yet or not. For
example, is the query still being processed or complete?
readOnly: true
example: false
links:
type: object
description: >-
An object containing UI links to the query result and query result
graph
readOnly: true
properties:
query_url:
type: string
example: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/HprJhV1fYy
graph_image_url:
type: string
example: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/HprJhV1fYy/snapshot
QueryResultsData:
type: object
description: Query result details
properties:
data:
type: object
examples:
- COUNT: 1
P99(duration_ms): 210
name: TestGoogleCallbackLogin
test.classname: github.com/honeycombio/hound/cmd/poodle/handlers
test.status: passed
- COUNT: 77481
P99(duration_ms): 857.0309715273646
name: TestGoogleCallbackLogin
test.classname: github.com/honeycombio/hound/cmd/poodle/handlers
test.status: passed
additionalProperties:
type:
- string
- boolean
- number
QueryResultsSeries:
type: object
allOf:
- $ref: '#/components/schemas/QueryResultsData'
properties:
time:
type: string
example: '2021-04-09T14:16:00Z'
QueryResultDetails:
type: object
description: >
Query Results for the Query ID.
The response body will be a JSON object with "complete": true and the
results populated once the query is complete. The response body will
contain caching headers to indicate that once complete, and the Query
Result may be cached, as it will not change.
properties:
query:
readOnly: true
allOf:
- $ref: '#/components/schemas/Query'
id:
type: string
description: The unique identifier (ID) of a Query Result
readOnly: true
example: sGUnkBHgRFN
complete:
type: boolean
description: >-
Indicates if the query results are available yet or not. For
example, is the query still being processed or complete?
readOnly: true
example: true
data:
type: object
description: An object containing the query result data
properties:
series:
type: array
description: >-
Timeseries data from the query result (equivalent to the graph
data in the Honeycomb UI)
items:
$ref: '#/components/schemas/QueryResultsSeries'
results:
type: array
description: >-
Query results data (equivalent to the Overview in the Honeycomb
UI below the graph)
items:
$ref: '#/components/schemas/QueryResultsData'
links:
type: object
description: >-
An object containing UI links to the query result and query result
graph
properties:
query_url:
type: string
description: A link to the query result in the Honeycomb UI
example: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/HprJhV1fYy
graph_image_url:
type: string
description: A direct link to the graph image from the query result
example: >-
https://ui.honeycomb.io/myteam/datasets/test-via-curl/result/HprJhV1fYy/snapshot
RecipientType:
type: string
description: One of the supported Recipient Types
enum:
- pagerduty
- email
- slack
- webhook
- msteams
- msteams_workflow
PagerDutyRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- pagerduty
- type: object
properties:
details:
type: object
required:
- pagerduty_integration_name
- pagerduty_integration_key
description: Specific schema for the Pagerduty Recipient Type
properties:
pagerduty_integration_name:
type: string
description: A name for this Integration.
example: Example PagerDuty Service
pagerduty_integration_key:
type: string
description: Pagerduty Integration Key.
example: 7zOwh1edS8xHGcwfb2bA4sqY8E6PJzSK
minLength: 32
maxLength: 32
EmailRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- email
- type: object
properties:
details:
type: object
required:
- email_address
description: Specific schema for the Email Recipient Type
properties:
email_address:
type: string
description: Email address to notify.
example: notify-me@example-email.com
SlackRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- slack
- type: object
properties:
details:
type: object
required:
- slack_channel
description: Specific schema for the Slack Recipient Type.
properties:
slack_channel:
type: string
description: Slack channel to notify.
example: '#alerts-channel'
MSTeamsRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- msteams
- type: object
deprecated: true
properties:
details:
type: object
required:
- webhook_name
- webhook_url
description: >-
Specific schema for the MS Teams Recipient Type. Now deprecated,
please use the `msteams_workflow` type instead.
properties:
webhook_name:
type: string
description: A name for this recipient.
example: My Teams Channel
webhook_url:
type: string
description: Incoming webhook URL of an Teams instance.
example: https://yourco.webhook.office.com/webhook/xxxx
MSTeamsWorkflowRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- msteams_workflow
- type: object
properties:
details:
type: object
required:
- webhook_name
- webhook_url
description: Specific schema for the MS Teams Workflow Recipient Type.
properties:
webhook_name:
type: string
maxLength: 255
description: A name for this recipient.
example: My Teams Channel
webhook_url:
type: string
maxLength: 2048
description: Incoming webhook URL of an Teams instance.
example: >-
https://test-123.westus.logic.azure.com:443/workflows/54321/triggers/manual/paths/invoke
WebhookRecipient:
allOf:
- $ref: '#/components/schemas/RecipientProperties'
- type: object
properties:
type:
type: string
enum:
- webhook
- type: object
properties:
details:
type: object
required:
- webhook_name
- webhook_url
description: Specific schema for the Webhook Recipient Type
properties:
webhook_name:
type: string
maxLength: 255
description: A name for this Integration.
example: Example webhook
webhook_url:
type: string
description: Webhook URL.
maxLength: 2048
example: https://webhook.example.com
webhook_secret:
type: string
description: Webhook secret.
maxLength: 255
example: secret
Recipient:
discriminator:
propertyName: type
mapping:
pagerduty: '#/components/schemas/PagerDutyRecipient'
email: '#/components/schemas/EmailRecipient'
slack: '#/components/schemas/SlackRecipient'
webhook: '#/components/schemas/WebhookRecipient'
msteams: '#/components/schemas/MSTeamsRecipient'
msteams_workflow: '#/components/schemas/MSTeamsWorkflowRecipient'
oneOf:
- $ref: '#/components/schemas/PagerDutyRecipient'
- $ref: '#/components/schemas/EmailRecipient'
- $ref: '#/components/schemas/SlackRecipient'
- $ref: '#/components/schemas/WebhookRecipient'
- $ref: '#/components/schemas/MSTeamsRecipient'
- $ref: '#/components/schemas/MSTeamsWorkflowRecipient'
RecipientProperties:
type: object
properties:
id:
type: string
readOnly: true
example: yUheCUmgZ8p
created_at:
type: string
format: date-time
description: ISO8601 formatted time the Recipient was created.
example: '2022-07-26T22:38:04Z'
readOnly: true
updated_at:
type: string
format: date-time
description: ISO8601 formatted time the Recipient was updated.
example: '2022-07-26T22:38:04Z'
readOnly: true
type:
$ref: '#/components/schemas/RecipientType'
BaseTrigger:
type: object
properties:
id:
type: string
readOnly: true
description: The unique identifier (ID) for this Trigger.
name:
type: string
description: >
A short, human-readable name for this Trigger, which will be
displayed in the UI and when the trigger fires.
minLength: 1
maxLength: 120
description:
type: string
description: |
A longer description, displayed on the Trigger's detail page.
maxLength: 1023
threshold:
type: object
required:
- op
- value
description: >
The threshold over which the trigger will fire, specified as both an
operator and a value.
properties:
op:
type: string
enum:
- '>'
- '>='
- <
- <=
value:
type: number
exceeded_limit:
type: integer
description: >
The number of times the threshold must be met before an alert is
sent.
default: 1
minimum: 1
maximum: 5
frequency:
type: integer
description: >
The interval in seconds in which to check the results of the query’s
calculation against the threshold. Cannot be more than 4 times the
query's duration (i.e. `duration <= frequency*4`). See [A Caveat on
Time](https://docs.honeycomb.io/investigate/collaborate/share-query/define-query-json/#a-caveat-on-time)
for more information on specifying a query's duration. minimum: 60
maximum: 86400 multipleOf: 60 default: 900
alert_type:
type: string
description: >
How often to fire an alert when a trigger threshold is crossed.
- `on_change` sends a trigger notification when the result of the
specified calculation crosses the threshold.
The trigger resolves only when the result of the query no longer satisfies the threshold condition.
- `on_true` keeps sending a trigger notification at current
frequency when and while the threshold is met.
(This reflects the same behavior as the "Send an alert every time a threshold is met" checkbox in the Honeycomb UI.)
enum:
- on_change
- on_true
default: on_change
disabled:
type: boolean
default: false
description: >
If true, the trigger will not be evaluated and alerts will not be
sent.
triggered:
type: boolean
readOnly: true
description: >
If true, the trigger has crossed its specified threshold without
resolving.
recipients:
type: array
description: >
A list of [Recipients](/api/recipients/) to notify when the Trigger
fires. Using `type`+`target` is deprecated. First, create the
Recipient via the Recipients API, and then specify the ID.
items:
$ref: '#/components/schemas/NotificationRecipient'
evaluation_schedule_type:
type: string
description: >
The schedule type used by the trigger. The default is frequency,
where the trigger runs at the
specified frequency. The window type means that the trigger will run
at the specified frequency,
but only in the time window specified in the evaluation_schedule
field.
enum:
- frequency
- window
evaluation_schedule:
type: object
description: >
A schedule that determines when the trigger is run. When the time is
within the scheduled
window, the trigger will be run at the specified frequency. Outside
of the window, the trigger
will not be run.
required:
- window
properties:
window:
type: object
description: >
Window start/end times and days of the week are calculated in
UTC. If the end time is the same as or earlier than the start
time, the end time is treated as being in the following day.
required:
- days_of_week
- start_time
- end_time
properties:
days_of_week:
type: array
minItems: 1
maxItems: 7
items:
type: string
enum:
- sunday
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
start_time:
type: string
description: A UTC time in HH:mm format (13:00)
example: '14:00'
pattern: ^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$
end_time:
type: string
description: A UTC time in HH:mm format (13:00)
example: '21:00'
pattern: ^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
TriggerWithInlineQuery:
allOf:
- $ref: '#/components/schemas/BaseTrigger'
- type: object
properties:
query:
type: object
description: >
A query ID or an inline query that is a strict subset of a Query
Specification.
properties: {}
TriggerWithQueryReference:
allOf:
- $ref: '#/components/schemas/BaseTrigger'
- type: object
properties:
query_id:
type: string
description: >
The ID of a Query that meets the criteria for being used as a
Trigger, per above.
CreateTriggerRequest:
oneOf:
- $ref: '#/components/schemas/TriggerWithInlineQuery'
- $ref: '#/components/schemas/TriggerWithQueryReference'
TriggerResponse:
allOf:
- $ref: '#/components/schemas/TriggerWithInlineQuery'
- $ref: '#/components/schemas/TriggerWithQueryReference'
SLO:
type: object
required:
- name
- time_period_days
- target_per_million
- sli
properties:
id:
type: string
readOnly: true
name:
type: string
description: The name of the SLO.
minLength: 1
maxLength: 120
example: My SLO
description:
type: string
description: A nice description of the SLO's intent and context.
minLength: 0
maxLength: 1023
example: SLO to ensure requests succeed and are fast
sli:
type: object
description: >-
Reference to the [Derived Column](/api/derived-columns/) used as the
indicator of event success.
required:
- alias
properties:
alias:
type: string
description: The alias of the derived column.
minLength: 1
maxLength: 255
example:
alias: error_sli
time_period_days:
type: integer
description: The time period, in days, over which the SLO will be evaluated.
minimum: 1
example: 30
target_per_million:
type: integer
description: >-
The number of events out of one million (1,000,000) that you
expected qualified events to succeed.
minimum: 0
maximum: 999999
example: 990000
reset_at:
type:
- 'null'
- string
format: date-time
description: >-
The ISO8601-formatted time the SLO was last reset. The value will be
`null` if the SLO has not yet been reset.
readOnly: true
example: 2022-011-11T09:53:04Z
created_at:
type: string
description: The ISO8601-formatted time when the SLO was created.
format: date-time
readOnly: true
example: '2022-09-22T17:32:11Z'
updated_at:
type: string
format: date-time
description: The ISO8601-formatted time when the SLO was updated.
readOnly: true
example: '2022-10-31T15:08:11Z'
SLODetailedResponse:
allOf:
- $ref: '#/components/schemas/SLO'
type: object
properties:
compliance:
type: number
description: >
Reporting data to express historical compliance of the SLO. Only
included when the `?detailed` query param is passed.
format: double
readOnly: true
example: 95.39
budget_remaining:
type: number
description: >
Reporting data to express how much error budget remains for the time
period of the SLO. Only included when the `?detailed` query param is
passed.
format: double
readOnly: true
example: 7.73
BurnAlertListResponse:
anyOf:
- $ref: '#/components/schemas/ExhaustionTimeBurnAlertListResponse'
- $ref: '#/components/schemas/BudgetRateBurnAlertListResponse'
BurnAlertDetailResponse:
anyOf:
- $ref: '#/components/schemas/ExhaustionTimeBurnAlertDetailResponse'
- $ref: '#/components/schemas/BudgetRateBurnAlertDetailResponse'
CreateBurnAlertRequest:
anyOf:
- $ref: '#/components/schemas/CreateExhaustionTimeBurnAlertRequest'
- $ref: '#/components/schemas/CreateBudgetRateBurnAlertRequest'
UpdateBurnAlertRequest:
anyOf:
- $ref: '#/components/schemas/UpdateExhaustionTimeBurnAlertRequest'
- $ref: '#/components/schemas/UpdateBudgetRateBurnAlertRequest'
BurnAlertSharedParams:
type: object
properties:
id:
type: string
description: Unique identifier (ID) of a Burn alert.
readOnly: true
example: fS7vfB81Wcy
description:
type: string
description: A description of the Burn Alert.
maxLength: 1023
example: Use this runbook if this alert fires.
triggered:
type: boolean
description: >
Indicates if the Burn Alert has been triggered. This field is
read-only and is set to `true` when the alert is triggered.
readOnly: true
example: false
created_at:
type: string
format: date-time
description: The ISO8601-formatted time when the Burn Alert was created.
readOnly: true
example: '2022-09-22T17:32:11Z'
updated_at:
type: string
format: date-time
description: The ISO8601-formatted time when the Burn Alert was updated.
readOnly: true
example: '2022-10-31T15:08:11Z'
ExhaustionTimeBurnAlert:
title: Exhaustion Time
allOf:
- $ref: '#/components/schemas/BurnAlertSharedParams'
- type: object
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
minimum: 0
description: >
Required when `alert_type` is `exhaustion_time`.
Must not be specified when `alert_type` is `budget_rate`.
Amount of time (in minutes) left until your projected SLO budget
is exhausted.
The alert will fire when this exhaustion threshold is reached.
example: 120
ExhaustionTimeBurnAlertListResponse:
allOf:
- $ref: '#/components/schemas/ExhaustionTimeBurnAlert'
- type: object
properties:
slo:
type: object
description: Details about the SLO associated with the burn alert.
properties:
id:
type: string
description: Unique identifier (ID) of a SLO.
example:
id: 2LBq9LckbcA
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: alerts@example.com
CreateExhaustionTimeBurnAlertRequest:
allOf:
- $ref: '#/components/schemas/ExhaustionTimeBurnAlert'
- type: object
required:
- slo
- recipients
properties:
slo:
type: object
description: Details about the SLO associated with the burn alert.
required:
- id
properties:
id:
type: string
description: Unique identifier (ID) of a SLO.
example:
id: 2LBq9LckbcA
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: alerts@example.com
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: alerts@example.com
BudgetRateBurnAlert:
title: Budget Rate
allOf:
- $ref: '#/components/schemas/BurnAlertSharedParams'
- type: object
required:
- alert_type
- budget_rate_window_minutes
- budget_rate_decrease_threshold_per_million
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: budget_rate
budget_rate_window_minutes:
type: integer
minimum: 60
description: >
Required when `alert_type` is `budget_rate`.
Must not be specified when `alert_type` is `exhaustion_time`.
Time period (in minutes) over which a budget rate will be
calculated.
Must be no greater than the associated SLO's time period.
example: 120
budget_rate_decrease_threshold_per_million:
type: integer
minimum: 1
maximum: 1000000
description: >
Required when `alert_type` is `budget_rate`.
Must not be specified when `alert_type` is `exhaustion_time`.
The percent the budget has decreased over the budget rate
window, represented as a value out of one million.
The alert will fire when this budget decrease threshold is
reached.
See the table below for some example conversions from desired
budget decrease percent to the representation as a value out of
one million
| Desired percent | Value per million |
|-----------------|-------------------|
| 0.001% | 1 |
| 1% | 10,000 |
| 5% | 50,000 |
| 99.99% | 999,900 |
example: 1000
BudgetRateBurnAlertListResponse:
title: Budget Rate
allOf:
- $ref: '#/components/schemas/BudgetRateBurnAlert'
- type: object
properties:
slo:
type: object
description: Details about the SLO associated with the burn alert.
properties:
id:
type: string
description: Unique identifier (ID) of a SLO.
example:
id: 2LBq9LckbcA
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: alerts@example.com
CreateBudgetRateBurnAlertRequest:
allOf:
- $ref: '#/components/schemas/BudgetRateBurnAlert'
- type: object
required:
- slo
- recipients
properties:
slo:
type: object
description: Details about the SLO associated with the burn alert.
required:
- id
properties:
id:
type: string
description: Unique identifier (ID) of a SLO.
example:
id: 2LBq9LckbcA
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: alerts@example.com
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: alerts@example.com
IngestKeyAttributes:
type: object
allOf:
- $ref: '#/components/schemas/IngestKeyType'
- $ref: '#/components/schemas/ApiKeyBaseAttributes'
ApiKeyBaseAttributes:
type: object
required:
- name
properties:
name:
type: string
description: A human-readable name for the API Key
example: us-west-2 collectors key
maxLength: 100
disabled:
type: boolean
description: Whether the API Key is disabled
default: false
example: false
permissions:
type: object
description: The permissions granted to this API Key
properties:
create_datasets:
type: boolean
description: Whether this API Key can create new Datasets
default: false
timestamps:
type: object
readOnly: true
properties:
created:
type: string
format: date-time
description: The ISO8601-formatted time when the API Key was created.
readOnly: true
example: '2022-09-22T17:32:11Z'
updated:
type: string
format: date-time
description: The ISO8601-formatted time when the API Key was updated.
readOnly: true
example: '2022-10-31T15:08:11Z'
ApiKeyTypes:
type: object
properties:
key_type:
type: string
description: The type of API Key
enum:
- ingest
example: ingest
IngestKeyType:
type: object
required:
- key_type
properties:
key_type:
type: string
description: The type of API Key
enum:
- ingest
example: ingest
UserRelationship:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
properties:
id:
type: string
description: |
The ID of this user.
examples:
- hcxus_01hzqr5g7jg9qz40xtgx7rjwj0
type:
type: string
enum:
- users
CreatorRelationship:
type: object
readOnly: true
description: The User who initially created this resource.
allOf:
- $ref: '#/components/schemas/UserRelationship'
EditorRelationship:
type: object
readOnly: true
description: The User who last edited this resource.
allOf:
- $ref: '#/components/schemas/UserRelationship'
EnvironmentRelationship:
type: object
required:
- data
description: The Environment this object is associated with.
properties:
data:
type: object
required:
- id
- type
properties:
id:
type: string
description: The ID of the Environment this object is associated with.
example: hxenv_12345678901234567890123456
type:
type: string
enum:
- environments
TeamRelationship:
type: object
required:
- team
properties:
team:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
properties:
id:
type: string
description: The ID of the Team this object is associated with
example: hxctm_12345678901234567890123456
type:
type: string
enum:
- teams
ApiKeyObject:
type: object
properties:
id:
type: string
readOnly: true
description: The unique identifier of the API Key
example: hcxik_12345678901234567890123456
type:
type: string
readOnly: true
enum:
- api-keys
attributes:
$ref: '#/components/schemas/ApiKeyAttributes'
relationships:
type: object
required:
- environment
- creator
- editor
properties:
environment:
$ref: '#/components/schemas/EnvironmentRelationship'
creator:
$ref: '#/components/schemas/CreatorRelationship'
editor:
$ref: '#/components/schemas/EditorRelationship'
links:
type: object
properties:
self:
type: string
description: The URL of this resource
readOnly: true
example: /2/teams/my-team/api-keys/hcxik_12345678901234567890123456
ApiKeyAttributes:
type: object
allOf:
- $ref: '#/components/schemas/ApiKeyTypes'
- $ref: '#/components/schemas/ApiKeyBaseAttributes'
IncludedResource:
type: object
properties:
id:
type: string
readOnly: true
description: The unique identifier of the resource
example: hcxen_01hznmeqrcq8rz533xrvtc6mk0
type:
type: string
readOnly: true
example: environments
attributes:
type: object
readOnly: true
example:
name: Production
slug: production
ApiKeyResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/ApiKeyObject'
ApiKeyCreateRequest:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
- relationships
properties:
type:
type: string
enum:
- api-keys
attributes:
$ref: '#/components/schemas/IngestKeyAttributes'
relationships:
type: object
required:
- environment
properties:
environment:
$ref: '#/components/schemas/EnvironmentRelationship'
example:
data:
type: api-keys
attributes:
name: my ingest key
key_type: ingest
permissions:
create_datasets: true
relationships:
environment:
data:
id: hcxen_12345678901234567890123456
type: environments
ApiKeyCreateResponse:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
- relationships
- links
properties:
id:
type: string
readOnly: true
description: The unique identifier of the API Key
example: hcxik_12345678901234567890123456
type:
type: string
readOnly: true
enum:
- api-keys
attributes:
allOf:
- $ref: '#/components/schemas/IngestKeyAttributes'
- type: object
properties:
secret:
type: string
description: >-
The API Key secret. This is the only time it will be
returned.
readOnly: true
example: '12345678901234567890123456789'
relationships:
type: object
required:
- environment
- creator
- editor
properties:
environment:
$ref: '#/components/schemas/EnvironmentRelationship'
creator:
$ref: '#/components/schemas/CreatorRelationship'
editor:
$ref: '#/components/schemas/EditorRelationship'
links:
type: object
properties:
self:
type: string
description: The URL of this resource
readOnly: true
example: /2/teams/my-team/api-keys/hcxik_12345678901234567890123456
ApiKeyUpdateRequest:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
description: The unique identifier of the API Key
example: hcxik_12345678901234567890123456
type:
type: string
enum:
- api-keys
attributes:
type: object
properties:
name:
type: string
description: A human-readable name for the API Key
example: updated key name
enabled:
type: boolean
description: Whether the API Key is enabled
example: false
ApiKeyListResponse:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApiKeyObject'
links:
$ref: '#/components/schemas/PaginationLinks'
CreateEnvironmentRequest:
type: object
required:
- data
properties:
data:
type: object
required:
- type
- attributes
properties:
type:
type: string
enum:
- environments
attributes:
type: object
required:
- name
properties:
name:
type: string
maxLength: 255
description:
type: string
maxLength: 255
color:
$ref: '#/components/schemas/EnvironmentColor'
UpdateEnvironmentRequest:
type: object
required:
- data
properties:
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- environments
attributes:
type: object
properties:
description:
type: string
maxLength: 255
color:
$ref: '#/components/schemas/EnvironmentColor'
settings:
type: object
properties:
delete_protected:
type: boolean
description: If true, the environment cannot be deleted.
EnvironmentColor:
type: string
enum:
- blue
- green
- gold
- red
- purple
- lightBlue
- lightGreen
- lightGold
- lightRed
- lightPurple
Environment:
type: object
required:
- id
- type
- links
- attributes
properties:
id:
type: string
type:
type: string
enum:
- environments
links:
type: object
required:
- self
properties:
self:
type: string
attributes:
type: object
required:
- name
- description
- color
- slug
- settings
properties:
name:
type: string
description:
type: string
color:
description: >
'classic' color is used only for auto-created Classic
environments and cannot be set on any other environment. Classic
environments cannot be set to any other color.
oneOf:
- $ref: '#/components/schemas/EnvironmentColor'
- type: string
enum:
- classic
slug:
type: string
settings:
type: object
required:
- delete_protected
properties:
delete_protected:
type: boolean
description: If true, the environment cannot be deleted.
EnvironmentResponse:
type: object
required:
- data
properties:
data:
$ref: '#/components/schemas/Environment'
EnvironmentListResponse:
type: object
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/Environment'
links:
$ref: '#/components/schemas/PaginationLinks'
AuthV2Response:
type: object
required:
- data
properties:
included:
type: array
items:
$ref: '#/components/schemas/IncludedResource'
example:
- id: hcxtm_12345678901234567890123456
type: teams
attributes:
name: My Team
slug: my-team
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
readOnly: true
description: The unique identifier of the API Key making the request
example: hcxik_12345678901234567890123456
type:
type: string
readOnly: true
enum:
- api-keys
relationships:
type: object
readOnly: true
allOf:
- $ref: '#/components/schemas/TeamRelationship'
attributes:
type: object
readOnly: true
properties:
name:
type: string
description: A human-readable name for the API Key
example: mgmt write key
key_type:
type: string
description: The type of API Key
enum:
- management
disabled:
type: boolean
description: Whether the API Key is disabled
default: false
scopes:
type: array
description: The scopes assigned to this API Key
example:
- api-keys:write
timestamps:
type: object
properties:
created:
type: string
format: date-time
description: The ISO8601-formatted time when the API Key was created.
readOnly: true
example: '2022-09-22T17:32:11Z'
updated:
type: string
format: date-time
description: The ISO8601-formatted time when the API Key was updated.
readOnly: true
example: '2022-10-31T15:08:11Z'
PaginationLinks:
type: object
description: Links to iterate through the pages of results.
required:
- next
properties:
next:
type:
- string
- 'null'
description: The URL for the next page of results.
readOnly: true
example: /2/teams/my-team/api-keys?page[after]=3025fa645ad1100d&page[size]=10
securitySchemes:
configuration_key:
type: apiKey
name: X-Honeycomb-Team
in: header
description: >
A Honeycomb Configuration Key is required to use this API.
A Configuration Key can be found in the API Keys section of the
environment configuration,
which can be found under Environment Settings -> API Keys ->
Configuration tab.
Check out our documentation to [find your API
Keys](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/#find-api-keys).
More information can be found in [Manage
Environments](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
ingest_key:
type: apiKey
name: X-Honeycomb-Team
in: header
description: >
A Honeycomb Ingest Key is required to use this API. The Ingest Key is
the concatenation of the Ingest Key ID and the Ingest Key Secret.
For security reasons the Ingest Key Secret will only be available during
creation of the Ingest Key while the Ingest Key ID will always be
available.
More information can be found in [Manage
Environments](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
firehose_access_key:
type: apiKey
name: X-Amz-Firehose-Access-Key
in: header
description: >
A Honeycomb Ingest Key is recommended for use with this API, though a
Configuration key will work.
More information can be found in [Manage
Environments](https://docs.honeycomb.io/get-started/configure/environments/manage-api-keys/).
bearerAuth:
type: http
scheme: bearer
description: >
A Honeycomb Management Key is required to use this API.
The token should be passed in the "Authorization" header,
and the secret should be prefixed with "Bearer " followed by the API
Key's ID and secret, separated by a colon.
For example, `Authorization: Bearer
hcxmk_12345678901234567890123456:12345678901234567890123456789012`
More information can be found in the [Manage API Keys
documentation](https://docs.honeycomb.io/get-started/configure/teams/manage-api-keys/).
bearerFormat: HONEYCOMB_KEY_ID:HONEYCOMB_KEY_SECRET