Aedifion · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the aedifion HTTP API

7 actions 7 updates update extends openapi/aedifion-openapi.yml
Derived by API Evangelist Built from the contracts Aedifion publishes. Aedifion did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-notex-agentic-accesstitleversioncontactexternalDocsx-apievangelist-discoveryx-apievangelist-recommended-flow

Targets 6

$.info
$.servers
$.components.securitySchemes.openIDConnect
$.components.securitySchemes.basicAuth
$.paths['/v2/datapoint/setpoint'].post
$.paths['/v2/controls/app/{controls_app_id}/run'].post

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the aedifion HTTP API
  version: 1.0.0
extends: openapi/aedifion-openapi.yml
x-generated: '2026-09-09'
x-method: generated
x-source: >-
  Derived from the live spec at https://api.aedifion.io/openapi.json plus aedifion's published
  documentation. This overlay records API Evangelist's enhancements without mutating the
  harvested original at openapi/_original/aedifion-openapi.json.
actions:
- target: $.info
  description: >-
    The published spec's info block is nearly empty - title is the generic "API Docs", version
    is an empty string, and there is no contact, licence or externalDocs. Fill it in.
  update:
    title: aedifion HTTP API
    version: '2'
    x-apievangelist-note: >-
      info.title in the published spec is "API Docs" and info.version is an empty string. A
      generated client would be named after the Swagger UI page rather than the product, and no
      client can pin a version.
    contact:
      name: aedifion GmbH
      url: https://www.aedifion.com/kontakt
      email: contact@aedifion.com
    externalDocs:
      description: aedifion developer documentation
      url: https://docs.aedifion.io/en/developers/http-api/
- target: $.servers
  description: >-
    THE SINGLE HIGHEST-VALUE FIX. The published spec declares servers as [{"url": ""}] - an
    empty string. The Swagger UI at api.aedifion.io/ui/ works because the browser resolves the
    empty URL relative to the page it is served from, but any client generated from the
    downloaded document has no host to call and every generated SDK is dead on arrival. The
    real hosts are documented at
    https://docs.aedifion.io/en/developers/http-api/ and are supplied here.
  update:
  - url: https://api.aedifion.io
    description: aedifion cloud platform
  - url: https://api.{realm}.aedifion.io
    description: Dedicated single-tenant instance
    variables:
      realm:
        default: aedifion
        description: The customer's dedicated realm name.
- target: $.components.securitySchemes.openIDConnect
  description: >-
    The spec models the Keycloak provider as an oauth2 scheme with only an implicit flow and
    only the `openid` scope. The realm's own discovery document advertises authorizationCode,
    clientCredentials and password grants, PKCE with S256, and 13 scopes. Implicit is
    discouraged by OAuth 2.1; authorizationCode + PKCE is what a client should use.
  update:
    x-apievangelist-discovery: https://auth.aedifion.io/realms/aedifion/.well-known/openid-configuration
    x-apievangelist-recommended-flow: authorizationCode with PKCE (S256)
    x-apievangelist-available-grants:
    - authorization_code
    - client_credentials
    - password
    - refresh_token
    x-apievangelist-note: >-
      Declared flows in the spec (implicit only) are a subset of what the identity provider
      actually supports. See scopes/aedifion-scopes.yml.
- target: $.components.securitySchemes.basicAuth
  description: Record the provider's own statement that this scheme is legacy.
  update:
    x-apievangelist-status: legacy
    x-apievangelist-note: >-
      aedifion's documentation states "The aedifion HTTP API supports Basic Auth for legacy
      reasons until further notice. HTTP Basic Auth may be deprecated in future." No Sunset
      date is published.
- target: $.paths['/v2/datapoint/setpoint'].post
  description: >-
    Flag the highest-consequence operation on the API with an agentic execution contract. This
    operation actuates physical building plant.
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: recommended
      token-ttl-seconds: 300
      dry-run:
        supported: true
        parameter: dryrun
      reversal:
        supported: true
        how: re-issue with value='null' to reset the point to local building automation control
        window: not stated
    x-apievangelist-note: >-
      aedifion describes this endpoint as "no-frills, non-acked, stateless, best-effort" and is
      explicit that a 200 means the request was authorized and well-formed, NOT that the
      building network applied the value. Callers must pass acked=true and redeem the returned
      reference at get_datapoint_setpoint to confirm.
- target: $.paths['/v2/controls/app/{controls_app_id}/run'].post
  description: Flag autonomous control deployment as a consequential action.
  update:
    x-agentic-access:
      action-class: acting
      consequence: physical
      audit: required
      human-in-the-loop: recommended
      token-ttl-seconds: 300
    x-apievangelist-note: This operation both starts and stops an autonomous control
      application that operates HVAC plant without further human input.
- target: $.info
  description: >-
    Record the cross-cutting semantics an integrator needs that the spec does not state - error
    format, rate-limit signalling and idempotency posture.
  update:
    x-apievangelist-conventions:
      error_format: custom-json (not RFC 9457); single Error schema across all 269 error
        responses
      idempotency: partial - no Idempotency-Key header; two set-membership operations
        documented as idempotent
      rate_limit_headers: none declared
      rate_limit_status_codes: [423, 429]
      pagination: page/per_page with a PaginationMeta envelope, on 20 of 208 operations
      conditional_requests: no ETag or If-Match support
      request_tracing: no request-id header
    x-apievangelist-artifacts:
      conventions: conventions/aedifion-conventions.yml
      errors: errors/aedifion-problem-types.yml
      authentication: authentication/aedifion-authentication.yml
      rate_limits: rate-limits/aedifion-rate-limits.yml
      data_model: data-model/aedifion-data-model.yml
      events: asyncapi/aedifion-event-surface.yml

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/aedifion-http-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.