Impact GateDocs

Reference

Supported contracts and coverage

Prepare contracts for analysis and understand which evidence the current release can establish.

On this page

Supported inputs#

InputCurrent connected supportImportant boundary
Provider API contractsOpenAPI 3 documents in YAML or JSONDocuments need valid paths and resolvable local references; unsupported constructs leave gaps.
JavaScript / TypeScript consumersSupported HTTP client patterns such as fetch and axiosHighly dynamic URLs, indirect runtime configuration, or unresolved wrappers may not be mapped.
Java consumersSupported HTTP client patterns, including supported Spring clientsFramework support depends on recognizable source patterns; arbitrary reflection is not established.
Service identityRepository roots and supported package / Spring / deployment manifestsDiscovery may need review in monorepos or unusual layouts.
Runtime observationsNot connectedProduction caller counts and observation windows remain unknown.
External modelsNot enabledThe connected worker performs deterministic analysis.

Source-language support describes extraction capabilities, not complete support for every library or code pattern. Check repository Coverage and individual report notes for the actual result in your codebase.

Prepare a contract#

  1. Commit the document

    Keep the OpenAPI document in the selected provider repository on its default branch. openapi.yaml, openapi.yml, or a JSON document containing the openapi field are recognized examples.

  2. Use OpenAPI 3 and valid paths

    Include an OpenAPI 3 version and a valid paths object. Swagger 2 documents are not supported by the connected indexer.

  3. Bundle schema references

    Use resolvable local references such as #/components/schemas/Product. External references and unresolved references prevent a complete contract comparison.

  4. Describe the interface faithfully

    Include request parameters, required fields, responses, media types, and relevant security requirements. Update this contract when the implementation changes.

  5. Index and inspect

    Save repository selection or choose Re-index. Open Coverage, then inspect the endpoint and its schemas in API usage.

openapi.yaml
# Minimal illustrative provider contract.
openapi: 3.0.3
info:
  title: Product API
  version: 1.0.0
paths:
  /v1/products/{id}:
    get:
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product details
          content:
            application/json:
              schema:
                type: object
                required: [id, priceCents]
                properties:
                  id:
                    type: string
                  priceCents:
                    type: integer

This example illustrates document shape. Adapt it to your actual interface and normal contract validation process. Renaming the response field would change the contract, while a source-only rename without a matching contract update can leave drift unverified.

Examples of contract changes#

ChangeWhy it needs review
Remove an endpoint or response fieldA consumer may still request the endpoint or read the field.
Add a required request parameter or tighten a constraintPreviously accepted requests can become invalid.
Change a response type, media type, or success codeParsing and status handling assumptions can change.
Remove an accepted request enum valueExisting clients may still send that value.
Add a response enum valueConsumers with exhaustive handling may not understand it.
Change descriptions or operation metadataThese usually do not alter the HTTP interface; review actual document differences.

The report describes the detected change kind and its before/after values. The actual impact depends on consumer evidence and coverage; a breaking contract difference can be recorded even when no static caller was located.

Why coverage can be partial#

  • No supported provider document was found, or a document was invalid.
  • External or unresolved references prevented a complete contract comparison.
  • A repository contains source languages or client patterns outside supported extraction.
  • GitHub returned a truncated tree or an expected blob was unavailable.
  • A file exceeded the per-file budget, contained binary data, or was a symlink.
  • The repository or consumer analysis exceeded a processing budget.

Current repository collection uses a budget of 1,500 candidate files and approximately 24 MiB of declared file data, with a 500 KiB per-file cutoff. Contracts and manifests are prioritized before source when selecting files. Dependencies, build output, test/fixture directories, and lockfiles are excluded. These limits bound collection and do not promise exhaustive parsing of a repository.

Supported files, Skipped files, OpenAPI documents, and the notes under Coverage describe the saved result. Re-indexing can resolve a missing document or restored access, but it does not add support for an unsupported language.

What remains unknown#

  • Implementation behavior or removed routes that are not reflected in the supported contract.
  • Consumers outside selected, indexed repositories and clients maintained outside GitHub.
  • Production traffic volume and caller inactivity without runtime observations.
  • Deployment host associations for relationships inferred from endpoint paths.
  • Highly dynamic or reflective calls that static extraction cannot resolve.
  • Non-HTTP interfaces such as message queues, gRPC, and application-level WebSocket protocols.
  • Downstream effects beyond the code and relationship evidence actually inspected.

Explore the documentation

↑↓ NavigateEnter Open guideSearch stays in your browser