VersusGame · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Versusgame API

4 actions 4 updates servers extends openapi/versusgame-openapi-original.json
Generated by API Evangelist Written by API Evangelist tooling for VersusGame's API. It is a proposal applied on top of the contract, not a document VersusGame publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-harvestedx-apievangelist-sourcex-apievangelist-providercontacttermsOfServicex-apievangelist-privacy-policyserversx-apievangelist-conventions

Targets 2

$.info
$

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Versusgame API
  version: 1.0.0
x-generated: '2026-08-02'
x-method: generated
x-source: openapi/versusgame-openapi-original.json
x-note: >-
  This overlay records API Evangelist's enhancements to the harvested Versusgame API document. It
  never mutates openapi/versusgame-openapi-original.json, which is the verbatim document served at
  https://api.versusgame.com/api-json. Every target below is a real construct in that document.
extends: openapi/versusgame-openapi-original.json
actions:
- target: $.info
  update:
    x-apievangelist-harvested: '2026-08-02'
    x-apievangelist-source: https://api.versusgame.com/api-json
    x-apievangelist-provider: versusgame
    contact:
      name: VersusGame
      url: https://www.versusgame.com/
    termsOfService: https://www.versusgame.com/terms
    x-apievangelist-privacy-policy: https://www.versusgame.com/privacy
- target: $
  update:
    servers:
    - url: https://api.versusgame.com
      description: >-
        Production. Added by API Evangelist - the harvested document ships an empty servers array,
        so no generated client can resolve a base URL without this.
- target: $.info
  update:
    x-apievangelist-conventions:
      idempotency:
        header: x-idempotency-key
        alternate_query_parameter: idempotencyKey
        required: true
        operations: 12
        artifact: conventions/versusgame-conventions.yml
      pagination:
        styles: [limit/offset, limit/skip, cursor, start]
        artifact: conventions/versusgame-conventions.yml
      versioning:
        scheme: uri-path
        tiers: [unversioned, v1, v2]
        artifact: lifecycle/versusgame-lifecycle.yml
      errors:
        envelope: '{message, error, statusCode}'
        problem_json: false
        artifact: errors/versusgame-problem-types.yml
- target: $.info
  update:
    x-apievangelist-gaps:
    - id: no-servers
      severity: high
      detail: 'servers[] is empty in the harvested document; the real base URL is https://api.versusgame.com.'
    - id: no-operation-summaries
      severity: high
      detail: 220 of 239 operations carry no summary, and 229 carry no description.
    - id: nestjs-operationids
      severity: medium
      detail: >-
        operationIds are framework-generated controller names (GamesCreatorController_findAll), not
        stable semantic ids; they leak internal class structure and change when a controller is renamed.
    - id: undeclared-errors
      severity: high
      detail: >-
        222 of 239 operations declare no 4xx/5xx response, and the real NestJS error envelope is not
        modelled in components.schemas.
    - id: sparse-examples
      severity: medium
      detail: >-
        18 schema-level `example` values appear across 286 component schemas; no operation declares a
        request or response example.
    - id: admin-surface-in-public-document
      severity: medium
      detail: >-
        /v1/admin/*, /superadmin/* and /internal/* operations are published in the same anonymously
        readable document as the consumer surface.
    - id: dual-idempotency-carrier
      severity: low
      detail: the same idempotency semantic is carried by a header on 10 operations and a query parameter on 2.