Zum Inhalt springen

API-Referenz

Öffentliche API von Axiospec

Version 1.0.0

Inhalt

Überblick

Mit der öffentlichen API von Axiospec lesen und schreiben Sie Ihr Kalibrierprogramm aus Ihren eigenen Systemen: Messmittel auflisten und anlegen, Kalibrierungen in das manipulationserkennbare Journal schreiben sowie Ihre Standorte und die gewählten Normen lesen.

Basis-URL: https://axiospec.com/api/public/v1

Authentifizierung. Legen Sie in der App unter Einstellungen und dann API-Schlüssel einen Schlüssel an (nur für Administratoren des Arbeitsbereichs). Senden Sie ihn bei jeder Anfrage entweder als Authorization: Bearer <key> oder als X-API-Key: <key>. Schlüssel beginnen mit ctk_.

Zugang. Die API steht in den Tarifen Professional und Scale zur Verfügung. Schlüssel aus dem Free- oder Starter-Tarif erhalten 403 API_ACCESS_TIER_REQUIRED. Ein Schlüssel handelt als die Person, die ihn angelegt hat. Ist diese Person ein Auditor, dessen Enddatum für den Zugriff überschritten ist, erhält der Schlüssel 403 ACCESS_ENDED.

Berechtigungsbereiche. Ein Schlüssel hat den Bereich read oder den Bereich write (der read einschließt). Ein reiner Lese-Schlüssel, der zu schreiben versucht, erhält 403 INSUFFICIENT_SCOPE.

Idempotenz. Das Schreiben einer Kalibrierung (POST /instruments/{id}/calibrations) verlangt ein Kopffeld Idempotency-Key. Das Journal wird nur fortgeschrieben, deshalb liefert eine wiederholte Anfrage mit demselben Schlüssel den ursprünglichen Datensatz zurück, statt ein Duplikat zu schreiben. Das Anlegen eines Messmittels (POST /instruments) akzeptiert dasselbe Kopffeld optional.

Seitenweises Blättern. Listenendpunkte liefern {data: [...], pagination: {limit, offset, total, has_more}}. Blättern Sie mit limit und offset.

Fehler. Fehler sind JSON mit einem maschinenlesbaren code, einer lesbaren message und optionalen details (zum Beispiel die Liste missing_fields bei 422 FIELD_REQUIREMENTS_UNMET oder das field bei 422 PASS_OVER_TOLERANCE_REASON_REQUIRED).

Bestanden trotz Toleranzüberschreitung. Wer ein PASS oder PASS_WITH_ADJUSTMENT schreibt, dessen abschließender Messwert außerhalb von nominal_value +/- tolerance liegt, muss in out_of_tolerance_impact eine kurze schriftliche Begründung angeben. Der abschließende Messwert ist as_left_reading oder as_found_reading, wenn kein Messwert nach der Justierung gesendet wurde. Ein Messmittel, das außerhalb der Toleranz vorgefunden und wieder in den Toleranzbereich justiert wurde, braucht also nichts weiter. Ohne Begründung wird der Schreibvorgang mit 422 PASS_OVER_TOLERANCE_REASON_REQUIRED und details.field = out_of_tolerance_impact abgelehnt. Alles, was der Server nicht vergleichen kann, wird angenommen: kein Nennwert, keine Toleranz, kein numerischer Messwert oder Messwerte mit unterschiedlichen Einheiten.

Produktion
https://axiospec.com

Authentifizierung

Jede Anfrage braucht einen API-Schlüssel. Senden Sie ihn auf eine dieser beiden Arten.

Bearer-Token im Kopffeld Authorization

Ein API-Schlüssel je Arbeitsbereich (beginnt mit ctk_), angelegt unter Einstellungen und dann API-Schlüssel. Senden Sie ihn als Authorization: Bearer <key>.

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

API-Schlüssel im Kopffeld X-API-Key

Derselbe API-Schlüssel, gesendet im Kopffeld X-API-Key statt in Authorization: Bearer.

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "X-API-Key: $AXIOSPEC_API_KEY"

Messmittel

Messmittel auflisten (seitenweise) #

GET /api/public/v1/instruments

Abfrageparameter

  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0
  • statusstring | null

    Filtert nach dem Status des Messmittels (ohne Beachtung der Groß- und Kleinschreibung), zum Beispiel in_service, out_of_service, OUT_FOR_CALIBRATION oder REFERENCE_ONLY. Ein Messmittel mit REFERENCE_ONLY bleibt im Bestand, wird aber nie kalibriert: Es meldet next_due_at null, erscheint nicht in der Fälligkeitsliste und passt nie zu einem Filter compliance_status.

    • Höchstens 64 Zeichen
  • site_idstring | null

    Auf einen einzelnen Standort filtern (UUID).

  • location_idstring | null

    Auf einen einzelnen Ort filtern (UUID).

  • updated_sincestring | null

    Inkrementeller Abgleich: nur Messmittel, die zu diesem ISO-8601-Zeitstempel oder danach geändert wurden.

  • sortstring | null

    Sortierung: einer der Werte created_at, -created_at, updated_at, -updated_at.

  • asset_tagstring | null

    Exakte Suche nach der Inventarnummer (um Ihre eigene Kennung unserem Datensatz zuzuordnen).

    • Höchstens 255 Zeichen
  • serial_numberstring | null

    Exakte Suche nach der Seriennummer.

    • Höchstens 255 Zeichen
  • compliance_statusstring | null

    Filtert nach dem Konformitätskennwert: NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT oder OUT_FOR_CALIBRATION. Ein unbekannter Kennwert liefert 422. Messmittel mit REFERENCE_ONLY passen nie (sie haben keinen Konformitätszustand). Der Server wertet diesen Filter für jedes Messmittel einzeln aus. Bleibt nach den übrigen Filtern noch eine sehr große Menge übrig, liefert die Anfrage deshalb 422. Grenzen Sie vorher mit status, location_id, site_id oder updated_since ein.

    • Höchstens 32 Zeichen
  • next_due_beforestring | null

    Nur Messmittel, deren nächste Kalibrierung vor diesem ISO-Datum fällig ist. Wie compliance_status wird dieser Filter für jedes Messmittel einzeln ausgewertet, eine sehr große Menge liefert also 422. Grenzen Sie vorher mit status, location_id, site_id oder updated_since ein.

  • includestring | null

    Optionale Löschmarken für den Differenzabgleich. include=retired liefert zusätzlich ausgemusterte (außer Betrieb genommene) Messmittel, gekennzeichnet mit deleted=true und einem Zeitstempel retired_at. So erfährt ein Spiegelsystem, dass ein Messmittel ausgemustert wurde, statt dass es still aus der Liste der aktiven Messmittel verschwindet. Ohne den Parameter werden nur aktive Messmittel geliefert.

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_InstrumentSummary_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "asset_tag": "string",
          "name": "string",
          "manufacturer": "string",
          "model": "string",
          "serial_number": "string",
          "status": "string",
          "is_quarantined": false,
          "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "compliance_status": "string",
          "last_calibration_at": "string",
          "next_due_at": "string",
          "retired_at": "string",
          "deleted": false,
          "due_extension": {
            "until": "string",
            "reason": "string",
            "extended_at": "string",
            "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Messmittel anlegen #

POST /api/public/v1/instruments

Kopffeld-Parameter

  • Idempotency-Keystring | null

    Optional. Ein eindeutiger Wert, den Sie für diese Anfrage wählen, etwa eine UUID, mit bis zu 128 Zeichen. Eine wiederholte Anfrage mit demselben Schlüssel liefert das Messmittel aus der ersten Anfrage zurück, statt ein Duplikat anzulegen. Solange die erste Anfrage noch verarbeitet wird, liefert eine Wiederholung 503. Versuchen Sie es kurz danach erneut.

Anfragetext Pflichtfeld

application/json InstrumentCreate

  • asset_tagstringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • manufacturerstring | null
    • Höchstens 255 Zeichen
  • modelstring | null
    • Höchstens 255 Zeichen
  • serial_numberstring | null
    • Höchstens 255 Zeichen
  • categorystring | null
    • Höchstens 255 Zeichen
  • departmentstring | null
    • Höchstens 255 Zeichen
  • locationstring | null
    • Höchstens 255 Zeichen
  • tolerance_specstring | null
    • Höchstens 255 Zeichen
  • notesstring | null
    • Höchstens 10000 Zeichen
  • unit_of_measurestring | null
    • Höchstens 64 Zeichen
  • is_reference_standardboolean
    • Standardwert: false
  • calibration_interval_valueintegerPflichtfeld
    • Minimum: 1
    • Maximum: 100000
  • calibration_interval_unitstring

    Einer der Werte days, months, years.

    • Standardwert: months
    • Zulässige Werte: days, months, years
  • last_calibration_datestring (date-time) | null

    Optionaler Ausgangspunkt: wann das Messmittel zuletzt kalibriert wurde. Mit Angabe wird ein freigegebener Ausgangsdatensatz angelegt, aus dem die Konformität berechnet wird. Ohne Angabe meldet das Messmittel NOT_CALIBRATED, bis seine erste Kalibrierung geschrieben ist.

  • customFieldsmap<string, string>

    Optionale, vom Arbeitsbereich definierte benutzerdefinierte Felder als flache Zuordnung Bezeichnung -> Wert. Bezeichnungen werden genau so gespeichert, wie sie gesendet werden. Ein leerer Wert wird verworfen statt gespeichert.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "asset_tag": "string",
  "name": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "category": "string",
  "department": "string",
  "location": "string",
  "tolerance_spec": "string",
  "notes": "string",
  "unit_of_measure": "string",
  "is_reference_standard": false,
  "calibration_interval_value": 1,
  "calibration_interval_unit": "days",
  "last_calibration_date": "2026-01-15T14:30:00Z",
  "customFields": {
    "key": "string"
  }
}

Antworten

  • 201 Erfolgreiche Antwort

    application/json InstrumentDetail

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asset_tag":"string","name":"string","calibration_interval_value":1}'

Ein Messmittel abrufen #

GET /api/public/v1/instruments/{instrument_id}

Pfadparameter

  • instrument_idstringPflichtfeld

Antworten

  • 200 Erfolgreiche Antwort

    application/json InstrumentDetail

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Ein Messmittel ändern (teilweise) #

PATCH /api/public/v1/instruments/{instrument_id}

Pfadparameter

  • instrument_idstringPflichtfeld

Anfragetext Pflichtfeld

application/json InstrumentUpdate

  • namestring | null
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • manufacturerstring | null
    • Höchstens 255 Zeichen
  • modelstring | null
    • Höchstens 255 Zeichen
  • serial_numberstring | null
    • Höchstens 255 Zeichen
  • categorystring | null
    • Höchstens 255 Zeichen
  • departmentstring | null
    • Höchstens 255 Zeichen
  • locationstring | null
    • Höchstens 255 Zeichen
  • tolerance_specstring | null
    • Höchstens 255 Zeichen
  • notesstring | null
    • Höchstens 10000 Zeichen
  • unit_of_measurestring | null
    • Höchstens 64 Zeichen
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Minimum: 1
    • Maximum: 100000
  • calibration_interval_unitstring | null
    • Zulässige Werte: days, months, years
  • calibration_interval_change_reasonstring | null

    Warum sich das Kalibrierintervall ändert. Gilt, wenn das Messmittel bereits ein Intervall hat und der gesendete Wert oder die gesendete Einheit davon abweicht. Die Änderung wird immer mit dieser Begründung in das Aktivitätsprotokoll des Arbeitsbereichs geschrieben. Ob die Begründung Pflicht ist, hängt von der Einstellung CHANGE_REASON_RULES_ENFORCED der Installation ab: Ist sie eingeschaltet, scheitert die Anfrage ohne Begründung mit 422 und dem Code interval_change_reason_required. Ist sie ausgeschaltet, wird die Änderung angenommen und ohne Begründung protokolliert. Senden Sie schon jetzt eine Begründung, dann bricht Ihre Integration nicht, wenn die Einstellung eingeschaltet wird. Nicht nötig, wenn das Intervall unverändert bleibt.

    • Höchstens 1000 Zeichen
  • customFieldsmap<string, string> | null

    Vom Arbeitsbereich definierte benutzerdefinierte Felder, die gesetzt werden sollen, als flache Zuordnung Bezeichnung -> Wert. Sie werden mit den vorhandenen benutzerdefinierten Feldern des Messmittels ZUSAMMENGEFÜHRT: Nicht gesendete Bezeichnungen bleiben unverändert, und ein leerer Wert entfernt die Bezeichnung. Lassen Sie den Schlüssel ganz weg oder senden Sie null, um nichts zu ändern.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "name": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "category": "string",
  "department": "string",
  "location": "string",
  "tolerance_spec": "string",
  "notes": "string",
  "unit_of_measure": "string",
  "is_reference_standard": true,
  "calibration_interval_value": 1,
  "calibration_interval_unit": "days",
  "calibration_interval_change_reason": "string",
  "customFields": {
    "key": "string"
  }
}

Antworten

  • 200 Erfolgreiche Antwort

    application/json InstrumentDetail

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X PATCH "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'

Ein Messmittel ausmustern (außer Betrieb nehmen) #

POST /api/public/v1/instruments/{instrument_id}/retire

Hält fest, dass ein Messmittel den aktiven Betrieb verlassen hat.

Der Datensatz bleibt bestehen. status wird zu retired, und retired_at wird gesetzt. Das Messmittel behält seine Kalibrierhistorie und bleibt über diese API lesbar. Das Journal bleibt unberührt. Nichts wird gelöscht, und diese API hat kein endgültiges DELETE für ein Messmittel.

Das Ausmustern beendet neue Arbeit am Messmittel. Danach liefern die schreibenden Endpunkte (Messmittel ändern, Kalibrierung schreiben, Dokument hochladen) 409 ASSET_RETIRED. Lesen funktioniert weiter.

Der Schlüssel braucht den Bereich write, und sein Inhaber muss Administrator oder Manager des Arbeitsbereichs sein. Jeder andere Schlüssel erhält 403. Eine fehlerhafte instrument_id liefert 422. Ein Messmittel, das nicht zu Ihrem Arbeitsbereich gehört, liefert 404.

Das Ausmustern ist idempotent. Ein bereits ausgemustertes Messmittel erneut auszumustern liefert 200 mit demselben Inhalt, und das ursprüngliche retired_at bleibt bestehen.

Pfadparameter

  • instrument_idstringPflichtfeld

Antworten

  • 200 Erfolgreiche Antwort

    application/json InstrumentDetail

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/retire" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Kalibrierungen

Die Kalibrierdatensätze eines Messmittels auflisten (seitenweise) #

GET /api/public/v1/instruments/{instrument_id}/calibrations

Pfadparameter

  • instrument_idstringPflichtfeld

Abfrageparameter

  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0
  • updated_sincestring | null

    Inkrementeller Abgleich: nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder danach angefügt wurden.

  • performed_afterstring | null

    Nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder danach durchgeführt wurden.

  • performed_beforestring | null

    Nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder davor durchgeführt wurden.

  • resultstring | null

    Auf ein oder mehrere Kalibrierergebnisse beschränken (kommagetrennt, ohne Beachtung der Groß- und Kleinschreibung): PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL oder DAMAGED. Ein unbekannter Kennwert liefert 422.

  • sortstring | null

    Sortierung: einer der Werte performed_at, -performed_at, updated_at, -updated_at.

  • includestring | null

    Optionale Löschmarken für den Differenzabgleich. include=voided liefert zusätzlich Ungültigkeitsdatensätze (record_type='void', wobei voids_id auf die Kalibrierung zeigt, die für ungültig erklärt wird). So erfährt ein Spiegelsystem, dass eine Kalibrierung für ungültig erklärt wurde. Ohne den Parameter werden Ungültigkeitsdatensätze weggelassen.

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_CalibrationRecord_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "result": "string",
          "performed_at": "string",
          "performed_by": "string",
          "nominal_value": "string",
          "tolerance": "string",
          "as_found_reading": "string",
          "as_left_reading": "string",
          "reference_standard": "string",
          "certificate_number": "string",
          "traceability_reference": "string",
          "service_provider": "string",
          "measurement_uncertainty": "string",
          "coverage_factor": "string",
          "confidence_level": "string",
          "decision_rule": "string",
          "conformity_statement": "string",
          "notes": "string",
          "calibration_type": "in_house",
          "approval_status": "string",
          "status": "string",
          "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "record_type": "calibration",
          "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "created_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Eine Kalibrierung für ein Messmittel schreiben #

POST /api/public/v1/instruments/{instrument_id}/calibrations

Pfadparameter

  • instrument_idstringPflichtfeld

Kopffeld-Parameter

  • Idempotency-Keystring | nullPflichtfeld

    Pflicht. Ein eindeutiger Wert, den Sie für diese Kalibrierung wählen, etwa eine UUID, mit bis zu 128 Zeichen. Das Journal wird nur fortgeschrieben, deshalb liefert eine wiederholte Anfrage mit demselben Schlüssel den ursprünglichen Datensatz zurück, statt ein Duplikat zu schreiben. Verwenden Sie für jede neue Kalibrierung einen neuen Schlüssel. Eine Anfrage ohne das Kopffeld liefert 400 IDEMPOTENCY_KEY_REQUIRED. Solange die erste Anfrage noch verarbeitet wird, liefert eine Wiederholung 503. Versuchen Sie es kurz danach erneut.

Anfragetext Pflichtfeld

application/json CalibrationLogRequest

  • resultstringPflichtfeld

    Einer der Werte PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED.

    • Zulässige Werte: PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Wann die Kalibrierung durchgeführt wurde. Ohne Angabe gilt der aktuelle Zeitpunkt (UTC).

  • nominal_valuestring | null
    • Höchstens 255 Zeichen
  • tolerancestring | null
    • Höchstens 255 Zeichen
  • as_found_readingstring | null
    • Höchstens 255 Zeichen
  • as_left_readingstring | null
    • Höchstens 255 Zeichen
  • temperaturestring | null
    • Höchstens 64 Zeichen
  • humiditystring | null
    • Höchstens 64 Zeichen
  • reference_standardstring | null
    • Höchstens 255 Zeichen
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • Höchstens 255 Zeichen
  • traceability_referencestring | null
    • Höchstens 255 Zeichen
  • service_providerstring | null
    • Höchstens 255 Zeichen
  • calibration_typestring | null

    'in_house', wenn Ihr Team das Messmittel gemessen hat, 'external_certificate', wenn ein Labor oder Dienstleister es kalibriert hat und Sie dessen Kalibrierschein erfassen. Auf dem externen Weg sind mindestens result, performed_at und certificate_number nötig. Die Messwertfelder sind nicht verpflichtend.

    • Zulässige Werte: in_house, external_certificate
  • measurement_uncertaintystring | null
    • Höchstens 120 Zeichen
  • coverage_factorstring | null
    • Höchstens 40 Zeichen
  • confidence_levelstring | null
    • Höchstens 40 Zeichen
  • decision_rulestring | null
    • Höchstens 120 Zeichen
  • conformity_statementstring | null
    • Höchstens 4000 Zeichen
  • reference_standard_certificate_numberstring | null
    • Höchstens 120 Zeichen
  • restriction_notesstring | null
    • Höchstens 4000 Zeichen
  • out_of_tolerance_impactstring | null
    • Höchstens 4000 Zeichen
  • notesstring | null
    • Höchstens 4000 Zeichen

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "result": "PASS",
  "performed_at": "2026-01-15T14:30:00Z",
  "nominal_value": "string",
  "tolerance": "string",
  "as_found_reading": "string",
  "as_left_reading": "string",
  "temperature": "string",
  "humidity": "string",
  "reference_standard": "string",
  "reference_standard_asset_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "certificate_number": "string",
  "traceability_reference": "string",
  "service_provider": "string",
  "calibration_type": "in_house",
  "measurement_uncertainty": "string",
  "coverage_factor": "string",
  "confidence_level": "string",
  "decision_rule": "string",
  "conformity_statement": "string",
  "reference_standard_certificate_number": "string",
  "restriction_notes": "string",
  "out_of_tolerance_impact": "string",
  "notes": "string"
}

Antworten

  • 201 Erfolgreiche Antwort

    application/json CalibrationRecord

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "result": "string",
      "performed_at": "string",
      "performed_by": "string",
      "nominal_value": "string",
      "tolerance": "string",
      "as_found_reading": "string",
      "as_left_reading": "string",
      "reference_standard": "string",
      "certificate_number": "string",
      "traceability_reference": "string",
      "service_provider": "string",
      "measurement_uncertainty": "string",
      "coverage_factor": "string",
      "confidence_level": "string",
      "decision_rule": "string",
      "conformity_statement": "string",
      "notes": "string",
      "calibration_type": "in_house",
      "approval_status": "string",
      "status": "string",
      "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "record_type": "calibration",
      "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "created_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"result":"PASS"}'

Alle Kalibrierdatensätze des Arbeitsbereichs auflisten #

GET /api/public/v1/calibrations

Alle Kalibrierdatensätze Ihres Arbeitsbereichs, über alle Messmittel hinweg, in einem einzigen seitenweisen Strom. Nutzen Sie ihn für einen Data-Warehouse- oder BI-Job, der „alle Kalibrierungen seit X“ abholt, ohne pro Messmittel einen Aufruf zu machen.

Für den inkrementellen Abgleich übergeben Sie updated_since mit sort=updated_at und blättern mit limit und offset durch. Mit include=voided erhalten Sie zusätzlich Ungültigkeitsdatensätze, damit ein Spiegelsystem für ungültig erklärte Kalibrierungen entfernen kann.

Abfrageparameter

  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0
  • updated_sincestring | null

    Inkrementeller Abgleich: nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder danach angefügt wurden.

  • performed_afterstring | null

    Nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder danach durchgeführt wurden.

  • performed_beforestring | null

    Nur Datensätze, die zu diesem ISO-8601-Zeitstempel oder davor durchgeführt wurden.

  • instrument_idstring | null

    Den Strom auf ein einzelnes Messmittel beschränken (UUID).

  • resultstring | null

    Auf ein oder mehrere Kalibrierergebnisse beschränken (kommagetrennt, ohne Beachtung der Groß- und Kleinschreibung): PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL oder DAMAGED. Ein unbekannter Kennwert liefert 422.

  • sortstring | null

    Sortierung: einer der Werte performed_at, -performed_at, updated_at, -updated_at.

  • includestring | null

    Optionale Löschmarken für den Differenzabgleich. include=voided liefert zusätzlich Ungültigkeitsdatensätze (record_type='void', wobei voids_id auf die Kalibrierung zeigt, die für ungültig erklärt wird) aus dem gesamten Arbeitsbereich. Auf diesem Weg erfährt ein vollständiges Spiegelsystem, dass Kalibrierungen für ungültig erklärt wurden. Ohne den Parameter werden Ungültigkeitsdatensätze weggelassen.

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_CalibrationRecord_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "result": "string",
          "performed_at": "string",
          "performed_by": "string",
          "nominal_value": "string",
          "tolerance": "string",
          "as_found_reading": "string",
          "as_left_reading": "string",
          "reference_standard": "string",
          "certificate_number": "string",
          "traceability_reference": "string",
          "service_provider": "string",
          "measurement_uncertainty": "string",
          "coverage_factor": "string",
          "confidence_level": "string",
          "decision_rule": "string",
          "conformity_statement": "string",
          "notes": "string",
          "calibration_type": "in_house",
          "approval_status": "string",
          "status": "string",
          "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "record_type": "calibration",
          "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "created_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Einen einzelnen Kalibrierdatensatz abrufen #

GET /api/public/v1/calibrations/{calibration_id}

Pfadparameter

  • calibration_idstringPflichtfeld

Antworten

  • 200 Erfolgreiche Antwort

    application/json CalibrationRecord

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "result": "string",
      "performed_at": "string",
      "performed_by": "string",
      "nominal_value": "string",
      "tolerance": "string",
      "as_found_reading": "string",
      "as_left_reading": "string",
      "reference_standard": "string",
      "certificate_number": "string",
      "traceability_reference": "string",
      "service_provider": "string",
      "measurement_uncertainty": "string",
      "coverage_factor": "string",
      "confidence_level": "string",
      "decision_rule": "string",
      "conformity_statement": "string",
      "notes": "string",
      "calibration_type": "in_house",
      "approval_status": "string",
      "status": "string",
      "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "record_type": "calibration",
      "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "created_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/calibrations/CALIBRATION_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Den Kalibrierschein zu einem Kalibrierdatensatz als PDF herunterladen #

GET /api/public/v1/calibrations/{calibration_id}/certificate

Lädt den Kalibrierschein zu einem Kalibrierdatensatz als PDF herunter (application/pdf, als Anhang gesendet).

Es ist derselbe Kalibrierschein, den die App für den Datensatz ausstellt. Er wird bei der ersten Erzeugung gespeichert, spätere Downloads liefern also dasselbe Dokument, sofern der Kalibrierschein in der App nicht neu ausgestellt wird. Eine Änderung der Dokumentsprache des Arbeitsbereichs stellt ihn ebenfalls neu aus: Der nächste Download liefert ihn in der neuen Sprache. Kalibrierscheine bleiben auch nach dem Ausmustern des Messmittels verfügbar.

Fehler: 422, wenn calibration_id keine UUID ist. 404, wenn der Datensatz nicht zu Ihrem Arbeitsbereich gehört oder keine Kalibrierung ist. 404 CERTIFICATE_UNAVAILABLE, wenn der Datensatz existiert, aber nicht bescheinigt werden kann, weil er für ungültig erklärt, durch eine Korrektur ersetzt oder nicht freigegeben wurde.

Pfadparameter

  • calibration_idstringPflichtfeld

Antworten

  • 200 Kalibrierschein als PDF

    application/pdf

  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/calibrations/CALIBRATION_ID/certificate" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -o certificate.pdf

Dokumente

Eine vorsignierte URL zum Hochladen eines Dokuments abrufen #

POST /api/public/v1/instruments/{instrument_id}/documents/upload-url

Pfadparameter

  • instrument_idstringPflichtfeld

Anfragetext Pflichtfeld

application/json DocumentUploadUrlRequest

  • file_namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • content_typestring

    MIME-Typ der Datei. Muss ein zugelassener Typ sein (PDF oder ein Bild). Aktive Inhalte wie text/html oder image/svg+xml werden abgelehnt.

    • Standardwert: application/octet-stream
    • Höchstens 255 Zeichen
  • size_bytesinteger | null

    Optional angegebene Dateigröße. Wird abgelehnt (422), wenn sie das Maximum überschreitet. Der vorsignierte POST begrenzt außerdem den tatsächlichen Upload bei S3.

    • Minimum: 1
    • Maximum: 26214400

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "file_name": "string",
  "content_type": "application/octet-stream",
  "size_bytes": 1
}

Antworten

  • 200 Erfolgreiche Antwort

    application/json DocumentUploadUrlResponse

    Beispielantwort
    {
      "method": "POST",
      "upload_url": "string",
      "fields": {
        "key": "string"
      },
      "key": "string",
      "expires_in": 0,
      "max_size_bytes": 0
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents/upload-url" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_name":"string"}'

Die Dokumente eines Messmittels auflisten #

GET /api/public/v1/instruments/{instrument_id}/documents

Pfadparameter

  • instrument_idstringPflichtfeld

Abfrageparameter

  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0
  • calibration_idstring | null

    Auf die Dokumente einer Kalibrierung filtern (UUID).

  • document_typestring | null

    Auf einen Dokumenttyp filtern (einer der Werte certificate, report, procedure, photo, other).

  • uploaded_sincestring | null

    Inkrementeller Abgleich: nur Dokumente, die zu diesem ISO-8601-Zeitstempel oder danach hochgeladen wurden. Beachten Sie, dass dies ein Cursor für NEUE Uploads auf Basis von upload_date ist, der spätere Archivierungen oder weiche Löschungen nicht abbildet.

  • sortstring | null

    Sortierung: upload_date oder -upload_date (Standard: -upload_date).

  • include_archivedboolean

    Archivierte Dokumente einschließen (Standard: nur aktive).

    • Standardwert: false

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_DocumentRecord_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "file_name": "string",
          "document_type": "string",
          "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "uploaded_at": "string",
          "uploaded_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "is_archived": false
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Ein hochgeladenes Dokument registrieren #

POST /api/public/v1/instruments/{instrument_id}/documents

Pfadparameter

  • instrument_idstringPflichtfeld

Anfragetext Pflichtfeld

application/json DocumentRegisterRequest

  • keystringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 512 Zeichen
  • file_namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • document_typestring

    Einer der Werte certificate, report, procedure, photo, other.

    • Standardwert: other
    • Zulässige Werte: certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Optional: ordnet das Dokument einem bestimmten Kalibrierdatensatz DIESES Messmittels zu. Muss die id einer Kalibrierung sein, die zu diesem Messmittel gehört.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "key": "string",
  "file_name": "string",
  "document_type": "certificate",
  "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Antworten

  • 201 Erfolgreiche Antwort

    application/json DocumentRecord

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "file_name": "string",
      "document_type": "string",
      "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "uploaded_at": "string",
      "uploaded_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "is_archived": false
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"string","file_name":"string"}'

Eine kurzlebige Download-URL für ein Dokument abrufen #

GET /api/public/v1/instruments/{instrument_id}/documents/{document_id}/download

Pfadparameter

  • instrument_idstringPflichtfeld
  • document_idstring (uuid)Pflichtfeld

Antworten

Beispielanfrage

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents/DOCUMENT_ID/download" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Fälligkeitsliste

Fällige und überfällige Messmittel auflisten (Arbeitsliste) #

GET /api/public/v1/due

Abfrageparameter

  • horizon_daysinteger

    Vorausschau in Tagen (1-365). Alles, was innerhalb dieser Anzahl von Tagen fällig wird, ist enthalten. Bereits Überfälliges ist unabhängig davon IMMER enthalten.

    • Standardwert: 30
    • Minimum: 1
    • Maximum: 365
  • site_idstring | null

    Auf einen einzelnen Standort filtern (UUID). Gilt innerhalb der Standorte, auf die Sie Zugriff haben.

  • statusstring | null

    Filtert nach dem Konformitätskennwert (ohne Beachtung der Groß- und Kleinschreibung): NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT oder OUT_FOR_CALIBRATION.

    • Höchstens 32 Zeichen
  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_DueInstrument_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "asset_tag": "string",
          "name": "string",
          "due_at": "string",
          "due_date": "string",
          "compliance_status": "string",
          "interval_label": "string",
          "site_name": "string",
          "location_name": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/due" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Webhooks

Den Katalog der Webhook-Ereignisse auflisten #

GET /api/public/v1/webhooks/events

Das maschinenlesbare Ereignisvokabular der v1, das ein Endpunkt abonnieren kann.

Antworten

  • 200 Erfolgreiche Antwort

    application/json EventCatalogResponse

    Beispielantwort
    {
      "events": [
        {
          "type": "string",
          "description": "string"
        }
      ]
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/webhooks/events" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Webhook-Endpunkte auflisten #

GET /api/public/v1/webhooks

Abfrageparameter

  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_WebhookRead_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "url": "string",
          "events": [
            "string"
          ],
          "description": "string",
          "is_active": true,
          "secret_prefix": "string",
          "disabled_at": "string",
          "created_at": "string",
          "updated_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/webhooks" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Einen Webhook-Endpunkt anmelden #

POST /api/public/v1/webhooks

Anfragetext Pflichtfeld

application/json WebhookCreate

  • urlstringPflichtfeld

    HTTPS-Zustell-URL. Wird gegen SSRF geprüft (muss auf eine öffentliche Adresse auflösen; private, Loopback-, Link-Local- und Metadaten-Ziele werden abgelehnt).

    • Höchstens 2048 Zeichen
  • eventsarray[string] | null

    Teilmenge des Ereigniskatalogs der v1, die empfangen werden soll. Lassen Sie das Feld weg oder senden Sie eine leere Liste, um ALLE Ereignisse zu abonnieren. Unbekannte Typen werden abgelehnt (422).

  • descriptionstring | null

    Optionale, gut lesbare Bezeichnung für diesen Endpunkt.

    • Höchstens 500 Zeichen

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string"
}

Antworten

  • 201 Erfolgreiche Antwort

    application/json WebhookCreatedResponse

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string",
      "secret": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/webhooks" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"string"}'

Einen Webhook-Endpunkt abrufen #

GET /api/public/v1/webhooks/{endpoint_id}

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld

Antworten

  • 200 Erfolgreiche Antwort

    application/json WebhookRead

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Einen Webhook-Endpunkt ändern #

PATCH /api/public/v1/webhooks/{endpoint_id}

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld

Anfragetext Pflichtfeld

application/json WebhookUpdate

  • urlstring | null

    Neue HTTPS-Zustell-URL (wird bei einer Änderung erneut gegen SSRF geprüft).

    • Höchstens 2048 Zeichen
  • eventsarray[string] | null

    Ersatz für die abonnierte Ereignismenge (leer/null = alle Ereignisse).

  • descriptionstring | null

    Neue Bezeichnung.

    • Höchstens 500 Zeichen
  • is_activeboolean | null

    Zustellung an diesen Endpunkt einschalten (true) oder ausschalten (false).

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

Beispiel für den Anfragetext
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string",
  "is_active": true
}

Antworten

  • 200 Erfolgreiche Antwort

    application/json WebhookRead

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X PATCH "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"string"}'

Einen Webhook-Endpunkt abmelden (weich deaktivieren) #

DELETE /api/public/v1/webhooks/{endpoint_id}

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld

Antworten

  • 204 Erfolgreiche Antwort

    Kein Inhalt

  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X DELETE "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Das Signaturgeheimnis eines Webhook-Endpunkts erneuern #

POST /api/public/v1/webhooks/{endpoint_id}/rotate-secret

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld

Antworten

  • 200 Erfolgreiche Antwort

    application/json SecretRotatedResponse

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "secret": "string",
      "secret_prefix": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/rotate-secret" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Das Zustellprotokoll eines Endpunkts auflisten #

GET /api/public/v1/webhooks/{endpoint_id}/deliveries

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld

Abfrageparameter

  • statusstring | null

    Nach Zustellstatus filtern: pending, failed, succeeded, exhausted.

    • Höchstens 32 Zeichen
  • limitinteger
    • Standardwert: 50
    • Minimum: 1
    • Maximum: 100
  • offsetinteger
    • Standardwert: 0
    • Minimum: 0

Antworten

  • 200 Erfolgreiche Antwort

    application/json Page_WebhookDeliveryRead_

    Beispielantwort
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "event_type": "string",
          "status": "string",
          "attempt_count": 0,
          "next_attempt_at": "string",
          "last_attempt_at": "string",
          "last_status_code": 0,
          "last_error": "string",
          "response_snippet": "string",
          "created_at": "string",
          "updated_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/deliveries" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Eine Zustellung manuell erneut senden #

POST /api/public/v1/webhooks/{endpoint_id}/deliveries/{delivery_id}/retry

Pfadparameter

  • endpoint_idstring (uuid)Pflichtfeld
  • delivery_idstring (uuid)Pflichtfeld

Antworten

  • 202 Erfolgreiche Antwort

    application/json WebhookDeliveryRead

    Beispielantwort
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "event_type": "string",
      "status": "string",
      "attempt_count": 0,
      "next_attempt_at": "string",
      "last_attempt_at": "string",
      "last_status_code": 0,
      "last_error": "string",
      "response_snippet": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl -X POST "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/deliveries/DELIVERY_ID/retry" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Standorte

Die Standorte des Arbeitsbereichs auflisten #

GET /api/public/v1/sites

Antworten

  • 200 Erfolgreiche Antwort

    application/json array[SiteSummary]

    Beispielantwort
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "is_default": false,
        "timezone": "string"
      }
    ]
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/sites" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Orte

Die Orte des Arbeitsbereichs auflisten #

GET /api/public/v1/locations

Abfrageparameter

  • site_idstring | null

    Auf einen einzelnen Standort filtern (UUID). Gilt innerhalb der Standorte, auf die Sie Zugriff haben.

Antworten

  • 200 Erfolgreiche Antwort

    application/json array[LocationSummary]

    Beispielantwort
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      }
    ]
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/locations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Normen

Die Normen auflisten, die dieser Arbeitsbereich gewählt hat #

GET /api/public/v1/standards

Antworten

  • 200 Erfolgreiche Antwort

    application/json array[StandardSummary]

    Beispielantwort
    [
      {
        "key": "string",
        "label": "string"
      }
    ]
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/standards" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Die normabhängigen Feldanforderungen für eine Kalibrierung oder ein Messmittel #

GET /api/public/v1/standards/field-requirements

Abfrageparameter

  • standardsstring | null

    Optionale, kommagetrennte Normschlüssel für eine VORSCHAU (z. B. 'iso_17025,as9100'). Lassen Sie den Parameter weg, um die gewählten Normen des Arbeitsbereichs abzubilden (an ihnen wird der öffentliche Kalibrierungs-POST tatsächlich gemessen). Ein unbekannter Schlüssel liefert 422.

Antworten

  • 200 Erfolgreiche Antwort

    application/json FieldRequirementsResponse

    Beispielantwort
    {
      "version": 0,
      "source": "workspace",
      "standards": [
        {
          "key": "string",
          "label": "string"
        }
      ],
      "available_standards": [
        {
          "key": "string",
          "label": "string"
        }
      ],
      "calibration": {
        "enforced": true,
        "fields": [
          {
            "field": "string",
            "label": "string",
            "requirement": "string",
            "required_by": [
              "string"
            ],
            "request_field": "string",
            "note": "string"
          }
        ]
      },
      "asset": {
        "enforced": true,
        "fields": [
          {
            "field": "string",
            "label": "string",
            "requirement": "string",
            "required_by": [
              "string"
            ],
            "request_field": "string",
            "note": "string"
          }
        ]
      }
    }
  • 422 Validierungsfehler

    application/json HTTPValidationError

Beispielanfrage

curl "https://axiospec.com/api/public/v1/standards/field-requirements" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Schemas

Die Objekte, die die Endpunkte annehmen und zurückgeben. Feldnamen, Typen und Enum-Werte stehen genau so da, wie die API sie sendet und erwartet.

CalibrationLogRequest #

Anfragetext zum Schreiben einer Kalibrierung. Unbekannte Felder werden abgelehnt (422).

Der Datensatz wird an das manipulationserkennbare Journal angefügt, mit denselben Validierungs- und Freigaberegeln wie eine in der App erfasste Kalibrierung. Ein Ergebnis FAIL oder DAMAGED stellt das Messmittel unter Quarantäne, wie in der App. Die Felder, die die gewählten Normen Ihres Arbeitsbereichs verlangen, werden durchgesetzt: Ein Anfragetext, dem eines fehlt, wird mit 422 FIELD_REQUIREMENTS_UNMET abgelehnt. Prüfen Sie sie vorher mit GET /standards/field-requirements.

Ein PASS oder PASS_WITH_ADJUSTMENT, dessen abschließender Messwert außerhalb von nominal_value +/- tolerance liegt, braucht außerdem eine kurze schriftliche Begründung in out_of_tolerance_impact, sonst wird der Schreibvorgang mit 422 PASS_OVER_TOLERANCE_REASON_REQUIRED abgelehnt. Der abschließende Messwert ist as_left_reading oder as_found_reading, wenn kein Messwert nach der Justierung gesendet wurde. Ein Messmittel, das außerhalb der Toleranz vorgefunden und wieder in den Toleranzbereich justiert wurde, braucht also nichts weiter. Alles, was der Server nicht vergleichen kann, wird angenommen.

Felder

  • resultstringPflichtfeld

    Einer der Werte PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED.

    • Zulässige Werte: PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Wann die Kalibrierung durchgeführt wurde. Ohne Angabe gilt der aktuelle Zeitpunkt (UTC).

  • nominal_valuestring | null
    • Höchstens 255 Zeichen
  • tolerancestring | null
    • Höchstens 255 Zeichen
  • as_found_readingstring | null
    • Höchstens 255 Zeichen
  • as_left_readingstring | null
    • Höchstens 255 Zeichen
  • temperaturestring | null
    • Höchstens 64 Zeichen
  • humiditystring | null
    • Höchstens 64 Zeichen
  • reference_standardstring | null
    • Höchstens 255 Zeichen
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • Höchstens 255 Zeichen
  • traceability_referencestring | null
    • Höchstens 255 Zeichen
  • service_providerstring | null
    • Höchstens 255 Zeichen
  • calibration_typestring | null

    'in_house', wenn Ihr Team das Messmittel gemessen hat, 'external_certificate', wenn ein Labor oder Dienstleister es kalibriert hat und Sie dessen Kalibrierschein erfassen. Auf dem externen Weg sind mindestens result, performed_at und certificate_number nötig. Die Messwertfelder sind nicht verpflichtend.

    • Zulässige Werte: in_house, external_certificate
  • measurement_uncertaintystring | null
    • Höchstens 120 Zeichen
  • coverage_factorstring | null
    • Höchstens 40 Zeichen
  • confidence_levelstring | null
    • Höchstens 40 Zeichen
  • decision_rulestring | null
    • Höchstens 120 Zeichen
  • conformity_statementstring | null
    • Höchstens 4000 Zeichen
  • reference_standard_certificate_numberstring | null
    • Höchstens 120 Zeichen
  • restriction_notesstring | null
    • Höchstens 4000 Zeichen
  • out_of_tolerance_impactstring | null
    • Höchstens 4000 Zeichen
  • notesstring | null
    • Höchstens 4000 Zeichen

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

CalibrationRecord #

Ein Kalibrierdatensatz aus dem Journal, nur lesbar. Journaldatensätze werden nie bearbeitet oder gelöscht: Eine Korrektur oder eine Ungültigerklärung wird als neuer Datensatz angefügt.

Felder

  • idstring (uuid)Pflichtfeld
  • instrument_idstring (uuid)Pflichtfeld
  • resultstring | null
  • performed_atstring | null
  • performed_bystring | null
  • nominal_valuestring | null
  • tolerancestring | null
  • as_found_readingstring | null
  • as_left_readingstring | null
  • reference_standardstring | null
  • certificate_numberstring | null
  • traceability_referencestring | null
  • service_providerstring | null
  • measurement_uncertaintystring | null
  • coverage_factorstring | null
  • confidence_levelstring | null
  • decision_rulestring | null
  • conformity_statementstring | null
  • notesstring | null
  • calibration_typestring | null

    'in_house' oder 'external_certificate', wie erfasst. Null, wenn der Datensatz keinen Typ trägt.

    • Zulässige Werte: in_house, external_certificate
  • approval_statusstring | null
  • statusstring | null
  • superseded_by_idstring (uuid) | null
  • record_typestring

    'calibration' für einen normalen Datensatz oder 'void' für eine angefügte Ungültigkeitsmarke (sichtbar über ?include=voided).

    • Standardwert: calibration
    • Zulässige Werte: calibration, void
  • voids_idstring (uuid) | null

    Bei einer Ungültigkeitsmarke (record_type='void'): die id des Kalibrierdatensatzes, den diese Marke für ungültig erklärt. Null bei einem normalen Datensatz.

  • voided_by_idstring (uuid) | null

    Bei einer noch sichtbaren ursprünglichen Kalibrierung, die inzwischen für ungültig erklärt wurde: die id der Ungültigkeitsmarke, die sie für ungültig erklärt hat. Null, wenn der Datensatz nicht für ungültig erklärt ist.

  • created_atstring | null

DocumentDownloadResponse #

Eine kurzlebige Download-URL für ein Dokument. Die URL lädt die Datei immer herunter, statt sie im Browser anzuzeigen, und läuft nach expires_in Sekunden ab (um expires_at). Fordern Sie jedes Mal, wenn Sie die Datei brauchen, eine neue URL an, statt eine zu speichern.

Felder

  • download_urlstringPflichtfeld
  • expires_inintegerPflichtfeld
  • expires_atstringPflichtfeld

DocumentRecord #

Ein Dokument, das einem Messmittel zugeordnet ist, nur lesbar. Dokumente werden über ihre id identifiziert. Um die Datei zu holen, fordern Sie über GET /instruments/{instrument_id}/documents/{document_id}/download eine kurzlebige URL an.

Felder

  • idstring (uuid)Pflichtfeld
  • instrument_idstring (uuid)Pflichtfeld
  • file_namestring | null
  • document_typestring | null
  • calibration_idstring (uuid) | null

    Der Kalibrierdatensatz, dem dieses Dokument zugeordnet ist, oder null.

  • uploaded_atstring | null
  • uploaded_bystring (uuid) | null
  • is_archivedboolean
    • Standardwert: false

DocumentRegisterRequest #

Anfragetext, um eine mit dem vorsignierten POST hochgeladene Datei als Dokument dieses Messmittels zu registrieren, optional zugeordnet zu einem seiner Kalibrierdatensätze.

key muss genau der Schlüssel sein, den der Aufruf upload-url für dieses Messmittel geliefert hat. Jeder andere Schlüssel wird abgelehnt (422 INVALID_REQUEST), und ein Schlüssel ohne hochgeladene Datei liefert 409 OBJECT_NOT_UPLOADED.

Felder

  • keystringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 512 Zeichen
  • file_namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • document_typestring

    Einer der Werte certificate, report, procedure, photo, other.

    • Standardwert: other
    • Zulässige Werte: certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Optional: ordnet das Dokument einem bestimmten Kalibrierdatensatz DIESES Messmittels zu. Muss die id einer Kalibrierung sein, die zu diesem Messmittel gehört.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

DocumentUploadUrlRequest #

Anfragetext für eine Upload-URL: ein kurzlebiger, größenbegrenzter, vorsignierter S3-POST für ein Dokument.

Der Server bildet den key des Objekts selbst, Sie können ihn nicht wählen. Ein Verzeichnisanteil in file_name wird verworfen.

Felder

  • file_namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • content_typestring

    MIME-Typ der Datei. Muss ein zugelassener Typ sein (PDF oder ein Bild). Aktive Inhalte wie text/html oder image/svg+xml werden abgelehnt.

    • Standardwert: application/octet-stream
    • Höchstens 255 Zeichen
  • size_bytesinteger | null

    Optional angegebene Dateigröße. Wird abgelehnt (422), wenn sie das Maximum überschreitet. Der vorsignierte POST begrenzt außerdem den tatsächlichen Upload bei S3.

    • Minimum: 1
    • Maximum: 26214400

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

DocumentUploadUrlResponse #

Ein vorsignierter S3-POST zum Hochladen der Datei. Senden Sie einen POST multipart/form-data an upload_url mit jedem Eintrag aus fields und danach die Datei selbst. Übergeben Sie nach dem Upload key an POST /instruments/{instrument_id}/documents, um das Dokument zu registrieren.

Felder

  • methodstring
    • Standardwert: POST
    • Immer POST
  • upload_urlstringPflichtfeld
  • fieldsmap<string, string>Pflichtfeld
  • keystringPflichtfeld
  • expires_inintegerPflichtfeld
  • max_size_bytesintegerPflichtfeld

DueExtension #

Felder

  • untilstringPflichtfeld
  • reasonstring | null
  • extended_atstring | null
  • extended_by_user_idstring (uuid) | null

DueInstrument #

Eine Zeile der Arbeitsliste: ein Messmittel, das innerhalb des angefragten Zeitraums fällig wird oder bereits überfällig ist.

compliance_status ist einer der Werte COMPLIANT, WARNING, NON_COMPLIANT oder NOT_CALIBRATED, dieselben Werte, die die Messmittel-Endpunkte liefern. Er kann auch OUT_FOR_CALIBRATION sein, solange das Messmittel bei einem Dienstleister ist. Diesen Wert liefern die Messmittel-Endpunkte in compliance_status nicht.

due_date ist YYYY-MM-DD in der Zeitzone des Standorts, zu dem das Messmittel gehört. Gruppieren Sie Zeilen nach diesem Wert, statt aus due_at in Ihrer eigenen Zeitzone einen Tag abzuleiten. due_at ist der vollständige ISO-8601-Zeitpunkt in UTC. Ein Messmittel mit aktivem Kalibrierplan, das noch nie kalibriert wurde, erscheint als sofort fällig, mit NOT_CALIBRATED.

Felder

  • idstring (uuid)Pflichtfeld
  • asset_tagstring | null
  • namestring | null
  • due_atstring | null
  • due_datestringPflichtfeld
  • compliance_statusstringPflichtfeld
  • interval_labelstring | null
  • site_namestring | null
  • location_namestring | null

EventCatalogEntry #

Eine maschinenlesbare Beschreibung eines Ereignistyps, damit Integratoren die Ereignisse erkunden können.

Felder

  • typestringPflichtfeld
  • descriptionstringPflichtfeld

EventCatalogResponse #

Der Ereigniskatalog der v1: die vollständige Menge der type-Werte, die ein Webhook tragen kann.

Felder

FieldRequirement #

Wie ein einzelnes normabhängiges Feld für die aufgelösten Normen behandelt wird.

requirement ist die strengste Stufe über die aufgelösten Normen hinweg (required > recommended > optional > hidden). required_by listet die Bezeichnungen der aufgelösten Normen, die das Feld zur PFLICHT machen (leer, wenn nur die Grundanforderung es verlangt). Es entspricht required_by in den missing_fields eines Fehlers 422 FIELD_REQUIREMENTS_UNMET. request_field (nur im Geltungsbereich Kalibrierung) ist der Schlüssel im Anfragetext des POST, der das Feld erfüllt, oder null, wenn der Server es setzt oder es über die öffentliche API nicht gesetzt werden kann. note erklärt solche Fälle.

Felder

  • fieldstringPflichtfeld
  • labelstringPflichtfeld
  • requirementstringPflichtfeld
  • required_byarray[string]
  • request_fieldstring | null
  • notestring | null

FieldRequirementsResponse #

Die maschinenlesbaren, normabhängigen Feldanforderungen. Prüfen Sie damit einen Kalibrierungs- (oder Messmittel-)Schreibvorgang, bevor Sie ihn senden, statt darauf zu warten, dass der Server ihn ablehnt.

source ist workspace, wenn die Anforderungen die gewählten Normen des Arbeitsbereichs abbilden, oder query, wenn sie eine ausdrückliche Menge ?standards= in der Vorschau zeigen. available_standards ist der vollständige Katalog wählbarer Normen (um gültige Schlüssel für ?standards= zu finden).

Felder

FieldRequirementsScope #

Die Feldanforderungen für einen Geltungsbereich (Kalibrierung oder Messmittel).

enforced gibt an, ob der Server einen Schreibvorgang ablehnt, dem ein PFLICHTFELD fehlt. Beim Schreiben einer Kalibrierung ist das so (422 FIELD_REQUIREMENTS_UNMET). Bei POST /instruments nicht: Anforderungen an Messmittel sind nur Empfehlungen, verlassen Sie sich dort also nicht auf eine Ablehnung.

Felder

InstrumentCreate #

Anfragetext zum Anlegen eines Messmittels mit POST /instruments. Unbekannte Felder werden abgelehnt (422). Das Kalibrierintervall ist Pflicht, weil es den Kalibrierplan des Messmittels startet.

Felder

  • asset_tagstringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • namestringPflichtfeld
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • manufacturerstring | null
    • Höchstens 255 Zeichen
  • modelstring | null
    • Höchstens 255 Zeichen
  • serial_numberstring | null
    • Höchstens 255 Zeichen
  • categorystring | null
    • Höchstens 255 Zeichen
  • departmentstring | null
    • Höchstens 255 Zeichen
  • locationstring | null
    • Höchstens 255 Zeichen
  • tolerance_specstring | null
    • Höchstens 255 Zeichen
  • notesstring | null
    • Höchstens 10000 Zeichen
  • unit_of_measurestring | null
    • Höchstens 64 Zeichen
  • is_reference_standardboolean
    • Standardwert: false
  • calibration_interval_valueintegerPflichtfeld
    • Minimum: 1
    • Maximum: 100000
  • calibration_interval_unitstring

    Einer der Werte days, months, years.

    • Standardwert: months
    • Zulässige Werte: days, months, years
  • last_calibration_datestring (date-time) | null

    Optionaler Ausgangspunkt: wann das Messmittel zuletzt kalibriert wurde. Mit Angabe wird ein freigegebener Ausgangsdatensatz angelegt, aus dem die Konformität berechnet wird. Ohne Angabe meldet das Messmittel NOT_CALIBRATED, bis seine erste Kalibrierung geschrieben ist.

  • customFieldsmap<string, string>

    Optionale, vom Arbeitsbereich definierte benutzerdefinierte Felder als flache Zuordnung Bezeichnung -> Wert. Bezeichnungen werden genau so gespeichert, wie sie gesendet werden. Ein leerer Wert wird verworfen statt gespeichert.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

InstrumentDetail #

Ein einzelnes Messmittel: alles aus der Zusammenfassung plus seine beschreibenden Felder und Planungsfelder.

Felder

  • idstring (uuid)Pflichtfeld
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Standardwert: false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Löschmarke: der ISO-8601-Zeitpunkt, zu dem dieses Messmittel ausgemustert (außer Betrieb genommen) wurde, oder null, solange es aktiv ist. Gefüllt bei ausgemusterten Zeilen, die über ?include=retired erscheinen.

  • deletedboolean

    Löschmarke: true, wenn dieses Messmittel ausgemustert wurde und ein Spiegelsystem es als entfernt behandeln soll. In der Standardliste mit nur aktiven Messmitteln immer false.

    • Standardwert: false
  • due_extensionDueExtension | null

    Die aktive Verlängerung des Fälligkeitsdatums (until, reason, extended_at, extended_by_user_id) oder null, wenn es keine gibt oder eine neuere Kalibrierung sie abgelöst hat. next_due_at berücksichtigt sie bereits.

  • categorystring | null
  • departmentstring | null
  • locationstring | null
  • tolerance_specstring | null
  • notesstring | null
  • unit_of_measurestring | null
  • is_reference_standardboolean
    • Standardwert: false
  • requires_electronic_signatureboolean
    • Standardwert: false
  • requires_electronic_signature_overrideboolean | null
  • calibration_interval_valueinteger | null
  • calibration_interval_unitstring | null
  • grace_daysinteger | null
  • customFieldsmap<string, string>

    Vom Arbeitsbereich definierte benutzerdefinierte Felder als flache Zuordnung Bezeichnung -> Wert. Nur in der Einzelansicht eines Messmittels enthalten (nicht in der Liste).

  • created_atstring | null
  • updated_atstring | null

InstrumentSummary #

Ein Messmittel, wie es in einer Liste erscheint: seine Identität und sein Konformitätszustand, genug für eine Zeile ohne zweite Anfrage.

Felder

  • idstring (uuid)Pflichtfeld
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Standardwert: false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Löschmarke: der ISO-8601-Zeitpunkt, zu dem dieses Messmittel ausgemustert (außer Betrieb genommen) wurde, oder null, solange es aktiv ist. Gefüllt bei ausgemusterten Zeilen, die über ?include=retired erscheinen.

  • deletedboolean

    Löschmarke: true, wenn dieses Messmittel ausgemustert wurde und ein Spiegelsystem es als entfernt behandeln soll. In der Standardliste mit nur aktiven Messmitteln immer false.

    • Standardwert: false
  • due_extensionDueExtension | null

    Die aktive Verlängerung des Fälligkeitsdatums (until, reason, extended_at, extended_by_user_id) oder null, wenn es keine gibt oder eine neuere Kalibrierung sie abgelöst hat. next_due_at berücksichtigt sie bereits.

InstrumentUpdate #

Anfragetext für die teilweise Änderung mit PATCH /instruments/{instrument_id}. Nur die gesendeten Felder werden geändert. Unbekannte Felder werden abgelehnt (422).

Felder

  • namestring | null
    • Mindestens 1 Zeichen
    • Höchstens 255 Zeichen
  • manufacturerstring | null
    • Höchstens 255 Zeichen
  • modelstring | null
    • Höchstens 255 Zeichen
  • serial_numberstring | null
    • Höchstens 255 Zeichen
  • categorystring | null
    • Höchstens 255 Zeichen
  • departmentstring | null
    • Höchstens 255 Zeichen
  • locationstring | null
    • Höchstens 255 Zeichen
  • tolerance_specstring | null
    • Höchstens 255 Zeichen
  • notesstring | null
    • Höchstens 10000 Zeichen
  • unit_of_measurestring | null
    • Höchstens 64 Zeichen
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Minimum: 1
    • Maximum: 100000
  • calibration_interval_unitstring | null
    • Zulässige Werte: days, months, years
  • calibration_interval_change_reasonstring | null

    Warum sich das Kalibrierintervall ändert. Gilt, wenn das Messmittel bereits ein Intervall hat und der gesendete Wert oder die gesendete Einheit davon abweicht. Die Änderung wird immer mit dieser Begründung in das Aktivitätsprotokoll des Arbeitsbereichs geschrieben. Ob die Begründung Pflicht ist, hängt von der Einstellung CHANGE_REASON_RULES_ENFORCED der Installation ab: Ist sie eingeschaltet, scheitert die Anfrage ohne Begründung mit 422 und dem Code interval_change_reason_required. Ist sie ausgeschaltet, wird die Änderung angenommen und ohne Begründung protokolliert. Senden Sie schon jetzt eine Begründung, dann bricht Ihre Integration nicht, wenn die Einstellung eingeschaltet wird. Nicht nötig, wenn das Intervall unverändert bleibt.

    • Höchstens 1000 Zeichen
  • customFieldsmap<string, string> | null

    Vom Arbeitsbereich definierte benutzerdefinierte Felder, die gesetzt werden sollen, als flache Zuordnung Bezeichnung -> Wert. Sie werden mit den vorhandenen benutzerdefinierten Feldern des Messmittels ZUSAMMENGEFÜHRT: Nicht gesendete Bezeichnungen bleiben unverändert, und ein leerer Wert entfernt die Bezeichnung. Lassen Sie den Schlüssel ganz weg oder senden Sie null, um nichts zu ändern.

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

LocationSummary #

Ein Ort in Ihrem Arbeitsbereich. Damit lösen Sie die location_id auf, die Messmittel-Antworten liefern und die der Filter location_id annimmt. Jeder Ort gehört zu einem Standort, angegeben durch site_id.

Felder

  • idstring (uuid)Pflichtfeld
  • namestring | null
  • site_idstring (uuid) | null

Pagination #

Metadaten zum Blättern mit offset/limit, die mit jeder Liste geliefert werden.

Felder

  • limitintegerPflichtfeld
  • offsetintegerPflichtfeld
  • totalintegerPflichtfeld
  • has_morebooleanPflichtfeld

SecretRotatedResponse #

Die Antwort auf das Erneuern des Geheimnisses: das neue secret im Klartext, einmalig angezeigt.

Felder

  • idstring (uuid)Pflichtfeld
  • secretstringPflichtfeld

    Das neue Signaturgeheimnis, NUR hier angezeigt.

  • secret_prefixstring | null

SiteSummary #

Felder

  • idstring (uuid)Pflichtfeld
  • namestring | null
  • is_defaultboolean
    • Standardwert: false
  • timezonestring | null

StandardSummary #

Eine Norm, die der Arbeitsbereich gewählt hat.

Felder

  • keystringPflichtfeld
  • labelstringPflichtfeld

ValidationError #

Felder

  • locarray[string | integer]Pflichtfeld
  • msgstringPflichtfeld
  • typestringPflichtfeld
  • inputany
  • ctxobject

WebhookCreate #

Anmeldeanfrage. Fehlt events oder ist es leer, bedeutet das „alle Ereignisse des Katalogs“.

Felder

  • urlstringPflichtfeld

    HTTPS-Zustell-URL. Wird gegen SSRF geprüft (muss auf eine öffentliche Adresse auflösen; private, Loopback-, Link-Local- und Metadaten-Ziele werden abgelehnt).

    • Höchstens 2048 Zeichen
  • eventsarray[string] | null

    Teilmenge des Ereigniskatalogs der v1, die empfangen werden soll. Lassen Sie das Feld weg oder senden Sie eine leere Liste, um ALLE Ereignisse zu abonnieren. Unbekannte Typen werden abgelehnt (422).

  • descriptionstring | null

    Optionale, gut lesbare Bezeichnung für diesen Endpunkt.

    • Höchstens 500 Zeichen

Felder, die hier nicht aufgeführt sind, werden abgelehnt.

WebhookCreatedResponse #

Die Antwort auf die Anmeldung. Enthält das secret im Klartext GENAU EINMAL.

Felder

  • idstring (uuid)Pflichtfeld
  • urlstringPflichtfeld
  • eventsarray[string] | null

    Abonnierte Ereignistypen oder null für alle Ereignisse des Katalogs.

  • descriptionstring | null
  • is_activeboolean
    • Standardwert: true
  • secret_prefixstring | null

    Nicht geheimer Anfang des Signaturgeheimnisses (nur zur Anzeige).

  • disabled_atstring | null
  • created_atstring | null
  • updated_atstring | null
  • secretstringPflichtfeld

    Das HMAC-Signaturgeheimnis, NUR hier angezeigt. Speichern Sie es sofort. Es lässt sich nicht erneut abrufen. Prüfen Sie damit das Kopffeld Axiospec-Signature.

WebhookDeliveryRead #

Eine Zeile des Zustellprotokolls je Endpunkt (Beobachtung und Fehlersuche).

Enthält nie das Signaturgeheimnis oder die Kopffelder der Anfrage. response_snippet ist ein gekürzter Auszug ohne Geheimnisse aus dem Antworttext des Empfängers.

Felder

  • idstring (uuid)Pflichtfeld
  • event_idstring (uuid)Pflichtfeld
  • event_typestringPflichtfeld
  • statusstringPflichtfeld

    Einer dieser Werte: pending | failed | succeeded | exhausted.

  • attempt_countinteger
    • Standardwert: 0
  • next_attempt_atstring | null
  • last_attempt_atstring | null
  • last_status_codeinteger | null
  • last_errorstring | null
  • response_snippetstring | null
  • created_atstring | null
  • updated_atstring | null

WebhookRead #

Die sichere Sicht auf den Endpunkt. Enthält NIE secret_key.

Felder

  • idstring (uuid)Pflichtfeld
  • urlstringPflichtfeld
  • eventsarray[string] | null

    Abonnierte Ereignistypen oder null für alle Ereignisse des Katalogs.

  • descriptionstring | null
  • is_activeboolean
    • Standardwert: true
  • secret_prefixstring | null

    Nicht geheimer Anfang des Signaturgeheimnisses (nur zur Anzeige).

  • disabled_atstring | null
  • created_atstring | null
  • updated_atstring | null

WebhookUpdate #

PATCH-Anfrage. Nur die gesendeten Felder werden übernommen (Semantik exclude-unset).

Felder

  • urlstring | null

    Neue HTTPS-Zustell-URL (wird bei einer Änderung erneut gegen SSRF geprüft).

    • Höchstens 2048 Zeichen
  • eventsarray[string] | null

    Ersatz für die abonnierte Ereignismenge (leer/null = alle Ereignisse).

  • descriptionstring | null

    Neue Bezeichnung.

    • Höchstens 500 Zeichen
  • is_activeboolean | null

    Zustellung an diesen Endpunkt einschalten (true) oder ausschalten (false).

Felder, die hier nicht aufgeführt sind, werden abgelehnt.