{"@context":[{"tooru":"https://tooru.dev/ns/v1#","gs1":"https://gs1.org/voc/"}],"type":"tooru:ServiceDescription","name":"tooru Domänen-API","version":"0.2.0","tooru:shellLevel":1,"tooru:readOnly":false,"tooru:explanation":"Alles, was das tooru-Portal kann, geht auch ohne Oberfläche: jede Fähigkeit ist eine Operation dieser API (tooru:operations, /openapi.json, derselbe Satz als MCP-Tools). Ein Agent eines Betriebs arbeitet mit einem Schlüssel, den tooru für diesen Betrieb ausstellt, und genau dessen Rechten (Scopes, siehe /v1/whoami) — nie ohne den Betrieb, für den er handelt. Schreiben geht immer in zwei Schritten: erst propose (Vorschau, schreibt nichts, sagt was fehlt), dann commit. Schreiben sichert noch keinen Nachweis: Freigegebenes ist sofort digital signiert, den Nachweis sichert der Worker danach von selbst. Jede Antwort von /v1/ops und upload_document — Vorschau, Ergebnis und Ablehnung — trägt tooru:nextSteps: die nächsten sinnvollen Operationen, je { operation, mode (bei Schreiboperationen), input (Parameter, die tooru schon kennt), needs (selbst zu wählen), fix (die Felder, die zu füllen oder zu beheben sind — bei einer Ablehnung die aus tooru:problems), sameInput (propose → commit mit denselben Parametern), why }. Nach jeder Änderung, die ein Produkt betrifft (Angaben, Lieferkette, Zertifikat, Zuordnung, Dokument), folgen die Schritte des Produkts: erst was Freigabe oder Veröffentlichen sperrt, dann gesetzliche Lücken, dann release_product bzw. publish_product — gerechnet wie afterRelease in release_product/propose. Leer heißt: kein weiterer Schritt nötig — solange ein betroffenes Produkt nicht veröffentlicht ist, ist die Liste nie leer. Nichts davon passiert von selbst. commit antwortet 201, wenn etwas neu angelegt wurde (Produkt, Version, Station, Standort, Zertifikat, Dokument, Veröffentlichung), und 200, wenn sich Bestehendes ändert — auch Verknüpfungen und Zuordnungen (set_chain, link_document, assign_certificate) und ein erneutes Veröffentlichen — oder nichts geschrieben wurde (Idempotenz: dieselbe eigene ID ein zweites Mal). propose antwortet immer 200.","tooru:endpoints":{"digitalLinkResolver":"https://id.tooru.io/01/{gtin}[/10/{lot}]","resolverDescription":"https://id.tooru.io/.well-known/gs1resolver","epcis":"https://id.tooru.io/epcis/v2","product":"https://id.tooru.io/v1/products/{gtin}","batch":"https://id.tooru.io/v1/batches/{gtin}/{lot}","dpp":"https://id.tooru.io/v1/dpp/{gtin}[/{lot}]","verifyProof":"https://id.tooru.io/v1/public/verify/{contentHash|tabelle:uuid}","whoami":"https://id.tooru.io/v1/whoami","openapi":"https://id.tooru.io/openapi.json","jwks":"https://id.tooru.io/.well-known/jwks.json","jsonLdContext":"https://id.tooru.io/ns/v1","myProducts":"https://id.tooru.io/v1/my/products[/{id}]","operations":"https://id.tooru.io/v1/ops/{operation}/{propose|commit}"},"tooru:operations":[{"name":"whoami","title":"Wer bin ich","scope":null,"kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/whoami"},{"name":"list_my_products","title":"Meine Produkte suchen","scope":"products:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/products"},{"name":"get_my_product","title":"Mein Produkt","scope":"products:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/products/{id}"},{"name":"preview_product_pass","title":"Pass-Vorschau","scope":"products:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/products/{id}/pass-preview"},{"name":"get_product_code","title":"tooru Code (QR)","scope":"products:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/products/{id}/code"},{"name":"get_party_code","title":"Betriebs-Code (QR)","scope":"party:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/party/code"},{"name":"get_my_party","title":"Mein Betrieb","scope":"party:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/party"},{"name":"get_attention","title":"Was ansteht","scope":"party:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/attention"},{"name":"list_my_certificates","title":"Meine Zertifikate","scope":"certificates:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/certificates"},{"name":"get_my_certificate","title":"Mein Zertifikat","scope":"certificates:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/certificates/{id}"},{"name":"list_schemes","title":"Zertifikatsschemata","scope":"certificates:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/schemes"},{"name":"list_certificate_requests","title":"Anforderungen und Eingänge","scope":"certificates:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/certificate-requests"},{"name":"get_certificate_request_reminder","title":"Erinnerung an den Lieferanten","scope":"certificates:write","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/certificate-requests/{id}/reminder"},{"name":"list_my_stations","title":"Meine Stationen","scope":"partners:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/stations"},{"name":"get_my_station","title":"Meine Station","scope":"partners:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/stations/{id}"},{"name":"list_access_grants","title":"Prüfzugänge","scope":"access:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/access-grants"},{"name":"describe_access_scope","title":"Was ein Prüfzugang zeigt","scope":"access:read","kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/access-scope"},{"name":"list_activity","title":"Verlauf","scope":null,"kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/my/activity"},{"name":"search_categories","title":"Produktarten suchen","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/catalog/categories"},{"name":"list_catalog_releases","title":"Katalogstände und was sich änderte","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/catalog/releases"},{"name":"get_requirements","title":"Was gilt für eine Produktart","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/catalog/requirements"},{"name":"validate_product_values","title":"Werte prüfen","scope":null,"kind":"read","public":true,"method":"POST","path":"https://id.tooru.io/v1/catalog/validate"},{"name":"list_admin_parties","title":"Betriebe (tooru-Admin)","scope":null,"kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/admin/parties"},{"name":"get_admin_onboarding","title":"Pilot-Bericht Onboarding (tooru-Admin)","scope":null,"kind":"read","public":false,"method":"GET","path":"https://id.tooru.io/v1/admin/onboarding"},{"name":"list_catalog_attributes","title":"Angaben des Katalogs","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/catalog/attributes"},{"name":"list_code_lists","title":"Wertelisten","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/catalog/code-lists"},{"name":"get_public_party","title":"Öffentlicher Betrieb","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/parties/{gln}"},{"name":"get_product","title":"Öffentlicher Produktpass","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/products/{gtin}"},{"name":"get_product_versions","title":"Public versions of a product","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/products/{gtin}/versions"},{"name":"get_batch","title":"Charge","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/batches/{gtin}/{lot}"},{"name":"list_events","title":"Ereignisse (EPCIS)","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/epcis/v2/events"},{"name":"get_jwks","title":"Öffentliche Schlüssel (JWKS)","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/.well-known/jwks.json"},{"name":"verify_file","title":"Datei prüfen","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/public/verify/file/{hash}"},{"name":"verify_proof","title":"Nachweis prüfen","scope":null,"kind":"read","public":true,"method":"GET","path":"https://id.tooru.io/v1/public/verify/{ref}"},{"name":"create_product","title":"Produkt anlegen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/create_product/{propose|commit}"},{"name":"update_product","title":"Produkt ändern","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/update_product/{propose|commit}"},{"name":"delete_product","title":"Entwurf löschen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/delete_product/{propose|commit}"},{"name":"release_product","title":"Produkt freigeben (digital signieren)","scope":"products:release","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/release_product/{propose|commit}"},{"name":"publish_product","title":"Pass veröffentlichen","scope":"products:publish","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/publish_product/{propose|commit}"},{"name":"unpublish_product","title":"Vom Markt nehmen","scope":"products:publish","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/unpublish_product/{propose|commit}"},{"name":"update_party","title":"Betrieb ändern","scope":"party:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/update_party/{propose|commit}"},{"name":"confirm_party","title":"Betrieb bestätigen","scope":"party:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/confirm_party/{propose|commit}"},{"name":"set_notification_settings","title":"Benachrichtigungen einstellen","scope":"party:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/set_notification_settings/{propose|commit}"},{"name":"request_certificate","title":"Zertifikat anfordern","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/request_certificate/{propose|commit}"},{"name":"revoke_certificate_request","title":"Anforderung schließen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/revoke_certificate_request/{propose|commit}"},{"name":"accept_certificate_submission","title":"Eingang übernehmen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/accept_certificate_submission/{propose|commit}"},{"name":"reject_certificate_submission","title":"Eingang ablehnen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/reject_certificate_submission/{propose|commit}"},{"name":"create_certificate","title":"Zertifikat hinterlegen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/create_certificate/{propose|commit}"},{"name":"set_certificate_status","title":"Zertifikatsstatus setzen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/set_certificate_status/{propose|commit}"},{"name":"set_certificate_visibility","title":"Sichtbarkeit setzen","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/set_certificate_visibility/{propose|commit}"},{"name":"correct_certificate","title":"Zertifikat korrigieren oder erneuern","scope":"certificates:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/correct_certificate/{propose|commit}"},{"name":"assign_certificate","title":"Zertifikat Produkten zuordnen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/assign_certificate/{propose|commit}"},{"name":"unassign_certificate","title":"Zuordnung lösen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/unassign_certificate/{propose|commit}"},{"name":"create_producer","title":"Station anlegen (alter Name)","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/create_producer/{propose|commit}"},{"name":"update_producer","title":"Station ändern (alter Name)","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/update_producer/{propose|commit}"},{"name":"set_location","title":"Standort setzen","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/set_location/{propose|commit}"},{"name":"declare_origin","title":"Ursprung erklären","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/declare_origin/{propose|commit}"},{"name":"link_document","title":"Dokument verknüpfen","scope":"documents:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/link_document/{propose|commit}"},{"name":"assign_producer","title":"Station einem Produkt zuordnen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/assign_producer/{propose|commit}"},{"name":"create_station","title":"Station anlegen","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/create_station/{propose|commit}"},{"name":"update_station","title":"Station ändern","scope":"partners:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/update_station/{propose|commit}"},{"name":"set_chain","title":"Lieferkette setzen","scope":"products:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/set_chain/{propose|commit}"},{"name":"create_access_grant","title":"Prüfzugang ausstellen","scope":"access:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/create_access_grant/{propose|commit}"},{"name":"revoke_access_grant","title":"Prüfzugang zurückziehen","scope":"access:write","kind":"write","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/revoke_access_grant/{propose|commit}"},{"name":"upload_document","title":"Datei hochladen","scope":"documents:write","kind":"upload","public":false,"method":"POST","path":"https://id.tooru.io/v1/ops/upload_document/{propose|commit}"},{"name":"set_assortment","title":"Sortiment setzen (tooru-Admin)","scope":null,"kind":"admin","public":false,"method":"POST","path":"https://id.tooru.io/v1/admin/ops/set_assortment/{propose|commit}"},{"name":"verify_party_gln","title":"GLN-Prüfung setzen (tooru-Admin)","scope":null,"kind":"admin","public":false,"method":"POST","path":"https://id.tooru.io/v1/admin/ops/verify_party_gln/{propose|commit}"}],"tooru:auth":{"agent":"Authorization: Bearer tooru_sk_… (Schlüssel je Betrieb, von tooru ausgestellt; Rechte siehe /v1/whoami)","login":"Authorization: Bearer <JWT von tooru-portal>"},"tooru:note":"Ohne Schlüssel geht genau, was public: true trägt. Alles andere braucht einen Schlüssel — mit scope das genannte Recht, ohne scope reicht der Schlüssel selbst (whoami, list_activity) oder die Rolle tooru-Admin (list_admin_parties, /v1/admin/ops). EPCIS Capture und die Registrierung bei einem GS1-Register antworten weiterhin 501 mit Begründung.","proof":null,"tooru:proofStatus":"not-issued","tooru:proofNote":"Reservierter Platz für eine Verifiable Credential (EN 18246), noch leer. Die Integritätskette selbst existiert bereits und steht an jedem digital signierten Datensatz unter \"tooru:trust\" — diese Antwort enthält keinen.","tooru:verificationKey":null,"tooru:proofBlockedBy":["Verifiable Credential: Konstrukt noch nicht gewählt (Hash-Vertrag, Schritt B3 offen)","EN 18246:2026 published 2026-09-16 (catalogue sources), text not obtained, no Official Journal citation found","Öffentlicher Anker (Schale 1) läuft noch lokal, nicht auf einem öffentlichen Netz"]}