Zum Inhalt

Kalibrierungen (Calibrations)

Die Kalibrierungs-API verwaltet alle Kalibriervorgänge. Jede Kalibrierung hängt an genau einem Gerät: die id der Kalibrierung ist der frühere CTAG, das Feld inventory_id der frühere MTAG des Geräts (siehe IDs: MTAG, CTAG und die anderen Tags).

Endpunkte

Methode Pfad Beschreibung Berechtigung
GET /api/v2/calibrations Alle Kalibrierungen auflisten calibration_view
GET /api/v2/calibrations/{id} Einzelne Kalibrierung abrufen calibration_view
POST /api/v2/calibrations Kalibrierung anlegen calibration_edit
PUT /api/v2/calibrations/{id} Kalibrierung aktualisieren calibration_edit
DELETE /api/v2/calibrations/{id} Kalibrierung löschen calibration_delete

Sub-Ressourcen

Methode Pfad Beschreibung
GET /api/v2/calibrations/{id}/results Messergebnisse der Kalibrierung
GET /api/v2/calibrations/{id}/standards Verwendete Normale/Standards

Feldmapping

Metrologie-Code API-Feldname Beschreibung
C2301 calibration_date Kalibrierdatum
C2303 next_calibration_date Nächste Kalibrierung
C2306 certificate_number Zertifikatsnummer
C2323 cal_result Prüfentscheid / Ergebnis
C2333 calibration_time Kalibrierzeit

Alle Kalibrierungen auflisten

curl -X GET "https://example.com/api/v2/calibrations?page[number]=1&page[size]=25" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Query-Parameter

Parameter Typ Beschreibung
page[number] integer Seitennummer (Standard: 1)
page[size] integer Einträge pro Seite (Standard: 25)
sort string Sortierfeld, z.B. calibration_date oder -next_calibration_date
filter[cal_result] string Nach Ergebnis filtern (z.B. passed, failed)
filter[inventory_id] uuid Kalibrierungen eines bestimmten Geräts (V1: dessen MTAG)
filter[calibration_date_from] date Ab Datum (YYYY-MM-DD)
filter[calibration_date_to] date Bis Datum (YYYY-MM-DD)

Antwort

{
  "data": [
    {
      "id": "3b17ad90-88c2-4e15-b0aa-2f9e6c4471aa",
      "inventory_id": "ea79f4c2-1b3d-4c88-9f21-7c0a5d13e001",
      "calibration_date": "2024-06-15",
      "next_calibration_date": "2025-06-15",
      "result": "passed",
      "uncertainty": "0.05 %",
      "procedure": "DAkkS-DKD-R 5-1",
      "relationships": {
        "results": [
          { "id": 30, "measured_value": "10.002", "reference_value": "10.000" }
        ],
        "standards": [
          { "id": 7, "name": "Referenznormal RN-001", "certificate": "DAkkS-K-12345" }
        ]
      }
    }
  ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total": 58,
    "last_page": 3
  },
  "links": {
    "first": "/api/v2/calibrations?page=1",
    "last": "/api/v2/calibrations?page=3",
    "next": "/api/v2/calibrations?page=2",
    "prev": null
  }
}

Einzelne Kalibrierung abrufen

curl -X GET "https://example.com/api/v2/calibrations/3b17ad90-88c2-4e15-b0aa-2f9e6c4471aa" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Kalibrierung anlegen

Eine Kalibrierung wird über inventory_id mit einem Gerät verknüpft. Das ist der Wert, den V1 als MTAG kennt; der V1-Schlüsselname wird beim Schreiben ebenfalls akzeptiert.

curl -X POST "https://example.com/api/v2/calibrations" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "inventory_id": "ea79f4c2-1b3d-4c88-9f21-7c0a5d13e001",
    "calibration_date": "2024-06-15",
    "next_calibration_date": "2025-06-15",
    "result": "passed",
    "uncertainty": "0.05 %",
    "procedure": "DAkkS-DKD-R 5-1"
  }'

Verknüpfung mit Inventar

inventory_id ist Pflicht und nachträglich nicht änderbar: Zertifikat, Messwerte und Prüfschritte gehören zu diesem Gerät. Für ein anderes Gerät eine eigene Kalibrierung anlegen.

Erfolgreiche Antwort (201)

{
  "data": {
    "id": "7f4c1e08-2ab9-49d7-8c33-5e1b90aa4d12",
    "inventory_id": "ea79f4c2-1b3d-4c88-9f21-7c0a5d13e001",
    "calibration_date": "2024-06-15",
    "next_calibration_date": "2025-06-15",
    "result": "passed",
    "uncertainty": "0.05 %",
    "procedure": "DAkkS-DKD-R 5-1"
  }
}

Kalibrierung aktualisieren

curl -X PUT "https://example.com/api/v2/calibrations/7f4c1e08-2ab9-49d7-8c33-5e1b90aa4d12" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "result": "failed",
    "uncertainty": "0.08 %"
  }'

Kalibrierung löschen

curl -X DELETE "https://example.com/api/v2/calibrations/7f4c1e08-2ab9-49d7-8c33-5e1b90aa4d12" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"

Achtung

Das Löschen einer Kalibrierung entfernt auch alle verknüpften Messergebnisse und Standardzuordnungen.

Sub-Ressourcen

Messergebnisse abrufen

curl -X GET "https://example.com/api/v2/calibrations/3b17ad90-88c2-4e15-b0aa-2f9e6c4471aa/results" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
{
  "data": [
    {
      "id": 30,
      "calibration_id": "3b17ad90-88c2-4e15-b0aa-2f9e6c4471aa",
      "measured_value": "10.002",
      "reference_value": "10.000",
      "deviation": "0.002",
      "unit": "V",
      "in_tolerance": true
    }
  ]
}

Verwendete Normale abrufen

curl -X GET "https://example.com/api/v2/calibrations/3b17ad90-88c2-4e15-b0aa-2f9e6c4471aa/standards" \
  -H "Authorization: Bearer {token}" \
  -H "Accept: application/json"
{
  "data": [
    {
      "id": 7,
      "name": "Referenznormal RN-001",
      "certificate": "DAkkS-K-12345",
      "valid_until": "2025-12-31"
    }
  ]
}

Filterbeispiele

# Nur fehlgeschlagene Kalibrierungen
curl "https://example.com/api/v2/calibrations?filter[result]=failed" \
  -H "Authorization: Bearer {token}"

# Kalibrierungen eines Inventars, sortiert nach Datum
curl "https://example.com/api/v2/calibrations?filter[inventory_id]=ea79f4c2-1b3d-4c88-9f21-7c0a5d13e001&sort=-calibration_date" \
  -H "Authorization: Bearer {token}"

# Kalibrierungen in einem Zeitraum
curl "https://example.com/api/v2/calibrations?filter[calibration_date_from]=2024-01-01&filter[calibration_date_to]=2024-12-31" \
  -H "Authorization: Bearer {token}"

Fehlercodes

HTTP-Status Bedeutung
401 Nicht authentifiziert — ungültiger oder fehlender Token
403 Keine Berechtigung (calibration_view, calibration_edit oder calibration_delete fehlt)
404 Kalibrierung nicht gefunden
422 Validierungsfehler — z.B. ungültiges Datum oder fehlende inventory_id
429 Rate-Limit überschritten