Skip to main content
Programmatic equivalent of two dashboard pages: a product’s Resolver behavior page (products/<gtin>/resolver-behavior/) and the organization’s Resolver products list (resolver/products/), where each product’s resolver enrollment is switched on or off.

When to use

  • A brand owner wants expired scans of a product (a past use-by or best-before date in the scanned link) handled differently: a notice, or a redirect.
  • A brand owner wants unknown serials of a product to show an unverified-unit page instead of falling back to the product page.
  • A brand owner wants to declare the product’s shelf life, put it behind an 18+ age gate, or turn enhanced resolution on or off.
  • A brand owner wants to enroll a product in the resolver, or take it out.
Where a scan goes is decided by resolution rules (manage-resolution-rules), not here.

Auth

X-API-Key header or OAuth token. Reading needs view access to the organization. Writing needs an OWNER, MANAGER or EDITOR of the organization (or an API key with the EDITOR role or above); anyone else gets 403.

Flow

{gtin} is the product’s GTIN (8 to 14 digits; it is normalized to GTIN-14). A product that does not belong to one of the organization’s brands is 404.
  • GET — the product’s enrollment (resolver_enabled, resolver_enabled_at) and every behavior control below.
  • PATCH — send only the fields to change; a field left out keeps its value. The whole update applies or none of it does: one refused value is a 422 and nothing is stored.
  • PUT resolver-enabled — body {"enabled": true} or {"enabled": false}. It sets the state rather than toggling it, so repeating a request changes nothing. Free on every plan.

Behavior controls

Enrollment

resolver_enabled is the product’s resolver enrollment: its billable unit. While it is off, the product’s lots and serials are not billable either (their own flags are kept) and enhanced resolution cannot be turned on. It does not stop scans from resolving: a product that is not enrolled still resolves.

Verify

  1. GET the product’s resolver behavior and confirm every field you changed holds the value you sent, and that nothing you did not mean to change moved.
  2. For an expiry or serial-policy change, resolve a scan that exercises it (MCP tool resolve_gtin, or GET /01/<gtin>/10/<lot>?17=<past date> or GET /01/<gtin>/21/<serial> without following redirects) and read the Location header of the redirect.

Notes

  • Resolution rules are manage-resolution-rules.