AristaMD · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the AristaMD API

7 actions 7 updates documentation extends openapi/aristamd-openapi-original.json
Authorship not recorded No authorship marker is recorded for this file. It is not presented as the provider's.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-sourcex-apievangelist-harvestedx-apievangelist-profilex-apievangelist-notehostschemesx-apievangelist-base-url-evidencex-apievangelist-securityDefinitions

Targets 2

$.info
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the AristaMD API
  version: 1.0.0
extends: openapi/aristamd-openapi-original.json

# This Overlay records API Evangelist's enhancements to AristaMD's published
# Swagger 2.0 document. The harvested original at
# openapi/aristamd-openapi-original.json is never mutated.
#
# Everything added below is either (a) an observed fact from an anonymous probe
# of api.aristamd.com on 2026-08-06, or (b) a pointer to an artifact in this
# repository. No operation, parameter, schema or example is invented.

actions:

# --- Provenance and the missing server block -------------------------------
- target: $.info
  update:
    x-apievangelist-source: https://api.aristamd.com/api-docs
    x-apievangelist-harvested: '2026-08-06'
    x-apievangelist-profile: https://github.com/api-evangelist/aristamd
    x-apievangelist-note: >-
      The published document declares no host, basePath or schemes. The base URL
      was established by probe: every documented path returns 401 on
      https://api.aristamd.com while undocumented control paths return 404.

- target: $
  update:
    host: api.aristamd.com
    schemes: [https]
    x-apievangelist-base-url-evidence:
      method: probe
      date: '2026-08-06'
      routed_401: [/econsults, /users, /panelists, /reviews, /comments,
        /workup-checklists/specialties]
      control_404: [/NOT-A-REAL-PATH, /foo/bar]

# --- The authentication the document omits entirely ------------------------
- target: $
  update:
    x-apievangelist-securityDefinitions:
      # Proposed, NOT present in the original. The original declares no
      # securityDefinitions at all, which makes the contract read as an open API.
      oauth2:
        type: oauth2
        flow: application
        tokenUrl: https://api.aristamd.com/oauth/token
        authorizationUrl: https://api.aristamd.com/oauth/authorize
        x-grant-types-observed: [authorization_code, client_credentials, password,
          refresh_token]
        x-evidence: authentication/aristamd-authentication.yml
    x-apievangelist-auth-artifact: authentication/aristamd-authentication.yml
    x-apievangelist-saml-sp: https://api.aristamd.com/saml2/metadata

# --- Observed runtime error contract ---------------------------------------
- target: $.info
  update:
    x-apievangelist-error-envelope:
      shape: '{"message": "<string>"}'
      rfc9457: false
      observed_401: '{"message":"Unauthorized"}'
      observed_404: '{"message":"The resource you requested could not be found"}'
      artifact: errors/aristamd-problem-types.yml
      note: >-
        The service returns 401 for missing credentials. No operation in the
        original document declares a 401 — they declare 400 "Invalid Credentials"
        and 403 "Unauthorized" instead.

# --- Cross-cutting semantics recovered by derivation ------------------------
- target: $.info
  update:
    x-apievangelist-conventions:
      artifact: conventions/aristamd-conventions.yml
      pagination: {style: offset-limit, params: [start, length, orderColumn,
          orderDir, searchValue], supported_on: [/patients, /users]}
      idempotency: {supported: false, unsafe_operations: 21}
      versioning: {scheme: none, current: 1.0.0}
      rate_limit_signal: none observed
    x-apievangelist-data-model: data-model/aristamd-data-model.yml
    x-apievangelist-conformance: conformance/aristamd-conformance.yml

# --- Contract defects worth fixing, recorded against the document -----------
- target: $.info
  update:
    x-apievangelist-contract-defects:
    - id: non-unique-operation-ids
      severity: high
      detail: >-
        14 distinct operationIds across 42 operations (index x8, show x5,
        store x4, update x4, post x3, events x3, patch x3, destroy x2, get x2).
        Breaks SDK generation, Arazzo references and any id-addressed tooling.
    - id: no-security-definitions
      severity: high
      detail: The API is fully authenticated but the contract declares no
        securityDefinitions and no security requirement.
    - id: undeclared-401
      severity: medium
      detail: 401 is the actual authentication failure status; it is declared on
        zero operations.
    - id: status-402-for-422
      severity: medium
      detail: 'PUT /specialties/{specialtyId} and POST /specialties declare 402
        (Payment Required) with the description "Unprocessable entity".'
    - id: no-host-or-schemes
      severity: medium
      detail: Document is not self-locating; a client cannot resolve a base URL
        from the spec alone.
    - id: typos-in-response-descriptions
      severity: low
      detail: '"Specilaty not found" on GET /specialties/{specialtyId}; "Invalid
        Credentials" / "Invalid credentials" / "Internal Error" / "Internal
        Server error" inconsistently cased.'
    - id: unpaginated-collections
      severity: medium
      detail: 'GET /econsults, GET /panelists and GET /reviews return collections
        with no pagination parameters.'

# --- Tag descriptions the original omits (it declares no tags block) --------
- target: $
  update:
    tags:
    - {name: EConsults, description: 'eConsult lifecycle — create, retrieve,
        update, assign, search by status, drive state transitions, and log
        panelist availability. The core aggregate of the platform.'}
    - {name: Patients, description: 'Patient records, including creation from an
        HL7 message, patient history, external identifiers and top-referral
        reporting.'}
    - {name: Panelists, description: 'Specialist discovery, including
        next-available routing for a given specialty and patient.'}
    - {name: Specialties, description: 'Specialty and subspecialty registry, and
        the filtered view of specialties that currently have available panelists.'}
    - {name: Reviews, description: Structured question/answer reviews attached to
        a request.}
    - {name: Workup Checklists, description: 'Clinical workup guidance keyed on
        specialty and chief complaint.'}
    - {name: Comments, description: Free-text comments attached polymorphically to
        a request.}
    - {name: Users, description: User directory, search and field-level update.}
    - {name: Diagnostic, description: Diagnostic records attached to a request.}
    - {name: Requests, description: Generic request-scoped diagnostic event handler.}
    - {name: Intergy/Patients, description: 'Patient lookup passthrough to the
        Greenway Intergy EHR API.'}