V1-Feldnamen — API v2¶
Bestehende Integrationen sprechen calServer oft in V1-Feldnamen an, den
METTRACK-Codes wie C2301 oder I4201. V2 gibt denselben Feldern lesbare
Namen (calibration_date, asset_number) — die V1-Codes bleiben dabei
gültige Bezeichner. Ein Tool, das gegen V1 geschrieben wurde, muss seine
Feldnamen also nicht anfassen.
Was ohne Zutun funktioniert¶
Filtern, sortieren und schreiben akzeptieren den V1-Code überall dort, wo auch der lesbare Name steht:
# Beide Anfragen liefern dasselbe
curl "…/api/v2/calibrations?filter[calibration_date]=2025-03-15" -H "$AUTH"
curl "…/api/v2/calibrations?filter[C2301]=2025-03-15" -H "$AUTH"
# Sortieren ebenso
curl "…/api/v2/calibrations?sort=-C2301" -H "$AUTH"
# Schreiben ebenso
curl -X PUT "…/api/v2/calibrations/{id}" -H "$AUTH" \
-H "Content-Type: application/json" \
-d '{"C2307": "M. Mustermann"}'
Schickt eine Anfrage beide Schreibweisen desselben Felds, gewinnt der lesbare Name — ein Client, der schon migriert hat, überschreibt sich damit nicht selbst mit einem alten Schlüssel, der noch im Code steht.
Was Sie einschalten müssen: V1-Namen in der Antwort¶
Antworten führen die Felder standardmäßig nur unter ihrem lesbaren Namen. Jedes Feld doppelt auszuliefern würde eine Inventarzeile um rund siebzig Schlüssel verlängern — auch für Clients, die das nie brauchen. Wer die Codes lesen will, fordert sie an:
Die Codes kommen zusätzlich, nicht anstelle der lesbaren Namen:
{
"data": [
{
"id": "…",
"type": "calibration",
"attributes": {
"calibration_date": "2025-03-15",
"C2301": "2025-03-15",
"technician": "M. Mustermann",
"C2307": "M. Mustermann"
}
}
]
}
Der Header ist für Clients gedacht, die ihre URLs nicht anfassen können; der Query-Parameter für alles andere. Beide gelten für Listen und Einzelabrufe.
Grenzen¶
Ein V1-Code wird nicht aufgelöst, wenn er nicht eindeutig auf ein Feld zeigt. Das betrifft drei Fälle, und in allen dreien wäre die Alternative, sich für eine Zuordnung zu entscheiden — womit ein Tool am Ende in das falsche Feld schreibt:
- Der Code ist zugleich der lesbare Name eines anderen Felds derselben Tabelle. Dann gewinnt das echte Feld.
- Mehrere Felder derselben Tabelle beanspruchen denselben Code.
- Zum Feld ist kein V1-Code hinterlegt — etwa bei Feldern, die es in V1 nie gab.
In diesen Fällen bleibt nur der lesbare Name.
Primärschlüssel sind keine Registry-Felder
Der eigene Schlüssel einer Tabelle steht nicht in der Feldverwaltung, also
gibt es für ihn auch keinen Code zum Auflösen: filter[MTAG] auf
/api/v2/inventories und filter[CTAG] auf /api/v2/calibrations werden
verworfen und liefern damit alle Datensätze statt einer Fehlermeldung.
Richtig ist filter[id]=… oder gleich der Pfad
/api/v2/inventories/{mtag}. Als Fremdschlüssel funktioniert derselbe
Code dagegen (filter[MTAG] auf /api/v2/calibrations trifft
inventory_id). Ausführlich mit Beispielen:
IDs: MTAG, CTAG und die anderen Tags. Welchen Code ein Feld trägt,
steht in der Feldverwaltung und in der Feld-Definition der API
(GET /api/v2/field-definitions/{tabelle}, Attribut v1_name).
Installationen mit V1-Namen
Viele Installationen sind so eingerichtet, dass der V1-Code selbst der
api_name ist — dort trägt schon die normale Antwort die Codes und der
Schalter oben ändert nichts. Welche Variante vorliegt, zeigt
GET /api/v2/field-definitions/{tabelle}: dort stehen api_name und
v1_name nebeneinander.