Goods-in: reading labels as deeply as the article needsAll articles

Goods-in: reading labels as deeply as the article needs

Not every label needs the most elaborate analysis. This case shows how goods-in matches reading depth to the article and still stores only validated numbers.

Published: 2026-09-12Reading time: 5 mintapinomahub API & workflows
API & processesAPIParts trade

At a parts dealer’s goods-in, crates of dismantled parts arrive every day. For a brake part the part number is enough; for a control unit hardware and software versions matter. Fully analysing every label yields details nobody needs; merely retyping stores typos.

Goods-in: reading labels as deeply as the article needsInput: a crate of parts, each with a label — and the question of how much of it must be read 1. Check whether a number is there (POST /scanner/label/basic): hasPartNumber and where — on the label or on the part itself 2. Read the numbers (POST /scanner/label/extract-partnumbers): partNumbers — part and reference numbers, without the other label details 3. Validate the number (GET /parts/oe/normalize): status and lookupKey instead of a character string read off the label 4. Identify the part (POST /parts/identify): Customer number, reading and description are weighed against each other 5. Look up the stock group (GET /vdi): VDI 4081 catalogue with version and main groups; the per-part assignment comes from the OE data Output: stored parts with a validated number and a consistent group The most thorough reading is not always the right one: the full label analysis belongs where variant and version details are needed.Goods-in: reading labels as deeply as the article needsInput: a crate of parts, each with a label — and the question of how much of it must be read01Check whether a number is therePOST /scanner/label/basichasPartNumber and where — on the label or on the part itself02Read the numbersPOST /scanner/label/extract-partnumberspartNumbers — part and reference numbers, without the other label details03Validate the numberGET /parts/oe/normalizestatus and lookupKey instead of a character string read off the label04Identify the partPOST /parts/identifyCustomer number, reading and description are weighed against each other05Look up the stock groupGET /vdiVDI 4081 catalogue with version and main groups; the per-part assignment comes from the OEdataOutput: stored parts with a validated number and a consistent groupThe most thorough reading is not always the right one: the full label analysis belongs where variant and versiondetails are needed.
Five calls from label to stock group. The first two choose the reading depth, the rest make the number reliable.

The Hub offers three depths of label reading. This case uses the two shallow ones: first it checks whether a number is legible at all and where it is, then only the numbers are read. The full analysis stays reserved for parts whose value depends on variant and version details.

SurfaceRoles
HubParts trading, Vehicle recyclers

What this case requires

  • A sharp photo of the label. The readings take a retrievable image address; blur costs more than a second photo.
  • A rule for which parts need the full analysis. Control units, lights and parts with variants belong there, wear parts usually do not.
  • The manufacturer, where known. Normalisation takes it as optional manufacturer context.
  • A stock system with groups. The VDI 4081 catalogue supplies the groups; the per-part assignment comes from the OE data.
  • The entitlement to query the vehicle. With the call you confirm that you are the keeper, the owner or demonstrably authorised or otherwise legally entitled, and that you use the identification number solely for the stated permissible purpose.

The sequence

The table names the responsible call per stage and what exists afterwards. The reasoning for why a stage cannot be skipped follows below it.

The call chain of this use case
StageCallWhat exists afterwards
Check whether a number is therePOST /scanner/label/basichasPartNumber and where — on the label or on the part itself
Read the numbersPOST /scanner/label/extract-partnumberspartNumbers — part and reference numbers, without the other label details
Validate the numberGET /parts/oe/normalizestatus and lookupKey instead of a character string read off the label
Identify the partPOST /parts/identifyCustomer number, reading and description are weighed against each other
Look up the stock groupGET /vdiVDI 4081 catalogue with version and main groups; the per-part assignment comes from the OE data

Why each stage is needed

  1. Check whether a number is there. POST /scanner/label/basic answers with hasPartNumber and where — whether the number is on the label or on the part itself. If none is legible, a deeper reading of this image is not worth it; a new photo is.
  2. Read only the numbers. POST /scanner/label/extract-partnumbers returns partNumbers — the part and reference numbers, without manufacturer, version and variant details. For most of a goods-in, that is everything needed.
  3. Validate the number. GET /parts/oe/normalize takes oeNumber and optionally manufacturer and answers with status, lookupKey and normalizedOeNumber. Only here does a character string read off a label become a number you can work with.
  4. Identify the part. POST /parts/identify weighs customerOeNumbers, labelReadings and descriptions against each other and answers with a confirmed match, candidates or no match. This is the stage where a customer number and a reading that do not fit together surface.
  5. Look up the stock group. GET /vdi returns the published VDI 4081 catalogue with stand, mainGroups and entries — per entry code, mainGroup, weight, qualityGroup and possibleInstallationLocations, paged with limit and offset. OE assignments are not part of this call; which group a part belongs to comes from the OE data.
Read only the part numbers on a label
curl -X POST \
  -H 'X-Api-Key: <API_KEY>' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: wareneingang-kiste-17-teil-3' \
  -d '{"imageUrl":"https://example.com/etikett.jpg","quality":"enhanced"}' \
  'https://api.tapinomahub.com/scanner/label/extract-partnumbers'

What you end up with

In the end the parts sit in stock with a validated number and a consistent group, and the elaborate analysis was used only where it determines a part’s value. A label without a legible number surfaces at the start, not at the customer.

Where to find this in the documentation

The binding field lists, error codes and sample responses live in this surface’s OpenAPI contract at docs.tapinomahub.com (tapinoma-hub). All use cases arranged by surface and role: overview of the use cases.

Frequently asked

When do I use the full label analysis?

When manufacturer, version or variant details define the article, such as with control units. For plain part numbers the number reading is enough.

Does the VDI catalogue give me the group for my part?

No. It provides the catalogue with main groups and entries. Which group a part belongs to comes from the OE data for its number.

Why check first whether a number is there?

Because an image without a legible number is not worth a deeper reading. The quick check tells you whether a new photo is needed.