Agco · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the AGCO ATS API

5 actions 5 updates documentation extends ../openapi/agco-ats-api-openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Agco's API. It is a proposal applied on top of the contract, not a document Agco publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-notetitledescriptioncontactx-api-evangelist-notex-conventionsx-error-catalogx-data-model

Targets 5

$.info
$
$.securityDefinitions
$.definitions['API.Models.ApiError']
$.paths['/api/v2/AftermarketServices/ECUs/{serialNumber}'].put

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the AGCO ATS API
  version: 1.0.0
extends: ../openapi/agco-ats-api-openapi.json
x-provenance:
  generated: '2026-09-04'
  method: generated
  source: >-
    Authored by API Evangelist against the AGCO ATS contract fetched verbatim from
    https://secure.agco-ats.com/swagger/docs/v1 on 2026-09-04. This overlay carries OUR annotations
    only — it is applied on top of AGCO's document and never mutates it. Every statement below is
    either a fact read out of the contract or an observation recorded elsewhere in this repository
    with its own evidence.
  author: API Evangelist (https://apievangelist.com) — third-party profile, not AGCO.
actions:
  - target: $.info
    description: >-
      AGCO's document declares only version "v1" and title "API". Name the surface and say what it is,
      so a consumer or an agent reading the spec alone can tell which AGCO system this is.
    update:
      title: AGCO Technical Support (ATS) API
      description: >-
        The API behind AGCO's Electronic Diagnostic Tool (EDT) and its dealer software distribution
        platform. Covers dealer and client records, authorization codes and vouchers, software
        packages, update groups and subscriptions, a content submission and release pipeline, a build
        orchestration system, translation workflow, users/roles/permissions, and AGCO Power
        aftermarket services (ECU activation, engine production data, IQA injector codes). Credentials
        come from the AGCO EDT Support Portal; contact EDT_Support@agcocorp.com. There is no
        self-service signup.
      contact:
        name: AGCO EDT Support
        email: EDT_Support@agcocorp.com
        url: https://www.agco-ats.com/
      x-api-evangelist-note: >-
        Annotation added by API Evangelist, not by AGCO. See
        https://github.com/api-evangelist/agco for provenance.
  - target: $
    description: >-
      Record the cross-cutting runtime semantics the contract does not express, so a client or agent
      does not have to infer them.
    update:
      x-conventions: ../conventions/agco-conventions.yml
      x-error-catalog: ../errors/agco-problem-types.yml
      x-data-model: ../data-model/agco-data-model.yml
      x-authentication: ../authentication/agco-ats-authentication.yml
      x-lifecycle: ../lifecycle/agco-lifecycle.yml
      x-conformance: ../conformance/agco-conformance.yml
      x-pagination:
        style: offset
        params: [limit, offset]
        envelope: API.PagedResponse[T] with required Metadata { TotalCount, Limit, Offset }
        applies_to: 64 collection operations
      x-idempotency:
        supported: false
        coverage: none
        note: >-
          153 mutating operations and no header parameter declared anywhere in the contract. A retried
          POST after a timeout creates a duplicate.
      x-reversibility:
        grade: documented
        note: >-
          Most DELETE operations are soft deletes the contract describes as "mark the delete flag" or
          "hide"; deleted records stay retrievable via includeDeleted and several models expose a
          writable IsDeleted the PUT can clear. No retention or restore window is stated anywhere.
      x-rate-limits:
        signaled: false
        note: No RateLimit-*, X-RateLimit-* or Retry-After header and no 429 response is declared.
  - target: $.securityDefinitions
    description: >-
      The document declares NO security schemes, so a client generated from it sends no credentials
      at all. Add the two mechanisms that are observable from the contract's own Authentication
      resource and the public login page. These are OUR annotations of an undocumented surface — the
      exact token transport is not published and is NOT asserted here.
    update:
      agcoOidc:
        type: oauth2
        flow: accessCode
        authorizationUrl: https://secure.agco-ats.com/api/v2/Authentication/OAuthRedirect
        tokenUrl: https://secure.agco-ats.com/api/v2/Authentication/OAuthUser
        scopes: {}
        description: >-
          Delegated OpenID Connect login. Observed from navigateToSSO() on
          https://www.agco-ats.com/login.aspx and from the OAuthRedirect / OAuthCallback / OAuthUser /
          OAuthCertificate operations in this contract. The issuer, its discovery document and its
          scopes are NOT published by AGCO — /.well-known/openid-configuration returns 404 on this
          host. Scopes are intentionally left empty rather than invented.
      agcoApiToken:
        type: apiKey
        in: header
        name: Authorization
        description: >-
          API tokens minted through POST /api/v2/Authentication and managed via
          PUT /api/v2/AuthenticatedUsers/{UserID}/Tokens. AGCO does not publish the header name or
          token prefix; `Authorization` is the conventional placement and is recorded here as an
          UNVERIFIED annotation, not as a documented fact.
  - target: $.definitions['API.Models.ApiError']
    description: >-
      Flag the untyped error contract. ErrorCode is an unenumerated int32 with no published mapping,
      which is this API's single largest error-handling gap.
    update:
      x-error-code-enumerated: false
      x-rfc9457: false
      x-note: >-
        Declared only on `default` responses; no 4xx or 5xx status code appears anywhere in the
        285-operation contract. There is no published error-code reference.
  - target: $.paths['/api/v2/AftermarketServices/ECUs/{serialNumber}'].put
    description: >-
      Mark the highest-consequence write in the contract so an agent or a generated client treats it
      as human-in-the-loop.
    update:
      x-consequence: high
      x-human-in-the-loop: true
      x-note: >-
        Activates, deactivates or reports as damaged a physical AGCO Power engine ECU. Deactivation
        reverses activation, but the contract states no path back from the Damaged state and no
        idempotency key protects a retry.