---
title: "Edit an unsigned tool calibration record. A full replacement: the submitted measurements
replace the record's response set wholesale and the result is re-derived against the record's
pinned template version. Signed records are immutable and reject every edit. The request must
round-trip the version token from a read of the record; a stale token is rejected with 409."
method: PUT
path: "/api/tool-calibrations/{id}"
tags: ["Tool Calibration"]
---

# Edit an unsigned tool calibration record. A full replacement: the submitted measurements
replace the record's response set wholesale and the result is re-derived against the record's
pinned template version. Signed records are immutable and reject every edit. The request must
round-trip the version token from a read of the record; a stale token is rejected with 409.

`PUT /api/tool-calibrations/{id}`

## Path parameters

- `id` string, required

## Request body

- ToolCalibrationUpdateDto — Request body for editing an unsigned tool calibration record. A full replacement: the submitted measurements replace the record's response set wholesale, and the result is re-derived against the record's pinned template version. Signed records are immutable and reject every edit.
  - `toolId` string, required — The id of the tool the calibration was performed on
  - `calibrationSource` 'user' | 'vendor' | 'customer', required — Who performed the calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.CalibrationSource by underlying value.
  - `calibratedByUserId` string, nullable — The user who performed an in-house calibration; required for (and only valid with) the user source
  - `calibratedByVendorId` string, nullable — The vendor that performed an external calibration; required for (and only valid with) the vendor source
  - `result` 'fail' | 'pass' | 'notApplicable', required — The outcome of a calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationResult by underlying value.
  - `calibrationDateUtc` string, date-time, required — When the calibration was performed (UTC)
  - `masterGageNames` string, nullable — Free-text master gauge names supplied with an external attestation; a measured in-house calibration derives its masters from the template instead
  - `certificateNumber` string, nullable — The external certificate number supplied with the calibration
  - `notes` string, nullable — Free-text notes
  - `asFoundNotes` string, nullable — Free-text notes about the As-Found state
  - `tempDegC` number, double, nullable — Ambient temperature (deg C) captured during calibration
  - `relHumidity` number, double, nullable — Ambient relative humidity (%) captured during calibration
  - `responses` ToolCalibrationRequestCalibrationResponseSaveDto[], nullable — The per-checkpoint trial measurements; only valid on in-house (user-source) calibrations against the tool's current calibration template
    - `calibrationCheckpointId` string, uuid, required — The template checkpoint this measurement answers; must belong to the template version the record is measured against
    - `phase` 'asFound' | 'asLeft', required — The measurement phase of a checkpoint response. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationCheckpointPhase by underlying value.
    - `trial` integer, required — 1-based trial number within the phase for this checkpoint
    - `numericValue` number, double, nullable — The measured numeric value
    - `numericValuePrecision` integer, nullable — The decimal precision of the measured numeric value
    - `booleanValue` boolean, nullable — The measured boolean value, for attribute (pass/fail) checkpoints
    - `stringValue` string, nullable — The measured free-text value
    - `bonusToleranceValue` number, double, nullable — The bonus tolerance applied to the measurement
  - `version` string, required — The record's opaque concurrency token from a read of this record, round-tripped unchanged. The edit is rejected with 409 Conflict when the record changed after that read

## Response `200`

The updated calibration record, with its derived results and refreshed concurrency token

- ToolCalibrationSavedDto — The result of recording or editing a tool calibration record: the persisted record plus, when the save recorded a new failure, the non-conformance report it automatically opened.
  - `id` string, nullable — The id of the calibration record
  - `tool` ToolCalibrationToolReferenceDto — The tool a calibration record belongs to.
    - `id` string, nullable — The id of the tool
    - `name` string, nullable — The name of the tool
    - `toolType` 'bevelProtractor' | 'bendAngleGage' | 'boreGage' | 'caliper' | 'cmm' | 'coatingThicknessGage' | 'depthMicrometer' | 'gageBlocks' | 'hardnessTester' | 'heightGage' | 'micrometer' | 'opticalComparator' | 'pinGage' | 'plugGage' | 'radiusGage' | 'sineBar' | 'surfacePlate' | 'surfaceRoughnessTester' | 'thicknessGage' | 'threadPlugGage' | 'threadRingGage' | 'vmm' | 'attributeGage' | 'calibrationArtifact' | 'indicator' | 'calibrationStandard' | 'chamferGage' | 'lightMeter' | 'presetter' | 'digitalConductivityMeter' | 'ringGage' | 'profilometer' | 'splineGage' | 'tapeMeasure' | 'thermometer' | 'stopwatch' | 'torqueWrench' | 'instantMeasurementSystem' | 'protractor' | 'pressureGage' | 'tubeGage' | 'tubeMicrometer' | 'thermocouple' | 'ohmMeter' | 'multimeter' | 'weight' | 'fixture' | 'machine' | 'hygrothermometer' | 'concentricityGage' | 'cmmDatumSphere' | 'threadMicrometer' | 'insideMicrometer' | 'pinMicrometer' | 'setPlug' | 'nptRingGage' | 'nptPlugGage' | 'grooveMicrometer' | 'weldingEquipment' | 'surfaceTesterMaster' — The type of tool in the calibration system. Member values mirror FulcrumProduct.Domain.ToolCalibrations.Data.ToolType one-to-one (guarded by ToolCalibrationEnumParityTests) so tools map by underlying value.
    - `serialNumber` string, nullable — The serial number of the tool
  - `calibrationSource` 'user' | 'vendor' | 'customer' — Who performed the calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.CalibrationSource by underlying value.
  - `calibratedBy` CommonReferenceDto — Represents a reference to a document in a DB collection
    - `id` string, nullable — Unique Id associated to the referenced object
    - `name` string, nullable — Descriptive name associated to the object
  - `result` 'fail' | 'pass' | 'notApplicable' — The outcome of a calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationResult by underlying value.
  - `asFoundResult` 'fail' | 'pass' | 'notApplicable' — The outcome of a calibration. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationResult by underlying value.
  - `calibrationDateUtc` string, date-time, nullable — When the calibration was performed (UTC)
  - `masterGageNames` string, nullable — Display labels of the master gauges used: the masters the record's measurements were taken against for in-house records, or the free-text value supplied with an external record
  - `certificateNumber` string, nullable — The external certificate number supplied with the calibration
  - `notes` string, nullable — Free-text notes
  - `asFoundNotes` string, nullable — Free-text notes about the As-Found state
  - `tempDegC` number, double, nullable — Ambient temperature (deg C) captured during calibration
  - `relHumidity` number, double, nullable — Ambient relative humidity (%) captured during calibration
  - `templateVersion` integer, nullable — The template version the record was measured against, pinned at create time; null for template-less and external records
  - `signedBy` CommonReferenceDto — Represents a reference to a document in a DB collection
    - `id` string, nullable — Unique Id associated to the referenced object
    - `name` string, nullable — Descriptive name associated to the object
  - `signedUtc` string, date-time, nullable — When the record was signed (UTC); null until signed
  - `responses` ToolCalibrationCalibrationResponseDto[] — The per-checkpoint trial measurements; present only on in-house (user-source) calibrations measured against a template
    - `id` string, uuid, nullable — The id of the measurement row
    - `calibrationCheckpointId` string, uuid — The template checkpoint this measurement answers
    - `phase` 'asFound' | 'asLeft' — The measurement phase of a checkpoint response. Mirrors FulcrumProduct.Domain.ToolCalibrations.Data.CalibrationCheckpointPhase by underlying value.
    - `trial` integer — 1-based trial number within the phase for this checkpoint
    - `numericValue` number, double, nullable — The measured numeric value
    - `numericValuePrecision` integer, nullable — The decimal precision of the measured numeric value
    - `booleanValue` boolean, nullable — The measured boolean value, for attribute (pass/fail) checkpoints
    - `stringValue` string, nullable — The measured free-text value
    - `bonusToleranceValue` number, double, nullable — The bonus tolerance applied to the measurement
    - `createdOnUtc` string, date-time, nullable — When the measurement was recorded (UTC)
    - `createdBy` CommonReferenceDto — Represents a reference to a document in a DB collection
      - `id` string, nullable — Unique Id associated to the referenced object
      - `name` string, nullable — Descriptive name associated to the object
    - `masterGageExpirationUtc` string, date-time, nullable — The measurement's master gauge calibration expiry (UTC) frozen when the row was saved; null when no master gauge was configured
  - `version` string, nullable — The record's opaque concurrency token, refreshed by every write. Round-trip it unchanged on an edit; the edit is rejected with 409 Conflict when the record changed after this read
  - `createdNcr` ToolCalibrationNcrReferenceDto — A non-conformance report opened by a failing calibration save.
    - `id` string, nullable — The id of the NCR
    - `number` integer — The NCR's sequential number

## Other responses

- `400` — Validation issues with input, or the record is signed
- `404` — Calibration record did not exist
- `409` — The record changed after the supplied version token was read

---

[API](https://skmtc.net/fulcrumpro/apis/fulcrum-publicapi.md) · [All operations](https://skmtc.net/fulcrumpro/apis/fulcrum-publicapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fulcrumpro/fulcrum-publicapi/versions/1b5649cff14a/schema)
