AlphaAI · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the AlphaAI REST API

20 actions 20 updates documentation extends openapi/alphaai-rest-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for AlphaAI's API. It is a proposal applied on top of the contract, not a document AlphaAI publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

operationIdx-apievangelist-proposedx-apievangelist-detailx-apievangelist-notex-apievangelist-enrichedx-apievangelist-profilex-apievangelist-artifactsx-apievangelist-findings

Targets 20 · first 16 shown; the file carries all of them

$.info
$.paths['/api/news/'].get
$.paths['/api/news/trending/'].get
$.paths['/api/news/insider/'].get
$.paths['/api/news/macro/'].get
$.paths['/api/calendar/'].get
$.paths['/api/news/{uid}/'].get
$.paths['/api/news/{uid}/related/'].get
$.paths['/api/symbols/'].get
$.paths['/api/symbols/{ticker}/'].get
$.paths['/api/symbols/{ticker}/sentiment-summary/'].get
$.paths['/api/symbols/{ticker}/insider-summary/'].get
$.paths['/api/symbols/{ticker}/insider-trades/'].get
$.paths['/api/symbols/{ticker}/peers/'].get
$.paths['/api/symbols/directory/'].get
$.paths['/api/symbols/sectors/{slug}/'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the AlphaAI REST API
  version: 1.0.0
extends: openapi/alphaai-rest-api-openapi.yml

# generated: '2026-08-11'
# method: generated
# source: >-
#   Authored by the API Evangelist enrichment pipeline against the provider's own
#   OpenAPI 3.1.0 (harvested verbatim from https://api.alphai.io/api/schema/ and
#   archived at openapi/_original/). The original document is never mutated.
#
# WHY THIS OVERLAY EXISTS
# The AlphaAI spec is well above average — 64 inline examples, every operation
# summarised and tagged, a shared Error schema, reusable 401/403/404/429 response
# components — but it declares NO operationId on any of its 15 operations. That is
# the single defect that most limits it: code generators fall back to synthesised
# method names, an MCP tool cannot be bound to a stable operation identifier, and
# the tool crosswalk in mcp/alphaai-tool-crosswalk.yml has to address operations
# by "METHOD path" because there is nothing to grep.
#
# The operationIds below are OUR PROPOSAL, not the provider's. They are derived
# mechanically from each operation's method, path and tag. They are marked with
# x-apievangelist-proposed so no consumer mistakes them for a provider-published
# identifier, and they are carried in an overlay precisely so the harvested spec
# stays exactly as the provider serves it.

actions:
  - target: $.info
    update:
      x-apievangelist-enriched: '2026-08-11'
      x-apievangelist-profile: https://apis.io/provider/alphaai
      x-apievangelist-artifacts:
        conventions: conventions/alphaai-conventions.yml
        errors: errors/alphaai-problem-types.yml
        rate_limits: rate-limits/alphaai-rate-limits.yml
        authentication: authentication/alphaai-authentication.yml
        data_model: data-model/alphaai-data-model.yml
        webhooks: asyncapi/alphaai-webhooks.yml
        mcp: mcp/alphaai-mcp.yml
        crosswalk: mcp/alphaai-tool-crosswalk.yml
      x-apievangelist-findings:
        - No operationId on any operation (15/15). Proposed below.
        - No 5xx response documented on any operation.
        - Errors are not RFC 9457; the extra block carries the machine-readable context.
        - No request-id / correlation header for debugging.

  # --- Proposed operationIds -------------------------------------------------
  - target: $.paths['/api/news/'].get
    update:
      operationId: listNews
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/news/trending/'].get
    update:
      operationId: listTrendingNews
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/news/insider/'].get
    update:
      operationId: listInsiderNews
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/news/macro/'].get
    update:
      operationId: listMacroNews
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/calendar/'].get
    update:
      operationId: listCalendarEvents
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/news/{uid}/'].get
    update:
      operationId: getNewsArticle
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/news/{uid}/related/'].get
    update:
      operationId: listRelatedArticles
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/'].get
    update:
      operationId: listSymbols
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/{ticker}/'].get
    update:
      operationId: getSymbol
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/{ticker}/sentiment-summary/'].get
    update:
      operationId: getSymbolSentimentSummary
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/{ticker}/insider-summary/'].get
    update:
      operationId: getSymbolInsiderSummary
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/{ticker}/insider-trades/'].get
    update:
      operationId: getSymbolInsiderTrades
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/{ticker}/peers/'].get
    update:
      operationId: listSymbolPeers
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/directory/'].get
    update:
      operationId: getSymbolDirectory
      x-apievangelist-proposed: [operationId]
  - target: $.paths['/api/symbols/sectors/{slug}/'].get
    update:
      operationId: listSectorSymbols
      x-apievangelist-proposed: [operationId]

  # --- Cross-links from operations to the artifacts that explain them --------
  - target: $.components.responses.RateLimited
    update:
      x-apievangelist-detail: rate-limits/alphaai-rate-limits.yml
  - target: $.components.responses.ArchiveGated
    update:
      x-apievangelist-detail: plans/alphaai-plans-pricing.yml
      x-apievangelist-note: >-
        A quota signal delivered on 403 rather than 429. Discriminate on
        extra.reason == "archive_horizon" so it is not handled as an auth failure.
  - target: $.components.schemas.Error
    update:
      x-apievangelist-detail: errors/alphaai-problem-types.yml
      x-apievangelist-note: >-
        Three alternative message fields (message / detail / error) are in live
        use across different conditions; a client must check all three.
  - target: $.components.schemas.RichNewsArticle
    update:
      x-apievangelist-note: >-
        Also the payload schema of the news.matched.v1 webhook
        (asyncapi/alphaai-webhooks.yml) — data.article is documented as identical
        to the body of GET /api/news/{uid}/.