MikMak · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the MikMak Commerce API (v1)

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

What the actions change

operationIdx-notex-location-constraintcontactx-api-evangelist-notex-issuancex-token-urlx-authorization-url

Targets 13

$.info
$.paths['/commerce/v1/products/{id}'].get
$.paths['/commerce/v1/search/products'].get
$.paths['/commerce/v1/products/facet'].get
$.paths['/commerce/v1/availabilities/{id}'].get
$.paths['/commerce/v1/availabilities/cart/{id}'].get
$.paths['/commerce/v1/productcatalog/offers/models/{id}'].get
$.paths['/commerce/v1/experiences'].get
$.paths['/commerce/v1/experiences/config/{id}'].get
$.components.securitySchemes.ApiKeyAuth
$.components.securitySchemes.JWTBearerAuth
$.components
$.tags

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the MikMak Commerce API (v1)
  version: 1.0.0
extends: ../openapi/mikmak-commerce-api-openapi.yml
x-provenance:
  generated: '2026-08-12'
  method: generated
  source: >-
    Enhancements over the provider's own spec. The base document was assembled verbatim from the
    per-operation OpenAPI 3.0.0 blocks MikMak publishes on its ReadMe reference pages
    (https://docs.mikmak.ai/reference/get_commerce-v1-*.md); the eight slices merged with zero
    conflicting definitions. Ownership confirmed - servers[] is https://api.mikmak.ai, the
    ReadMe project name is "MikMak", and the Insights API is served live from the same host.
  base_spec_operations: 8
  note: >-
    The original is never mutated. This overlay records what MikMak's published contract is
    missing - operationIds on every operation, a documented error body, a 429 response, and the
    one-of location constraint the MCP layer enforces but the REST spec does not express.
actions:
  - target: $.info
    description: Record the contract's real base and contact posture.
    update:
      contact:
        name: MikMak
        url: https://docs.mikmak.ai/reference/mikmak-headless-commerce-api
      x-api-evangelist-note: >-
        Use of this API requires explicit contractual approval from MikMak's Commercial teams;
        deployment on third-party sites or unauthorized resellers is prohibited.
  - target: $.paths['/commerce/v1/products/{id}'].get
    description: Add the missing operationId.
    update:
      operationId: getProducts
  - target: $.paths['/commerce/v1/search/products'].get
    description: Add the missing operationId.
    update:
      operationId: searchProducts
  - target: $.paths['/commerce/v1/products/facet'].get
    description: Add the missing operationId.
    update:
      operationId: getProductFacets
  - target: $.paths['/commerce/v1/availabilities/{id}'].get
    description: Add the missing operationId.
    update:
      operationId: getAvailabilities
  - target: $.paths['/commerce/v1/availabilities/cart/{id}'].get
    description: Add the missing operationId.
    update:
      operationId: getCartAvailabilities
  - target: $.paths['/commerce/v1/productcatalog/offers/models/{id}'].get
    description: Add the missing operationId.
    update:
      operationId: getModelOffers
  - target: $.paths['/commerce/v1/experiences'].get
    description: Add the missing operationId.
    update:
      operationId: listExperiences
  - target: $.paths['/commerce/v1/experiences/config/{id}'].get
    description: Add the missing operationId.
    update:
      operationId: getExperienceConfig
  - target: $.components.securitySchemes.ApiKeyAuth
    description: Record that the key is issued out of band and is server-side only.
    update:
      x-issuance: manual
      x-note: >-
        Issued by a MikMak representative at onboarding. There is no self-service signup. The
        provider's documentation forbids using this key in frontend, mobile or client-side
        JavaScript.
  - target: $.components.securitySchemes.JWTBearerAuth
    description: Record the OAuth endpoints that back this bearer token.
    update:
      x-token-url: https://api.mikmak.ai/commerce/v1/oauth/token
      x-authorization-url: https://api.mikmak.ai/commerce/v1/authorize
      x-grants:
        - client_credentials
        - authorization_code
        - refresh_token
      x-note: >-
        MikMak's token endpoint accepts a JSON body rather than the form-encoded body RFC 6749
        specifies. See authentication/mikmak-authentication.yml.
  - target: $.paths['/commerce/v1/availabilities/{id}'].get
    description: Express the one-of location rule the MCP layer enforces but the spec omits.
    update:
      x-location-constraint:
        rule: exactly-one-of
        options:
          - [postal_code, country]
          - [latitude, longitude]
        enforcement: >-
          Rejected by the MCP server's input-schema validation with "Do not mix location
          methods." Not expressed in this OpenAPI.
  - target: $.paths['/commerce/v1/products/{id}'].get
    description: Express the same one-of location rule on product detail.
    update:
      x-location-constraint:
        rule: exactly-one-of
        options:
          - [postal_code, country]
          - [latitude, longitude]
  - target: $.components
    description: >-
      Contribute the error and rate-limit contract MikMak documents in prose but does not put in
      the spec. Every 4xx/5xx in the base document has a description and no content schema.
    update:
      schemas:
        ProblemDetails:
          type: object
          description: >-
            RFC 7807 problem document, as returned by the MikMak Commerce MCP Server and
            verified live on 2026-08-12. Contributed by API Evangelist; the Commerce REST
            surface declares no error body of its own.
          properties:
            type:
              type: string
            title:
              type: string
            status:
              type: integer
            detail:
              type: string
            instance:
              type: string
            code:
              type: string
              enum:
                - AUTH_UNAUTHORIZED
                - MIKMAK_UNAUTHORIZED
                - MIKMAK_FORBIDDEN
                - RATE_LIMITED
            source:
              type: string
      headers:
        X-Request-Id:
          description: Client-supplied trace id echoed into MikMak server logs; generated server-side when absent.
          schema:
            type: string
        X-RateLimit-Limit:
          description: The active cap for this caller.
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left in the current window. Returned on 2xx as well as 429.
          schema:
            type: integer
        Retry-After:
          description: Seconds to wait before retrying after a 429.
          schema:
            type: integer
      responses:
        TooManyRequests:
          description: >-
            Rate cap exceeded. Documented by MikMak with body code RATE_LIMITED, but not
            declared on any operation in the base spec.
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
  - target: $.tags
    description: Declare the tag set the operations already use but the document never defines.
    update:
      - name: Product
        description: Product metadata lookup by GTIN/UPC/EAN.
      - name: Product Search
        description: Free-text and filtered product search with server-controlled pagination.
      - name: Facet
        description: Product facets and productId selection.
      - name: Availabilities
        description: Location-scoped retailer availability, price, stock and delivery mode.
      - name: Cart
        description: Store-grouped multi-product cart availability with per-store totals.
      - name: Offers
        description: Online and local retailer offers for a manufacturer model.
      - name: Experiences
        description: Experience listing and configuration metadata.