openapi: 3.1.0 info: title: Honeycomb Service Maps 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. ' externalDocs: url: https://docs.honeycomb.io servers: - url: https://api.honeycomb.io - url: https://api.eu1.honeycomb.io tags: - name: Service Maps description: 'The Service Maps API endpoints allow you to visualize the relationships between your services in Honeycomb. This API allows you to create and retrieve service Dependency Requests, which are used to generate maps of dependencies between services. ## Authorization The API key must have the **Read Service Maps** permission. Learn more about [API keys here](https://docs.honeycomb.io/configure/environments/manage-api-keys/). ' paths: /1/maps/dependencies/requests: post: security: - configuration_key: [] summary: Create a Map Dependency Request description: 'Create a Map Dependency Request. ' tags: - Service Maps operationId: createMapDependencyRequest parameters: - name: limit in: query required: false description: 'Maximum number of dependencies to return. Default is 10000, maximum is 64000. ' schema: type: integer minimum: 1 maximum: 64000 default: 10000 example: 5000 requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateMapDependenciesRequest' examples: Get all depenedencies for last 2 hours for the user-service: value: time_range: 7200 filters: - name: user-service type: service Get dependencies for last 1 day starting from 2025-07-01: value: time_range: 86400 start_time: 1751328000 required: false responses: '200': description: Success - Results are ready or request has failed (see `status` field) headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' Location: schema: type: string description: The Location header will contain the URL where the results can be fetched. example: https://api.honeycomb.io/1/maps/dependencies/requests/HprJhV1fYyr 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. content: application/json: schema: $ref: '#/components/schemas/CreateMapDependenciesResponse' '201': description: Created - Request is pending headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' Location: schema: type: string description: The Location header will contain the URL where the results can be fetched. example: https://api.honeycomb.io/1/maps/dependencies/requests/HprJhV1fYyr 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. content: application/json: schema: $ref: '#/components/schemas/CreateMapDependenciesResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationFailed' '429': $ref: '#/components/responses/RateLimited' default: $ref: '#/components/responses/GenericError' /1/maps/dependencies/requests/{requestId}: parameters: - name: requestId description: The unique identifier (ID) of a Map Dependencies Request. in: path required: true schema: type: string get: security: - configuration_key: [] summary: Get Map Dependencies description: 'Get the dependencies for a previously created Map Dependencies Request. Note: This endpoint returns a single page of results and uses pagination. Even if you specified a large limit in the initial POST request, you will receive up to the page size limit per request and must use the pagination links to retrieve additional results. ' tags: - Service Maps operationId: getMapDependencies parameters: - $ref: '#/components/parameters/PaginationCursor' - $ref: '#/components/parameters/PaginationSize' responses: '200': description: Success headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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. Cache-Control: schema: type: string description: Cache-Control header is set for ready responses. content: application/json: schema: $ref: '#/components/schemas/GetMapDependenciesResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/ValidationFailed' '429': $ref: '#/components/responses/RateLimited' default: $ref: '#/components/responses/GenericError' components: schemas: 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 CreateMapDependenciesRequest: type: object description: Create a Map Dependency Request. properties: start_time: type: integer description: 'Absolute start time to evaluate dependencies, in seconds since UNIX epoch. Must be <= `end_time` (when `time_range` is not provided). ' example: 1622548800 end_time: type: integer description: 'Absolute end time to evaluate dependencies, in seconds since UNIX epoch. Must be >= `start_time` (when `time_range` is not provided). ' example: 1622635200 time_range: type: integer default: 7200 minimum: 1 description: 'Time range in seconds (minimum 1). Can be used with either `start_time` (seconds after `start_time`), `end_time` (seconds before `end_time`), or without either (seconds before now). ' example: 7200 filters: type: array description: 'Optional list of service nodes to filter dependencies by. Only dependencies involving these nodes will be returned. ' items: $ref: '#/components/schemas/MapNode' 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 MapDependency: type: object description: A dependency relationship between two services. properties: parent_node: $ref: '#/components/schemas/MapNode' child_node: $ref: '#/components/schemas/MapNode' call_count: type: integer description: 'Number of calls between the parent and child services. ' example: 142 CreateMapDependenciesResponse: type: object description: Response for a Map Dependency Request. properties: request_id: type: string description: 'Unique identifier for the Map Dependency Request. ' example: abc123 status: type: string description: 'Status of the Map Dependency Request. ' enum: - pending - ready - error example: pending 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. GetMapDependenciesResponse: type: object description: Response containing map dependencies data. properties: request_id: type: string description: 'Unique identifier for the Map Dependency Request. ' example: abc123 status: type: string description: 'Status of the Map Dependency Request. ' enum: - pending - ready - error example: ready dependencies: oneOf: - type: array items: $ref: '#/components/schemas/MapDependency' - type: 'null' description: 'Array of service dependencies. Null when status is "pending" or "error". ' links: $ref: '#/components/schemas/PaginationLinks' 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 MapNode: type: object description: A node in the service map (typically a service). required: - name properties: name: type: string description: 'Name of the service or node. ' example: user-service type: type: string description: 'Type of the node. Currently only "service" is supported. Defaults to "service" if not specified. ' enum: - service example: service Error: x-tags: - Errors type: object description: A legacy error, containing only a textual description. properties: error: type: string readOnly: true responses: 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' 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' 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' GenericError: description: Error content: application/json: schema: $ref: '#/components/schemas/Error' 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. 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' BadRequest: description: The provided request body was invalid. headers: Ratelimit: $ref: '#/components/headers/RateLimit' RateLimitPolicy: $ref: '#/components/headers/RateLimitPolicy' 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 application/vnd.api+json: schema: $ref: '#/components/schemas/JSONAPIError' examples: JSONAPIError: value: errors: - id: 06dcdd6508ca822f0e7e2bb4121c1f52 code: invalid title: request body could not be parsed detail: invalid gzip data headers: 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 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 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 parameters: PaginationSize: name: page[size] description: The number of entries to include per response. Maximum value is 100. in: query schema: type: number minimum: 1 maximum: 100 default: 20 example: 10 PaginationCursor: name: page[after] 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