HAProxy · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the HAProxy Data Plane API

10 actions 10 updates update
Derived by API Evangelist Built from the contracts HAProxy publishes. HAProxy did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-harvested-fromx-harvested-onx-vendorx-product-linex-licensex-deploymentx-write-semanticsx-reload-semantics

Targets 6

$.info
$
$.definitions.error
$.securityDefinitions.basic_auth
$.parameters.version
$.parameters.transaction_id

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the HAProxy Data Plane API
  version: 1.0.0
x-provenance:
  generated: '2026-08-28'
  method: generated
  source: openapi/haproxy-data-plane-api-openapi.yml
  extends: openapi/haproxy-data-plane-api-openapi.yml
  note: >-
    This overlay records API Evangelist's derived enrichment of the harvested HAProxy Data
    Plane API contract. The original Swagger 2.0 document is never mutated. Actions add
    documentation and machine-readable pointers that the upstream spec does not carry:
    the self-hosted base URL shape, the contact/licence identity, the optimistic-concurrency
    and transaction semantics, and links to the artifacts derived from this spec.
actions:
  - target: $.info
    description: >-
      Record where this copy came from and which HAProxy release line it describes.
    update:
      x-harvested-from: https://raw.githubusercontent.com/haproxytech/client-native/master/specification/build/haproxy_spec.yaml
      x-harvested-on: '2026-08-28'
      x-vendor: HAProxy Technologies
      x-product-line: HAProxy Data Plane API 3.4
  - target: $.info
    description: State the licence of the upstream project, which the spec omits.
    update:
      x-license:
        name: Apache-2.0
        url: https://github.com/haproxytech/dataplaneapi/blob/master/LICENSE
  - target: $
    description: >-
      The contract declares no `host`, because the Data Plane API is self-hosted software.
      Record the documented default deployment shape so a client knows what to fill in.
    update:
      x-deployment:
        model: self-hosted
        default_port: 5555
        base_path: /v3
        base_url_template: http://{haproxy-host}:5555/v3
        note: >-
          There is no vendor-operated host. Port and base path are the documented defaults;
          both are configurable via the dataplaneapi --port flag and the URI version.
  - target: $
    description: >-
      Surface the write-safety model at the document level. It is expressed in the spec only
      as two shared query parameters, which is easy to miss.
    update:
      x-write-semantics:
        concurrency: optimistic
        version_parameter: version
        version_read: GET /v3/services/haproxy/configuration/version
        conflict_status: 409
        response_header: Configuration-Version
        transactional: true
        transaction_open: startTransaction
        transaction_commit: commitTransaction
        transaction_rollback: deleteTransaction
        reversible_until: commit
        idempotency_key_header: null
  - target: $
    description: Record the reload signalling that a 202 response implies.
    update:
      x-reload-semantics:
        accepted_status: 202
        header: Reload-ID
        poll: GET /v3/services/haproxy/reloads/{id}
        note: A 202 is not confirmation the change is live.
  - target: $
    description: Link the artifacts derived from this contract.
    update:
      x-api-evangelist-artifacts:
        authentication: authentication/haproxy-authentication.yml
        conventions: conventions/haproxy-conventions.yml
        errors: errors/haproxy-problem-types.yml
        data_model: data-model/haproxy-data-model.yml
        lifecycle: lifecycle/haproxy-lifecycle.yml
        conformance: conformance/haproxy-conformance.yml
        skills: skills/_index.yml
        mcp: mcp/haproxy-mcp.yml
  - target: $.definitions.error
    description: >-
      The error definition carries no guidance on what a caller should do. Record the
      remediation the derived error catalog captures.
    update:
      x-remediation:
        '409': >-
          Re-read the configuration version (or the Configuration-Version response header)
          and replay the write with the fresh value. Do not retry with the same version.
        '429': >-
          Commit or delete open transactions. This 429 is a transaction-concurrency limit,
          not a request-rate limit.
      x-error-catalog: errors/haproxy-problem-types.yml
  - target: $.securityDefinitions.basic_auth
    description: State how the Basic credentials are provisioned.
    update:
      x-credential-source: >-
        Users defined in the HAProxy userlist referenced by the Data Plane API's --userlist
        or --userlist-file flag. There are no API keys, no OAuth flows and no scopes.
  - target: $.parameters.version
    description: Make the concurrency contract explicit on the parameter itself.
    update:
      x-concurrency: optimistic-lock
      x-read-from: GET /v3/services/haproxy/configuration/version
      x-on-mismatch: 409
  - target: $.parameters.transaction_id
    description: Make the reversibility window explicit on the parameter itself.
    update:
      x-reversible-until: commitTransaction
      x-rollback: DELETE /v3/services/haproxy/transactions/{id}

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/haproxy-data-plane-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.