openapi: 3.1.0 info: title: Honeycomb Auth Datasets API 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 Pollinators Slack or to Honeycomb Support. ' servers: - url: https://api.honeycomb.io - url: https://api.eu1.honeycomb.io tags: - 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/configure/environments/manage-api-keys/). ' paths: /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 headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' content: application/json: schema: $ref: '#/components/schemas/Dataset' '201': description: Created headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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-21 18:39:23+00:00 last_written_at: null regular_columns_count: 0 '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '409': description: Conflict headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' content: application/json: schema: $ref: '#/components/schemas/Error' example: error: we could not create a dataset with that name 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. detail: environment has reached the maximum number of datasets allowed error: environment has reached the maximum number of datasets allowed '422': $ref: '#/components/responses/ValidationFailed' '429': $ref: '#/components/responses/RateLimited' 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 headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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' '429': $ref: '#/components/responses/RateLimited' 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 headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' content: application/json: schema: $ref: '#/components/schemas/Dataset' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/RateLimited' 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 headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' content: application/json: {} '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' 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 headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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' '429': $ref: '#/components/responses/RateLimited' components: headers: RateLimitPolicy: description: "The (draft07) recommended header from the IETF on rate limiting.\nThe value of the header is formatted \"X;w=Y\".\nWhere:\n - X is the maximum number of requests allowed in a window\n - Y is the size of the window in seconds\n" schema: type: string example: 100;w=60 RateLimit: description: "The (draft07) recommended header from the IETF on rate limiting.\nThe value of the header is formatted \"limit=X, remaining=Y, reset=Z\".\nWhere:\n - X is the maximum number of requests allowed in the window\n - Y is the number of requests remaining in the window\n - Z is the number of seconds until the limit resets\n" schema: type: string example: limit=100, remaining=50, reset=60 RetryAfter: description: 'The RFC7231 header used to indicate when a client should retry requests. ' schema: type: string example: Fri, 22 Mar 2024 18:37:53 GMT responses: GenericError: description: Error content: application/json: schema: $ref: '#/components/schemas/Error' 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/JSONAPIError' 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/JSONAPIError' RateLimited: description: Rate Limit Exceeded headers: Retry-After: $ref: '#/components/headers/RetryAfter' Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' content: application/json: schema: $ref: '#/components/schemas/Error' example: error: Rate Limited application/problem+json: schema: $ref: '#/components/schemas/DetailedError' example: status: 429 type: https://api.honeycomb.io/problems/rate-limited title: You have exceeded your rate limit. error: You have exceeded your rate limit. detail: Please try again after 2025-02-01T15:23:12Z. application/vnd.api+json: schema: $ref: '#/components/schemas/JSONAPIError' example: errors: - id: 06dcdd6508ca822f0e7e2bb4121c1f52 code: rate-limited/may-retry title: request rate limit exceeded detail: Please try again after 2025-02-01T15:23:12Z. ValidationFailed: description: Validation Failed headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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/JSONAPIError' NotFound: description: Not Found headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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/JSONAPIError' Conflict: description: Conflict headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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/JSONAPIError' parameters: datasetSlug: name: datasetSlug description: 'The dataset slug. ' in: path required: true schema: type: string schemas: 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 dataset_type: type: string description: 'The type of data contained in the dataset. Only present for time-series metrics datasets. ' enum: - metrics example: metrics 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 JSONAPIError: x-tags: - Errors type: object description: A JSONAPI-formatted error message. properties: errors: type: array items: type: object readOnly: true required: - id - code properties: id: type: string readOnly: true status: type: string readOnly: true code: type: string readOnly: true title: type: string readOnly: true detail: type: string readOnly: true source: type: object readOnly: true properties: pointer: type: string readOnly: true header: type: string readOnly: true parameter: type: string readOnly: true 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. 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 Error: x-tags: - Errors type: object description: A legacy error, containing only a textual description. properties: error: type: string readOnly: true externalDocs: url: https://docs.honeycomb.io