FinditParts · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the FinditParts Reseller API

10 actions 10 updates update extends openapi/finditparts-reseller-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for FinditParts's API. It is a proposal applied on top of the contract, not a document FinditParts publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-notex-apievangelist-riskx-apievangelist-profilex-apievangelist-contract-provenancex-apievangelist-artifactsx-apievangelist-gapsx-apievangelist-strengthsx-apievangelist-contract-defect

Targets 8

$.info
$.servers[0]
$.components.securitySchemes.resellerJWT
$.components.schemas.ApiError
$.paths['/carts/{cart_id}/complete_with_credit_card'].post
$.paths['/carts/{cart_id}/complete_with_corporate_billing'].post
$.paths['/partners/place_order'].post
$.paths['/products'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the FinditParts Reseller API
  version: 1.0.0
extends: openapi/finditparts-reseller-api-openapi.yml
x-generated: '2026-08-12'
x-method: generated
x-source: >-
  API Evangelist enrichment pipeline. Captures the annotations API Evangelist adds on
  top of the contract derived from the first-party FinditParts Postman collection. The
  derived OpenAPI is never mutated in place; this overlay is the record of what we
  added and why.
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://apis.io/provider/finditparts/
    x-apievangelist-contract-provenance: >-
      Derived from the first-party public Postman collection "FinditParts Reseller API
      2.0.1" at https://api-docs.finditparts.com/, saved verbatim at
      postman/finditparts-reseller-api-postman.json. FinditParts publishes no OpenAPI.
    x-apievangelist-artifacts:
      authentication: authentication/finditparts-authentication.yml
      errors: errors/finditparts-error-codes.yml
      conventions: conventions/finditparts-conventions.yml
      data-model: data-model/finditparts-data-model.yml
      lifecycle: lifecycle/finditparts-lifecycle.yml
      components: components/finditparts-components.yml
      rate-limits: rate-limits/finditparts-rate-limits.yml
      plans: plans/finditparts-plans-pricing.yml
      skills: skills/_index.yml
      mcp: mcp/finditparts-mcp.yml
      agentic-access: agentic-access/finditparts-agentic-access.yml
- target: $.info
  update:
    x-apievangelist-gaps:
    - No OpenAPI published by the provider.
    - No idempotency key on any write, including the four order-placing operations.
    - No RFC 9457 problem details; a proprietary {errno, message} envelope that also
      rides on 200 responses.
    - No published rate limits and no rate-limit response headers.
    - No status page, no changelog, no deprecation policy, no SLA.
    - No /.well-known/ surface at all; security.txt absent.
    - No first-party SDK in any package registry.
    - No published compliance program despite the API accepting card payment nonces.
- target: $.info
  update:
    x-apievangelist-strengths:
    - A complete, hand-authored llms.txt plus a machine-readable llms.json companion —
      rarer and better than most of the catalog.
    - A fully public, richly described API reference with worked JWT payloads per flow.
    - Every operation ships a real example response payload.
    - PIES (Auto Care Association) product data exposed through the API.
    - HSTS with a two-year max-age, SPF, and DMARC at policy reject.
- target: $.servers[0]
  update:
    x-apievangelist-note: >-
      Sole host. FinditParts publishes no sandbox host; the JWT examples sign with an
      iss of "acme-corp-sandbox", which suggests sandbox reseller client IDs exist, but
      the provider documents no test environment.
- target: $.components.securitySchemes.resellerJWT
  update:
    x-apievangelist-note: >-
      Per-request signing. The JWT is the request envelope, not just a credential — the
      sub claim selects the customer and the data.intent claim selects the operation
      mode, so the same endpoint returns different pricing for different tokens.
- target: $.components.schemas.ApiError
  update:
    x-apievangelist-note: >-
      This envelope is returned on 200 as well as on errors. Treat errno != 0 as a
      failure regardless of HTTP status.
- target: $.paths['/carts/{cart_id}/complete_with_credit_card'].post
  update:
    x-apievangelist-risk: >-
      Irreversible commercial write with no idempotency contract. A retry after a
      network timeout may duplicate the order; reconcile with searchOrders instead of
      retrying.
- target: $.paths['/carts/{cart_id}/complete_with_corporate_billing'].post
  update:
    x-apievangelist-risk: >-
      Irreversible commercial write with no idempotency contract. Reconcile rather than retry.
- target: $.paths['/partners/place_order'].post
  update:
    x-apievangelist-risk: >-
      Irreversible commercial write with no idempotency contract.
    x-apievangelist-contract-defect: >-
      The provider's own published 200 example for this operation returns a
      shipping_methods envelope rather than an order or cart. Carried through as
      published; likely an error in the FinditParts documentation.
- target: $.paths['/products'].get
  update:
    x-apievangelist-note: >-
      Returns list price when the JWT carries no sub, and account_price when it carries
      a Customer Reference sub with data.intent PRODUCT_SEARCH. The response shape does
      not announce which pricing basis was applied.