Graphiant · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Graphiant Portal REST API

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

What the actions change

x-apievangelist-slugx-apievangelist-enrichedx-apievangelist-sourcex-api-bundle-versionx-contact-docsx-api-referencex-status-pagex-sla

Targets 3

$.info
$.servers[0]
$.components.securitySchemes.jwtAuth

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Graphiant Portal REST API
  version: 1.0.0
extends: openapi/graphiant-portal-openapi-original.json
x-provenance:
  generated: '2026-08-01'
  method: generated
  source: openapi/graphiant-portal-openapi-original.json
  note: >-
    Captures the API Evangelist enrichment pass over the harvested Graphiant bundle
    without mutating it. The harvested spec is verbatim from
    Graphiant-Inc/graphiant-sdk-python@main api/graphiant_api_docs_v26.7.0.json. This
    overlay records catalog metadata, the runtime semantics Graphiant documents in prose
    but does not encode in the contract, and the three structural gaps the enrichment
    pass found — no operationIds, no tags, no operation summaries. It deliberately does
    NOT synthesise 525 operationIds or tag every operation: those are provider decisions,
    and inventing them here would create identifiers the provider does not honour.
actions:
- target: $.info
  update:
    x-apievangelist-slug: graphiant
    x-apievangelist-enriched: '2026-08-01'
    x-apievangelist-source: https://github.com/Graphiant-Inc/graphiant-sdk-python/blob/main/api/graphiant_api_docs_v26.7.0.json
    x-api-bundle-version: 26.7.0
    x-contact-docs: https://docs.graphiant.com/docs/graphiant-portal-rest-api
    x-api-reference: https://docs.graphiant.com/apidocs
    x-status-page: https://status.graphiant.io/
    x-sla: https://docs.graphiant.com/docs/graphiant-service-level-agreements-sla
    x-trust-center: https://trust.graphiant.com/
    x-changelog: https://github.com/Graphiant-Inc/graphiant-sdk-python/blob/main/CHANGELOG.md
- target: $.info
  update:
    x-apievangelist-artifacts:
      authentication: authentication/graphiant-authentication.yml
      conventions: conventions/graphiant-conventions.yml
      errors: errors/graphiant-problem-types.yml
      lifecycle: lifecycle/graphiant-lifecycle.yml
      changelog: changelog/graphiant-changelog.yml
      data_model: data-model/graphiant-data-model.yml
      conformance: conformance/graphiant-conformance.yml
      packages: packages/graphiant-packages.yml
      cli: cli/graphiant-cli.yml
      webhooks: asyncapi/graphiant-notifications-webhooks.yml
      mcp: mcp/graphiant-mcp.yml
      tool_crosswalk: mcp/graphiant-tool-crosswalk.yml
      skills: skills/_index.yml
- target: $.info
  update:
    x-runtime-semantics:
      auth_model: opaque bearer token in the `authorization` header
      token_endpoint: POST /v1/auth/login
      token_lifetime_seconds: 1800
      token_refresh_endpoint: GET /v1/auth/refresh
      token_revocation_endpoint: POST /v1/auth/logout
      idempotency: none — no Idempotency-Key contract on any unsafe method
      pagination: none — list operations return the full collection
      rate_limit_signalling: none documented
      request_id_header: none
      error_envelope: 'proprietary: {errorCode, displayError, detailedError}'
      timestamp_encoding: protobuf Timestamp objects {seconds, nanos}, UTC — not RFC 3339
      async_writes: device configuration returns {jobId}; HTTP 200 means accepted, not
        applied
      tenancy: session-scoped enterprise context switched via GET /v1/auth/session
- target: $.info
  update:
    x-contract-gaps:
      operation_ids: 0 of 525 operations declare an operationId
      tags: 0 of 525 operations declare a tag; the document declares an empty tags array
      summaries: 0 of 525 operations declare a summary
      descriptions: 340 of 525 operations declare a description
      error_responses: only 24 of 525 operations declare any 4xx or 5xx response
      error_schemas: only 4 error responses reference a schema
      examples: no request or response examples at the operation level
      impact: >-
        Without operationIds the generated SDKs fall back to path-derived method names
        (v1_edges_summary_get), which become the de-facto operation identifiers used by
        the CLI, the SDKs, this catalog and any tool layer built on top. They are stable
        only while the path and method are stable.
      remediation_for_graphiant: >-
        Adding operationId, tags and summary to the source bundle would improve every
        downstream generated artifact at once — SDK method names, docs navigation, MCP
        tool naming — without any behavioural change to the API.
- target: $.servers[0]
  update:
    description: Graphiant Portal production API. Returns 403 to every anonymous
      request, including /.well-known/* paths.
- target: $.components.securitySchemes.jwtAuth
  update:
    x-token-endpoint: POST /v1/auth/login
    x-token-lifetime-seconds: 1800
    x-token-refresh: GET /v1/auth/refresh
    x-token-revocation: POST /v1/auth/logout
    x-token-format: opaque, `gr-auth-` prefix followed by two UUIDs
    x-single-header-warning: >-
      send exactly one Authorization header; the generated clients warn that setting
      both Configuration.api_key and the per-call authorization argument produces
      duplicate headers that some gateways reject with 400