Infoworks · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Infoworks REST API v3

6 actions 6 updates documentation extends ../openapi/infoworks-rest-api-v3-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Infoworks's API. It is a proposal applied on top of the contract, not a document Infoworks publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

descriptioncontacttermsOfServicex-documentationx-api-referencex-product-version-at-capturex-vendorx-api-evangelist

Targets 5

$.info
$.servers[0]
$
$.tags[?(@.name=='Security')]
$.tags[?(@.name=='Job Hooks')]

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Infoworks REST API v3
  version: 1.0.0
extends: ../openapi/infoworks-rest-api-v3-openapi.yml
x-provenance:
  generated: '2026-08-23'
  method: generated
  source: >-
    Enhancements derived by API Evangelist from the provider's own published material — the REST API
    chapter at https://docs.infoworks.io/developer-resources/rest-api, the release notes, the PyPI
    package metadata for infoworkssdk, and Uniphore's published legal pages. Nothing here invents API
    behaviour; every value is traceable to a provider-published source. The original contract at
    openapi/infoworks-rest-api-v3-openapi.yml is never mutated.
actions:
- target: $.info
  description: >-
    Add the contact and terms metadata the published contract leaves empty (info.contact is literally
    `{}`), so a generated client can name a support route and a legal basis.
  update:
    contact:
      name: Infoworks Support (Uniphore)
      url: https://support.infoworks.io/support/home
      email: customer-engineering@infoworks.io
    termsOfService: https://www.uniphore.com/legal/msa/
    x-documentation: https://docs.infoworks.io/developer-resources/rest-api
    x-api-reference: https://docs.infoworks.io/infoworks-rest-api-v3/ref
    x-product-version-at-capture: 6.2.2
    x-vendor: Uniphore (acquired Infoworks, 2024)
- target: $.servers[0]
  description: >-
    Document what the templated server actually means. Infoworks is deployed into the customer's own
    cloud, so {host} is the customer's deployment; the spec's localhost:3001 default is the in-cluster
    service address, while the first-party Python SDK README uses https on port 443 for an
    ingress-fronted deployment.
  update:
    description: >-
      Per-deployment base URL. Infoworks runs in the customer's own cloud account (Kubernetes on
      AKS/EKS/GKE, or VM-based), so {host} and {port} are the customer's own values. Defaults
      (http/localhost/3001) are the in-cluster service address. For an ingress-fronted deployment use
      protocol=https and port=443, as the official Python SDK does.
- target: $
  description: >-
    Attach the derived artifact set so a consumer of the contract can reach the semantics the contract
    itself does not carry — error codes, conventions, reversibility, entity graph and auth flows.
  update:
    x-api-evangelist:
      authentication: authentication/infoworks-authentication.yml
      conventions: conventions/infoworks-conventions.yml
      errors: errors/infoworks-problem-types.yml
      data_model: data-model/infoworks-data-model.yml
      lifecycle: lifecycle/infoworks-lifecycle.yml
      conformance: conformance/infoworks-conformance.yml
      skills: skills/_index.yml
- target: $
  description: >-
    Record the measured contract-quality gaps as machine-readable findings rather than only in prose.
    These are counts taken from the document itself on 2026-08-23, not opinions.
  update:
    x-contract-findings:
      operations: 510
      paths: 369
      tags_declared: 41
      tags_used_on_operations: 62
      undeclared_tags: 21
      undeclared_tags_note: >-
        21 tags are applied to operations but never declared in the root tags[] array, so they carry no
        description and no ordering in any rendered reference.
      components_schemas: 0
      components_schemas_note: >-
        Every request and response body is inline. There is no reusable schema and no $ref graph, so no
        code generator can produce named models from this contract.
      operations_without_operation_id: 179
      duplicate_operation_ids: 13
      duplicate_operation_id_examples:
      - 'GetUsers — GET /admin/users AND GET /users'
      - 'deleteUserForAdmin — DELETE /admin/users/{user_id} AND DELETE /users/{user_id}'
      - 'listServiceAuth — GET /admin/manage-secrets/service-auth AND GET /engagement/data/aggregate (clearly wrong)'
      mislabelled_operation_ids:
      - 'DELETE /domains/{domain_id}/workflows/{workflow_id} carries operationId `submitJob`'
      - 'POST /sources/{source_id}/tables/source_tables carries operationId `getSourceTablesList`'
      unsafe_verb_choices:
      - 'GET /prodops/jobs/{job_id}/cancel — a state-changing cancel exposed as GET.'
      - 'GET /security/authenticate returns a bearer token from a GET.'
      status_code_anomalies:
      - '406 Not Acceptable is returned for failed authentication on /security/authenticate, where 401 is expected.'
      declared_error_help_links_dead: true
      declared_error_help_links_note: >-
        Every error response embeds help: http://api.infoworks.io/help/{iw_code}. api.infoworks.io does
        not resolve (NXDOMAIN, probed 2026-08-23), so every remediation link in the contract is dead.
- target: $.tags[?(@.name=='Security')]
  description: Give the auth tag the description the contract leaves empty, from the provider's own REST API chapter.
  update:
    description: >-
      Token minting, validation and revocation. Exchange HTTP Basic (username:password) or a refresh
      token from My Profile > Settings for a short-lived JWT (15 minutes by default), then send it as
      a bearer token. Also carries SAML SSO initiation and LDAP authorisation/sync.
- target: $.tags[?(@.name=='Job Hooks')]
  description: >-
    Disambiguate a tag whose name reliably misleads integrators — Job Hooks are NOT HTTP webhooks.
  update:
    description: >-
      Uploaded BASH or PYTHON scripts executed around job lifecycle events inside the deployment
      (multipart/form-data upload; execution_type enum [BASH, PYTHON]; optional failJobIfHookFails).
      These are in-process extensions, not outbound HTTP webhooks — Infoworks publishes no webhook or
      AsyncAPI event contract.