- Itemoo
- Розробникам
- Публічні дані про продукт
Довідник · 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);Спробувати
Не вдалося надіслати запит.