MikMak · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the MikMak Insights API
6 actions
6 updates
servers
extends
../openapi/mikmak-insights-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.
What the actions change
serverscontactx-api-evangelist-noteresponsesoperationIdx-notex-usage-pattern
Targets 5
$
$.info
$.components
$.paths['/reporting/authenticate'].post
$.tags
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the MikMak Insights API
version: 1.0.0
extends: ../openapi/mikmak-insights-api-openapi.yml
x-provenance:
generated: '2026-08-12'
method: generated
source: >-
Enhancements over the provider's own spec, harvested verbatim on 2026-08-12 from the live
Swagger UI bundle at https://api.mikmak.ai/reporting/docs (swagger-ui-init.js swaggerDoc,
OpenAPI 3.1.0, 15 operations, 52 schemas). Ownership confirmed - info.title is
"MikMak Insights API", the host is MikMak's own API domain, and the reference page at
https://docs.mikmak.ai/reference/mikmak-insights-api links directly to it.
note: >-
The original is never mutated. The most consequential gap this overlay records is that the
document has NO servers[] block at all, and declares no authentication or server errors on
any of its fourteen authenticated report operations.
actions:
- target: $
description: >-
Contribute the servers[] block the published document omits entirely. Without it, every
generated client has no base URL. The host is established by the document's own serving
location and by the /reporting path prefix on every operation.
update:
servers:
- url: https://api.mikmak.ai
description: Production. Contributed by API Evangelist; absent from the published document.
- target: $.info
description: Record where the contract lives and how access is obtained.
update:
contact:
name: MikMak
url: https://docs.mikmak.ai/reference/mikmak-insights-api
x-api-evangelist-note: >-
Credentials are tied to one account and issued by MikMak; each request returns only that
account's data. There is no self-service signup.
- target: $.components
description: >-
Contribute the auth and throttling responses the document never declares. Fourteen of the
fifteen operations require authentication yet declare only 200 and 422.
update:
responses:
Unauthorized:
description: >-
Missing or invalid credentials. Not declared on any operation in the base document.
content:
application/json:
schema:
type: object
TooManyRequests:
description: >-
Rate cap exceeded. Not declared in the base document and no limits are published for
this API; see rate-limits/mikmak-rate-limits.yml.
content:
application/json:
schema:
type: object
- target: $.paths['/reporting/authenticate'].post
description: Name the operation the base document leaves without an operationId.
update:
operationId: reportingAuthenticate
x-note: >-
The only unauthenticated operation on this API. Exchanges account credentials for a JWT
carrying access_token, token_type, expires_in and expires_at. Note this is a SEPARATE
authentication endpoint from the Commerce API's /commerce/v1/oauth/token - MikMak runs
two independent token surfaces.
- target: $.tags
description: Describe the three report families the operations are grouped into.
update:
- name: Authentication
description: Exchange account credentials for a reporting JWT.
- name: Custom Reports
description: >-
Field and filter discovery, then run or export a custom report. The general-purpose
path into Purchase Intent and Attributable Sales data.
- name: Historical Pricing Reports
description: Pricing intelligence fields, filters, query and export.
- name: Shoppable Recipe Reports
description: Shoppable recipe performance fields, filters, query and export.
- target: $.info
description: Record the discovery-and-run interaction pattern that governs this whole API.
update:
x-usage-pattern:
description: >-
Each report family follows the same three-step shape - call *_report_fields to learn
the available dimensions and metrics, call *_filters (or *_single_filter /
*_advanced_filters) to learn the valid filter values, then POST the report itself or
its /export variant. Every operation is a POST, including reads.
families:
- custom_report
- pricing_intelligence
- shoppable_recipe_report