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 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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
List catalog contexts
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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
Create a catalog context
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. |
label
required
|
string |
Merchant-facing context label. |
metadata
|
object |
App-owned context metadata. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
Delete a catalog context
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. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
List identity bindings
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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
Configure an identity binding
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. |
source
required
|
string |
Approved source: generated, canonical_id, sku, metafield, or app_assigned. |
metafield_definition_id
|
uuid |
Required only for source=metafield. The definition must be a non-translatable string for the declared owner. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
List eligible metafield sources
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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
Assign identity values
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. |
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. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
Resolve identity values
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. |
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. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
Rekey an identity value
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. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
owner_id
required
|
integer |
Product or variant id. |
value
|
string |
Replacement value; required for app_assigned and ignored for derived sources. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
Rekey identity values from source
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. |
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. |
Errors
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400CHANNEL_IDENTITY_SOURCE_NOT_ALLOWEDThe source is not allowed by the installed declaration.
-
409CHANNEL_IDENTITY_REKEY_REQUIREDThe requested change would silently replace a live identity.
-
409CHANNEL_IDENTITY_VALUE_CONFLICTThe value is already assigned to another owner in the binding.
Get identity diagnostics
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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
List identity gaps
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. |
Query parameters
| Name | Type | Description |
|---|---|---|
reason
|
string |
Comma-separated reasons to list: missing, too_long, duplicate. Default: all three. |
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. |
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
-
401UNAUTHORIZEDMissing or invalid token.
-
403CHANNEL_IDENTITY_APP_TOKEN_REQUIREDThe caller is not an installed app token.
-
404CHANNEL_IDENTITY_INSTALLATION_MISSINGThe app has no ready sales-channel installation in this store.
-
400INVALID_INPUTA query parameter is not valid; the error names the field.
-
404CHANNEL_IDENTITY_BINDING_MISSINGThe binding does not belong to this installation.