Skip to content
Sandbox

Models

The objects the API receives and returns, how they fit together, and how the identifiers relate to each other: transaction, enrichment, idempotency key, attempt.

View as Markdown

Noryo Merchant API exchanges few objects, all described in the OpenAPI contract and in the API reference. This section presents them from the integrator's point of view: what each field guarantees, when it is present, and when it is null.

The map of objects

ObjectWhereContent
CreateRequestBody of POST /merchant/v1/enrichmentsdescriptor and the optional economic fields, plus external_transaction_id. See Formats.
RefreshRequestBody of POST …/refreshThe six economic fields, without external_transaction_id
Enrichment200 response of both POST routesenrichment_id, merchant, enrichment, usage. See Enrichment.
Stored result200 response of GETenrichment_id, merchant, enrichment, retrieval, original
MerchantThe merchant fieldname, category, logo_url, location, confidence. See Merchant.
LocationThe merchant.location fieldcity, postal_code, or null. See Location.
ProblemEvery error responsetype, title, status, code, detail, request_id. See Errors.
Enrichment
├── enrichment_id
├── merchant ─────── Merchant | null
│                    ├── name, category, logo_url, confidence
│                    └── location ── { city, postal_code } | null
├── enrichment ───── status, reason, environment, source, customized
└── usage ────────── billable, units, deduplicated, deduplicated_by

How the identifiers relate

Four identifiers circulate, each at its own scale:

IdentifierDesignatesChosen byLifetime
external_transaction_idAn economic transactionYouNo expiry
enrichment_idA frozen resultNoryoContent readable for 90 days, identity kept
Idempotency-KeyA request and its responseYou24 hours
Noryo-Request-IdAn HTTP attemptNoryoThat of your logs

How they relate:

  • A transaction has one or more enrichments: the first one, then one per refresh. One of them is its current result. See Lifecycle.
  • An Idempotency-Key designates a single request for 24 hours, hence at most one enrichment.
  • A request can give several attempts: each retry has its own Noryo-Request-Id, even when it returns the memorised response.
  • An enrichment without external_transaction_id belongs to no transaction: it is not deduplicated and cannot be refreshed.

Presence rules

  • merchant is always present: an object, or null when the status is not_found.
  • merchant.location is always present when merchant is an object: an object, or null.
  • merchant.category and merchant.logo_url are omitted when unknown.
  • enrichment.reason is always present: a reason, or null.
  • usage.deduplicated_by is always present: external_transaction_id, or null.

Write a client that ignores response fields it does not know, and that accepts an optional field being absent.

Published on 2026-10-08 21:04 UTC (version 1).

Was this page helpful?