Melorra · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Melorra Catalog API

7 actions 7 updates update extends ../openapi/melorra-catalog-api-openapi.yml
Derived by API Evangelist Built from the contracts Melorra publishes. Melorra did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-pagination-shapex-pagination-divergencex-observed-countx-access-modelx-write-surfacex-allow-headerx-verified-onx-contract-published-by-provider

Targets 7

$.info
$.paths.*.get
$.paths['/product/products/'].get
$.paths['/product/similar/'].get
$.paths['/product/product/'].get
$.components.schemas.Error
$.components.schemas.ProductImages

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Melorra Catalog API
  version: 1.0.0
x-apievangelist-generated: '2026-08-25'
x-apievangelist-method: generated
x-apievangelist-source: >-
  Derived from live probes of https://services-catalog.melorra.com/api on 2026-08-25 and from
  Melorra's published /.well-known/api-catalog and /llms.txt.
x-apievangelist-note: >-
  Captures API Evangelist's observations as an Overlay so the base description in
  openapi/melorra-catalog-api-openapi.yml is never mutated. These actions annotate the contract with
  what was verified on the wire — the read-only posture, the anonymous access model, the pagination
  divergences and the two endpoints that return 500.
extends: ../openapi/melorra-catalog-api-openapi.yml
actions:
- target: $.info
  description: Record the provenance and the verified access posture at the document root.
  update:
    x-access-model: anonymous-public
    x-write-surface: false
    x-allow-header: GET, HEAD, OPTIONS
    x-verified-on: '2026-08-25'
    x-contract-published-by-provider: false
    x-provider-machine-readable-docs:
    - https://www.melorra.com/.well-known/api-catalog
    - https://www.melorra.com/llms.txt
- target: $.paths.*.get
  description: Mark every operation read-only and safe, verified from the server Allow header.
  update:
    x-read-only: true
    x-safe: true
    x-idempotent: true
    x-requires-auth: false
- target: $.paths['/product/products/'].get
  description: >-
    Flag the pagination divergence and the broken documented filter on the primary listing endpoint.
  update:
    x-pagination-shape: results-is-object
    x-pagination-divergence: >-
      The provider's published api-catalog states the data is always inside `results`; here `results`
      is an object wrapping a `products` array rather than the array a consumer would infer.
    x-broken-parameters:
    - name: special_price__range
      documented_example: '10000,20000'
      observed_status: 500
    - name: trend
      documented_example: Classic
      observed_status: 200
      observed_count: 0
    x-facets-in-response: true
    x-observed-count: 21742
- target: $.paths['/product/similar/'].get
  description: Flag the strongest pagination divergence — no results member at all.
  update:
    x-pagination-shape: flat-top-level
    x-pagination-divergence: >-
      Contradicts the provider's stated contract outright — there is no `results` member; `products`
      and the media base paths sit at the top level beside count/next/previous.
    x-aliases-in-api-root:
    - products
    - recommended
    - similar
- target: $.paths['/product/product/'].get
  description: Record the third pagination shape and the missing per-SKU detail route.
  update:
    x-pagination-shape: results-is-array
    x-per-item-route-broken:
      path: /product/product/{sku}/
      observed_status: 500
      note: >-
        There is no working per-SKU route on this projection, so variant pricing for one product can
        only be reached by paging the whole collection.
    x-observed-count: 10000
- target: $.components.schemas.Error
  description: State plainly that this is not RFC 9457 and that 5xx is not JSON.
  update:
    x-rfc9457: false
    x-error-code-registry: false
    x-content-type-inconsistency: >-
      404 on a routed path returns application/json with this envelope; 500 returns an HTML Django
      error page, so a consumer cannot assume a JSON body on every response.
- target: $.components.schemas.ProductImages
  description: Warn that image paths are relative and unusable on their own.
  update:
    x-relative-paths: true
    x-join-required: >-
      Must be joined to base_image_path / base_video_path, which are returned in a sibling member of
      the response rather than on the product record itself.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/melorra-catalog-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.