Aller au contenu

Référence de l'API

API publique Axiospec

Version 1.0.0

Sommaire

Vue d'ensemble

L'API publique Axiospec vous permet de lire et d'écrire votre programme d'étalonnage depuis vos propres systèmes : lister et créer des instruments, enregistrer des étalonnages dans le registre à intégrité vérifiable, et lire vos sites ainsi que les normes de conformité que vous avez retenues.

URL de base : https://axiospec.com/api/public/v1

Authentification. Créez une clé dans l'application, sous Paramètres puis Clés API (réservé aux administrateurs de l'espace de travail). Envoyez-la à chaque requête, soit sous la forme Authorization: Bearer <key>, soit sous la forme X-API-Key: <key>. Les clés sont préfixées ctk_.

Accès. L'API est disponible avec les offres Professional et Scale. Les clés des offres gratuite ou Starter reçoivent 403 API_ACCESS_TIER_REQUIRED. Une clé agit au nom de la personne qui l'a créée. Si cette personne est un auditeur dont la date de fin d'accès est dépassée, la clé reçoit 403 ACCESS_ENDED.

Portées. Une clé a la portée read, ou la portée write (qui inclut read). Une clé en lecture seule qui tente une écriture reçoit 403 INSUFFICIENT_SCOPE.

Idempotence. L'enregistrement d'un étalonnage (POST /instruments/{id}/calibrations) exige un en-tête Idempotency-Key. Le registre fonctionne en ajout seul : une requête relancée avec la même clé renvoie donc l'enregistrement d'origine au lieu d'écrire un doublon. La création d'un instrument (POST /instruments) accepte le même en-tête de façon facultative.

Pagination. Les points de terminaison de liste renvoient {data: [...], pagination: {limit, offset, total, has_more}}. Paginez avec limit et offset.

Erreurs. Les erreurs sont du JSON avec un code lisible par une machine, un message lisible par une personne et des details facultatifs (par exemple la liste missing_fields sur 422 FIELD_REQUIREMENTS_UNMET, ou le field sur 422 PASS_OVER_TOLERANCE_REASON_REQUIRED).

Conforme malgré un résultat hors tolérance. Enregistrer un PASS ou un PASS_WITH_ADJUSTMENT dont la lecture finale sort de nominal_value +/- tolerance exige une courte justification écrite dans out_of_tolerance_impact. La lecture finale est as_left_reading, ou as_found_reading si aucune lecture après ajustage n'a été envoyée : un instrument trouvé hors tolérance puis ramené dans la bande par ajustage n'a donc besoin de rien de plus. Sans justification, l'écriture est refusée avec 422 PASS_OVER_TOLERANCE_REASON_REQUIRED et details.field = out_of_tolerance_impact. Tout ce que le serveur ne peut pas comparer est accepté : pas de valeur nominale, pas de tolérance, pas de lecture numérique, ou des lectures dont les unités diffèrent.

Production
https://axiospec.com

Authentification

Chaque requête nécessite une clé API. Envoyez-la de l'une de ces deux façons.

Jeton Bearer dans l'en-tête Authorization

Une clé API propre à l'espace de travail (préfixée ctk_), créée sous Paramètres puis Clés API. Envoyez-la sous la forme Authorization: Bearer <key>.

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

Clé API dans l'en-tête X-API-Key

La même clé API, envoyée dans l'en-tête X-API-Key au lieu de Authorization: Bearer.

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

Instruments

Lister les instruments (paginé) #

GET /api/public/v1/instruments

Paramètres de requête

  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0
  • statusstring | null

    Filtre sur le statut de l'équipement (sans tenir compte de la casse), par exemple in_service, out_of_service, OUT_FOR_CALIBRATION ou REFERENCE_ONLY. Un instrument REFERENCE_ONLY reste dans le parc mais n'est jamais étalonné : il renvoie next_due_at null, n'apparaît pas dans la liste des échéances et ne correspond jamais à un filtre compliance_status.

    • Au plus 64 caractères
  • site_idstring | null

    Filtre sur un seul site (UUID).

  • location_idstring | null

    Filtre sur un seul emplacement (UUID).

  • updated_sincestring | null

    Synchronisation incrémentale : uniquement les instruments modifiés à cet horodatage ISO-8601 ou après.

  • sortstring | null

    Ordre de tri : created_at, -created_at, updated_at ou -updated_at.

  • asset_tagstring | null

    Recherche exacte par numéro d'inventaire (pour rattacher votre propre identifiant à notre enregistrement).

    • Au plus 255 caractères
  • serial_numberstring | null

    Recherche exacte par numéro de série.

    • Au plus 255 caractères
  • compliance_statusstring | null

    Filtre sur le jeton de conformité : NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT ou OUT_FOR_CALIBRATION. Un jeton inconnu renvoie 422. Les instruments REFERENCE_ONLY ne correspondent jamais (ils n'ont pas d'état de conformité). Le serveur évalue ce filtre instrument par instrument : si les autres filtres laissent encore un ensemble très volumineux, la requête renvoie donc 422. Restreignez d'abord avec status, location_id, site_id ou updated_since.

    • Au plus 32 caractères
  • next_due_beforestring | null

    Uniquement les instruments dont le prochain étalonnage est dû avant cette date ISO. Comme compliance_status, ce filtre est évalué instrument par instrument, donc un ensemble très volumineux renvoie 422. Restreignez d'abord avec status, location_id, site_id ou updated_since.

  • includestring | null

    Marqueurs de suppression facultatifs pour la synchronisation différentielle. include=retired renvoie aussi les instruments mis hors service, signalés par deleted=true et un horodatage retired_at. Un système miroir apprend ainsi qu'un instrument a été mis hors service, au lieu de le voir disparaître sans explication de la liste des instruments actifs. Sans ce paramètre, seuls les instruments actifs sont renvoyés.

Réponses

  • 200 Réponse réussie

    application/json Page_InstrumentSummary_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Créer un instrument #

POST /api/public/v1/instruments

Paramètres d'en-tête

  • Idempotency-Keystring | null

    Facultatif. Une valeur unique de votre choix pour cette requête, par exemple un UUID, de 128 caractères au plus. Une requête relancée avec la même clé renvoie l'instrument créé par la première requête au lieu d'en créer un doublon. Tant que la première requête est en cours de traitement, une nouvelle tentative renvoie 503 ; réessayez peu après.

Corps de la requête Obligatoire

application/json InstrumentCreate

  • asset_tagstringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • manufacturerstring | null
    • Au plus 255 caractères
  • modelstring | null
    • Au plus 255 caractères
  • serial_numberstring | null
    • Au plus 255 caractères
  • categorystring | null
    • Au plus 255 caractères
  • departmentstring | null
    • Au plus 255 caractères
  • locationstring | null
    • Au plus 255 caractères
  • tolerance_specstring | null
    • Au plus 255 caractères
  • notesstring | null
    • Au plus 10000 caractères
  • unit_of_measurestring | null
    • Au plus 64 caractères
  • is_reference_standardboolean
    • Valeur par défaut : false
  • calibration_interval_valueintegerObligatoire
    • Minimum : 1
    • Maximum : 100000
  • calibration_interval_unitstring

    days, months ou years.

    • Valeur par défaut : months
    • Valeurs autorisées : days, months, years
  • last_calibration_datestring (date-time) | null

    Point de départ facultatif : la date du dernier étalonnage de l'instrument. Si elle est fournie, un enregistrement de départ approuvé est créé et la conformité est calculée à partir de lui. Sinon, l'instrument renvoie NOT_CALIBRATED jusqu'à l'enregistrement de son premier étalonnage.

  • customFieldsmap<string, string>

    Champs personnalisés facultatifs définis par l'espace de travail, sous forme de table plate libellé -> valeur. Les libellés sont stockés exactement tels qu'envoyés. Une valeur vide est ignorée au lieu d'être stockée.

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "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"
  }
}

Réponses

  • 201 Réponse réussie

    application/json InstrumentDetail

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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}'

Obtenir un instrument #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Réponses

  • 200 Réponse réussie

    application/json InstrumentDetail

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Modifier un instrument (partiellement) #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Corps de la requête Obligatoire

application/json InstrumentUpdate

  • namestring | null
    • Au moins 1 caractères
    • Au plus 255 caractères
  • manufacturerstring | null
    • Au plus 255 caractères
  • modelstring | null
    • Au plus 255 caractères
  • serial_numberstring | null
    • Au plus 255 caractères
  • categorystring | null
    • Au plus 255 caractères
  • departmentstring | null
    • Au plus 255 caractères
  • locationstring | null
    • Au plus 255 caractères
  • tolerance_specstring | null
    • Au plus 255 caractères
  • notesstring | null
    • Au plus 10000 caractères
  • unit_of_measurestring | null
    • Au plus 64 caractères
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Minimum : 1
    • Maximum : 100000
  • calibration_interval_unitstring | null
    • Valeurs autorisées : days, months, years
  • calibration_interval_change_reasonstring | null

    La raison du changement d'intervalle d'étalonnage. S'applique quand l'instrument a déjà un intervalle et que la valeur ou l'unité envoyée en diffère. Le changement est toujours écrit dans le journal d'activité de l'espace de travail avec cette raison. Le caractère obligatoire de la raison dépend du paramètre CHANGE_REASON_RULES_ENFORCED du déploiement : s'il est activé, une requête sans raison échoue avec 422 et le code interval_change_reason_required ; s'il est désactivé, le changement est accepté et journalisé sans raison. Envoyez une raison dès maintenant et votre intégration ne cassera pas le jour où il sera activé. Inutile quand l'intervalle ne change pas.

    • Au plus 1000 caractères
  • customFieldsmap<string, string> | null

    Champs personnalisés définis par l'espace de travail à renseigner, sous forme de table plate libellé -> valeur. Ils sont FUSIONNÉS avec les champs personnalisés existants de l'instrument : les libellés non envoyés restent inchangés, et l'envoi d'une valeur vide supprime ce libellé. Omettez complètement la clé, ou envoyez null, pour ne rien changer.

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "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"
  }
}

Réponses

  • 200 Réponse réussie

    application/json InstrumentDetail

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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"}'

Mettre un instrument hors service #

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

Consigne qu'un instrument a quitté le service actif.

L'enregistrement est conservé. status devient retired et retired_at est horodaté. L'instrument garde son historique d'étalonnage et reste lisible via cette API. Le registre n'est pas modifié. Rien n'est supprimé, et cette API n'offre aucun DELETE définitif pour un instrument.

La mise hors service bloque tout nouveau travail sur l'instrument. Ensuite, les points de terminaison d'écriture (modifier un instrument, enregistrer un étalonnage, téléverser un document) renvoient 409 ASSET_RETIRED. Les lectures continuent de fonctionner.

La clé doit avoir la portée write, et son propriétaire doit être administrateur ou responsable de l'espace de travail. Toute autre clé reçoit 403. Un instrument_id mal formé renvoie 422. Un instrument qui n'appartient pas à votre espace de travail renvoie 404.

La mise hors service est idempotente. Mettre hors service un instrument qui l'est déjà renvoie 200 avec le même détail, et le retired_at d'origine est conservé.

Paramètres de chemin

  • instrument_idstringObligatoire

Réponses

  • 200 Réponse réussie

    application/json InstrumentDetail

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Étalonnages

Lister les enregistrements d'étalonnage d'un instrument (paginé) #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Paramètres de requête

  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0
  • updated_sincestring | null

    Synchronisation incrémentale : uniquement les enregistrements ajoutés à cet horodatage ISO-8601 ou après.

  • performed_afterstring | null

    Uniquement les enregistrements réalisés à cet horodatage ISO-8601 ou après.

  • performed_beforestring | null

    Uniquement les enregistrements réalisés à cet horodatage ISO-8601 ou avant.

  • resultstring | null

    Restreint à un ou plusieurs résultats d'étalonnage (séparés par des virgules, sans tenir compte de la casse) : PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED. Un jeton inconnu renvoie 422.

  • sortstring | null

    Ordre de tri : performed_at, -performed_at, updated_at ou -updated_at.

  • includestring | null

    Marqueurs de suppression facultatifs pour la synchronisation différentielle. include=voided renvoie aussi les enregistrements d'annulation (record_type='void', avec voids_id qui pointe vers l'étalonnage qu'ils invalident), pour qu'un système miroir apprenne qu'un étalonnage a été invalidé. Sans ce paramètre, les enregistrements d'annulation sont exclus.

Réponses

  • 200 Réponse réussie

    application/json Page_CalibrationRecord_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Enregistrer un étalonnage pour un instrument #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Paramètres d'en-tête

  • Idempotency-Keystring | nullObligatoire

    Obligatoire. Une valeur unique de votre choix pour cet étalonnage, par exemple un UUID, de 128 caractères au plus. Le registre fonctionne en ajout seul : une requête relancée avec la même clé renvoie donc l'enregistrement d'origine au lieu d'écrire un doublon. Utilisez une nouvelle clé pour chaque nouvel étalonnage. Une requête sans cet en-tête renvoie 400 IDEMPOTENCY_KEY_REQUIRED. Tant que la première requête est en cours de traitement, une nouvelle tentative renvoie 503 ; réessayez peu après.

Corps de la requête Obligatoire

application/json CalibrationLogRequest

  • resultstringObligatoire

    PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED.

    • Valeurs autorisées : PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Date et heure de réalisation de l'étalonnage. Par défaut, l'instant présent (UTC) si le champ est omis.

  • nominal_valuestring | null
    • Au plus 255 caractères
  • tolerancestring | null
    • Au plus 255 caractères
  • as_found_readingstring | null
    • Au plus 255 caractères
  • as_left_readingstring | null
    • Au plus 255 caractères
  • temperaturestring | null
    • Au plus 64 caractères
  • humiditystring | null
    • Au plus 64 caractères
  • reference_standardstring | null
    • Au plus 255 caractères
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • Au plus 255 caractères
  • traceability_referencestring | null
    • Au plus 255 caractères
  • service_providerstring | null
    • Au plus 255 caractères
  • calibration_typestring | null

    'in_house' quand votre équipe a mesuré l'instrument, 'external_certificate' quand un laboratoire ou un prestataire l'a étalonné et que vous enregistrez son certificat. Dans le cas externe, le minimum est result, performed_at et certificate_number ; les champs de lecture ne sont pas obligatoires.

    • Valeurs autorisées : in_house, external_certificate
  • measurement_uncertaintystring | null
    • Au plus 120 caractères
  • coverage_factorstring | null
    • Au plus 40 caractères
  • confidence_levelstring | null
    • Au plus 40 caractères
  • decision_rulestring | null
    • Au plus 120 caractères
  • conformity_statementstring | null
    • Au plus 4000 caractères
  • reference_standard_certificate_numberstring | null
    • Au plus 120 caractères
  • restriction_notesstring | null
    • Au plus 4000 caractères
  • out_of_tolerance_impactstring | null
    • Au plus 4000 caractères
  • notesstring | null
    • Au plus 4000 caractères

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "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"
}

Réponses

  • 201 Réponse réussie

    application/json CalibrationRecord

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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"}'

Lister tous les enregistrements d'étalonnage de l'espace de travail #

GET /api/public/v1/calibrations

Tous les enregistrements d'étalonnage de votre espace de travail, pour tous les instruments, dans un seul flux paginé. Utilisez-le pour une tâche d'entrepôt de données ou de BI qui récupère « tous les étalonnages depuis X » sans un appel par instrument.

Pour la synchronisation incrémentale, passez updated_since avec sort=updated_at et parcourez les pages avec limit et offset. Ajoutez include=voided pour recevoir aussi les enregistrements d'annulation, afin qu'un système miroir puisse retirer les étalonnages invalidés.

Paramètres de requête

  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0
  • updated_sincestring | null

    Synchronisation incrémentale : uniquement les enregistrements ajoutés à cet horodatage ISO-8601 ou après.

  • performed_afterstring | null

    Uniquement les enregistrements réalisés à cet horodatage ISO-8601 ou après.

  • performed_beforestring | null

    Uniquement les enregistrements réalisés à cet horodatage ISO-8601 ou avant.

  • instrument_idstring | null

    Restreint le flux à un seul instrument (UUID).

  • resultstring | null

    Restreint à un ou plusieurs résultats d'étalonnage (séparés par des virgules, sans tenir compte de la casse) : PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED. Un jeton inconnu renvoie 422.

  • sortstring | null

    Ordre de tri : performed_at, -performed_at, updated_at ou -updated_at.

  • includestring | null

    Marqueurs de suppression facultatifs pour la synchronisation différentielle. include=voided renvoie aussi les enregistrements d'annulation (record_type='void', avec voids_id qui pointe vers l'étalonnage qu'ils invalident) de tout l'espace de travail. C'est ainsi qu'un système miroir complet apprend que des étalonnages ont été invalidés. Sans ce paramètre, les enregistrements d'annulation sont exclus.

Réponses

  • 200 Réponse réussie

    application/json Page_CalibrationRecord_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Obtenir un enregistrement d'étalonnage #

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

Paramètres de chemin

  • calibration_idstringObligatoire

Réponses

  • 200 Réponse réussie

    application/json CalibrationRecord

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Télécharger en PDF le certificat d'étalonnage d'un enregistrement d'étalonnage #

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

Télécharge en PDF le certificat d'un enregistrement d'étalonnage (application/pdf, envoyé en pièce jointe).

C'est le même certificat que celui que l'application émet pour cet enregistrement. Il est stocké lors de sa première génération : les téléchargements suivants renvoient donc le même document, sauf si le certificat est réémis dans l'application. Un changement de la langue des documents de l'espace de travail le réémet également : le prochain téléchargement le renvoie dans la nouvelle langue. Les certificats restent disponibles après la mise hors service de l'instrument.

Erreurs : 422 quand calibration_id n'est pas un UUID. 404 quand l'enregistrement n'appartient pas à votre espace de travail ou n'est pas un étalonnage. 404 CERTIFICATE_UNAVAILABLE quand l'enregistrement existe mais ne peut pas être certifié parce qu'il a été annulé, remplacé par une correction ou n'est pas approuvé.

Paramètres de chemin

  • calibration_idstringObligatoire

Réponses

  • 200 Certificat PDF

    application/pdf

  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Documents

Obtenir une URL présignée pour téléverser un document #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Corps de la requête Obligatoire

application/json DocumentUploadUrlRequest

  • file_namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • content_typestring

    Type MIME du fichier. Doit être un type autorisé (PDF ou image) ; le contenu actif, comme text/html ou image/svg+xml, est refusé.

    • Valeur par défaut : application/octet-stream
    • Au plus 255 caractères
  • size_bytesinteger | null

    Taille de fichier déclarée, facultative. Refusée (422) si elle dépasse le maximum ; le POST présigné plafonne aussi le téléversement réel sur S3.

    • Minimum : 1
    • Maximum : 26214400

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "file_name": "string",
  "content_type": "application/octet-stream",
  "size_bytes": 1
}

Réponses

  • 200 Réponse réussie

    application/json DocumentUploadUrlResponse

    Exemple de réponse
    {
      "method": "POST",
      "upload_url": "string",
      "fields": {
        "key": "string"
      },
      "key": "string",
      "expires_in": 0,
      "max_size_bytes": 0
    }
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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"}'

Lister les documents d'un instrument #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Paramètres de requête

  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0
  • calibration_idstring | null

    Filtre sur les documents d'un étalonnage (UUID).

  • document_typestring | null

    Filtre sur un type de document (certificate, report, procedure, photo ou other).

  • uploaded_sincestring | null

    Synchronisation incrémentale : uniquement les documents téléversés à cet horodatage ISO-8601 ou après. Attention, c'est un curseur de NOUVEAUX téléversements fondé sur upload_date : il ne reflète pas les archivages ou suppressions logiques ultérieurs.

  • sortstring | null

    Ordre de tri : upload_date ou -upload_date (par défaut : -upload_date).

  • include_archivedboolean

    Inclure les documents archivés (par défaut : actifs uniquement).

    • Valeur par défaut : false

Réponses

  • 200 Réponse réussie

    application/json Page_DocumentRecord_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Enregistrer un document téléversé #

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

Paramètres de chemin

  • instrument_idstringObligatoire

Corps de la requête Obligatoire

application/json DocumentRegisterRequest

  • keystringObligatoire
    • Au moins 1 caractères
    • Au plus 512 caractères
  • file_namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • document_typestring

    certificate, report, procedure, photo ou other.

    • Valeur par défaut : other
    • Valeurs autorisées : certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Facultatif : rattache le document à un enregistrement d'étalonnage précis de CET instrument. Doit être l'id d'un étalonnage qui appartient à cet instrument.

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "key": "string",
  "file_name": "string",
  "document_type": "certificate",
  "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Réponses

  • 201 Réponse réussie

    application/json DocumentRecord

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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"}'

Obtenir une URL de téléchargement à durée de vie courte pour un document #

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

Paramètres de chemin

  • instrument_idstringObligatoire
  • document_idstring (uuid)Obligatoire

Réponses

  • 200 Réponse réussie

    application/json DocumentDownloadResponse

    Exemple de réponse
    {
      "download_url": "string",
      "expires_in": 0,
      "expires_at": "string"
    }
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Liste des échéances

Lister les instruments à échéance ou en retard (liste de travail) #

GET /api/public/v1/due

Paramètres de requête

  • horizon_daysinteger

    Fenêtre future en jours (1-365). Tout ce qui arrive à échéance dans ce nombre de jours est inclus ; les instruments déjà en retard sont TOUJOURS inclus, quelle que soit cette valeur.

    • Valeur par défaut : 30
    • Minimum : 1
    • Maximum : 365
  • site_idstring | null

    Filtre sur un seul site (UUID). S'applique dans la limite des sites auxquels vous avez accès.

  • statusstring | null

    Filtre sur le jeton de conformité (sans tenir compte de la casse) : NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT ou OUT_FOR_CALIBRATION.

    • Au plus 32 caractères
  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0

Réponses

  • 200 Réponse réussie

    application/json Page_DueInstrument_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Webhooks

Lister le catalogue des événements webhook #

GET /api/public/v1/webhooks/events

Le vocabulaire d'événements v1, lisible par une machine, auquel un point de terminaison peut s'abonner.

Réponses

  • 200 Réponse réussie

    application/json EventCatalogResponse

    Exemple de réponse
    {
      "events": [
        {
          "type": "string",
          "description": "string"
        }
      ]
    }
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Lister les points de terminaison webhook #

GET /api/public/v1/webhooks

Paramètres de requête

  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0

Réponses

  • 200 Réponse réussie

    application/json Page_WebhookRead_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Abonner un point de terminaison webhook #

POST /api/public/v1/webhooks

Corps de la requête Obligatoire

application/json WebhookCreate

  • urlstringObligatoire

    URL de livraison HTTPS. Contrôlée contre la SSRF (elle doit résoudre vers une adresse publique ; les cibles privées, de bouclage, link-local ou de métadonnées sont refusées).

    • Au plus 2048 caractères
  • eventsarray[string] | null

    Sous-ensemble du catalogue d'événements v1 à recevoir. Omettez-le ou envoyez une liste vide pour vous abonner à TOUS les événements. Les types inconnus sont refusés (422).

  • descriptionstring | null

    Libellé facultatif et lisible pour ce point de terminaison.

    • Au plus 500 caractères

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string"
}

Réponses

  • 201 Réponse réussie

    application/json WebhookCreatedResponse

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Obtenir un point de terminaison webhook #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire

Réponses

  • 200 Réponse réussie

    application/json WebhookRead

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Modifier un point de terminaison webhook #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire

Corps de la requête Obligatoire

application/json WebhookUpdate

  • urlstring | null

    Nouvelle URL de livraison HTTPS (contrôlée de nouveau contre la SSRF quand elle change).

    • Au plus 2048 caractères
  • eventsarray[string] | null

    Sous-ensemble d'événements de remplacement (vide/null = tous les événements).

  • descriptionstring | null

    Libellé de remplacement.

    • Au plus 500 caractères
  • is_activeboolean | null

    Active (true) ou désactive (false) la livraison vers ce point de terminaison.

Les champs qui ne figurent pas ici sont refusés.

Exemple de corps de requête
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string",
  "is_active": true
}

Réponses

  • 200 Réponse réussie

    application/json WebhookRead

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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"}'

Désabonner un point de terminaison webhook (désactivation logique) #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire

Réponses

  • 204 Réponse réussie

    Aucun contenu

  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Renouveler le secret de signature d'un point de terminaison webhook #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire

Réponses

  • 200 Réponse réussie

    application/json SecretRotatedResponse

    Exemple de réponse
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "secret": "string",
      "secret_prefix": "string"
    }
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Lister le journal des livraisons d'un point de terminaison #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire

Paramètres de requête

  • statusstring | null

    Filtre sur le statut de livraison : pending, failed, succeeded, exhausted.

    • Au plus 32 caractères
  • limitinteger
    • Valeur par défaut : 50
    • Minimum : 1
    • Maximum : 100
  • offsetinteger
    • Valeur par défaut : 0
    • Minimum : 0

Réponses

  • 200 Réponse réussie

    application/json Page_WebhookDeliveryRead_

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Relancer manuellement une livraison #

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

Paramètres de chemin

  • endpoint_idstring (uuid)Obligatoire
  • delivery_idstring (uuid)Obligatoire

Réponses

  • 202 Réponse réussie

    application/json WebhookDeliveryRead

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Sites

Lister les sites de l'espace de travail #

GET /api/public/v1/sites

Réponses

  • 200 Réponse réussie

    application/json array[SiteSummary]

    Exemple de réponse
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "is_default": false,
        "timezone": "string"
      }
    ]
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Emplacements

Lister les emplacements de l'espace de travail #

GET /api/public/v1/locations

Paramètres de requête

  • site_idstring | null

    Filtre sur un seul site (UUID). S'applique dans la limite des sites auxquels vous avez accès.

Réponses

  • 200 Réponse réussie

    application/json array[LocationSummary]

    Exemple de réponse
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      }
    ]
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Normes de conformité

Lister les normes de conformité retenues par cet espace de travail #

GET /api/public/v1/standards

Réponses

  • 200 Réponse réussie

    application/json array[StandardSummary]

    Exemple de réponse
    [
      {
        "key": "string",
        "label": "string"
      }
    ]
  • 422 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Les exigences de champs imposées par les normes pour un étalonnage ou un instrument #

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

Paramètres de requête

  • standardsstring | null

    Clés de normes facultatives, séparées par des virgules, à PRÉVISUALISER (par ex. 'iso_17025,as9100'). Omettez-les pour refléter les normes retenues par l'espace de travail (celles au regard desquelles le POST public d'étalonnage est réellement évalué). Une clé inconnue renvoie 422.

Réponses

  • 200 Réponse réussie

    application/json FieldRequirementsResponse

    Exemple de réponse
    {
      "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 Erreur de validation

    application/json HTTPValidationError

Exemple de requête

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

Schémas

Les objets que les points de terminaison acceptent et renvoient. Les noms de champs, les types et les valeurs d'énumération sont affichés exactement tels que l'API les envoie et les attend.

CalibrationLogRequest #

Corps de requête pour enregistrer un étalonnage. Les champs inconnus sont refusés (422).

L'enregistrement est ajouté au registre à intégrité vérifiable avec les mêmes règles de validation et d'approbation qu'un étalonnage saisi dans l'application. Un résultat FAIL ou DAMAGED met l'instrument en quarantaine, comme dans l'application. Les champs exigés par les normes retenues dans votre espace de travail sont imposés : un corps qui en omet un est refusé avec 422 FIELD_REQUIREMENTS_UNMET. Vérifiez-les d'abord avec GET /standards/field-requirements.

Un PASS ou PASS_WITH_ADJUSTMENT dont la lecture finale sort de nominal_value +/- tolerance exige aussi une courte justification écrite dans out_of_tolerance_impact, faute de quoi l'écriture est refusée avec 422 PASS_OVER_TOLERANCE_REASON_REQUIRED. La lecture finale est as_left_reading, ou as_found_reading si aucune lecture après ajustage n'a été envoyée : un instrument trouvé hors tolérance puis ramené dans la bande par ajustage n'a donc besoin de rien de plus. Tout ce que le serveur ne peut pas comparer est accepté.

Champs

  • resultstringObligatoire

    PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED.

    • Valeurs autorisées : PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Date et heure de réalisation de l'étalonnage. Par défaut, l'instant présent (UTC) si le champ est omis.

  • nominal_valuestring | null
    • Au plus 255 caractères
  • tolerancestring | null
    • Au plus 255 caractères
  • as_found_readingstring | null
    • Au plus 255 caractères
  • as_left_readingstring | null
    • Au plus 255 caractères
  • temperaturestring | null
    • Au plus 64 caractères
  • humiditystring | null
    • Au plus 64 caractères
  • reference_standardstring | null
    • Au plus 255 caractères
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • Au plus 255 caractères
  • traceability_referencestring | null
    • Au plus 255 caractères
  • service_providerstring | null
    • Au plus 255 caractères
  • calibration_typestring | null

    'in_house' quand votre équipe a mesuré l'instrument, 'external_certificate' quand un laboratoire ou un prestataire l'a étalonné et que vous enregistrez son certificat. Dans le cas externe, le minimum est result, performed_at et certificate_number ; les champs de lecture ne sont pas obligatoires.

    • Valeurs autorisées : in_house, external_certificate
  • measurement_uncertaintystring | null
    • Au plus 120 caractères
  • coverage_factorstring | null
    • Au plus 40 caractères
  • confidence_levelstring | null
    • Au plus 40 caractères
  • decision_rulestring | null
    • Au plus 120 caractères
  • conformity_statementstring | null
    • Au plus 4000 caractères
  • reference_standard_certificate_numberstring | null
    • Au plus 120 caractères
  • restriction_notesstring | null
    • Au plus 4000 caractères
  • out_of_tolerance_impactstring | null
    • Au plus 4000 caractères
  • notesstring | null
    • Au plus 4000 caractères

Les champs qui ne figurent pas ici sont refusés.

CalibrationRecord #

Un enregistrement d'étalonnage issu du registre, en lecture seule. Les enregistrements du registre ne sont jamais modifiés ni supprimés : une correction ou une annulation est ajoutée comme nouvel enregistrement.

Champs

  • idstring (uuid)Obligatoire
  • instrument_idstring (uuid)Obligatoire
  • 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' ou 'external_certificate', tel qu'enregistré. Null quand l'enregistrement ne porte aucun type.

    • Valeurs autorisées : in_house, external_certificate
  • approval_statusstring | null
  • statusstring | null
  • superseded_by_idstring (uuid) | null
  • record_typestring

    'calibration' pour un enregistrement normal, ou 'void' pour un marqueur d'annulation ajouté (renvoyé avec ?include=voided).

    • Valeur par défaut : calibration
    • Valeurs autorisées : calibration, void
  • voids_idstring (uuid) | null

    Sur un marqueur d'annulation (record_type='void') : l'id de l'enregistrement d'étalonnage que cette annulation invalide. Null sur un enregistrement normal.

  • voided_by_idstring (uuid) | null

    Sur un étalonnage d'origine encore visible qui a depuis été annulé : l'id du marqueur d'annulation qui l'a invalidé. Null quand l'enregistrement n'est pas annulé.

  • created_atstring | null

DocumentDownloadResponse #

Une URL de téléchargement à durée de vie courte pour un document. L'URL télécharge toujours le fichier au lieu de l'afficher dans un navigateur, et elle expire au bout de expires_in secondes (à expires_at). Demandez une nouvelle URL chaque fois que vous avez besoin du fichier au lieu d'en conserver une.

Champs

  • download_urlstringObligatoire
  • expires_inintegerObligatoire
  • expires_atstringObligatoire

DocumentRecord #

Un document rattaché à un instrument, en lecture seule. Les documents sont identifiés par leur id. Pour récupérer le fichier, demandez une URL à durée de vie courte à GET /instruments/{instrument_id}/documents/{document_id}/download.

Champs

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

    L'enregistrement d'étalonnage auquel ce document est rattaché, ou null.

  • uploaded_atstring | null
  • uploaded_bystring (uuid) | null
  • is_archivedboolean
    • Valeur par défaut : false

DocumentRegisterRequest #

Corps de requête pour enregistrer comme document de cet instrument un fichier téléversé avec le POST présigné, éventuellement rattaché à l'un de ses enregistrements d'étalonnage.

key doit être exactement la clé que l'appel upload-url a renvoyée pour cet instrument. Toute autre clé est refusée (422 INVALID_REQUEST), et une clé sans fichier téléversé renvoie 409 OBJECT_NOT_UPLOADED.

Champs

  • keystringObligatoire
    • Au moins 1 caractères
    • Au plus 512 caractères
  • file_namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • document_typestring

    certificate, report, procedure, photo ou other.

    • Valeur par défaut : other
    • Valeurs autorisées : certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Facultatif : rattache le document à un enregistrement d'étalonnage précis de CET instrument. Doit être l'id d'un étalonnage qui appartient à cet instrument.

Les champs qui ne figurent pas ici sont refusés.

DocumentUploadUrlRequest #

Corps de requête pour une URL de téléversement : un POST S3 présigné, à durée de vie courte et à taille plafonnée, pour un document.

Le serveur construit la key de l'objet ; vous ne pouvez pas la choisir. Toute partie répertoire de file_name est ignorée.

Champs

  • file_namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • content_typestring

    Type MIME du fichier. Doit être un type autorisé (PDF ou image) ; le contenu actif, comme text/html ou image/svg+xml, est refusé.

    • Valeur par défaut : application/octet-stream
    • Au plus 255 caractères
  • size_bytesinteger | null

    Taille de fichier déclarée, facultative. Refusée (422) si elle dépasse le maximum ; le POST présigné plafonne aussi le téléversement réel sur S3.

    • Minimum : 1
    • Maximum : 26214400

Les champs qui ne figurent pas ici sont refusés.

DocumentUploadUrlResponse #

Un POST S3 présigné pour téléverser le fichier. Envoyez un POST multipart/form-data à upload_url avec chaque entrée de fields, puis le fichier lui-même. Après le téléversement, passez key à POST /instruments/{instrument_id}/documents pour enregistrer le document.

Champs

  • methodstring
    • Valeur par défaut : POST
    • Toujours POST
  • upload_urlstringObligatoire
  • fieldsmap<string, string>Obligatoire
  • keystringObligatoire
  • expires_inintegerObligatoire
  • max_size_bytesintegerObligatoire

DueExtension #

Champs

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

DueInstrument #

Une ligne de la liste de travail : un instrument qui arrive à échéance dans l'horizon demandé, ou qui est déjà en retard.

compliance_status vaut COMPLIANT, WARNING, NON_COMPLIANT ou NOT_CALIBRATED, les mêmes valeurs que celles des points de terminaison d'instruments. Il peut aussi valoir OUT_FOR_CALIBRATION pendant que l'instrument est chez un prestataire, une valeur que les points de terminaison d'instruments ne renvoient pas dans compliance_status.

due_date est au format YYYY-MM-DD dans le fuseau horaire du site de l'instrument. Regroupez les lignes sur cette valeur plutôt que de déduire un jour à partir de due_at dans votre propre fuseau horaire. due_at est l'instant ISO-8601 complet en UTC. Un instrument qui a un plan d'étalonnage actif mais n'a jamais été étalonné apparaît comme dû immédiatement, avec NOT_CALIBRATED.

Champs

  • idstring (uuid)Obligatoire
  • asset_tagstring | null
  • namestring | null
  • due_atstring | null
  • due_datestringObligatoire
  • compliance_statusstringObligatoire
  • interval_labelstring | null
  • site_namestring | null
  • location_namestring | null

EventCatalogEntry #

Un descripteur de type d'événement, lisible par une machine, qui permet à l'intégrateur de découvrir les événements.

Champs

  • typestringObligatoire
  • descriptionstringObligatoire

EventCatalogResponse #

Le catalogue d'événements v1 : l'ensemble complet des valeurs type qu'un webhook peut porter.

Champs

FieldRequirement #

Comment un champ imposé par les normes est traité pour les normes résolues.

requirement est le niveau le plus strict parmi les normes résolues (required > recommended > optional > hidden). required_by liste les libellés des normes résolues qui le rendent OBLIGATOIRE (vide quand seul le socle de base l'exige) ; il correspond à required_by dans les missing_fields d'une erreur 422 FIELD_REQUIREMENTS_UNMET. request_field (périmètre étalonnage uniquement) est la clé du corps du POST qui satisfait le champ, ou null quand il est défini côté serveur ou ne peut pas être défini via l'API publique ; note explique ces cas.

Champs

  • fieldstringObligatoire
  • labelstringObligatoire
  • requirementstringObligatoire
  • required_byarray[string]
  • request_fieldstring | null
  • notestring | null

FieldRequirementsResponse #

Les exigences de champs imposées par les normes, lisibles par une machine. Servez-vous-en pour vérifier une écriture d'étalonnage (ou d'instrument) avant de l'envoyer, au lieu d'attendre que le serveur la refuse.

source vaut workspace quand les exigences reflètent les normes retenues par l'espace de travail, ou query quand elles prévisualisent un ensemble ?standards= explicite. available_standards est le catalogue complet des normes sélectionnables (pour découvrir les clés ?standards= valides).

Champs

FieldRequirementsScope #

Les exigences de champs pour un périmètre (étalonnage ou équipement).

enforced indique si le serveur refuse une écriture qui omet un champ OBLIGATOIRE. C'est le cas pour l'enregistrement d'un étalonnage (422 FIELD_REQUIREMENTS_UNMET). Ce n'est pas le cas pour POST /instruments : les exigences sur les équipements sont seulement indicatives, ne comptez donc pas sur un refus à cet endroit.

Champs

InstrumentCreate #

Corps de requête pour créer un instrument avec POST /instruments. Les champs inconnus sont refusés (422). L'intervalle d'étalonnage est obligatoire, car il lance le calendrier d'étalonnage de l'instrument.

Champs

  • asset_tagstringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • namestringObligatoire
    • Au moins 1 caractères
    • Au plus 255 caractères
  • manufacturerstring | null
    • Au plus 255 caractères
  • modelstring | null
    • Au plus 255 caractères
  • serial_numberstring | null
    • Au plus 255 caractères
  • categorystring | null
    • Au plus 255 caractères
  • departmentstring | null
    • Au plus 255 caractères
  • locationstring | null
    • Au plus 255 caractères
  • tolerance_specstring | null
    • Au plus 255 caractères
  • notesstring | null
    • Au plus 10000 caractères
  • unit_of_measurestring | null
    • Au plus 64 caractères
  • is_reference_standardboolean
    • Valeur par défaut : false
  • calibration_interval_valueintegerObligatoire
    • Minimum : 1
    • Maximum : 100000
  • calibration_interval_unitstring

    days, months ou years.

    • Valeur par défaut : months
    • Valeurs autorisées : days, months, years
  • last_calibration_datestring (date-time) | null

    Point de départ facultatif : la date du dernier étalonnage de l'instrument. Si elle est fournie, un enregistrement de départ approuvé est créé et la conformité est calculée à partir de lui. Sinon, l'instrument renvoie NOT_CALIBRATED jusqu'à l'enregistrement de son premier étalonnage.

  • customFieldsmap<string, string>

    Champs personnalisés facultatifs définis par l'espace de travail, sous forme de table plate libellé -> valeur. Les libellés sont stockés exactement tels qu'envoyés. Une valeur vide est ignorée au lieu d'être stockée.

Les champs qui ne figurent pas ici sont refusés.

InstrumentDetail #

Un instrument : tout ce que contient le résumé, plus ses champs descriptifs et de planification.

Champs

  • idstring (uuid)Obligatoire
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Valeur par défaut : false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Marqueur de suppression : l'instant ISO-8601 où cet instrument a été mis hors service, ou null tant qu'il est actif. Renseigné sur les lignes mises hors service renvoyées avec ?include=retired.

  • deletedboolean

    Marqueur de suppression : true quand cet instrument a été mis hors service et qu'un système miroir doit le traiter comme retiré. Toujours false dans la liste par défaut, limitée aux instruments actifs.

    • Valeur par défaut : false
  • due_extensionDueExtension | null

    La prolongation d'échéance active (until, reason, extended_at, extended_by_user_id), ou null s'il n'y en a pas ou si un étalonnage plus récent l'a remplacée. next_due_at en tient déjà compte.

  • categorystring | null
  • departmentstring | null
  • locationstring | null
  • tolerance_specstring | null
  • notesstring | null
  • unit_of_measurestring | null
  • is_reference_standardboolean
    • Valeur par défaut : false
  • requires_electronic_signatureboolean
    • Valeur par défaut : false
  • requires_electronic_signature_overrideboolean | null
  • calibration_interval_valueinteger | null
  • calibration_interval_unitstring | null
  • grace_daysinteger | null
  • customFieldsmap<string, string>

    Champs personnalisés définis par l'espace de travail, sous forme de table plate libellé -> valeur. Renvoyés uniquement dans le détail d'un instrument (pas dans la liste).

  • created_atstring | null
  • updated_atstring | null

InstrumentSummary #

Un instrument tel qu'il apparaît dans une liste : son identité et son état de conformité, de quoi afficher une ligne sans seconde requête.

Champs

  • idstring (uuid)Obligatoire
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Valeur par défaut : false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Marqueur de suppression : l'instant ISO-8601 où cet instrument a été mis hors service, ou null tant qu'il est actif. Renseigné sur les lignes mises hors service renvoyées avec ?include=retired.

  • deletedboolean

    Marqueur de suppression : true quand cet instrument a été mis hors service et qu'un système miroir doit le traiter comme retiré. Toujours false dans la liste par défaut, limitée aux instruments actifs.

    • Valeur par défaut : false
  • due_extensionDueExtension | null

    La prolongation d'échéance active (until, reason, extended_at, extended_by_user_id), ou null s'il n'y en a pas ou si un étalonnage plus récent l'a remplacée. next_due_at en tient déjà compte.

InstrumentUpdate #

Corps de mise à jour partielle pour PATCH /instruments/{instrument_id}. Seules les clés envoyées sont modifiées ; les champs inconnus sont refusés (422).

Champs

  • namestring | null
    • Au moins 1 caractères
    • Au plus 255 caractères
  • manufacturerstring | null
    • Au plus 255 caractères
  • modelstring | null
    • Au plus 255 caractères
  • serial_numberstring | null
    • Au plus 255 caractères
  • categorystring | null
    • Au plus 255 caractères
  • departmentstring | null
    • Au plus 255 caractères
  • locationstring | null
    • Au plus 255 caractères
  • tolerance_specstring | null
    • Au plus 255 caractères
  • notesstring | null
    • Au plus 10000 caractères
  • unit_of_measurestring | null
    • Au plus 64 caractères
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Minimum : 1
    • Maximum : 100000
  • calibration_interval_unitstring | null
    • Valeurs autorisées : days, months, years
  • calibration_interval_change_reasonstring | null

    La raison du changement d'intervalle d'étalonnage. S'applique quand l'instrument a déjà un intervalle et que la valeur ou l'unité envoyée en diffère. Le changement est toujours écrit dans le journal d'activité de l'espace de travail avec cette raison. Le caractère obligatoire de la raison dépend du paramètre CHANGE_REASON_RULES_ENFORCED du déploiement : s'il est activé, une requête sans raison échoue avec 422 et le code interval_change_reason_required ; s'il est désactivé, le changement est accepté et journalisé sans raison. Envoyez une raison dès maintenant et votre intégration ne cassera pas le jour où il sera activé. Inutile quand l'intervalle ne change pas.

    • Au plus 1000 caractères
  • customFieldsmap<string, string> | null

    Champs personnalisés définis par l'espace de travail à renseigner, sous forme de table plate libellé -> valeur. Ils sont FUSIONNÉS avec les champs personnalisés existants de l'instrument : les libellés non envoyés restent inchangés, et l'envoi d'une valeur vide supprime ce libellé. Omettez complètement la clé, ou envoyez null, pour ne rien changer.

Les champs qui ne figurent pas ici sont refusés.

LocationSummary #

Un emplacement de votre espace de travail. Utilisez-le pour résoudre le location_id que renvoient les réponses sur les instruments et qu'accepte le filtre location_id. Chaque emplacement appartient à un site, indiqué par site_id.

Champs

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

Pagination #

Métadonnées de pagination offset/limit renvoyées avec chaque liste.

Champs

  • limitintegerObligatoire
  • offsetintegerObligatoire
  • totalintegerObligatoire
  • has_morebooleanObligatoire

SecretRotatedResponse #

La réponse au renouvellement du secret : le nouveau secret en clair, affiché une seule fois.

Champs

  • idstring (uuid)Obligatoire
  • secretstringObligatoire

    Le nouveau secret de signature, affiché UNIQUEMENT ici.

  • secret_prefixstring | null

SiteSummary #

Champs

  • idstring (uuid)Obligatoire
  • namestring | null
  • is_defaultboolean
    • Valeur par défaut : false
  • timezonestring | null

StandardSummary #

Une norme de conformité retenue par l'espace de travail.

Champs

  • keystringObligatoire
  • labelstringObligatoire

ValidationError #

Champs

  • locarray[string | integer]Obligatoire
  • msgstringObligatoire
  • typestringObligatoire
  • inputany
  • ctxobject

WebhookCreate #

Requête d'abonnement. Si events est omis ou vide, cela signifie « tous les événements du catalogue ».

Champs

  • urlstringObligatoire

    URL de livraison HTTPS. Contrôlée contre la SSRF (elle doit résoudre vers une adresse publique ; les cibles privées, de bouclage, link-local ou de métadonnées sont refusées).

    • Au plus 2048 caractères
  • eventsarray[string] | null

    Sous-ensemble du catalogue d'événements v1 à recevoir. Omettez-le ou envoyez une liste vide pour vous abonner à TOUS les événements. Les types inconnus sont refusés (422).

  • descriptionstring | null

    Libellé facultatif et lisible pour ce point de terminaison.

    • Au plus 500 caractères

Les champs qui ne figurent pas ici sont refusés.

WebhookCreatedResponse #

La réponse à l'abonnement. Elle contient le secret en clair UNE SEULE FOIS.

Champs

  • idstring (uuid)Obligatoire
  • urlstringObligatoire
  • eventsarray[string] | null

    Types d'événements souscrits, ou null pour tous les événements du catalogue.

  • descriptionstring | null
  • is_activeboolean
    • Valeur par défaut : true
  • secret_prefixstring | null

    Début non secret du secret de signature (affichage uniquement).

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

    Le secret de signature HMAC, affiché UNIQUEMENT ici. Conservez-le dès maintenant. Il ne peut pas être récupéré ensuite. Servez-vous-en pour vérifier l'en-tête Axiospec-Signature.

WebhookDeliveryRead #

Une ligne du journal des livraisons d'un point de terminaison (observabilité et débogage).

Ne contient jamais le secret de signature ni les en-têtes de la requête ; response_snippet est un extrait tronqué, sans secret, du corps de la réponse du destinataire.

Champs

  • idstring (uuid)Obligatoire
  • event_idstring (uuid)Obligatoire
  • event_typestringObligatoire
  • statusstringObligatoire

    L'une de ces valeurs : pending | failed | succeeded | exhausted.

  • attempt_countinteger
    • Valeur par défaut : 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 #

La vue sûre du point de terminaison. Ne contient JAMAIS secret_key.

Champs

  • idstring (uuid)Obligatoire
  • urlstringObligatoire
  • eventsarray[string] | null

    Types d'événements souscrits, ou null pour tous les événements du catalogue.

  • descriptionstring | null
  • is_activeboolean
    • Valeur par défaut : true
  • secret_prefixstring | null

    Début non secret du secret de signature (affichage uniquement).

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

WebhookUpdate #

Requête PATCH. Seuls les champs fournis sont appliqués (sémantique exclude-unset).

Champs

  • urlstring | null

    Nouvelle URL de livraison HTTPS (contrôlée de nouveau contre la SSRF quand elle change).

    • Au plus 2048 caractères
  • eventsarray[string] | null

    Sous-ensemble d'événements de remplacement (vide/null = tous les événements).

  • descriptionstring | null

    Libellé de remplacement.

    • Au plus 500 caractères
  • is_activeboolean | null

    Active (true) ou désactive (false) la livraison vers ce point de terminaison.

Les champs qui ne figurent pas ici sont refusés.