---
title: "Partially updates a full routing operation for a quote part line item"
method: PATCH
path: "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}"
tags: ["Quote Part Line Item Full Routing"]
---

# Partially updates a full routing operation for a quote part line item

`PATCH /api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}`

## Request

- Base URL: `https://api.fulcrumpro.com`
- URL: `https://api.fulcrumpro.com/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}`
- Auth: none declared

Supported paths: `/instructions`, `/operation/setupTime`, `/operation/laborTime`,
`/operation/machineTime` and `/outsideProcessingOperation/selectedVendorId`, with the
`add`, `replace` and `remove` operations. A value sets the field; `null`, a blank
string or `remove` clears it; a path the patch does not name is kept. Clearing a time nulls all of
its stored values and leaves `machineTrackingEnabled` unchanged. The time paths are valid only on
a non-outside-processing operation, and the vendor path only on an outside processing one.

## Path parameters

- `quoteId` string, required
- `lineItemId` string, required
- `routingId` string, required
- `operationId` string, required

## Request body

- JsonPatchOperation[]: Array of operations to perform
  - `op` string
  - `value` unknown
  - `path` string
  - `from` string: Source path — present for move/copy operations, absent otherwise.

## Response `200`

The updated routing operation

- ItemRoutingOperationDto: A routing operation (step)
  - `id` string, required: The Id of this operation specific to this item's routing
  - `name` string, required: Name of the system operation
  - `systemOperationId` string, required: Id of the system operation
  - `order` integer: The order of this operation. Operations with the same order are expected to run in parallel
  - `isOutsideProcessing` boolean: Specifies whether this is an outside processing operation
  - `outsideProcessingOperation` ItemRoutingOutsideProcessingOperationDto: Defines outside processing fields. On create or update, send only when the step's system operation has `isOutsideProcessing` true, and never together with `operation`.
    - `outsideProcessingTime` ItemRoutingOperationTime: Operation time and type
      - `time` number, double: Time or units of this operation
      - `option` 'fixedSeconds' | 'fixedMinutes' | 'fixedHours' | 'fixedDays' | 'secondsPerUnit' | 'minutesPerUnit' | 'hoursPerUnit' | 'daysPerUnit' | 'unitsPerHour': The time unit or option used in operation times
    - `outsideProcessingCost` ItemRoutingOutsideProcessingOperationCost: Outside processing operation cost
      - `costOption` 'fixed' | 'perUnit': The cost option for the outside processing operation
      - `fixedCost` number, double, nullable: The fixed total cost for the operation
      - `perUnitCost` number, double, nullable: The cost per unit for the operation
    - `selectedVendorId` string, nullable: Outside processing vendor: the id of an existing vendor. Valid only on an outside processing operation. On update, replaces the step's vendor; omit it to keep the step's vendor.
    - `costBreaks` ItemRoutingOutsideProcessingCostBreakPointDto[], nullable: Quantity cost breaks above the base per-unit cost (`outsideProcessingCost.perUnitCost`), ordered by quantity. The base per-unit cost applies below the lowest break quantity. On write: omit to keep the step's cost breaks, send `null` or `[]` to remove them all, or send a list to replace them. Only valid with a per-unit outside processing cost.
      - `quantity` integer: The production quantity at which this cost per unit becomes active. Must be greater than 1 (the base per-unit cost covers quantity 1).
      - `price` number, double, nullable: The cost per unit at this quantity. Required.
  - `operation` ItemRoutingNormalOperationDto: Defines non-outside-processing fields. On create or update, send only when the step's system operation has `isOutsideProcessing` false, and never together with `outsideProcessingOperation`; send `machineTime` only when that operation has `machineTimeTrackingEnabled` true.
    - `setupTime` ItemRoutingOperationTime: Operation time and type
      - `time` number, double: Time or units of this operation
      - `option` 'fixedSeconds' | 'fixedMinutes' | 'fixedHours' | 'fixedDays' | 'secondsPerUnit' | 'minutesPerUnit' | 'hoursPerUnit' | 'daysPerUnit' | 'unitsPerHour': The time unit or option used in operation times
    - `laborTime` ItemRoutingOperationTime: Operation time and type
      - `time` number, double: Time or units of this operation
      - `option` 'fixedSeconds' | 'fixedMinutes' | 'fixedHours' | 'fixedDays' | 'secondsPerUnit' | 'minutesPerUnit' | 'hoursPerUnit' | 'daysPerUnit' | 'unitsPerHour': The time unit or option used in operation times
    - `machineTime` ItemRoutingOperationTime: Operation time and type
      - `time` number, double: Time or units of this operation
      - `option` 'fixedSeconds' | 'fixedMinutes' | 'fixedHours' | 'fixedDays' | 'secondsPerUnit' | 'minutesPerUnit' | 'hoursPerUnit' | 'daysPerUnit' | 'unitsPerHour': The time unit or option used in operation times
    - `anyEquipment` boolean: Specifies that any equipment associated with this operation can be used. Must be false when `selectedEquipmentIds` is not empty.
    - `selectedEquipmentIds` string[]: List of equipment ids selected from equipment associated with this operation. Each id must be the `id` of an entry in the system operation's `equipment` list.
    - `isNestable` boolean: Indicate if this operation is nestable.
  - `leadDays` integer: Lead days
  - `unattended` boolean, nullable: If `true`, the run portion of this step is unattended by an operator.
  - `machineTrackingEnabled` boolean: Whether machine tracking is enabled.
  - `instructions` string, nullable: Instructions for this operation.

## Other responses

- `400`: An unsupported path or operation, a value the field cannot hold, a field the operation does not take, an unknown vendor, or a quote that is not in draft or approved status
- `404`: The quote or the operation did not exist

## Changes

- **2026-11-07** `ab0e0bd383b1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/changes/api/quotes/:quoteId/part-line-items/:lineItemId/routing/:routingId/operations/:operationId/patch.md)

---

[API](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi.md) - [All operations](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/llms.txt) - [OpenAPI document](https://skmtc.dev/fulcrumpro/apis/fulcrum-publicapi/revisions/fee36f4a4b7d?raw)
