ProRata.ai · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Prorata API Service

19 actions 19 updates documentation extends ../openapi/prorataai-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for ProRata.ai's API. It is a proposal applied on top of the contract, not a document ProRata.ai publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

operationIdx-reversiblex-consequence

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

$.servers
$.security
$.tags
$.paths['/v1/chat'].post
$.paths['/v1/chat/completions'].post
$.paths['/v1/chat/response/{threadId}/{turnId}'].get
$.paths['/v1/chat/citations/{threadId}/{turnId}'].get
$.paths['/v1/chat/attributions/{threadId}/{turnId}'].get
$.paths['/v1/threads'].get
$.paths['/v1/threads/{threadId}'].get
$.paths['/v1/threads/{threadId}'].delete
$.paths['/v1/questions/recommended'].get
$.paths['/v1/questions/related'].post
$.paths['/v1/summaries'].post
$.paths['/v1/summaries/{summaryId}'].get
$.paths['/v1/publishers'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Prorata API Service
  version: 1.0.0
extends: ../openapi/prorataai-openapi.json
x-generated: '2026-08-26'
x-method: generated
x-source: openapi/prorataai-openapi.json
x-note: >-
  Non-destructive enhancements only. The original contract is never mutated. Every action
  below closes a gap measured against the published document during the 2026-08-26
  enrichment pass: the spec declares no operationIds, no top-level tag descriptions, no
  global security requirement, and a relative servers[] entry ("/v1") that does not name
  a host even though https://api.gist.ai/v1/health answers live.
actions:
- target: $.servers
  description: >-
    Add the absolute production host. The published servers[] value is the relative
    string "/v1" while every path already begins with /v1, so naive concatenation yields
    /v1/v1/... The host below was confirmed live (GET https://api.gist.ai/v1/health
    returned a real health document; https://api.gist.ai/v1/publishers returned a
    well-formed 401).
  update:
  - url: https://api.gist.ai
    description: Production (confirmed live 2026-08-26)
- target: $.security
  description: >-
    Declare the API-key scheme globally. 14 of 16 operations already require it
    per-operation; only GET / and GET /v1/health are public.
  update:
  - apiKeyAuth: []
- target: $.tags
  description: >-
    The contract declares tags:[] at the root while every operation carries a tag, so the
    six tag groups are undescribed.
  update:
  - name: Chat
    description: Create chats, stream completions, and read the citations and attribution credit split for a turn.
  - name: Threads
    description: List, read and permanently delete chat threads. Marked "(Advanced)" in the published contract.
  - name: Questions
    description: Recommended and query-related question suggestions.
  - name: Summaries
    description: URL-scoped document summarization, delivered as a stream. Restricted to authorized publisher domains.
  - name: Publishers
    description: Publisher-group and publisher lookup. Redis-cached with a 1-hour TTL.
  - name: Health
    description: Public, unauthenticated service and dependency health.
- target: $.paths['/v1/chat'].post
  description: Add a stable operationId. The published contract declares none on any operation.
  update:
    operationId: createChat
- target: $.paths['/v1/chat/completions'].post
  update:
    operationId: streamChatCompletions
- target: $.paths['/v1/chat/response/{threadId}/{turnId}'].get
  update:
    operationId: streamChatResponse
- target: $.paths['/v1/chat/citations/{threadId}/{turnId}'].get
  update:
    operationId: getChatCitations
- target: $.paths['/v1/chat/attributions/{threadId}/{turnId}'].get
  update:
    operationId: getChatAttributions
- target: $.paths['/v1/threads'].get
  update:
    operationId: listThreads
- target: $.paths['/v1/threads/{threadId}'].get
  update:
    operationId: getThread
- target: $.paths['/v1/threads/{threadId}'].delete
  description: >-
    Add an operationId and flag the operation as irreversible. The published description
    states it "Permanently deletes a chat thread and all its associated turns"; no restore
    path exists. See conventions/prorataai-conventions.yml reversibility.
  update:
    operationId: deleteThread
    x-reversible: false
    x-consequence: destructive
- target: $.paths['/v1/questions/recommended'].get
  update:
    operationId: getRecommendedQuestions
- target: $.paths['/v1/questions/related'].post
  update:
    operationId: getRelatedQuestions
- target: $.paths['/v1/summaries'].post
  update:
    operationId: createSummary
- target: $.paths['/v1/summaries/{summaryId}'].get
  update:
    operationId: streamSummary
- target: $.paths['/v1/publishers'].get
  update:
    operationId: getPublisherGroup
- target: $.paths['/v1/publishers/{id}'].get
  update:
    operationId: getPublisher
- target: $.paths['/v1/health'].get
  update:
    operationId: getHealth
- target: $.paths['/'].get
  update:
    operationId: getServiceInfo