Sojo Industries · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the SOJO Planning Assistant (Victoria) API

12 actions 12 updates update
Generated by API Evangelist Written by API Evangelist tooling for Sojo Industries's API. It is a proposal applied on top of the contract, not a document Sojo Industries publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-suggested-operationIdx-writex-agent-notex-unauthenticatedx-idempotentx-reversiblex-reversalx-apievangelist-profile

Targets 12

$.info
$
$.paths['/orchestrate'].post
$.paths['/api/chat'].post
$.paths['/api/chat/conversations'].get
$.paths['/api/chat/conversation/{session_id}'].get
$.paths['/api/chat/conversation/{session_id}'].patch
$.paths['/api/chat/conversation/{session_id}'].delete
$.paths['/api/chat/conversation/export/{session_id}'].get
$.paths['/upload-image'].post
$.paths['/health'].get
$.paths['/ready'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the SOJO Planning Assistant (Victoria) API
  version: 1.0.0
x-generated: '2026-08-28'
x-method: generated
x-source: openapi/sojo-industries-victoria-agent-openapi.json
x-extends: openapi/sojo-industries-victoria-agent-openapi.json
x-note: >-
  Non-destructive enhancements over the provider's published OpenAPI 3.0.3. The original is never
  mutated. Every addition here is either a fact we verified live (the MCP endpoint, the auth wall,
  the absence of rate-limit headers) or a derived label; none of it changes the provider's semantics.
  The dominant gaps this overlay marks are: no operationId on any of the 10 operations, empty
  components.schemas, no response schemas, and an info.version that is an environment label
  ("langgraph-production") rather than a version.
actions:
- target: $.info
  description: Record provenance, the sibling MCP surface, and the versioning defect.
  update:
    x-apievangelist-profile: https://apis.io/provider/sojo-industries
    x-mcp-endpoint: https://victoria-agent.sojoshield.com/mcp
    x-mcp-tools: 6
    x-mcp-discovery-anonymous: true
    x-version-scheme: none
    x-version-note: >-
      info.version is the literal string "langgraph-production", an environment label. Consumers
      cannot pin or diff a contract revision.
- target: $
  description: Record that no operation carries an operationId, which blocks tooling and crosswalks.
  update:
    x-apievangelist-findings:
      operation_ids_declared: 0
      operations_total: 10
      component_schemas: 0
      response_schemas: 0
      rate_limit_headers: none
      error_format: 'custom {data,error{code,details}} — not RFC 9457'
      idempotency: none
- target: $.paths['/orchestrate'].post
  description: Suggest an operationId and mark write semantics for agent callers.
  update:
    x-suggested-operationId: runOrchestration
    x-write: true
    x-idempotent: false
    x-reversible: false
    x-agent-note: >-
      Consumes model and tool budget and appends a conversation turn. No idempotency key exists, so
      a blind retry after a timeout can duplicate the turn.
- target: $.paths['/api/chat'].post
  description: Suggest an operationId and label the streaming protocol.
  update:
    x-suggested-operationId: streamChat
    x-write: true
    x-idempotent: false
    x-stream-protocol: 'AI SDK UI Message Stream Protocol over SSE'
- target: $.paths['/api/chat/conversations'].get
  description: Suggest an operationId and label pagination.
  update:
    x-suggested-operationId: listConversations
    x-pagination-style: page-number
    x-pagination-params: [page, limit]
- target: $.paths['/api/chat/conversation/{session_id}'].get
  description: Suggest an operationId.
  update:
    x-suggested-operationId: getConversation
- target: $.paths['/api/chat/conversation/{session_id}'].patch
  description: Suggest an operationId and record that rename is self-reversing.
  update:
    x-suggested-operationId: renameConversation
    x-write: true
    x-reversible: true
    x-reversal: 'Re-PATCH with the prior title; last-write-wins.'
- target: $.paths['/api/chat/conversation/{session_id}'].delete
  description: Suggest an operationId and record the soft-delete without a published restore path.
  update:
    x-suggested-operationId: deleteConversation
    x-write: true
    x-destructive: true
    x-soft-delete: true
    x-reversal: null
    x-reversal-window: null
    x-agent-note: >-
      The provider describes this as a SOFT delete, but publishes no restore operation and states no
      retention window. Treat as irreversible from a caller's point of view.
- target: $.paths['/api/chat/conversation/export/{session_id}'].get
  description: Suggest an operationId.
  update:
    x-suggested-operationId: exportConversation
- target: $.paths['/upload-image'].post
  description: Suggest an operationId and flag the unauthenticated write.
  update:
    x-suggested-operationId: uploadImage
    x-write: true
    x-unauthenticated: true
    x-agent-note: >-
      This operation declares no security requirement while every conversation route requires a
      bearer JWT. It mints the image_id that analyze_dieline and analyze_pallet_pattern consume, and
      no delete-image operation is published.
- target: $.paths['/health'].get
  description: Suggest an operationId and note the detail level of the anonymous response.
  update:
    x-suggested-operationId: getHealth
    x-unauthenticated: true
    x-agent-note: >-
      Returns detailed internals anonymously — database pool statistics, Pinecone index name,
      feature-flag state and auth_enabled. Useful for liveness; more disclosure than a health probe
      usually carries.
- target: $.paths['/ready'].get
  description: Suggest an operationId.
  update:
    x-suggested-operationId: getReadiness
    x-unauthenticated: true