HyperDX · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay for the HyperDX External API

9 actions 9 updates update extends openapi/hyperdx-external-api-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for HyperDX's API. It is a proposal applied on top of the contract, not a document HyperDX publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-destructivex-reversiblex-apievangelist-profilex-contract-sourcex-licensex-parent-companyx-domain-standardx-server-is-instance-scoped

Targets 9

$.info
$.servers
$
$.paths['/api/v2/dashboards/{id}'].delete
$.paths['/api/v2/sources/{id}'].delete
$.paths['/api/v2/alerts/{id}'].delete
$.paths['/api/v2/webhooks/{id}'].delete
$.components.schemas.Error
$.components.schemas.WebhookInput

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay for the HyperDX External API
  version: 1.0.0
  x-generated: '2026-08-27'
  x-method: generated
  x-source: openapi/hyperdx-external-api-openapi.json
  x-note: >-
    Additive only. Records what the API Evangelist enrichment pass established about the HyperDX
    External API that the vendor's own spec does not state — the real server host situation, the
    runtime rate-limit signal observed on the sibling v1 host, the absence of idempotency, and the
    irreversibility of every delete. The upstream openapi/hyperdx-external-api-openapi.json is
    never mutated.
extends: openapi/hyperdx-external-api-openapi.json
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apis.io/provider/hyperdx
    x-contract-source: https://github.com/hyperdxio/hyperdx/blob/main/packages/api/openapi.json
    x-license: MIT
    x-parent-company: ClickHouse, Inc. (acquired HyperDX in March 2025)
    x-domain-standard: OpenTelemetry
- target: $.servers
  description: >-
    The published servers[] entry is the relative URL "/" with the description "Your HyperDX
    instance (http://<host>:<port>)". That is accurate but names no host, so it is annotated rather
    than replaced — replacing it with api.hyperdx.io would be wrong: that host serves v1 only and
    returns 404 for every /api/v2 path (probed 2026-08-27).
  update:
    x-server-is-instance-scoped: true
    x-not-served-on: https://api.hyperdx.io
    x-deployment-modes:
    - self-hosted (docker run hyperdxio/hyperdx-local, app on :8080)
    - ClickStack in ClickHouse Cloud
- target: $
  update:
    x-rate-limit-signal:
      declared_in_spec: false
      observed_on: https://api.hyperdx.io
      headers:
      - ratelimit-limit
      - ratelimit-remaining
      - ratelimit-reset
      observed_values: 'limit 100 / window 60s'
      note: >-
        No 429 response is declared on any of the 39 operations. The IETF RateLimit-* headers above
        were observed on a live unauthenticated response from the sibling v1 host on 2026-08-27,
        and are NOT asserted for a self-hosted v2 instance.
    x-idempotency:
      supported: false
      note: No Idempotency-Key header anywhere in the contract; a retried POST creates a duplicate.
    x-reversibility:
      grade: absent
      note: >-
        No cancel, undo, restore or soft-delete on any resource, and no documented recovery window.
        Deleting a dashboard cascades to its attached alerts.
    x-agent-surfaces:
      mcp: '{your-hyperdx-url}/api/mcp'
      mcp_tools: 27
      cli: '@hyperdx/cli (hdx)'
      crosswalk: mcp/hyperdx-tool-crosswalk.yml
- target: $.paths['/api/v2/dashboards/{id}'].delete
  update:
    x-destructive: true
    x-cascades-to: attached alerts
    x-reversible: false
- target: $.paths['/api/v2/sources/{id}'].delete
  update:
    x-destructive: true
    x-reversible: false
- target: $.paths['/api/v2/alerts/{id}'].delete
  update:
    x-destructive: true
    x-reversible: false
- target: $.paths['/api/v2/webhooks/{id}'].delete
  update:
    x-destructive: true
    x-reversible: false
    x-guarded: >-
      Returns 409 while any alert still references this webhook. The only pre-destructive guard in
      the contract.
- target: $.components.schemas.Error
  update:
    x-error-format: custom
    x-rfc9457: false
    x-code-convention: >-
      The machine-readable code is a prefix inside the message string (e.g. "NOT_FOUND: Alert not
      found"), not a separate field. No enumeration of prefixes is published.
    x-catalog: errors/hyperdx-problem-types.yml
- target: $.components.schemas.WebhookInput
  update:
    x-update-asymmetry: >-
      On PUT, omitted readable fields are cleared while omitted headers/queryParams are preserved —
      unless url or service changed, in which case they are cleared too.