For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
  • Getting Started
    • Introduction
    • Getting Started
    • Tia — Operations Assistant
    • Architecture
    • Security Architecture
  • Onboarding & Plans
    • Onboarding Overview
    • Plans & Subscriptions
    • Tia Credits
  • Tenancy & Governance
    • Roles & Members
    • Audit Log
    • Notifications
    • Economic Operators
  • Authoring Studios
    • Content Studio
    • Theme Studio
    • Advanced Studio (Track B)
  • Product Module
    • Products
    • Custom Fields
    • Global Search
    • Identifiers
    • Product Import
    • Bulk Editing
    • Bulk Updates
    • Resolver & GS1 Digital Link
    • GS1 Digital Link Contract
  • Localisations
    • Overview
    • Market Packs
    • Multilingual Content
  • Domains & Custom Hostnames
    • Domain Architecture
    • Resolver Domain Flow
    • Custom Hostname Setup
    • DNS Setup Guide
    • Resolver & Passport Rendering
    • Custom Hostname Lifecycle
    • Troubleshooting
  • Passports
    • Overview
    • Passport Operations
    • Lifecycle States
    • Controlled Update & Break-Glass
    • Content & Templates
    • Themes & Presentation
    • Consumer Experience
    • Publication Lifecycle
    • Brand Setup & Readiness
    • Drafts
  • Passport Intelligence
    • Passport Intelligence
    • Intelligence Overview
    • Scan Visibility
    • Trust Signals
    • Engagement Insights
    • Investigation Timelines
    • Data & Privacy
    • Roadmap
  • Minting
    • Overview
    • Lifecycle
    • Architecture
    • Limits & Performance
    • Token Preview
    • Exports & Print Jobs
    • Carrier Output Profiles
    • Bring-Your-Own Serials
    • Security
    • FAQ
  • API Reference
    • API Credentials Guide
    • API: Credentials
    • API: Products
    • API: Identifiers
    • API: Import
    • API: Batches
    • API: Attachments
    • API: Bulk Updates
    • API: Minting
    • API: Resolver
    • API: Search
On this page
  • What It Does
  • Who It’s For
  • Reading Identifiers
  • list_product_identifiers
  • Writing Identifiers
  • set_product_identifier
  • Limits & Notes
  • FAQ
API Reference

API: Identifiers

Was this page helpful?
Previous

API: Import

Next
Built with

What It Does

The Identifiers API provides two RPCs for managing product identifiers: one for reading all identifiers (active and retired) and one for creating or updating identifiers.

Who It’s For

API integrators and automated systems that need to manage product identifiers programmatically.

Reading Identifiers

list_product_identifiers

Returns all identifiers for a product, including both active and retired entries.

Required inputs:

ParameterTypeDescription
_brand_idUUIDThe brand the product belongs to
_product_idUUIDThe product to query

What it returns:

A JSON object containing:

1{
2 "ok": true,
3 "product_id": "<uuid>",
4 "identifiers": [
5 {
6 "identifier_type": "gtin",
7 "identifier_value": "05060012345678",
8 "identifier_value_normalized": "05060012345678",
9 "status": "active",
10 "created_at": "2026-01-15T10:00:00Z",
11 "created_by": "<uuid>",
12 "deactivated_at": null,
13 "deactivated_by": null
14 }
15 ]
16}

Key details:

  • Results are ordered: active identifiers first, then most recently retired.
  • Numeric types (GTIN, EAN, UPC) include both identifier_value (raw stored value) and identifier_value_normalized (digits-only presentation value).
  • SKU values have the same raw and normalised value.

Authentication: Required. The caller must be authenticated and have access to the specified brand.

Writing Identifiers

set_product_identifier

Creates or updates an identifier for a product. If an active identifier of the same type already exists, it is retired and replaced.

Required inputs:

ParameterTypeDescription
_brand_idUUIDThe brand the product belongs to
_product_idUUIDThe product to update
_identifier_typeStringOne of: sku, gtin, ean, upc
_raw_valueStringThe new identifier value

What it returns:

1{
2 "ok": true,
3 "product_id": "<uuid>",
4 "identifier_type": "gtin",
5 "identifier_value": "05060012345678",
6 "status": "active"
7}

Key details:

  • SKU: routed through the SKU alias swap mechanism with case-insensitive uniqueness.
  • GTIN / EAN / UPC: routed through the numeric alias helper with digits-only normalisation.
  • The previous active identifier (if any) is automatically retired.
  • Cached fields (products.sku, products.gtin) are updated automatically via write-through.

Authentication: Required. The caller must be authenticated and hold an admin role for the specified brand.

Limits & Notes

  • Both RPCs require authentication; they are not callable by unauthenticated or anonymous users.
  • Write access requires the admin role — read access requires brand membership.
  • Identifier type is case-insensitive on input but stored in a canonical form.
  • An identifier value cannot be shared across products within the same brand and type while active.

FAQ

Can I read identifiers without admin access?

Yes. list_product_identifiers requires brand access (any role), not specifically admin.

What happens if I set the same value that's already active?

The operation is idempotent for the same value — no unnecessary retire/create cycle occurs.

Can I reactivate a retired identifier?

Not directly via this API. Setting the same value again effectively creates a new active entry.