Bronnen
Paspoorten
Elk Paspoorten-endpoint, met de scope die het afdwingt, het lichaam dat het aanneemt, een leesbaar antwoord en de weigeringen die het kan teruggeven.
Paspoorten opsommen.
/organizations/{organization}/passports- Scope
- passports:read
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
Queryparameters
limittekenreeksOptioneelHoeveel records worden teruggegeven. De server mag er minder teruggeven.
cursortekenreeksOptioneelDe next_cursor van de vorige pagina. Een cursor codeert de filters waaronder hij is uitgegeven; meesturen met andere filters wordt geweigerd met cursor_invalid.
statustekenreeksOptioneelGeeft alleen paspoorten met deze status terug.
categorytekenreeksOptioneelGeeft alleen paspoorten in deze categorie terug.
updated_sincetekenreeksOptioneelEen RFC 3339-tijdstempel. Geeft de paspoorten terug die op of na dat moment zijn gewijzigd — zo vraagt een koppeling wijzigingen op zonder de hele catalogus opnieuw uit te lezen.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports?status=published&limit=25" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "list",
"data": [
{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "published",
"gtin": "02000000000053",
"external_id": "SKU-4471-BLK",
"version": 4,
"livemode": true,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-01T14:03:22.501Z",
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
}
}
],
"has_more": false,
"next_cursor": null
}GET /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports?status=published&limit=25
Een paspoort aanmaken.
/organizations/{organization}/passports- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 201
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
Verzoeklichaam
categorytekenreeksVerplichtEen categorie-id uit GET /categories. Die legt het veldschema vast en kan achteraf niet meer worden gewijzigd.
external_idtekenreeksOptioneelUw eigen identificatie voor dit product, 1 tot 255 tekens. Uniek binnen de organisatie én de modus — daarmee stemt u af zonder onze ids te bewaren; dezelfde id kan dus één keer in test en één keer in live bestaan.
dataobjectOptioneelHet paspoortdocument. De sleutels zijn veldnamen uit het schema van de categorie, aangevuld met de document_id_key van elk veld dat een document kan bevatten; al het overige wordt geweigerd in plaats van stilzwijgend opgeslagen.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 409already_exists
- 500configuration_error
- 409gtin_in_use
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 429rate_limited
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"category": "textile",
"external_id": "SKU-4471-BLK",
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR"
}
}'{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "draft",
"gtin": null,
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 1,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-01T09:12:44.918Z",
"published_at": null,
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
]
}
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports
Eén paspoort ophalen.
/organizations/{organization}/passports/{id}- Scope
- passports:read
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "published",
"gtin": "02000000000053",
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 4,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-01T14:03:22.501Z",
"published_at": "2026-08-01T14:03:22.501Z",
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
}
}GET /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41
Een JSON Merge Patch op een paspoort toepassen.
/organizations/{organization}/passports/{id}- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Verzoekheaders
Expected-Versiongeheel getalOptioneelDe version van het paspoort dat u heeft gelezen, als geheel getal. Is het paspoort intussen gewijzigd, dan wordt de schrijfactie geweigerd met precondition_failed — de enige manier om lezen, wijzigen en schrijven veilig te maken tegenover een gelijktijdige bewerker. Gebruik deze header in plaats van If-Match. Probeer een geweigerde schrijfactie opnieuw met een NIEUWE Idempotency-Key: de weigering is onder de oude vastgelegd en zou opnieuw worden teruggegeven.
If-MatchtekenreeksOptioneelGEWEIGERD met invalid_request tenzij hij exact * is — dus ook zodra hij een ETag bevat. Ons CDN vergelijkt If-Match met het ANTWOORD en herschrijft de uitkomst: een voorwaardelijke schrijfactie zou dus worden uitgevoerd en u toch als 412 worden gemeld — de weigering voorkomt precies dat. Stuur de versie als Expected-Version. If-Match: *, dat alleen vraagt of het paspoort nog bestaat, wordt wel geaccepteerd.
Verzoeklichaam
dataobjectOptioneelEen JSON Merge Patch volgens RFC 7386 die op het paspoortdocument wordt toegepast. Laat een sleutel weg om hem ongemoeid te laten; stuur null om hem te verwijderen. Lijsten worden in hun geheel vervangen, nooit samengevoegd.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409gtin_in_use
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 412precondition_failed
- 429rate_limited
- 404resource_not_found
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
- 409wrong_status
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41" \
-X PATCH \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"data": {
"recycled_content_percentage": 38,
"recycling_instructions": "Return to any Atelier Kestrel store for fibre recovery."
}
}'{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "draft",
"gtin": null,
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 2,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-01T10:44:12.700Z",
"published_at": null,
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"recycled_content_percentage": 38,
"recycling_instructions": "Return to any Atelier Kestrel store for fibre recovery."
}
}PATCH /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41
Een paspoort publiceren.
/organizations/{organization}/passports/{id}/publish- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Verzoeklichaam
variant_review_fingerprinttekenreeksOptioneelVerplicht wanneer het paspoort maten en kleuren bevat die een assistent heeft ingevoerd: de vingerafdruk uit GET …/variants/review, verstuurd nadat een persoon die regels heeft gecontroleerd. Zonder deze wordt de publicatie geweigerd met variant_review_required; zijn de maten en kleuren na die controle gewijzigd, dan met variant_review_changed. Verstuur hem met een nieuwe idempotentiesleutel. Een hexadecimale tekenreeks van 64 tekens.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 422document_missing
- 409gtin_in_use
- 422gtin_required
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 402publish_limit_reached
- 429rate_limited
- 404resource_not_found
- 503storage_unavailable
- 402unit_limit_reached
- 415unsupported_media_type
- 422validation_failed
- 409variant_review_changed
- 409variant_review_required
- 400wildcard_not_supported
- 409wrong_status
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/publish" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "published",
"gtin": "02000000000053",
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 4,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-01T14:03:22.501Z",
"published_at": "2026-08-01T14:03:22.501Z",
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
},
"warnings": [
{
"code": "environmental_claim_detected",
"message": "This passport contains environmental claims (carbon neutral), found in its wording or in fields the brand marked as environmental information. From 27 September 2026, Directive (EU) 2024/825 requires the trader placing the product on the market to hold substantiation for such claims. Publishing succeeded; confirm the substantiation exists.",
"doc_url": "https://passportcraft.com/docs/api/errors#environmental_claim_detected"
}
]
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/publish
Een paspoort terugtrekken.
Ingrijpend/organizations/{organization}/passports/{id}/unpublish- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 412precondition_failed
- 429rate_limited
- 404resource_not_found
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
- 409wrong_status
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/unpublish" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "draft",
"gtin": "02000000000053",
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 5,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-02T08:15:09.113Z",
"published_at": null,
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
}
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/unpublish
Een paspoort naar de prullenbak verplaatsen.
Ingrijpend/organizations/{organization}/passports/{id}/trash- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 412precondition_failed
- 429rate_limited
- 404resource_not_found
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
- 409wrong_status
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/trash" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "trashed",
"gtin": "02000000000053",
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 6,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-02T08:19:44.002Z",
"published_at": null,
"trashed_at": "2026-08-02T08:19:44.002Z",
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
}
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/trash
Een paspoort uit de prullenbak herstellen.
/organizations/{organization}/passports/{id}/restore- Scope
- passports:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 409not_trashed
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 412precondition_failed
- 429rate_limited
- 404resource_not_found
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/restore" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"{
"object": "passport",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"category": "textile",
"status": "draft",
"gtin": "02000000000053",
"serial_number": null,
"external_id": "SKU-4471-BLK",
"version": 7,
"livemode": true,
"registry_id": null,
"created_at": "2026-08-01T09:12:44.918Z",
"updated_at": "2026-08-02T08:21:03.884Z",
"published_at": null,
"trashed_at": null,
"data": {
"product_name": "Merino Crew Neck",
"product_description": "Mid-weight knitted crew neck in 100% merino wool.",
"manufacturer_name": "Atelier Kestrel SAS",
"manufacturer_address": "14 rue des Tanneurs, 59100 Roubaix",
"manufacturer_country": "FR",
"material_composition": [
{
"fiber": "Merino wool",
"percentage": 100
}
],
"substances_of_concern": [
"None above threshold"
],
"gtin": "02000000000053"
}
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/restore
Een paspoort tegen het schema van zijn categorie controleren zonder op te slaan.
/organizations/{organization}/passports/{id}/validate- Scope
- passports:read
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Verzoeklichaam
dataobjectOptioneelVelden die vóór de controle worden samengevoegd, zodat u een wijziging kunt uitproberen zonder haar op te slaan. Er wordt hoe dan ook niets weggeschreven.
variant_review_fingerprinttekenreeksOptioneelDe vingerafdruk uit GET …/variants/review. Stuur hem om te vragen of de publicatie die hem draagt zou slagen; zonder hem meldt een paspoort met door een assistent ingevoerde maten en kleuren de controle als fout. Een hexadecimale tekenreeks van 64 tekens; een verouderde of onjuiste waarde wordt als bevinding gemeld in plaats van geweigerd, omdat dit eindpunt een voorspelling geeft.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 429rate_limited
- 404resource_not_found
- 503storage_unavailable
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/validate" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"data": {
"material_composition": null
}
}'{
"object": "validation",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/validation",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"passport_id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"category": "textile",
"schema_version": "1.0.0-draft",
"dry_run": true,
"valid": false,
"publishable": false,
"error_count": 2,
"warning_count": 0,
"checked_at": "2026-08-02T08:26:11.409Z",
"issues": [
{
"object": "validation_issue",
"field": "material_composition",
"source": {
"pointer": "/data/material_composition"
},
"rule": "required",
"severity": "error",
"message": "Material Composition is required",
"message_key": "required",
"message_params": {
"field": "Material Composition"
},
"writable_via_api": true
},
{
"object": "validation_issue",
"field": "gtin",
"source": {
"pointer": "/data/gtin"
},
"rule": "required",
"severity": "error",
"message": "A GTIN is required before this passport can be published. A saved size or colour with its own barcode also satisfies this.",
"writable_via_api": true
}
]
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/validate
Openbare URL’s en GS1 Digital Links opvragen. gs1_digital_links bevat alle varianten met variant_id, size en colour. De URI van de eigen hoofd-GTIN verschijnt eenmaal met de variantgegevens; een hoofd-URI met serienummer blijft apart.
/organizations/{organization}/passports/{id}/links- Scope
- passports:read
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/links" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "passport_links",
"id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/links",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"passport": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"status": "published",
"livemode": true,
"gtin": "02000000000053",
"serial_number": null,
"public_url": "https://passportcraft.com/passport/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"qr_target": "https://passportcraft.com/01/02000000000053",
"gs1_digital_links": [
{
"uri": "https://passportcraft.com/01/02000000000053",
"gtin14": "02000000000053",
"serial": null,
"linkset_url": "https://passportcraft.com/01/02000000000053?linkType=linkset",
"unavailable_reason": null,
"variant_id": null,
"size": null,
"colour": null
}
],
"gs1_digital_link": {
"uri": "https://passportcraft.com/01/02000000000053",
"gtin14": "02000000000053",
"serial": null,
"linkset_url": "https://passportcraft.com/01/02000000000053?linkType=linkset",
"unavailable_reason": null
},
"resolves_publicly": true,
"not_resolvable_reason": null,
"preview_url": null
}GET /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/links
Batterijmetingen weergeven.
/organizations/{organization}/passports/{id}/units/{unitId}/readings- Scope
- units:read
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
unitIdtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Queryparameters
limittekenreeksOptioneelAantal terug te geven metingen, van 1 tot 100.
cursortekenreeksOptioneelDe next_cursor van de vorige pagina. Houd hetzelfde veldfilter aan.
fieldtekenreeksOptioneelGeef alleen metingen voor dit veld terug.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 400cursor_invalid
- 403insufficient_scope
- 500internal_error
- 400invalid_field
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 429rate_limited
- 404resource_not_found
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings?field=status&limit=50" \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "list",
"data": [
{
"object": "unit_reading",
"id": "a1100000-0000-4000-8000-000000000001",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings/a1100000-0000-4000-8000-000000000001",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"passport_id": "b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04",
"unit_id": "d41d8cd9-8f00-4b20-a204-9800998ecf84",
"passport": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04",
"unit": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84",
"livemode": true,
"field": "status",
"value": "original",
"observed_on": "2026-08-02",
"source": "brand_statement",
"note": null,
"document_id": null,
"recorded_by": "a1100000-0000-4000-8000-000000000002",
"recorded_actor_type": "api_key",
"recorded_via": "api",
"recorded_at": "2026-08-02T09:31:18.446123Z",
"legacy_import": false
}
],
"has_more": false,
"next_cursor": null
}GET /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings?field=status&limit=50
Batterijmeting vastleggen.
/organizations/{organization}/passports/{id}/units/{unitId}/readings- Scope
- units:write
Idempotency-Key- Wordt geaccepteerd
- Levert
- 201
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
unitIdtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Verzoeklichaam
fieldtekenreeksVerplichtEen batterijveld uit het categorieschema.
valuetekst, getal of getal met eenheidVerplichtEen waarde volgens de velddefinitie; getal en eenheid bij velden met een eenheidkeuze.
observed_ontekenreeksVerplichtDatum waarop de waarde is gemeten of verklaard, in de notatie JJJJ-MM-DD.
sourcetekenreeksVerplichtmeasurement of brand_statement.
notetekenreeksOptioneelOptionele opmerking over methode of bewijs, maximaal 500 tekens.
document_idtekenreeksOptioneelOptioneel document uit de organisatiebibliotheek dat deze meting onderbouwt.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409connector_writes_drafts_only
- 409idempotency_conflict
- 403insufficient_scope
- 500internal_error
- 400invalid_document_id
- 400invalid_field
- 400invalid_input
- 401invalid_key
- 400invalid_note
- 400invalid_observed_on
- 400invalid_request
- 400invalid_source
- 400invalid_value
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 429rate_limited
- 404resource_not_found
- 400unit_reading_document_unavailable
- 409unit_status_history_conflict
- 400unit_status_required
- 409unit_status_transition_forbidden
- 415unsupported_media_type
- 422validation_failed
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings" \
-X POST \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"field": "status",
"value": "original",
"observed_on": "2026-08-02",
"source": "brand_statement"
}'{
"object": "unit_reading",
"id": "a1100000-0000-4000-8000-000000000001",
"name": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings/a1100000-0000-4000-8000-000000000001",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"passport_id": "b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04",
"unit_id": "d41d8cd9-8f00-4b20-a204-9800998ecf84",
"passport": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04",
"unit": "organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84",
"livemode": true,
"field": "status",
"value": "original",
"observed_on": "2026-08-02",
"source": "brand_statement",
"note": null,
"document_id": null,
"recorded_by": "a1100000-0000-4000-8000-000000000002",
"recorded_actor_type": "api_key",
"recorded_via": "api",
"recorded_at": "2026-08-02T09:31:18.446123Z",
"legacy_import": false
}POST /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/b6f0d4a2-71c3-4e58-8a19-3f7c2d5e8b04/units/d41d8cd9-8f00-4b20-a204-9800998ecf84/readings
Een document loskoppelen en uit de bibliotheek verwijderen zodra niets het nog gebruikt.
/organizations/{organization}/passports/{id}/documents/{documentId}- Scope
- documents:write
Idempotency-Key- Wordt niet geaccepteerd
- Levert
- 200
Padparameters
organizationtekenreeksVerplichtDe organisatie waarvoor dit verzoek handelt. De sleutel moet daarvoor zijn vrijgegeven.
idtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
documentIdtekenreeksVerplichtDe identificatie van de bron. Behandel die als een ondoorzichtige tekenreeks.
Verzoekheaders
If-MatchtekenreeksOptioneelGEWEIGERD met invalid_request tenzij hij exact * is. Dit eindpunt kent geen voorwaardelijke vorm. DELETE is de enige methode die wij niet tegen ons CDN hebben gemeten; dat vergelijkt If-Match op sommige paden met het ANTWOORD en herschrijft een succes tot een 412 — en een reeds uitgevoerd losmaken mag u nooit als weigering worden gemeld. If-Match: *, dat alleen vraagt of het document nog bestaat, wordt wel geaccepteerd.
Fouten
Elke weigering die dit endpoint kan teruggeven, met de status waarmee die binnenkomt.
- 500configuration_error
- 409document_feeds_extraction
- 403insufficient_scope
- 500internal_error
- 401invalid_key
- 400invalid_request
- 401key_expired
- 401key_revoked
- 401key_rotated
- 400mode_mismatch
- 402no_subscription
- 404organization_not_found_or_not_granted
- 413payload_too_large
- 402payment_overdue
- 402plan_required
- 429rate_limited
- 409resource_busy
- 404resource_not_found
- 400wildcard_not_supported
curl "https://passportcraft.com/api/v1/organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/documents/a3b8c2d1-5e64-4f79-8a0b-1c2d3e4f5a6b" \
-X DELETE \
-H "Authorization: Bearer $PASSPORTCRAFT_API_KEY"{
"object": "document.deleted",
"id": "a3b8c2d1-5e64-4f79-8a0b-1c2d3e4f5a6b",
"organization_id": "8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2",
"passport_id": "2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41",
"livemode": true,
"detached": true,
"deleted_from_library": true,
"remaining_links": 0,
"document_limit": 50
}DELETE /organizations/8f14e45f-ceea-467a-9a5f-8dc7d9c6a1b2/passports/2c1f9e07-3b4d-4a18-9f6c-5e0a7b8d3c41/documents/a3b8c2d1-5e64-4f79-8a0b-1c2d3e4f5a6b