Scope
Use Cases, Datenzweck, Zielsysteme, Rollen und Nicht-Ziele dokumentieren.
Integration · Onboarding · Go-live
Ein gemeinsamer Lebenszyklus für Scope, Mandanten, Zugänge, VIN, OE, Scanner und Warenkorb – mit visuellen Integrationsabläufen, belastbarer Abnahme und kontrolliertem Go-live.
Ein Einstieg, ein Integrationsvertrag, sieben überprüfbare Gates.
00 · Gemeinsamer Lebenszyklus
Integration und Onboarding sind ein gemeinsamer Prozess. Jeder Übergang besitzt einen konkreten Nachweis und eine verantwortliche Freigabe.
Use Cases, Datenzweck, Zielsysteme, Rollen und Nicht-Ziele dokumentieren.
Workspace, Master-/Client-Key, Rechte, Limits und Kosten eindeutig zuordnen.
Objekte, IDs, Statuswerte und Mapping-Versionen festlegen.
VIN, OE, Scanner oder Warenkorb mit sicheren Fehlerpfaden anbinden — zuerst gegen einen Sandbox-Key, dann produktiv.
Referenz-, Negativ- und 202-Fälle nachvollziehbar protokollieren.
Produktiv-Key, Monitoring, Supportweg und Rückfallplan aktivieren.
Versionen, Rotation, Reviews, Migrationen und Abschaltung kontrollieren.
Onboarden Verkäufer und kontrollieren Veröffentlichungen.
Verwerter und Teilehändler binden Artikelanlage, Demontage und Bestand an.
tapiId für weitere Teile verwenden.ERP-Anbieter provisionieren und orchestrieren mehrere Kundenmandanten.
Nehmen Gebrauchtwagen mit einem Aufruf herein.
POST /vehicles/intake in eine Fahrzeugakte überführen.POST /vision/condition-report als strukturierten Zustandsbericht abnehmen.POST /vehicles/{tapiId}/listing aus den dokumentierten Fahrzeugdaten erzeugen.Bettet die API als White-Label-Baustein für die eigenen Händler ein.
POST /client/partner-workspaces einen kompletten Workspace anlegen: Unter-Client, API-Key, Endpunkt-Freischaltung, optional Kostenübernahme.202, Location, Retry-After, Abbruch und Wiederaufnahme nachweisen.01 · Start & Zugänge
Ein Master-Key genügt für den direkten Start. Client-Keys werden nur benötigt, wenn Kunden, Mandanten, Anwendungen oder Nutzungsgrenzen getrennt werden sollen.
Der Partner entscheidet über das Mandantenmodell; der Hub stellt die passenden Zugänge und API-Verträge bereit.
POST /client/users und bei Bedarf weitere Keys.Idempotency-Key ausweist. POST /client/users, POST /client/users/{clientId}/keys und POST /client/partner-workspaces akzeptieren den Header nicht; wird er gesendet, antworten sie mit HTTP 400 und error: idempotency_key_not_supported. Nach Timeout, Verbindungsabbruch oder anderem unklaren Ausgang nicht erneut posten, sondern den Client-, Workspace- und Schlüsselbestand über die dokumentierten GET-/Listen-Endpunkte abgleichen. Ein in einer verlorenen Antwort ausgegebener Klartext-Key ist nicht wieder abrufbar; eine Ersatz- oder Rotationsaktion darf erst nach diesem Abgleich bewusst gestartet werden.X-Api-Key für alle freigeschalteten Prozesse.
Eigene Keys, Limits, Pläne und Nutzung je Client.
Direkte Ergebnisse oder standardisierte 202-Jobs.
Guthaben, Planverbrauch und Endpunktnutzung abrufbar.
02 · VIN-Prozesse
Der numerische provider-Wert wird beim Fahrzeugabgleich gewählt. Beim anschließenden Teileabruf für dieselbe VIN wird er nicht erneut gesendet.
Öffentlicher Auswahlwert des Fahrzeugaufrufs mit dokumentiertem Redirect-Zustand.
GET /vin/{vin}/vehicle?provider=1.
Bei redirect_required eine Session über POST /vin/redirect-sessions mit VIN, HTTPS-Return-URL und optionalem state erstellen.
Nur die erhaltene redirectUrl wird geöffnet; der API-Key bleibt serverseitig.
status, tapiId und optional den unveränderten state verarbeiten.
GET /vin/{vin}/parts ohne erneuten Auswahlwert; bei 202 die Job-Status-URL nach Retry-After abfragen.
matchLevel auswerten.Öffentlicher Auswahlwert des Fahrzeugaufrufs.
GET /vin/{vin}/vehicle?provider=2.
tapiId und die verfügbaren Antwortfelder im Kundensystem speichern.
GET /vin/{vin}/parts ohne erneuten Auswahlwert aufrufen.
matchLevel und gegebenenfalls mehrere zurückgegebene Varianten fachlich behandeln.
matchLevel.Öffentlicher Auswahlwert des Fahrzeugaufrufs.
GET /vin/{vin}/vehicle?provider=3.
tapiId und die verfügbaren Antwortfelder im Kundensystem speichern.
GET /vin/{vin}/parts ohne erneuten Auswahlwert aufrufen.
Den zurückgegebenen Ergebnischarakter und gegebenenfalls mehrere Varianten sichtbar behandeln.
matchLevel.provider wird nur beim Fahrzeugabgleich gesetzt und beim Teileabruf weggelassen. Ein widersprüchlicher Wert wird mit vin_provider_mismatch abgewiesen.parts[] enthält die Pflichtfelder tapiGenArt und parts[].vdi. parts[].vdi enthält bestätigte vollständige VDI-4081-Codes und bleibt ohne gültige Zuordnung als [] vorhanden. Der fachliche Ergebnischarakter wird über matchLevel ausgewertet.03 · OE-Prozesse
Der Basisabgleich liefert HTTP 200 für einen bestätigten OE-Treffer. tapiGenArt und vdi ergänzen diesen Treffer; ohne Treffer antwortet die API mit 404. Weitere Anreicherungen werden nur nach einem bestätigten Treffer aufgerufen.
Die Kernidentifikation bleibt von Preis-, Aftermarket-Referenz- und Textprozessen getrennt.
GET /parts/oe/{oeNumber}.200. Kein Treffer: 404./parts/oe/{oeNumber}/aftermarket-references, /parts/oe/{oeNumber}/price oder /parts/oe/{oeNumber}/seo.200 liefert einen bestätigten OE-Treffer im Pflichtfeld part. Die geschlossene Antwort enthält genau oeNumber, normalizedOeNumber, tapiGenArt, vdi, part, fitment, replacementChain, references und referenceNumbers. part.name kann null und fitment leer sein. references gruppiert bestätigte Vergleichsnummern in Objekten aus manufacturer und numbers; referenceNumbers.oe_oem_reference_numbers führt sie als deduplizierte Liste einschließlich der bestätigten OE-Nummer. Nur replacementChain dokumentiert gerichtete from/to-Kanten. tapiGenArt und vdi sind Best-Effort-Anreicherungen und bleiben als null beziehungsweise [] vorhanden, ohne den Basistreffer zu blockieren. 404 bedeutet, dass kein OE-Treffer vorliegt; 422 wird ohne stille Kandidatenauswahl zur Fachprüfung gegeben.GET /parts/oe/{oeNumber}/seo erzeugt aus der bestätigten OE-Nummer den veröffentlichungsfertigen Artikel. marketplaceId wählt den Marktplatz — dokumentiert sind die eBay-Marktplätze EBAY_AT bis EBAY_US mit EBAY_DE als Standard —, language die Inhaltssprache. Die Antwort liefert den Angebotstitel in content.ebayTitle innerhalb der dokumentierten 80-Zeichen-Grenze, die Marktplatzkategorie in categoryId, die Artikelmerkmale in itemSpecifics als {name, value[]}, Suchbegriffe in keywords, die Produktbenennung in product sowie den Shop-SEO-Text in content.title, content.h1, content.metaTitle, content.metaDescription, content.slug und content.bulletPoints. 404 seo_no_exact_match ist die dokumentierte Nichttreffer-Antwort. Der Inhalt ist Veröffentlichungstext und vor der Veröffentlichung zu prüfen; eine Passungsaussage entsteht daraus nicht.04 · Scanprozesse
Der Scan ist kein isoliertes OCR-Ergebnis: Jeder Dokumenttyp führt gezielt in den passenden VIN-, OE- oder Dokumentprozess.
VIN direkt aus einem Foto oder zusammen mit normalisierten, länderspezifischen Feldern aus einem Fahrzeugschein-Bild/PDF erfassen.
POST /scanner/vin/extract oder international POST /scanner/document/registration/internationalfileUrl verwenden · nationaler Vertrag unter POST /scanner/document/registrationprovider-Auswahlwert 1, 2 oder 3Je gewünschter Tiefe Text, Teilenummern oder alle erkennbaren Merkmale extrahieren.
/scanner/label/basic, /scanner/label/extract-partnumbers oder /scanner/label/extract-allKalkulationen mit zwölf festen Feldern einschließlich Ausstattung auslesen oder den reichhaltigen Fahrzeugvertrag gezielt wählen.
POST /scanner/document/calculationPOST /scanner/document/vehiclequality=standard; enhanced und maximum sind dort keine gültigen Auswahlwerte. Pfadmigration ohne doppelten POST: Die bisherigen Pfade /scanner/document/extract, /scanner/vehicle-document/extract, /scanner/registration-document und /scanner/registration-document/v2 bleiben als veraltete Kompatibilitätsaliase ohne HTTP-Weiterleitung erhalten. Fahrzeug- und Zulassungspaare liefern identische Antworten und teilen Idempotenz pfadübergreifend. Nur die alte Dokumentroute behält bewusst elf Felder ohne equipment; ein Schlüsselwechsel zwischen ihr und der zwölfteiligen Kalkulationsantwort endet mit HTTP 409.04b · Vision-Bildprozess
Der veröffentlichte Generierungsprozess liefert sechs Standardansichten als asynchronen Job. Eingabemodus, Evidenzbasis und Identitätsverifikation bleiben in der Antwort explizit.
sourceMode=references_required ist die Vorgabe: Nur referenzbelegte Ansichten werden ausgegeben; fehlen belastbare Bilder, endet der Job mit insufficient_reference_images und wird erstattet. references_preferred nutzt Referenzen, falls vorhanden, und leitet sonst aus der Teilenummer ab. knowledge_only verzichtet ausdrücklich auf Referenzen und darf nicht mit referenceImageUrls kombiniert werden. Sobald einer dieser beiden Modi aus der Teilenummer ableitet, gilt basis=knowledge, partIdentityVerified=false und verificationConfidence=limited; die Bilder tragen keine Beschriftung. Maßwerte ohne skalierte Evidenz bleiben leer.
sourceMode sendenPOST /vision/part/generate202 und Retry-After beachtenGET /vision/part/generation-jobs/{jobId}basis, Ansichten, Unsicherheiten und Verifikation prüfenpartIdentityVerified=false. MAC endet in XX:XX:XX, IMEI in sieben X, VIN in acht X. Freie Seriennummern bleiben nur dann teilweise sichtbar, wenn ein typenbezogenes Präfix sicher erkannt wurde; sonst wird die gesamte Kennung maskiert.04c · Direkte Vision-Bildprozesse
Alle drei Prozesse sind synchrone POST-Aufrufe. Sie liefern nur nach vollständiger Prüfung HTTP 200; Teilresultate werden nie veröffentlicht.
POST /vision/part/composite erwartet partImageUrl und backgroundImageUrl. partMaskUrl, eine normalisierte targetBox, Hinweise bis 1.000 Zeichen und Ausgabeformat/-größe sind optional. Die Antwort enthält genau ein asset, partIdentityPreserved=true und limitations. Nur Übergang, Lichtangleichung und Kontaktschatten dürfen generativ entstehen. Die Abrechnung je Ergebnis richtet sich für standard, enhanced und maximum ausschließlich nach den vertraglich vereinbarten Konditionen.
POST /vision/part/damage-transfer nimmt 1–5 sources und 1–6 targets mit eindeutiger Zielansicht entgegen; optionale Masken grenzen das konkrete Bauteil ab. findings nennt Quellindizes, Konfidenz und tatsächlich bearbeitete Ansichten, notTransferred alles nicht belastbar Übertragene. Verdeckte oder nicht fotografierte Schäden werden nie ergänzt. Der gesamte Auftrag wird als Bundle abgerechnet, nicht pro Zielbild; maßgeblich sind ausschließlich die vertraglich vereinbarten Konditionen.
POST /vision/identifiers/redact verarbeitet 1–10 imageUrls als ein Paket. Die Abrechnung richtet sich ausschließlich nach den vertraglich vereinbarten Konditionen. Die feste Richtlinie tapinoma.public-asset-identifiers.v1 erhält bei MAC nur das OUI, bei IMEI den TAC und bei VIN die ersten neun Zeichen; Seriennummern und sonstige Instanz-IDs werden vollständig maskiert, maschinenlesbare Codes vollständig entwertet. Bestätigte OE-/Typ-/Revisionskennungen bleiben erhalten. Die Ergebnisbilder sind synthetic=false.
Idempotency-Key; bei jeder Wiederholung dieses Vorgangs bleibt derselbe Idempotency-Key unverändert. Der erste Erfolg liefert X-Tapinoma-Idempotency-Stored: true oder false. Bei false führt ein späterer Aufruf mit demselben Idempotency-Key zu 409 idempotency_result_unavailable: Zustand abgleichen und niemals automatisch einen neuen Idempotency-Key erzeugen. Läuft derselbe Idempotency-Key noch, 409 idempotency_request_in_progress samt Retry-After abwarten und den Vorgang mit demselben Idempotency-Key wiederholen. part_segmentation_failed, damage_not_transferable, image_edit_unverified oder identifier_redaction_unverified führen zu 422, automatischer Erstattung und null Assets; 422 ist endgültig und darf weder mit demselben noch mit einem neuen Idempotency-Key wiederholt werden. 503 weist auf eine vorübergehende Nichtverfügbarkeit hin; eine Wiederholung darf ausschließlich mit demselben Idempotency-Key erfolgen. Erfolgreiche Assets enthalten tapinoma.vision-provenance.v1, einen sichtbaren Hinweis und identifierRedaction.verified=true.05 · Warenkorbprozesse
Der Warenkorb behält Reihenfolge und Duplikate bei. Das Kundensystem erhält je Position eine klare Übereinstimmung und zusätzlich die Information, ob die zugrunde liegende Teileliste vollständig war.
mode=type prüft auf Fahrzeugtypebene; mode=vehicle verwendet den konkreten Fahrzeugkontext.
POST /vin/cart-check.200 liefert Ergebnis; 202 liefert Job-ID und Status-URL.Retry-After beachten und GET /vin/cart-check/jobs/{jobId} abrufen; der Statusabruf gehört zum ursprünglichen Auftrag und ist keine zweite Bestellung.fits je Position und complete für die Aussagekraft auswerten.fits=false bei complete=false ist kein abschließender Ausschluss. Das Kundensystem kann die Position sichtbar zur Prüfung markieren, statt sie fälschlich abzulehnen.06 · Integrationsumfang
Der Partner baut nur die Übergabepunkte, die sein Use Case tatsächlich benötigt. Auswahlwerte, Normalisierung und Ergebnischarakter folgen konsistenten API-Verträgen.
Ein kleiner, klar begrenzter technischer Umfang.
X-Api-Keyredirect_required202-JobsDer öffentliche Vertrag deckt die wiederkehrenden Integrationsaufgaben ab.
tapiId07 · Abnahme, Go-live & Betrieb
Die Integration ist erst fertig, wenn Mandantentrennung, repräsentative End-to-End-Abläufe, Wartezustände, Fehlerbehandlung und Betriebswege gemeinsam abgenommen sind.
Falsche, gesperrte und fremde Keys werden abgewiesen; Nutzung bleibt dem richtigen Mandanten zugeordnet.
Ein gewählter VIN-, OE-, Scan- oder Warenkorbvorgang läuft vom Eingang bis zum fachlichen Ergebnis.
202, Retry-After, 429, 5xx, Timeout und Wiederaufnahme erzeugen korrekte Zustände.
Mapping-Version, Ergebnischarakter und Freigaberegel verhindern ungeprüfte automatische Ausgaben.
Plan, Kontingent, Sponsoring und Nutzung sind mit dem vorgesehenen Workspace geprüft.
Mit einem bekannten Mandanten starten, Antwort, Mapping, Speicherung und Ausgabe gemeinsam prüfen und Volumen erst danach stufenweise erhöhen.
Zeitpunkt, Endpunkt, HTTP-Status, Korrelation-ID, Auswirkung und erwartetes Ergebnis übergeben – niemals API-Key oder unnötige Dokumentdaten.
Mandanten, Keys, Rechte, Limits, Nutzung, Fehlerquoten und manuelle Prüfungen kontrollieren.
Neue API- oder Mapping-Version zuerst mit einem Sandbox-Key prüfen, Referenzfälle wiederholen und dann kontrolliert umschalten. Der Sandbox-Key nutzt dieselbe Basis-URL und ausschließlich synthetische Testdaten; seine Nutzung richtet sich nach den vereinbarten Konditionen.
Keys sperren, Jobs beenden, Sponsoring widerrufen, Daten fristgerecht behandeln und Abschluss protokollieren.
Wähle VIN, OE, Scanner oder Warenkorb als ersten Use Case und führe ihn durch alle sieben Gates bis zum kontrollierten Betrieb.
Integration · Onboarding · Go-live
One lifecycle for scope, tenants, access, VIN, OE, scanning and cart checks—with visual integration workflows, evidence-based acceptance, and a controlled go-live.
One entry point, one integration contract, seven auditable gates.
00 · Shared lifecycle
Integration and onboarding are one process. Every transition has concrete evidence and an accountable approval.
Document use cases, data purpose, target systems, roles, and non-goals.
Assign workspace, master/client key, rights, limits, and cost unambiguously.
Define objects, IDs, states, sources, and mapping versions.
Connect VIN, OE, scanning, or cart with safe failure paths — against a sandbox key first, then in production.
Record reference, negative, and 202 cases traceably.
Activate production key, monitoring, support path, and fallback.
Control versions, rotation, reviews, migrations, and shutdown.
Onboard sellers and control publication.
Dismantlers and parts dealers connect article creation, dismantling, and inventory.
tapiId for more parts.ERP vendors provision and orchestrate multiple customer tenants.
Take in used vehicles with a single call.
POST /vehicles/intake.POST /vision/condition-report.POST /vehicles/{tapiId}/listing.Embed the API as a white-label building block for their dealers.
POST /client/partner-workspaces: sub-client, API key, endpoint enablement, optional cost coverage.202, Location, Retry-After, cancellation, and resume.01 · Start & access
A master key is enough to start directly. Client keys are only needed when customers, tenants, applications or usage limits must be separated.
The partner chooses the tenant model; the Hub supplies the matching access and API contracts.
POST /client/users and additional keys as needed.Idempotency-Key request parameter for that operation; this declared parameter is the sole support signal. POST /client/users, POST /client/users/{clientId}/keys, and POST /client/partner-workspaces issue plaintext keys and do not declare or accept Idempotency-Key; sending the header returns HTTP 400 with error: idempotency_key_not_supported. After a timeout, connection loss, or any other ambiguous outcome, do not post again; reconcile client, workspace, and key state through the documented GET/list operations. A plaintext key issued in a lost response cannot be retrieved; start a replacement or rotation deliberately only after reconciliation.X-Api-Key for every enabled workflow.
Keys, limits, plans and usage per client.
Direct results or standard 202 jobs.
Balance, plan consumption and endpoint usage.
02 · VIN workflows
Choose the numeric provider value on the vehicle request. Do not send it again on the parts request for the same VIN.
Public selection value for the vehicle request.
GET /vin/{vin}/vehicle?provider=1.
If the response is redirect_required, create a session with POST /vin/redirect-sessions.
Open redirectUrl; keep the API key server-side and accept status, tapiId, and optional state on return.
GET /vin/{vin}/parts without provider; on 202, poll the returned status URL after Retry-After.
matchLevel.Public selection value for the vehicle request.
GET /vin/{vin}/vehicle?provider=2.
Use tapiId and the response fields that are present.
GET /vin/{vin}/parts without provider.
Use matchLevel and any returned variants for the business decision.
Public selection value for the vehicle request.
GET /vin/{vin}/vehicle?provider=3.
Use tapiId and the response fields that are present.
GET /vin/{vin}/parts without provider.
Use matchLevel and any returned variants for the business decision.
provider only on the vehicle request and omit it from /vin/{vin}/parts. A conflicting explicit value is rejected as vin_provider_mismatch.parts[] item contains the required tapiGenArt and parts[].vdi fields. parts[].vdi contains confirmed full VDI 4081 codes and remains present as [] when no valid mapping is available. Use the returned fields and matchLevel to interpret the result.03 · OE workflows
The base lookup returns HTTP 200 for a confirmed OE match. tapiGenArt and VDI enrich that match; without a match, the Hub returns 404. Further enrichment is requested only after a confirmed match.
Core identification remains separate from price, aftermarket-reference and content workflows.
GET /parts/oe/{oeNumber}.200. No match: 404./parts/oe/{oeNumber}/aftermarket-references, /parts/oe/{oeNumber}/price or /parts/oe/{oeNumber}/seo.200 returns a confirmed OE match in the required part field. The closed response contains exactly oeNumber, normalizedOeNumber, tapiGenArt, vdi, part, fitment, replacementChain, references, and referenceNumbers. part.name may be null and fitment may be empty. references groups confirmed comparison numbers in objects containing manufacturer and numbers; referenceNumbers.oe_oem_reference_numbers provides the deduplicated list including the confirmed OE number. Only replacementChain documents directed from/to edges. tapiGenArt and vdi are best-effort enrichments and remain present as null and [] without blocking the base match. Route 404 and 422 to specialist review without silently selecting a candidate.GET /parts/oe/{oeNumber}/seo turns the confirmed OE number into a publication-ready article. marketplaceId selects the marketplace — the documented values are the eBay marketplaces EBAY_AT through EBAY_US, with EBAY_DE as the default — and language selects the content language. The response supplies the listing title in content.ebayTitle within the documented 80-character limit, the marketplace category in categoryId, the item specifics in itemSpecifics as {name, value[]}, search terms in keywords, product naming in product, and the shop SEO text in content.title, content.h1, content.metaTitle, content.metaDescription, content.slug and content.bulletPoints. 404 seo_no_exact_match is the documented no-match answer. The content is publication copy to be reviewed before it goes live; it never becomes a fitment statement.04 · Scanning workflows
A scan is not an isolated OCR result: each document type continues into the right VIN, OE or document process.
Read the VIN directly from a photo or capture it with normalised, country-specific fields from a registration-document image/PDF.
POST /scanner/vin/extract or internationally POST /scanner/document/registration/internationalfileUrl · national contract at POST /scanner/document/registrationprovider selection value 1, 2 or 3Extract text, part numbers or all visible attributes.
/scanner/label/basic, /scanner/label/extract-partnumbers or /scanner/label/extract-allExtract a calculation's twelve fixed fields including equipment, or deliberately choose the rich vehicle contract.
POST /scanner/document/calculationPOST /scanner/document/vehiclequality=standard; enhanced and maximum are not valid choices there. Path migration without a second POST: /scanner/document/extract, /scanner/vehicle-document/extract, /scanner/registration-document and /scanner/registration-document/v2 remain deprecated compatibility aliases without HTTP redirects. Vehicle and registration pairs return identical responses and share cross-path idempotency. Only the old document path deliberately retains eleven fields without equipment; moving its key to the twelve-field calculation contract returns HTTP 409.04b · Vision image workflows
The published generation workflow returns six standard views as an asynchronous job. Input mode, evidence basis, and identity verification remain explicit in the response.
sourceMode=references_required is the default: only reference-evidenced views are returned; without reliable images, the job ends with insufficient_reference_images and is refunded. references_preferred uses references when available and otherwise derives from the part number. knowledge_only explicitly avoids references and cannot be combined with referenceImageUrls. Whenever either of these modes derives from the part number, basis=knowledge, partIdentityVerified=false, and verificationConfidence=limited; images carry no labels. Measurements without scaled evidence remain empty.
sourceModePOST /vision/part/generate202 and Retry-AfterGET /vision/part/generation-jobs/{jobId}basis, generated views, uncertainty, and verificationpartIdentityVerified=false remains explicit. MAC ends in XX:XX:XX, IMEI in seven X, and VIN in eight X. A free-form serial remains partly visible only if a type-level prefix is identified safely; otherwise the whole identifier is masked.04c · Direct Vision image workflows
All three workflows are synchronous POST calls. They return HTTP 200 only after the complete output has passed verification; partial results are never published.
POST /vision/part/composite requires partImageUrl and backgroundImageUrl. An exact partMaskUrl, normalised targetBox, instructions of up to 1,000 characters, and output format/size are optional. The response has exactly one asset, partIdentityPreserved=true, and limitations. Only transitions, light matching, and contact shadow may be generated. Billing per result for standard, enhanced, and maximum is governed exclusively by the contractually agreed terms.
POST /vision/part/damage-transfer accepts 1–5 sources and 1–6 targets with unique target views; optional masks isolate the actual part. findings identifies source indexes, confidence, and views actually edited, while notTransferred lists unsupported transfers. Hidden or unphotographed damage is never inferred. The whole request is billed as one bundle, not per target image; only the contractually agreed terms apply.
POST /vision/identifiers/redact processes 1–10 imageUrls as one bundle. Billing is governed exclusively by the contractually agreed terms. The immutable tapinoma.public-asset-identifiers.v1 policy preserves only the OUI of a MAC, the TAC of an IMEI, and the first nine VIN characters; serials and other instance IDs are fully masked and machine-readable codes are fully invalidated. Confirmed OE/type/revision identifiers remain visible. Result images have synthetic=false.
Idempotency-Key, and keep that same idempotency key unchanged for every retry of the operation. The first success returns X-Tapinoma-Idempotency-Stored: true or false. With false, a later call with the same idempotency key returns 409 idempotency_result_unavailable: reconcile state and never generate a new idempotency key automatically. While the operation is still running, wait for Retry-After from 409 idempotency_request_in_progress, then retry with the same idempotency key. part_segmentation_failed, damage_not_transferable, image_edit_unverified, or identifier_redaction_unverified returns 422, is automatically refunded, and returns zero assets; 422 is terminal and must never be retried with either the same or a fresh idempotency key. 503 indicates temporary unavailability and may be retried only with the same idempotency key. Successful assets contain tapinoma.vision-provenance.v1, a visible disclosure, and identifierRedaction.verified=true.05 · Cart workflows
Input order and duplicates are preserved. Each line receives a match plus an indication whether the usable parts list was complete.
mode=type checks vehicle type; mode=vehicle uses the concrete vehicle context.
POST /vin/cart-check.200 returns result; 202 returns job and status URL.Retry-After and call GET /vin/cart-check/jobs/{jobId}; status retrieval belongs to the original order and is not a second order.fits and overall complete.fits=false with complete=false is not a definitive exclusion.06 · Integration scope
Partners build only the hand-offs required by their use case. Selection values, normalization, and result semantics follow consistent API contracts.
A small and bounded technical surface.
X-Api-Keyredirect_required202 jobsThe public contract covers the complete request lifecycle.
tapiId07 · Acceptance, go-live & operations
Integration is complete only when tenant separation, representative end-to-end workflows, waiting states, failure handling, and operating paths have been accepted together.
Wrong, suspended, and foreign keys are rejected; usage remains assigned to the correct tenant.
One selected VIN, OE, scan, or cart flow runs from input to business outcome.
202, Retry-After, 429, 5xx, timeout, and resume create correct states.
Mapping version, result character, and release rules prevent unchecked automatic output.
Plan, quota, sponsorship, and usage are verified with the intended workspace.
Start with one known tenant, review response, mapping, persistence, and output together, then increase volume gradually.
Provide time, endpoint, HTTP status, correlation ID, impact, and expected outcome—never the API key or unnecessary document data.
Review tenants, keys, rights, limits, usage, failure rates, and manual checks.
Verify a new API or mapping version with a sandbox key first, rerun the reference cases, then switch under control. The sandbox key uses the same base URL and only synthetic test data; its use is governed by the agreed terms.
Revoke keys, end jobs, withdraw sponsorship, handle data by retention, and record completion.
Choose VIN, OE, scanning, or cart first and take it through all seven gates into controlled operations.
Intégration · Onboarding · Mise en production
Un cycle commun pour le périmètre, les mandants, les accès, le VIN, l’OE, le scan et le panier, avec processus visuels, recette probante et mise en production contrôlée.
Un point d’entrée, un contrat d’intégration, sept jalons vérifiables.
00 · Cycle commun
Intégration et onboarding forment un seul processus. Chaque transition possède une preuve concrète et une validation responsable.
Documenter usages, finalité, systèmes cibles, rôles et exclusions.
Affecter workspace, clé master/client, droits, limites et coûts.
Définir objets, IDs, statuts, sources et versions de mapping.
Raccorder VIN, OE, scan ou panier avec des erreurs sûres — d’abord avec une clé sandbox, puis en production.
Consigner les cas de référence, négatifs et 202.
Activer clé, supervision, support et plan de repli.
Maîtriser versions, rotation, revues, migrations et arrêt.
Onboardent les vendeurs et contrôlent la publication.
Recycleurs et négociants en pièces relient création d’article, démontage et stock.
tapiId.Les éditeurs d’ERP provisionnent et orchestrent plusieurs mandants clients.
Réceptionnent les véhicules d’occasion en un seul appel.
POST /vehicles/intake.POST /vision/condition-report.POST /vehicles/{tapiId}/listing.Intègrent l’API comme brique en marque blanche pour leurs négociants.
POST /client/partner-workspaces : sous-client, clé API, activation des endpoints, prise en charge des coûts en option.202, Location, Retry-After, interruption et reprise.01 · Démarrage & accès
Une clé master suffit pour démarrer. Les clés client ne sont nécessaires que pour séparer clients, mandants, applications ou limites d’usage.
Le partenaire choisit son modèle de mandants ; le Hub fournit les accès et contrats API correspondants.
POST /client/users et clés supplémentaires.Idempotency-Key ; ce paramètre déclaré est le seul signal de prise en charge. POST /client/users, POST /client/users/{clientId}/keys et POST /client/partner-workspaces délivrent des clés en clair et ne déclarent ni n’acceptent Idempotency-Key ; l’envoi de cet en-tête renvoie le statut HTTP 400 avec error: idempotency_key_not_supported. Après un délai d’attente, une perte de connexion ou toute autre issue incertaine, ne pas relancer le POST ; rapprocher l’état des clients, workspaces et clés au moyen des opérations GET et de liste documentées. Une clé en clair délivrée dans une réponse perdue ne peut pas être récupérée ; ne lancer délibérément un remplacement ou une rotation qu’après ce rapprochement.X-Api-Key pour tous les processus autorisés.
Clés, limites, forfaits et usage par client.
Résultats directs ou jobs 202.
Solde, forfaits et usage des endpoints.
02 · Processus VIN
Choisir la valeur numérique provider lors de l’appel véhicule. Ne pas la renvoyer lors de l’appel pièces pour le même VIN.
Valeur publique de sélection pour l’appel véhicule.
GET /vin/{vin}/vehicle?provider=1.
Si la réponse est redirect_required, créer une session avec POST /vin/redirect-sessions.
Ouvrir redirectUrl, conserver la clé API côté serveur et accepter status, tapiId et state facultatif au retour.
GET /vin/{vin}/parts sans provider ; en 202, interroger l’URL d’état renvoyée après Retry-After.
matchLevel.Valeur publique de sélection pour l’appel véhicule.
GET /vin/{vin}/vehicle?provider=2.
Utiliser tapiId et les champs présents dans la réponse.
GET /vin/{vin}/parts sans provider.
Utiliser matchLevel et les éventuelles variantes renvoyées pour la décision métier.
Valeur publique de sélection pour l’appel véhicule.
GET /vin/{vin}/vehicle?provider=3.
Utiliser tapiId et les champs présents dans la réponse.
GET /vin/{vin}/parts sans provider.
Utiliser matchLevel et les éventuelles variantes renvoyées pour la décision métier.
provider uniquement sur l’appel véhicule et l’omettre dans /vin/{vin}/parts. Une valeur explicite contradictoire est rejetée avec vin_provider_mismatch.parts[] contient les champs obligatoires tapiGenArt et parts[].vdi. parts[].vdi contient les codes VDI 4081 complets et confirmés et reste présent sous la forme [] lorsqu’aucune correspondance valide n’est disponible. Utiliser les champs renvoyés et matchLevel pour interpréter le résultat.03 · Processus OE
La recherche de base renvoie HTTP 200 pour un résultat OE confirmé. tapiGenArt et VDI enrichissent ce résultat ; sans correspondance, le Hub renvoie 404. Les autres enrichissements ne sont appelés qu’après un résultat confirmé.
L’identification reste séparée des processus de prix, de références aftermarket et de contenu.
GET /parts/oe/{oeNumber}.200. Aucun résultat : 404./parts/oe/{oeNumber}/aftermarket-references, /parts/oe/{oeNumber}/price ou /parts/oe/{oeNumber}/seo.200 renvoie un résultat OE confirmé dans le champ obligatoire part. La réponse fermée contient exactement oeNumber, normalizedOeNumber, tapiGenArt, vdi, part, fitment, replacementChain, references et referenceNumbers. part.name peut valoir null et fitment peut être vide. references regroupe les numéros de comparaison confirmés dans des objets contenant manufacturer et numbers ; referenceNumbers.oe_oem_reference_numbers fournit la liste dédoublonnée incluant le numéro OE confirmé. Seul replacementChain documente les arêtes orientées from/to. tapiGenArt et vdi sont des enrichissements best effort qui restent présents sous la forme null et [] sans bloquer le résultat de base. Transmettre 404 et 422 au contrôle spécialiste sans sélectionner silencieusement un candidat.GET /parts/oe/{oeNumber}/seo transforme le numéro OE confirmé en article prêt à publier. marketplaceId choisit la marketplace — les valeurs documentées sont les marketplaces eBay EBAY_AT à EBAY_US, avec EBAY_DE par défaut — et language la langue du contenu. La réponse fournit le titre d’annonce dans content.ebayTitle dans la limite documentée de 80 caractères, la catégorie de la marketplace dans categoryId, les caractéristiques de l’objet dans itemSpecifics sous forme {name, value[]}, les mots-clés dans keywords, la dénomination produit dans product ainsi que le texte SEO de la boutique dans content.title, content.h1, content.metaTitle, content.metaDescription, content.slug et content.bulletPoints. 404 seo_no_exact_match est la réponse documentée d’absence de correspondance. Le contenu est un texte de publication à vérifier avant diffusion ; il ne constitue jamais une affirmation de compatibilité.04 · Processus de scan
Un scan n’est pas un résultat OCR isolé : chaque document continue vers le bon processus VIN, OE ou documentaire.
Lire le VIN directement sur une photo ou avec les champs normalisés propres au pays depuis une image/PDF de la carte grise.
POST /scanner/vin/extract ou, à l’international, POST /scanner/document/registration/internationalfileUrl · contrat national sous POST /scanner/document/registrationprovider 1, 2 ou 3Extraire texte, références ou toutes les caractéristiques.
/scanner/label/basic, /scanner/label/extract-partnumbers ou /scanner/label/extract-allExtraire les douze champs fixes d’un calcul, équipement compris, ou choisir explicitement le contrat véhicule détaillé.
POST /scanner/document/calculationPOST /scanner/document/vehiclequality=standard ; enhanced et maximum n’y sont pas des choix valides. Migration de chemin sans second POST : /scanner/document/extract, /scanner/vehicle-document/extract, /scanner/registration-document et /scanner/registration-document/v2 restent des alias POST de compatibilité obsolètes sans redirection HTTP. Les paires véhicule et immatriculation renvoient des réponses identiques et partagent l’idempotence entre chemins. Seul l’ancien chemin document conserve volontairement onze champs sans equipment ; déplacer sa clé vers le contrat de calcul à douze champs renvoie HTTP 409.04b · Processus d’image Vision
Le processus de génération publié renvoie six vues standard sous forme de job asynchrone. Le mode d’entrée, la base de preuve et la vérification de l’identité restent explicites dans la réponse.
sourceMode=references_required est la valeur par défaut : seules les vues étayées par des références sont renvoyées ; sans images fiables, le job se termine par insufficient_reference_images et est remboursé. references_preferred utilise les références disponibles, puis déduit à partir du numéro de pièce à défaut. knowledge_only exclut volontairement les références et ne peut pas être combiné avec referenceImageUrls. Lorsque l’un de ces deux modes déduit le résultat du numéro de pièce, basis=knowledge, partIdentityVerified=false et verificationConfidence=limited ; les images ne portent aucun libellé. Les mesures sans preuve mise à l’échelle restent vides.
sourceMode choisi explicitementPOST /vision/part/generate202 et Retry-AfterGET /vision/part/generation-jobs/{jobId}basis, les vues générées, les incertitudes et la vérificationpartIdentityVerified=false reste explicite. MAC se termine par XX:XX:XX, IMEI par sept X et VIN par huit X. Un numéro de série libre ne reste partiellement visible que si un préfixe de type est identifié avec certitude ; sinon tout l’identifiant est masqué.04c · Processus d’image Vision directs
Les trois processus sont des appels POST synchrones. Ils ne renvoient HTTP 200 qu’après vérification de l’ensemble du résultat ; aucun résultat partiel n’est publié.
POST /vision/part/composite exige partImageUrl et backgroundImageUrl. Un partMaskUrl précis, une targetBox normalisée, des instructions jusqu’à 1 000 caractères et le format/la taille de sortie sont facultatifs. La réponse contient exactement un asset, partIdentityPreserved=true et limitations. Seuls les raccords, l’harmonisation de la lumière et l’ombre de contact peuvent être générés. La facturation par résultat de standard, enhanced et maximum est régie exclusivement par les conditions convenues au contrat.
POST /vision/part/damage-transfer accepte 1–5 sources et 1–6 targets avec des vues cibles uniques ; des masques facultatifs isolent la pièce. findings indique les indices sources, la confiance et les vues réellement modifiées ; notTransferred recense les transferts non étayés. Aucun dommage caché ou non photographié n’est déduit. Toute la requête est facturée comme un lot, et non par image cible ; seules les conditions convenues au contrat s’appliquent.
POST /vision/identifiers/redact traite 1–10 imageUrls comme un lot. La facturation est régie exclusivement par les conditions convenues au contrat. La politique immuable tapinoma.public-asset-identifiers.v1 ne conserve que l’OUI d’une MAC, le TAC d’un IMEI et les neuf premiers caractères d’un VIN ; les numéros de série et autres identifiants d’instance sont entièrement masqués et les codes lisibles par machine entièrement invalidés. Les identifiants OE/type/révision confirmés restent visibles. Les images de résultat ont synthetic=false.
Idempotency-Key à chaque nouvelle opération métier et conserver cette même clé d’idempotence pour toute reprise de l’opération. Le premier succès renvoie X-Tapinoma-Idempotency-Stored: true ou false. Avec false, un appel ultérieur avec la même clé d’idempotence renvoie 409 idempotency_result_unavailable : rapprocher l’état et ne jamais générer automatiquement une nouvelle clé d’idempotence. Tant que l’opération est en cours, attendre le Retry-After de 409 idempotency_request_in_progress, puis réessayer la requête avec la même clé d’idempotence. part_segmentation_failed, damage_not_transferable, image_edit_unverified ou identifier_redaction_unverified renvoie 422, est remboursé automatiquement et ne renvoie aucun asset ; 422 est définitif et ne doit jamais être retenté, ni avec la même clé d’idempotence ni avec une nouvelle. 503 indique une indisponibilité temporaire et ne peut être retenté qu’avec la même clé d’idempotence. Les assets réussis contiennent tapinoma.vision-provenance.v1, une mention visible et identifierRedaction.verified=true.05 · Processus panier
L’ordre et les doublons sont conservés. Chaque ligne reçoit un résultat et l’indication de complétude de la liste utilisée.
mode=type contrôle le type ; mode=vehicle utilise le véhicule concret.
POST /vin/cart-check.200 renvoie le résultat ; 202 renvoie un job.Retry-After et appeler GET /vin/cart-check/jobs/{jobId} ; la consultation du statut appartient à la commande initiale et ne crée pas de seconde commande.fits et complete.fits=false avec complete=false n’est pas une exclusion définitive.06 · Périmètre d’intégration
Le partenaire n’implémente que les points de passage utiles à son cas. Les valeurs de sélection, la normalisation et la sémantique des résultats suivent des contrats API cohérents.
Une surface technique réduite et délimitée.
X-Api-Keyredirect_required202Le contrat public couvre le cycle de requête complet.
tapiId07 · Recette, production & exploitation
L’intégration n’est terminée que lorsque séparation des mandants, processus de bout en bout représentatifs, attentes, erreurs et exploitation sont validés ensemble.
Les clés erronées, bloquées ou étrangères sont refusées ; l’usage reste au bon mandant.
Un flux VIN, OE, scan ou panier va de l’entrée au résultat métier.
202, Retry-After, 429, 5xx, timeout et reprise créent les bons statuts.
Version de mapping, nature du résultat et règle de validation bloquent les sorties non contrôlées.
Forfait, quota, sponsoring et usage sont vérifiés avec le workspace prévu.
Démarrer avec un mandant connu, contrôler réponse, mapping, stockage et sortie, puis augmenter progressivement le volume.
Fournir date, endpoint, statut HTTP, ID de corrélation, impact et résultat attendu, jamais la clé API ni des données inutiles.
Contrôler mandants, clés, droits, limites, usage, erreurs et vérifications manuelles.
Vérifier d’abord une nouvelle version d’API ou de mapping avec une clé sandbox, rejouer les cas de référence, puis basculer sous contrôle. La clé sandbox utilise la même URL de base et uniquement des données de test synthétiques ; son utilisation suit les conditions convenues.
Révoquer les clés, finir les jobs, retirer le sponsoring, traiter les données et consigner la clôture.
Choisissez VIN, OE, scan ou panier et faites-le passer par les sept jalons jusqu’à une exploitation contrôlée.