参考文档 · v1
Itemoo Public Product Data API
附带来源信息的产品数据、schema.org JSON-LD、面向接收方的护照以及 GS1 Digital Link 解析器。无需密钥。
端点和字段的说明为英文——与 API 中的代码和字段名称一致。
简介
https://itemoo.eu
Read-only product data published by producers on Itemoo — no key needed. The same QR code serves a person (HTML page) and a machine (JSON). Every fact points to the document that proves it; machine data is never richer or poorer than the page a person sees.
Languages. ?lang=xx or Accept-Language; texts fall back to the brand default language.
Errors. { statusCode, error, code, params?, message } — rely on code. A code of a product that is no longer maintained returns 410.
Limits. Calls are rate-limited per IP address (429 when exceeded); responses are cacheable — respect Cache-Control.
Product data
Product data with provenance
get/q/{code}/data
无需密钥
Everything the human page shows, for machines: identity (GTIN, LOT, serial), product, facts with the document behind each, documents, FAQ, recall status and a trust section. Only the published version of the page is exposed. CORS is open (Access-Control-Allow-Origin: *); responses are cached for 5 minutes.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
langquery | string | Two-letter language; without it the Accept-Language header decides 示例: en |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
响应 200 · application/json
ProductData
identityProductIdentity必填字段 · ProductIdentity
codestring必填Itemoo code from the QR labellevel"unit" | "batch" | "variant" | "model"必填gtinstring | null必填skustring | null必填variantobject字段
labelstring必填catalogNostring | null必填
lotstring | null必填serialstring | null必填expiresAtstring (date-time) | null必填statusstring必填Batch status: ACTIVE | RECALLED | …uniqueProductIdentifierstring必填Unique product identifier of this code (EN 18219:2026): GS1 Digital Link with the batch and serial number of the code level, or the code address/q/{code}without a GTIN
productProductSummary必填字段 · ProductSummary
namestring必填brandstring必填category"chemicals" | "cosmetics" | "medical" | "food" | "supplements" | "electronics" | "appliances" | "batteries" | "textiles" | "furniture" | "toys" | "construction" | "other" | null必填Regulatory product type — decides the mandatory information: chemicals | cosmetics | medical | food | supplements | electronics | appliances | batteries | textiles | furniture | toys | construction | otherdescriptionstring必填imagestringtranslationsobjectName and description in every language the brand provides (ISO 639-1 code → text);nameanddescriptionabove are in the language of the response字段
namemap<string, string>必填descriptionmap<string, string>必填
manufacturerEconomicOperator | null必填Manufacturer with postal address and contact; null when the brand has not filled it in字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
responsiblePersonEconomicOperator | null必填Responsible person in the EU; null when none is given字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
importerEconomicOperator | null必填Importer (Regulation (EU) 2024/1781 Annex III point (j)); for a batch or unit code the batch importer字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
authorisedRepresentativeEconomicOperator | null必填Authorised representative of the manufacturer字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
facilityEconomicOperator | null必填Manufacturing facility (Annex III point (i)); publicly only the town and country unless the brand made the full address public字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
passportFieldsobject必填Model passport fields with the public access level (empty until the page is published)languagestring必填Language of the texts (requested one when the brand has it)publishedboolean必填false = the product page is not published yet; facts are emptymachineTranslatedboolean必填passportboolean必填The product has a Digital Product Passport: the brand added the “Digital product passport” block or the product is under a passport obligation. Public passport data fields (passportFields) are published for every productpassportStatus"NONE" | "ACTIVE" | "CLOSED"必填Passport state: NONE — no passport; ACTIVE; CLOSED — closed by the brand after the product was placed on the market (the passport shows the state as of the closing date)recallRecall | null必填字段 · Recall
activetrue必填certainboolean必填true = this exact code is recalled; false = the batch is unknown and may be affectedscope"product" | "batch" | "lotRange"必填product = the whole product; batch = one batch; lotRange = a range of batch numbers (lotFrom–lotTo)reasonstring必填instructionsstring | null必填lotFromstring | null必填lotTostring | null必填kind"recall" | "notice"recall = the product is recalled; notice = safety notice, the product is not withdrawn
factsProvenanceFact[]必填字段 · ProvenanceFact
keystringStable English key of a standard fact (origin, materials, battery.capacityAh, chemical.ufi, …); absent for parameters defined by the brand — match on it, not on the translated namenamestring必填Fact name in the response languagevaluestring必填provenanceobject字段
sourcestring必填Document or block the fact comes fromversionstringdocumentUrlstringassertedBystring必填Brand that published the factassertedAtstring
offersobject[]必填字段
namestring必填pricenumber必填currencystring必填
documentsDocument[]必填字段 · Document
titlestring必填urlstring必填kindstring必填certificate | declaration | repair | dpp | manual | sds | …versionstringaccessstringpublic | legit | authority — present on documents beyond the public leveldocIdstringLibrary document identifier — the same as in{ docId }values of document fieldslanguagestringLanguage of the file (ISO 639-1 code, e.g.de), set by the brand at the document version; absent — multilingual file or not specified
faqobject[]必填字段
questionstring必填answerstring必填
trustobject必填字段
assertedBystring必填publishedVia"Itemoo"必填evidencePolicystring必填factsWithProvenanceinteger必填factsTotalinteger必填lastUpdatedstring (date-time)必填
错误
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/data'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/data', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/data');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
schema.org Product (JSON-LD)
get/q/{code}/schema.json
无需密钥
The same product as schema.org Product in JSON-LD — for search engines and standard agents. Facts become additionalProperty with valueReference to the source document; the recall status is the first property (recallStatus).
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
langquery | string | Two-letter language; without it the Accept-Language header decides 示例: en |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
响应 200 · application/ld+json
object
@context"https://schema.org"必填@type"Product"必填namestring必填
错误
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/schema.json'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/schema.json', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/schema.json');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Parameter profile file
get/q/{code}/profile
无需密钥
One parameter profile of the product (e.g. print settings for a resin) as a file: format=json gives { product, profile, params: [{ name, value }] }, ini (default) and cfg give key = value text for slicers.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
iquery | string | Profile index, 0 by default |
formatquery | "json" | "ini" | "cfg" | |
langquery | string |
响应 200 · application/json, text/plain
Profile file (attachment)
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/profile?format=json'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/profile?format=json', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/profile?format=json');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Capabilities for AI agents
get/.well-known/agent-interface.json
无需密钥
Entry point for an agent that landed on the domain: the endpoints above and the evidence policy.
响应 200 · application/json
object
namestring必填descriptionstring必填versionstring必填endpointsobject[]必填字段
pathstring必填methodstring必填returnsstring必填descriptionstring必填
evidencePolicystring必填
错误
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/.well-known/agent-interface.json'JavaScript
const res = await fetch('https://itemoo.eu/.well-known/agent-interface.json', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/.well-known/agent-interface.json');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Passport
Digital Product Passport (JSON-LD)
get/q/{code}/dpp.jsonld
无需密钥
The passport in JSON-LD with the Itemoo context (https://itemoo.eu/ns/dpp/1.1/context.jsonld; version 1.0 stays published): fields map to the CIRPASS-2 ontology (https://w3id.org/eudpp#, battery modules) where the meaning matches, the rest to the Itemoo vocabulary. The product node is the unit, batch or model of the code; the passport node carries the version hash, backup copy, predecessor and successors, components and lifecycle status. The same document is returned by /q/{code} and the GS1 Digital Link addresses for Accept: application/ld+json (with Content-Location). With a recipient token or session it shows that level (then never cached). The CIRPASS-2 ontology is a project recommendation, not an EU data model; conformity with the EU semantic repository (Implementing Regulation (EU) 2026/1778) is not claimed. Only products with a passport have it — the brand added the “Digital product passport” block or the product is under a passport obligation (e.g. EV, LMT and industrial batteries above 2 kWh); other products answer 404 PASSPORT_NONE and publish their data in /q/{code}/data. A closed passport has lifecycle.status = closed and shows the state as of the closing date.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
langquery | string | Two-letter language; without it the Accept-Language header decides 示例: en |
Authorizationheader | string | Bearer ipa_… — optional recipient token |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
响应 200 · application/ld+json
object
@contextstring必填idstring必填type"Product"必填passportobject必填字段
type"DigitalProductPassport"必填
错误
| 401 |
|
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/dpp.jsonld'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/dpp.jsonld', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/dpp.jsonld');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
JSON-LD context of Itemoo passports
get/ns/dpp/{version}/context.jsonld
无需密钥
Immutable, versioned context (@protected). A change of content means a new version; documents name the version they use.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
versionpath · 必填 | string | Context version 示例: 1.0 |
响应 200 · application/ld+json
object
@contextobject必填
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/ns/dpp/1.0/context.jsonld'JavaScript
const res = await fetch('https://itemoo.eu/ns/dpp/1.0/context.jsonld', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/ns/dpp/1.0/context.jsonld');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Itemoo passport vocabulary
get/ns/dpp/{version}/vocab
无需密钥
RDFS terms (itm:) used by the context for fields without a CIRPASS-2 equivalent, with labels in Polish and English; mapped fields are listed as equivalent properties.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
versionpath · 必填 | string | Vocabulary version 示例: 1.0 |
响应 200 · application/ld+json
object
@idstring必填
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/ns/dpp/1.0/vocab'JavaScript
const res = await fetch('https://itemoo.eu/ns/dpp/1.0/vocab', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/ns/dpp/1.0/vocab');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Data model catalogue (DCAT-AP)
get/.well-known/dpp
无需密钥
DCAT-AP description of the Itemoo passport data models (context, vocabulary, ontologies they build on) and of the resolver service. No index of products or brands.
响应 200 · application/ld+json
object
@idstring必填@type"dcat:Catalog"必填
错误
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/.well-known/dpp'JavaScript
const res = await fetch('https://itemoo.eu/.well-known/dpp', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/.well-known/dpp');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Digital Product Passport
get/q/{code}/passport
无需密钥
Public passport data; with a recipient token issued by the producer (legitimate interest or authority) also the fields, documents and unit history of that level. Send the token as Authorization: Bearer ipa_…. Never cached. A browser (Accept: text/html without a token) gets a readable passport page at the same address; format=json returns JSON anyway. Only products with a passport have it — the brand added the “Digital product passport” block or the product is under a passport obligation (e.g. EV, LMT and industrial batteries above 2 kWh); other products answer 404 PASSPORT_NONE and publish their data in /q/{code}/data. A closed passport has lifecycle.status = closed and shows the state as of the closing date.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
langquery | string | Two-letter language; without it the Accept-Language header decides 示例: en |
atquery | string | The passport as it was at that moment, from the version history (a stable address of a version): ISO 8601 with a time zone (Z or ±hh:mm) or a plain date (start of the day, UTC). Without a time zone — 400 DATE_INVALID; in the future (over 60 s) — 400 DATE_IN_FUTURE示例: 2027-03-01T10:00:00Z |
formatquery | "json" | "html" | json — JSON even for a browser; html — the passport page. Without it the Accept header decides. |
Authorizationheader | string | Bearer ipa_… — optional recipient token |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
响应 200 · application/json
Passport
level"public" | "legit" | "authority"必填recipientstringName of the access grant usedversionPassportVersion | null必填字段 · PassportVersion
hashstring必填SHA-256 of the canonical (RFC 8785) composition of layer versions and the unit event chain headlayersobject[]必填字段
subject"product" | "variant" | "batch" | "unit"必填versioninteger必填hashstring必填
eventsHeadstring | null必填atstring (date-time)Present for a passport read at a point in time (?at=)
backupobject | null必填Backup copy of the passport kept by a DPP service provider (Regulation (EU) 2024/1781 Annex III point (l)), when the brand designated one字段
providerstring必填urlstring必填
identityProductIdentity必填字段 · ProductIdentity
codestring必填Itemoo code from the QR labellevel"unit" | "batch" | "variant" | "model"必填gtinstring | null必填skustring | null必填variantobject字段
labelstring必填catalogNostring | null必填
lotstring | null必填serialstring | null必填expiresAtstring (date-time) | null必填statusstring必填Batch status: ACTIVE | RECALLED | …uniqueProductIdentifierstring必填Unique product identifier of this code (EN 18219:2026): GS1 Digital Link with the batch and serial number of the code level, or the code address/q/{code}without a GTIN
productProductSummary必填字段 · ProductSummary
namestring必填brandstring必填category"chemicals" | "cosmetics" | "medical" | "food" | "supplements" | "electronics" | "appliances" | "batteries" | "textiles" | "furniture" | "toys" | "construction" | "other" | null必填Regulatory product type — decides the mandatory information: chemicals | cosmetics | medical | food | supplements | electronics | appliances | batteries | textiles | furniture | toys | construction | otherdescriptionstring必填imagestringtranslationsobjectName and description in every language the brand provides (ISO 639-1 code → text);nameanddescriptionabove are in the language of the response字段
namemap<string, string>必填descriptionmap<string, string>必填
manufacturerEconomicOperator | null必填字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
responsiblePersonEconomicOperator | null必填字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
importerEconomicOperator | null必填字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
authorisedRepresentativeEconomicOperator | null必填字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
facilityEconomicOperator | null必填字段 · EconomicOperator
namestring必填addressobject必填字段
streetstring | null必填postalCodestring | null必填citystring | null必填countrystring | null必填ISO 3166-1 alpha-2
emailstring | null必填phonestring | null必填Shown only at the access level the brand chose for it (default: persons with a legitimate interest)source"company" | "registry"必填company = the brand company data; registry = an operator from the company operator register designated in the passporttradeNamestring | nullRegistered trade name or trade mark (Regulation (EU) 2024/1781 Art. 27(6), 29(3))identifiersobject[]Unique operator or facility identifiers (Regulation (EU) 2024/1781 Annex III points (g)–(k), Art. 12; EN 18219:2026 Clause 6 — ISO/IEC 6523 or ISO/IEC 15459)字段
scheme"gln" | "duns" | "lei" | "vat" | "iso15459"必填gln = GS1 GLN, duns = D-U-N-S, lei = Legal Entity Identifier (ISO 17442), vat = EU VAT number with country prefix, iso15459 = identifier of another ISO/IEC 15459 issuing agencyiacstringIssuing agency code (ISO/IEC 15459-2 register): 0–9 for GS1, UN for D&B, otherwise the registered agency code; absent for lei and vatvaluestring必填
eoristring | nullEORI number (importer, Annex III point (j)) — shown only at the access level the brand chose for it (default: legitimate interest)
languagestring必填publishedboolean必填recallRecall | null必填字段 · Recall
activetrue必填certainboolean必填true = this exact code is recalled; false = the batch is unknown and may be affectedscope"product" | "batch" | "lotRange"必填product = the whole product; batch = one batch; lotRange = a range of batch numbers (lotFrom–lotTo)reasonstring必填instructionsstring | null必填lotFromstring | null必填lotTostring | null必填kind"recall" | "notice"recall = the product is recalled; notice = safety notice, the product is not withdrawn
factsProvenanceFact[]必填字段 · ProvenanceFact
keystringStable English key of a standard fact (origin, materials, battery.capacityAh, chemical.ufi, …); absent for parameters defined by the brand — match on it, not on the translated namenamestring必填Fact name in the response languagevaluestring必填provenanceobject字段
sourcestring必填Document or block the fact comes fromversionstringdocumentUrlstringassertedBystring必填Brand that published the factassertedAtstring
documentsDocument[]必填字段 · Document
titlestring必填urlstring必填kindstring必填certificate | declaration | repair | dpp | manual | sds | …versionstringaccessstringpublic | legit | authority — present on documents beyond the public leveldocIdstringLibrary document identifier — the same as in{ docId }values of document fieldslanguagestringLanguage of the file (ISO 639-1 code, e.g.de), set by the brand at the document version; absent — multilingual file or not specified
componentsPassportComponent[]必填Components with their own passport visible at this level (Regulation (EU) 2024/1781 Art. 2(4); CIRPASS-2 D4.1 recommendation 5)字段 · PassportComponent
codestring | null必填Itemoo code of the component passport (unit, batch, variant or model — also of another brand)uristring | null必填Address of a component passport outside Itemoo (DPP URL or GS1 Digital Link)urlstring必填Where to read the component passportrolestring | null必填nameany必填quantitynumber | null必填unitstring | null必填level"model" | "unit"必填model — bill of components of the model; unit — installed in this unit (assembly events)sincestring | null必填When the component was installed in this unit
lifecycleobject必填Lifecycle status of the passport: recalled — an active recall covers the code (a safety notice does not); end_of_life — the unit was recycled or became waste; archived — the brand left Itemoo and the passport is kept read-only; closed — the brand closed the passport after the product was placed on the market (the passport shows the state as of the closing date,since). A passport is never deleted: removal is a status (CIRPASS-2 D4.1 recommendation 3); a retired code answers 410字段
status"active" | "recalled" | "end_of_life" | "archived" | "closed"必填sincestring (date-time) | null必填
modelobject必填Model passport fields visible at this levelunitobject | null必填字段
serialstring | null必填dataobject必填stateobject必填字段
statusstring | null必填original | repurposed | re-used | remanufactured | waste | recycled (Regulation (EU) 2023/1542 Annex XIII point 4(c); recycled ends the passport). null — not visible at this access level (a battery status is for persons with a legitimate interest only)sohnumber | null必填State of health, 0–100 (SoH, or SOCE / remaining capacity when only that is recorded)sohAtstring (date-time) | null必填cyclesnumber | null必填incidentsinteger必填
historyobject[]必填字段
kindstring必填dataany必填occurredAtstring (date-time)必填sourcestring
linksobject必填字段
predecessorobject | null必填Passport before remanufacturing or repurposing (Art. 77(7))字段
codestring必填urlstring必填
successorsobject[]必填New passports created from this battery字段
codestring必填urlstring必填
custodianobject | null必填Operator responsible for the passport of a waste battery after a transfer (producer, PRO or waste management operator — Art. 77(7))字段
namestring必填rolestring必填sincestring (date-time)必填
错误
| 400 |
|
| 401 |
|
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/passport'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Products this component is part of
get/q/{code}/passport/part-of
无需密钥
Reverse component links: models whose bill of components lists this code and units where it is currently installed. A link is returned only when the reader has its access level AT THE BRAND OF THE PARENT product (a recipient token of that brand, or a market surveillance authority) — the component maker does not learn who uses its parts. Non-public reads are logged in the read log of the parent brand. Only products with a passport have it — the brand added the “Digital product passport” block or the product is under a passport obligation (e.g. EV, LMT and industrial batteries above 2 kWh); other products answer 404 PASSPORT_NONE and publish their data in /q/{code}/data. A closed passport has lifecycle.status = closed and shows the state as of the closing date.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
Authorizationheader | string | Bearer ipa_… — optional recipient token |
响应 200 · application/json
PartOf
codestring必填partOfobject[]必填字段
codestring必填urlstring必填rolestring | null必填level"model" | "unit"必填sincestring | null必填
错误
| 401 |
|
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/passport/part-of'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport/part-of', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport/part-of');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Brand passport feed (JSON Feed)
get/b/{slug}/passport/feed.json
无需密钥
Public feed of a brand for dealers, recyclers, marketplaces and authorities, without registering an address: recalls, safety notices and new versions of product and batch passports (names of the changed public fields; values are at the code address). No unit data. JSON Feed 1.1, ETag and 5-minute caching. The same entries as Atom: /b/{slug}/passport/feed.atom.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
slugpath · 必填 | string | Brand identifier from the brand app address 示例: acme |
响应 200 · application/feed+json
object
version"https://jsonfeed.org/version/1.1"必填itemsobject[]必填字段
idstring必填urlstring必填
错误
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/b/acme/passport/feed.json'JavaScript
const res = await fetch('https://itemoo.eu/b/acme/passport/feed.json', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/b/acme/passport/feed.json');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Brand passport feed (Atom)
get/b/{slug}/passport/feed.atom
无需密钥
The brand passport feed as Atom 1.0 (see the JSON Feed variant).
参数
| 字段 | 类型 | 说明 |
|---|---|---|
slugpath · 必填 | string | Brand identifier 示例: acme |
响应 200 · application/atom+xml
string
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/b/acme/passport/feed.atom'JavaScript
const res = await fetch('https://itemoo.eu/b/acme/passport/feed.atom', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/b/acme/passport/feed.atom');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Passport version history
get/q/{code}/passport/history
无需密钥
Every change of passport fields (model, variant, batch, unit) is an append-only version chained by SHA-256 hashes. The response lists versions with the changes of fields visible at the reader's level (public without a token) and, for the authority level, the leaf hashes needed to recompute each version hash. Redacted values (personal data removed by the platform) keep their hash and show redacted: true. Only products with a passport have it — the brand added the “Digital product passport” block or the product is under a passport obligation (e.g. EV, LMT and industrial batteries above 2 kWh); other products answer 404 PASSPORT_NONE and publish their data in /q/{code}/data. A closed passport has lifecycle.status = closed and shows the state as of the closing date.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
Authorizationheader | string | Bearer ipa_… — optional recipient token |
响应 200 · application/json
PassportHistory
codestring必填level"public" | "legit" | "authority"必填versionPassportVersion | null必填字段 · PassportVersion
hashstring必填SHA-256 of the canonical (RFC 8785) composition of layer versions and the unit event chain headlayersobject[]必填字段
subject"product" | "variant" | "batch" | "unit"必填versioninteger必填hashstring必填
eventsHeadstring | null必填atstring (date-time)Present for a passport read at a point in time (?at=)
versionsobject[]必填字段
subject"product" | "variant" | "batch" | "unit"必填versioninteger必填hashstring必填prevHashstring | null必填atstring (date-time)必填sourcestring必填changesobject[]必填字段
keystring必填op"add" | "change" | "remove"必填valueanyredactedboolean
leavesmap<string, object>Leaf hashes (authority level only) to recompute the version hash字段
hstring必填access"public" | "legit" | "authority"必填
错误
| 401 |
|
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/passport/history'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport/history', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport/history');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Proof of existence of the current passport versions
get/q/{code}/passport/anchor
无需密钥
Every day (UTC) Itemoo builds a Merkle tree (RFC 6962 hashing: leaf = SHA-256(0x00 ‖ hash), node = SHA-256(0x01 ‖ left ‖ right), sorted unique leaves) of all passport version hashes and unit event hashes recorded that day and, when enabled, obtains an RFC 3161 timestamp for SHA-256(root). For each current layer version (and the head of the unit event chain) the response gives the day, the root and the inclusion path; anchor: null until the day is anchored. Verify the token with openssl ts -verify -digest <timestamp.digest> -in <token>. Only products with a passport have it — the brand added the “Digital product passport” block or the product is under a passport obligation (e.g. EV, LMT and industrial batteries above 2 kWh); other products answer 404 PASSPORT_NONE and publish their data in /q/{code}/data. A closed passport has lifecycle.status = closed and shows the state as of the closing date.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
响应 200 · application/json
PassportAnchorProofs
codestring必填algorithmstring | null必填proofsobject[]必填字段
subject"product" | "variant" | "batch" | "unit" | "events"必填versionintegerhashstring必填anchorobject | null必填字段
daystring必填rootstring必填algorithmstring必填leavesinteger必填pathobject[]必填字段
side"left" | "right"必填hashstring必填
timestampobject | null必填字段
providerstring必填atstring必填digeststring必填tokenstring必填Base64 RFC 3161 TimeStampResp
错误
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/passport/anchor'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport/anchor', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport/anchor');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Request access to an archived passport
post/q/{code}/passport/access-request
无需密钥
After the contract of the brand ends, regulated passports (batteries with the full passport) stay available in the Itemoo Passport Archive, but the brand no longer issues recipient tokens. Authorities and persons with a legitimate interest (Regulation (EU) 2023/1542 Annex XIII) request access here; a platform operator reviews the request and another one approves it (four eyes) and sends the token. Outside the archive the route answers 404 — ask the brand.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
请求体 application/json
level"legit" | "authority"必填organizationstring必填Authority, service, recycler…emailstring必填Contact e-mail for the token (deleted 180 days after the decision)justificationstring必填Why the access is needed and on what basis
响应 200 · application/json
PassportAccessRequestCreated
idstring必填status"new"必填
错误
| 400 |
|
| 404 |
|
| 409 |
|
| 429 |
|
示例
cURL
curl -X POST 'https://itemoo.eu/q/A1B2C3D4/passport/access-request' \
-H 'Content-Type: application/json' \
-d '{"level":"legit","organization":"Recycling Sp. z o.o.","email":"office@example.com","justification":"Dismantling and recycling of the battery received as waste."}'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport/access-request', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"level": "legit",
"organization": "Recycling Sp. z o.o.",
"email": "office@example.com",
"justification": "Dismantling and recycling of the battery received as waste."
}),
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport/access-request');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"level":"legit","organization":"Recycling Sp. z o.o.","email":"office@example.com","justification":"Dismantling and recycling of the battery received as waste."}',
]);
$data = json_decode(curl_exec($ch), true);Restricted passport document file
get/q/{code}/passport/documents/{versionId}
无需密钥
The file of a document outside the public level (e.g. dismantling information, test reports — Annex XIII points 2–3 of Regulation (EU) 2023/1542). Its address comes from documents[].url of GET /q/{code}/passport read with a token; the public file address of such a document returns 404. Requires Authorization: Bearer ipa_… with a level that sees the document; every download is recorded in the producer's access log. Never cached.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
codepath · 必填 | string | Itemoo code from the QR label (unit, batch, variant or product) 示例: A1B2C3D4 |
versionIdpath · 必填 | string | Document version id from the passport 示例: clx0doc0version0001 |
Authorizationheader | string | Bearer ipa_… — recipient token (required) |
响应 200 · application/pdf, application/octet-stream
Document file
错误
| 401 |
|
| 404 |
|
| 410 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/q/A1B2C3D4/passport/documents/clx0doc0version0001'JavaScript
const res = await fetch('https://itemoo.eu/q/A1B2C3D4/passport/documents/clx0doc0version0001', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/q/A1B2C3D4/passport/documents/clx0doc0version0001');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
GS1 Digital Link
Resolve a GTIN
get/01/{gtin}
无需密钥
GS1 Digital Link resolver. With linkType=linkset or Accept: application/linkset+json it returns the linkset (RFC 9264) built from the published page: product page, instructions, certificates, passport and recall status. With linkType=gs1:<type> it redirects (307) to the first link of that type. Without either it shows the product page (HTML). One GTIN used by several brands returns a choice of their pages.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
gtinpath · 必填 | string | GTIN (8–14 digits) 示例: 05901234123457 |
linkTypequery | string | "linkset" = the whole linkset (also with Accept: application/linkset+json); "gs1:pip" etc. = 307 redirect to the first link of that type |
langquery | string | |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
Acceptheader | string | application/linkset+json returns the linkset without linkType. |
响应 200 · application/linkset+json
Linkset
linksetmap<string, string | object[]>[]必填One entry: "anchor" (the GS1 URI) and one key per link type (https://gs1.org/voc/pip, …/instructions, …/certificationInfo, …/sustainabilityInfo, …/recallStatus)字段
hrefstring必填titlestringtypestringhreflangstring[]
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/01/05901234123457?linkType=linkset'JavaScript
const res = await fetch('https://itemoo.eu/01/05901234123457?linkType=linkset', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/01/05901234123457?linkType=linkset');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Resolve a GTIN with a batch
get/01/{gtin}/10/{lot}
无需密钥
GS1 Digital Link resolver. With linkType=linkset or Accept: application/linkset+json it returns the linkset (RFC 9264) built from the published page: product page, instructions, certificates, passport and recall status. With linkType=gs1:<type> it redirects (307) to the first link of that type. Without either it shows the product page (HTML). One GTIN used by several brands returns a choice of their pages.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
gtinpath · 必填 | string | GTIN (8–14 digits) 示例: 05901234123457 |
lotpath · 必填 | string | |
linkTypequery | string | "linkset" = the whole linkset (also with Accept: application/linkset+json); "gs1:pip" etc. = 307 redirect to the first link of that type |
langquery | string | |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
Acceptheader | string | application/linkset+json returns the linkset without linkType. |
响应 200 · application/linkset+json
Linkset
linksetmap<string, string | object[]>[]必填One entry: "anchor" (the GS1 URI) and one key per link type (https://gs1.org/voc/pip, …/instructions, …/certificationInfo, …/sustainabilityInfo, …/recallStatus)字段
hrefstring必填titlestringtypestringhreflangstring[]
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/01/05901234123457/10/L2026-10?linkType=linkset'JavaScript
const res = await fetch('https://itemoo.eu/01/05901234123457/10/L2026-10?linkType=linkset', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/01/05901234123457/10/L2026-10?linkType=linkset');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Resolve a GTIN with a serial number
get/01/{gtin}/21/{serial}
无需密钥
GS1 Digital Link resolver. With linkType=linkset or Accept: application/linkset+json it returns the linkset (RFC 9264) built from the published page: product page, instructions, certificates, passport and recall status. With linkType=gs1:<type> it redirects (307) to the first link of that type. Without either it shows the product page (HTML). One GTIN used by several brands returns a choice of their pages.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
gtinpath · 必填 | string | GTIN (8–14 digits) 示例: 05901234123457 |
serialpath · 必填 | string | |
linkTypequery | string | "linkset" = the whole linkset (also with Accept: application/linkset+json); "gs1:pip" etc. = 307 redirect to the first link of that type |
langquery | string | |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
Acceptheader | string | application/linkset+json returns the linkset without linkType. |
响应 200 · application/linkset+json
Linkset
linksetmap<string, string | object[]>[]必填One entry: "anchor" (the GS1 URI) and one key per link type (https://gs1.org/voc/pip, …/instructions, …/certificationInfo, …/sustainabilityInfo, …/recallStatus)字段
hrefstring必填titlestringtypestringhreflangstring[]
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/01/05901234123457/21/SN-0001?linkType=linkset'JavaScript
const res = await fetch('https://itemoo.eu/01/05901234123457/21/SN-0001?linkType=linkset', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/01/05901234123457/21/SN-0001?linkType=linkset');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Resolve a GTIN with a batch and a serial number
get/01/{gtin}/10/{lot}/21/{serial}
无需密钥
GS1 Digital Link resolver. With linkType=linkset or Accept: application/linkset+json it returns the linkset (RFC 9264) built from the published page: product page, instructions, certificates, passport and recall status. With linkType=gs1:<type> it redirects (307) to the first link of that type. Without either it shows the product page (HTML). One GTIN used by several brands returns a choice of their pages.
参数
| 字段 | 类型 | 说明 |
|---|---|---|
gtinpath · 必填 | string | GTIN (8–14 digits) 示例: 05901234123457 |
lotpath · 必填 | string | |
serialpath · 必填 | string | |
linkTypequery | string | "linkset" = the whole linkset (also with Accept: application/linkset+json); "gs1:pip" etc. = 307 redirect to the first link of that type |
langquery | string | |
Accept-Languageheader | string | Preferred language of the texts (fact names, description) when lang is missing. |
Acceptheader | string | application/linkset+json returns the linkset without linkType. |
响应 200 · application/linkset+json
Linkset
linksetmap<string, string | object[]>[]必填One entry: "anchor" (the GS1 URI) and one key per link type (https://gs1.org/voc/pip, …/instructions, …/certificationInfo, …/sustainabilityInfo, …/recallStatus)字段
hrefstring必填titlestringtypestringhreflangstring[]
错误
| 404 |
|
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/01/05901234123457/10/L2026-10/21/SN-0001?linkType=linkset'JavaScript
const res = await fetch('https://itemoo.eu/01/05901234123457/10/L2026-10/21/SN-0001?linkType=linkset', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/01/05901234123457/10/L2026-10/21/SN-0001?linkType=linkset');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。
Resolver description
get/.well-known/gs1resolver
无需密钥
GS1 resolver description: supported keys and link types, for scanners and passport registries.
响应 200 · application/json
object
错误
| 429 |
|
示例
cURL
curl -X GET 'https://itemoo.eu/.well-known/gs1resolver'JavaScript
const res = await fetch('https://itemoo.eu/.well-known/gs1resolver', {
method: 'GET',
});
const data = await res.json();PHP
$ch = curl_init('https://itemoo.eu/.well-known/gs1resolver');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);试一试
请求发送失败。