The GraphQL types behind product identifier inference, validation, and lookup.
For how to use these operations, see Product identifiers. Fields are listed alphabetically. Decimal, DateTime, and Mode are standard Zonos scalars and enums.
Coming soon: The product identifiers API is not yet available. The types on this page describe the API as it will launch. Workflow steps for catalog item workflows are also coming soon and are not shown here.
typeMutation{"Identify the manufacturer product ID of each product, up to 25 products per call."
manufacturerProductIdsInfer("Products to identify; results are returned in the same order."input:[ManufacturerProductIdInferInput!]!):[ManufacturerProductIdInference!]!"Check whether supplied product IDs belong to each product, up to 25 products per call."
manufacturerProductIdsValidate("Products and IDs to check; results are returned in the same order."input:[ManufacturerProductIdValidateInput!]!):[ManufacturerProductIdValidation!]!}typeQuery{"Look up one manufacturer product ID inference by id."
manufacturerProductIdInference(id: ID!): ManufacturerProductIdInference
"Look up one manufacturer product ID validation by id."
manufacturerProductIdValidation(id: ID!): ManufacturerProductIdValidation
}
The product details and identifiers you send to inference and validation.
Inputs
GraphQL
"A product to identify."input ManufacturerProductIdInferInput {"Brand the product is sold under."brand: String
"Category hierarchy, most general first, e.g. [\"Toys & Hobbies\", \"Trading Cards\"]."categories:[String!]"Full product description, with item specifics as newline-separated `Key: Value` lines."description: String
"GTIN (UPC, EAN, JAN, or ISBN) of any length; considerably improves results when known."globalTradeItemNumber: String
"Product name or listing title."name: String!"Your identifier for the product, echoed back unchanged."productId: String
}"A product and the IDs to check against it; send `manufacturerProductId`, a GTIN, or both."input ManufacturerProductIdValidateInput {"Brand the product is sold under."brand: String
"Category hierarchy, most general first."categories:[String!]"Full product description, with item specifics as newline-separated `Key: Value` lines."description: String
"GTIN (UPC, EAN, JAN, or ISBN) to check, of any length."globalTradeItemNumber: String
"Part number or composite product ID to check; case, spaces, and hyphens are ignored."manufacturerProductId: String
"Product name or listing title."name: String!"Your identifier for the product, echoed back unchanged."productId: String
}
Returned by manufacturerProductIdsInfer, one result per input, in input order.
Inference
GraphQL
"The manufacturer product ID identified for one product."type ManufacturerProductIdInference {"Close but unchosen products for review, most likely first; may be non-empty for any status."alternates:[ManufacturerProductIdAlternate!]!"Echo of the input `brand`."brand: String
"Echo of the input `categories`; empty when none were sent."categories:[String!]!"Probability (0.0–1.0) that `status`, and `product` when returned, are correct."confidenceScore: Decimal!"When this result was created."createdAt: DateTime!"Who created this result."createdBy: ID!"Echo of the input `description`."description: String
"Echo of the input `globalTradeItemNumber`."globalTradeItemNumber: String
"Unique identifier of this result, prefixed with `manufacturer_product_id_inference_`."id: ID!"Whether the request ran in live or test mode."mode: Mode!"Echo of the input `name`."name: String!"Organization that requested this result."organization: ID!"The identified product; null unless `status` is MATCHED."product: ManufacturerProduct
"Echo of the input `productId`."productId: String
"Which case applies to the product; branch on this field."status: ManufacturerProductIdInferenceStatus!"When this result was last updated."updatedAt: DateTime!"Who last updated this result."updatedBy: ID!}"Which case applies to a product; advisory, so you decide the consequence of each value."enum ManufacturerProductIdInferenceStatus {"One product was identified with confidence; see `product`."
MATCHED
"A specific product is described, but none could be identified with confidence."
NO_MATCH
"The details are too generic to identify a specific product."
INSUFFICIENT_INFORMATION
}"A close, but not chosen, product."type ManufacturerProductIdAlternate {"The candidate product."product: ManufacturerProduct!"Probability (0.0–1.0) that this is the product."probabilityMass: Decimal!}
Returned by manufacturerProductIdsValidate, one result per input, in input order.
Validation
GraphQL
"Whether supplied product IDs belong to one product."type ManufacturerProductIdValidation {"Echo of the input `brand`."brand: String
"Echo of the input `categories`; empty when none were sent."categories:[String!]!"When this result was created."createdAt: DateTime!"Who created this result."createdBy: ID!"Echo of the input `description`."description: String
"Echo of the input `globalTradeItemNumber`."globalTradeItemNumber: String
"How well `globalTradeItemNumber` fits the product; null when no GTIN was sent."globalTradeItemNumberMatch: ProductIdentifierMatch
"Unique identifier of this result, prefixed with `manufacturer_product_id_validation_`."id: ID!"Echo of the input `manufacturerProductId`, exactly as supplied."manufacturerProductId: String
"How well `manufacturerProductId` fits the product; null when none was sent."manufacturerProductIdMatch: ProductIdentifierMatch
"Which kind of ID `manufacturerProductId` is; null for a placeholder such as \"N/A\"."manufacturerProductIdType: ManufacturerProductIdType
"Whether the request ran in live or test mode."mode: Mode!"Echo of the input `name`."name: String!"Organization that requested this result."organization: ID!"Echo of the input `productId`."productId: String
"Likelier products, most likely first; empty when all supplied IDs are judged the same product."suggestions:[ManufacturerProductIdAlternate!]!"When this result was last updated."updatedAt: DateTime!"Who last updated this result."updatedBy: ID!}"How well one supplied identifier matches a product."type ProductIdentifierMatch {"Probability (0.0–1.0) that the identifier belongs to the product."probability: Decimal!"How well the ID fits the product; branch on this field."verdict: ProductIdentifierMatchVerdict!}"How well a supplied ID fits a product; advisory."enum ProductIdentifierMatchVerdict {"The ID identifies the product; safe to accept without review."
DEFINITELY_SAME
"The ID probably identifies the product; accept, or review if your tolerance for error is low."
LIKELY_SAME
"The ID probably belongs to a different product; review it and check `suggestions`."
UNLIKELY_SAME
"The ID belongs to a different product; safe to reject."
DEFINITELY_NOT_SAME
"No verdict: the ID is malformed, a placeholder, or a seller SKU, or the details are too generic."
INDETERMINATE
}
"A product as identified by its manufacturer product ID and/or GTIN."type ManufacturerProduct {"Canonical brand, publisher, or issuer of the product, e.g. \"Apple\" or \"Pokémon\"."brand: String
"Known GTINs, as issued (8–14 digits), most common first; empty does not mean none exist."globalTradeItemNumbers:[String!]!"Manufacturer's part number, else a composite ID, else a GTIN if your settings allow; or null."manufacturerProductId: String
"Which kind of ID `manufacturerProductId` is; null when `manufacturerProductId` is null."manufacturerProductIdType: ManufacturerProductIdType
}"Which kind of ID a manufacturer product ID is."enum ManufacturerProductIdType {"The manufacturer's own part or model number, e.g. \"A2270\"."
MANUFACTURER
"An ID built from a product's defining attributes, e.g. \"tc:pkm:sv3pt5:199:en\"."
COMPOSITE
"A GTIN, used when the product has no other ID."
GLOBAL_TRADE_ITEM_NUMBER
}
Product identifiers schema
Product identifiers schema
The GraphQL types behind product identifier inference, validation, and lookup.
For how to use these operations, see Product identifiers. Fields are listed alphabetically.
Decimal,DateTime, andModeare standard Zonos scalars and enums.Operations
Two batch mutations and two lookup queries.
Operations
GraphQL
type Mutation { "Identify the manufacturer product ID of each product, up to 25 products per call." manufacturerProductIdsInfer( "Products to identify; results are returned in the same order." input: [ManufacturerProductIdInferInput!]! ): [ManufacturerProductIdInference!]! "Check whether supplied product IDs belong to each product, up to 25 products per call." manufacturerProductIdsValidate( "Products and IDs to check; results are returned in the same order." input: [ManufacturerProductIdValidateInput!]! ): [ManufacturerProductIdValidation!]! } type Query { "Look up one manufacturer product ID inference by id." manufacturerProductIdInference(id: ID!): ManufacturerProductIdInference "Look up one manufacturer product ID validation by id." manufacturerProductIdValidation(id: ID!): ManufacturerProductIdValidation }Inputs
The product details and identifiers you send to inference and validation.
Inputs
GraphQL
"A product to identify." input ManufacturerProductIdInferInput { "Brand the product is sold under." brand: String "Category hierarchy, most general first, e.g. [\"Toys & Hobbies\", \"Trading Cards\"]." categories: [String!] "Full product description, with item specifics as newline-separated `Key: Value` lines." description: String "GTIN (UPC, EAN, JAN, or ISBN) of any length; considerably improves results when known." globalTradeItemNumber: String "Product name or listing title." name: String! "Your identifier for the product, echoed back unchanged." productId: String } "A product and the IDs to check against it; send `manufacturerProductId`, a GTIN, or both." input ManufacturerProductIdValidateInput { "Brand the product is sold under." brand: String "Category hierarchy, most general first." categories: [String!] "Full product description, with item specifics as newline-separated `Key: Value` lines." description: String "GTIN (UPC, EAN, JAN, or ISBN) to check, of any length." globalTradeItemNumber: String "Part number or composite product ID to check; case, spaces, and hyphens are ignored." manufacturerProductId: String "Product name or listing title." name: String! "Your identifier for the product, echoed back unchanged." productId: String }Inference
Returned by
manufacturerProductIdsInfer, one result per input, in input order.Inference
GraphQL
"The manufacturer product ID identified for one product." type ManufacturerProductIdInference { "Close but unchosen products for review, most likely first; may be non-empty for any status." alternates: [ManufacturerProductIdAlternate!]! "Echo of the input `brand`." brand: String "Echo of the input `categories`; empty when none were sent." categories: [String!]! "Probability (0.0–1.0) that `status`, and `product` when returned, are correct." confidenceScore: Decimal! "When this result was created." createdAt: DateTime! "Who created this result." createdBy: ID! "Echo of the input `description`." description: String "Echo of the input `globalTradeItemNumber`." globalTradeItemNumber: String "Unique identifier of this result, prefixed with `manufacturer_product_id_inference_`." id: ID! "Whether the request ran in live or test mode." mode: Mode! "Echo of the input `name`." name: String! "Organization that requested this result." organization: ID! "The identified product; null unless `status` is MATCHED." product: ManufacturerProduct "Echo of the input `productId`." productId: String "Which case applies to the product; branch on this field." status: ManufacturerProductIdInferenceStatus! "When this result was last updated." updatedAt: DateTime! "Who last updated this result." updatedBy: ID! } "Which case applies to a product; advisory, so you decide the consequence of each value." enum ManufacturerProductIdInferenceStatus { "One product was identified with confidence; see `product`." MATCHED "A specific product is described, but none could be identified with confidence." NO_MATCH "The details are too generic to identify a specific product." INSUFFICIENT_INFORMATION } "A close, but not chosen, product." type ManufacturerProductIdAlternate { "The candidate product." product: ManufacturerProduct! "Probability (0.0–1.0) that this is the product." probabilityMass: Decimal! }Validation
Returned by
manufacturerProductIdsValidate, one result per input, in input order.Validation
GraphQL
"Whether supplied product IDs belong to one product." type ManufacturerProductIdValidation { "Echo of the input `brand`." brand: String "Echo of the input `categories`; empty when none were sent." categories: [String!]! "When this result was created." createdAt: DateTime! "Who created this result." createdBy: ID! "Echo of the input `description`." description: String "Echo of the input `globalTradeItemNumber`." globalTradeItemNumber: String "How well `globalTradeItemNumber` fits the product; null when no GTIN was sent." globalTradeItemNumberMatch: ProductIdentifierMatch "Unique identifier of this result, prefixed with `manufacturer_product_id_validation_`." id: ID! "Echo of the input `manufacturerProductId`, exactly as supplied." manufacturerProductId: String "How well `manufacturerProductId` fits the product; null when none was sent." manufacturerProductIdMatch: ProductIdentifierMatch "Which kind of ID `manufacturerProductId` is; null for a placeholder such as \"N/A\"." manufacturerProductIdType: ManufacturerProductIdType "Whether the request ran in live or test mode." mode: Mode! "Echo of the input `name`." name: String! "Organization that requested this result." organization: ID! "Echo of the input `productId`." productId: String "Likelier products, most likely first; empty when all supplied IDs are judged the same product." suggestions: [ManufacturerProductIdAlternate!]! "When this result was last updated." updatedAt: DateTime! "Who last updated this result." updatedBy: ID! } "How well one supplied identifier matches a product." type ProductIdentifierMatch { "Probability (0.0–1.0) that the identifier belongs to the product." probability: Decimal! "How well the ID fits the product; branch on this field." verdict: ProductIdentifierMatchVerdict! } "How well a supplied ID fits a product; advisory." enum ProductIdentifierMatchVerdict { "The ID identifies the product; safe to accept without review." DEFINITELY_SAME "The ID probably identifies the product; accept, or review if your tolerance for error is low." LIKELY_SAME "The ID probably belongs to a different product; review it and check `suggestions`." UNLIKELY_SAME "The ID belongs to a different product; safe to reject." DEFINITELY_NOT_SAME "No verdict: the ID is malformed, a placeholder, or a seller SKU, or the details are too generic." INDETERMINATE }Shared
Types used by both inference and validation.
Shared
GraphQL
"A product as identified by its manufacturer product ID and/or GTIN." type ManufacturerProduct { "Canonical brand, publisher, or issuer of the product, e.g. \"Apple\" or \"Pokémon\"." brand: String "Known GTINs, as issued (8–14 digits), most common first; empty does not mean none exist." globalTradeItemNumbers: [String!]! "Manufacturer's part number, else a composite ID, else a GTIN if your settings allow; or null." manufacturerProductId: String "Which kind of ID `manufacturerProductId` is; null when `manufacturerProductId` is null." manufacturerProductIdType: ManufacturerProductIdType } "Which kind of ID a manufacturer product ID is." enum ManufacturerProductIdType { "The manufacturer's own part or model number, e.g. \"A2270\"." MANUFACTURER "An ID built from a product's defining attributes, e.g. \"tc:pkm:sv3pt5:199:en\"." COMPOSITE "A GTIN, used when the product has no other ID." GLOBAL_TRADE_ITEM_NUMBER }Was this page helpful?