---
title: "Edit a fiber chain-of-custody model"
method: PATCH
path: "/api/admin/fiber/coc-models/{id}"
tags: ["Administration/Fiber"]
---

# Edit a fiber chain-of-custody model

`PATCH /api/admin/fiber/coc-models/{id}`

## Request

- Base URL: `https://api.retraced.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.retraced.com/api/admin/fiber/coc-models/{id}`
- Auth: none declared

Replaces a model's `materials` and/or `facilityProcessIds` — at least one is required, a key left out keeps its stored set, and a key sent may not be empty, so a set cannot be cleared (legacy silently ignored an empty `facilityProcessIds`). Duplicates keep their first entry. On a non-segregated model every sent material is stored as required and every other material in the catalogue as optional, whatever `isRequired` says; legacy answered 500 there when `materials` was left out. A material id the catalogue does not have answers 400 `invalid_material_id` (legacy stored it); facility-process ids are stored as sent. Responds with the model as the list shows it, in the `{ data, metadata }` envelope (legacy answered the bare record). 404 `not_found` for an unknown id.

## Path parameters

- `id` string, required

## Request body

- object
  - `materials` object[]
    - `id` string, required
    - `isRequired` boolean, required
  - `facilityProcessIds` string[]

## Response `200`

Default Response

- object
  - `metadata` object, required
    - `success` boolean, required: True when the request succeeded.
  - `data` object, required
    - `id` string, required
    - `name` string, required
    - `isSegregated` number, nullable, required
    - `updatedAt` string, date-time, nullable, required
    - `requiredMaterials` object[], required
      - `id` string, required
      - `fiberCocModelId` string, required
      - `materialId` string, required
      - `materialName` string, required
      - `isRequired` number, nullable, required
    - `optionalMaterials` object[], required
      - `id` string, required
      - `fiberCocModelId` string, required
      - `materialId` string, required
      - `materialName` string, required
      - `isRequired` number, nullable, required
    - `facilityProcesses` object[], required
      - `id` string, required
      - `name` string, required
      - `fiberCocModelId` string, required

## Other responses

- `400`: Default Response
- `401`: Default Response
- `403`: Default Response
- `404`: Default Response

## Changes

> 108 revisions in range; 2 not diffed.

- **2026-10-16** `37ba928e7208`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/retraced/apis/api-reference/changes/api/admin/fiber/coc-models/:id/patch.md)

---

[API](https://skmtc.dev/retraced/apis/api-reference.md) - [All operations](https://skmtc.dev/retraced/apis/api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/retraced/apis/api-reference/revisions/83309c4abd20?raw)
