Channel identities

Configure stable product and variant identities for feeds, provider APIs, marketplaces, and attribution.

Channel identity endpoints are available only to an installed sales-channel app token. The installed, approved release declares which identifiers exist, whether each belongs to products or variants, and which sources the merchant may select. The app then configures installation-wide or catalog-context bindings and resolves stable values.

Generated means Tringify derives and persists a stable opaque ID for the owner inside this installation. App-assigned means the app supplies a provider-owned value through the values endpoint. Canonical ID uses the Tringify numeric product or variant id. SKU and metafield derive from merchant catalog data. No source silently falls back to another source, and no live value is silently overwritten: changes that alter identity require the explicit rekey operation.

All reads and writes are scoped from the app token to its store, app, installation, approved release, and sales channel. The API never accepts those authority identifiers from request bodies.

Endpoints#

Get identity contract

GET read_products

Get the installed release's identity declarations.

Returns the immutable identity declarations approved for the installed app release. Only an app token for that installation can read this contract.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

List catalog contexts

GET read_products

List this installation's catalog contexts.

Catalog contexts are app-defined partitions such as provider accounts or catalogs. They are opaque to Tringify and scoped to one app installation.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

Create a catalog context

POST write_products

Create an installation-scoped catalog context.

Creates an opaque catalog partition. Keys are stable snake_case identifiers. Metadata must be a JSON object.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
key required string

Stable snake_case context key.

Example: merchant_center
label required string

Merchant-facing context label.

Example: Google Merchant Center
metadata object

App-owned context metadata.

Example: {"account_id":"123456"}

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

Delete a catalog context

DELETE write_products

Delete an unused catalog context.

Deletion is rejected while any identity binding uses the context. Remove or reconfigure those bindings first.

Path parameters

Name Type Description
id required uuid

Catalog context id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

List identity bindings

GET read_products

List configured identity source bindings.

A binding selects one approved source for one declaration, either installation-wide or inside a catalog context.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

Configure an identity binding

PUT write_products

Select the source for an installed identity declaration.

Generated IDs are created by Tringify and remain stable for the installation. App-assigned IDs are supplied by the app through the values endpoint. SKU, canonical ID, and eligible string metafields are derived from catalog data. A code read from a SKU or metafield follows that value: when the merchant changes it, the platform replaces the code in the same save, keeps the old one as history, and sends your app channel_identities/rekeyed with both. Choosing a different source for a binding does not rewrite codes already in use; rekey them from the new source when you want them to change.

Path parameters

Name Type Description
declarationKey required string

Key from the installed identity contract.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
catalog_context_id uuid

Context id, or omit for an installation-wide binding.

Example: 8dcfed2c-caf8-4cf4-9904-31aac69ea66b
source required string

Approved source: generated, canonical_id, sku, metafield, or app_assigned.

Example: metafield
metafield_definition_id uuid

Required only for source=metafield. The definition must be a non-translatable string for the declared owner.

Example: e687a8f3-2c66-4999-b954-32fc9879eb40

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

List eligible metafield sources

GET read_products

List paginated metafields eligible as identity sources.

Returns only store-scoped, non-translatable string definitions for the requested product or variant owner.

Query parameters

Name Type Description
owner_type required string

Product or variant.

page integer

Page number; default 1.

limit integer

Page size from 1 to 100; default 20.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

Assign identity values

PUT write_products

Assign app-owned values to an app_assigned binding.

Writes up to 200 owner/value pairs atomically. Existing values are never overwritten implicitly; use rekey for an intentional change.

Path parameters

Name Type Description
id required uuid

Binding id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
values required array<object>

Rows containing owner_id and value.

Example: [{"owner_id":326,"value":"g_123"}]

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

Resolve identity values

POST write_products

Resolve and materialize identities for catalog owners.

Resolves up to 200 owner ids atomically from the configured source. Missing source values are returned as missing. Generated values and immutable aliases are materialized by this operation, so write_products is required.

Path parameters

Name Type Description
id required uuid

Binding id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
owner_ids required array<integer>

Product or variant ids, as declared by the binding.

Example: [326,331]

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

Rekey an identity value

POST write_products

Explicitly replace one mutable identity alias.

Retires the previous alias and writes the replacement atomically. Generated and canonical IDs cannot be rekeyed. For SKU and metafield sources, the current source value is used; app_assigned accepts value from the request.

Path parameters

Name Type Description
id required uuid

Binding id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
owner_id required integer

Product or variant id.

Example: 326
value string

Replacement value; required for app_assigned and ignored for derived sources.

Example: g_124

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

Rekey identity values from source

POST write_products

Explicitly replace mutable identity aliases in one batch from their configured metafield source.

Rekeys up to 200 product or variant owners atomically. Values are read from the binding's configured metafield source; callers cannot supply replacement values.

Path parameters

Name Type Description
id required uuid

Binding id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Body parameters

Name Type Description
owner_ids required array<integer>

Unique product or variant ids.

Example: [326,331]

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 CHANNEL_IDENTITY_SOURCE_NOT_ALLOWED

    The source is not allowed by the installed declaration.

  • 409 CHANNEL_IDENTITY_REKEY_REQUIRED

    The requested change would silently replace a live identity.

  • 409 CHANNEL_IDENTITY_VALUE_CONFLICT

    The value is already assigned to another owner in the binding.

Get identity diagnostics

GET read_products

Check identity source coverage and conflicts.

Returns every approved declaration, including declarations with no binding. Each row reports its merchant-facing label, whether it is required and configured, the selected source when configured, and source-aware resolved, missing, and conflicting counts. Use unconfigured required rows as blocking setup state before a feed or provider sync.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

List identity gaps

GET read_products

List the products or variants a binding cannot identify.

Lists the products or variants in the binding's scope whose identity cannot be sent, in ID order: the source has no value (missing), the value is longer than 255 characters (too_long), or another product or variant in the scope has the same value (duplicate). The diagnostics counts are computed from the same data, so the list and the counts agree. Show it to merchants so they can fill in or correct the source, such as the metafield the binding reads. Pass next_cursor as cursor to read the next page; it is empty on the last page. Generated and canonical sources have no gaps.

Path parameters

Name Type Description
id required uuid

Binding id.

Example: 4299a7a5-8f12-44fc-8963-f5c725e78de3

Query parameters

Name Type Description
reason string

Comma-separated reasons to list: missing, too_long, duplicate. Default: all three.

Example: missing,duplicate
product_status string

Only products with this status.

Allowed values
activedraftarchivedscheduled
search string

Matches the product title, variant title or SKU; up to 200 characters.

Example: die-cut
cursor string

next_cursor from the previous page.

limit integer

Page size from 1 to 100; default 50.

Headers

Name Type Description
Authorization required string

Bearer Store API token.

Errors

  • 401 UNAUTHORIZED

    Missing or invalid token.

  • 403 CHANNEL_IDENTITY_APP_TOKEN_REQUIRED

    The caller is not an installed app token.

  • 404 CHANNEL_IDENTITY_INSTALLATION_MISSING

    The app has no ready sales-channel installation in this store.

  • 400 INVALID_INPUT

    A query parameter is not valid; the error names the field.

  • 404 CHANNEL_IDENTITY_BINDING_MISSING

    The binding does not belong to this installation.