Create or delete a trace link
traceable_linkCreate or delete a trace link between two TraceIDs (traceable rows, ID rows, or table trace rows), resolved server-side within one project. Both ops address the edge THE SAME WAY, by the pair of TraceIDs, which is the address a document read gives you: link columns render as TraceID names. op=create is idempotent on the PAIR, not the direction (F914): if an edge already exists between the two rows in EITHER direction, the existing edge is returned and nothing is written — existingDirection says "same" or "opposite", and on "opposite" a warning explains that no chip was placed because a second edge would be a cycle. When the source row is an ID Row, create also writes the link into its link column so the chip SHOWS on the page — placedInColumn says which column took it. The column chosen is the row's first OUTPUT link column, since the target is downstream of the source; pass toColumnIndex to place it elsewhere. If the row has no link column the edge is still created and pinned, and a warning explains why nothing is shown. op=delete removes the edge AND the chip from the source row's link cell. Direction is not guessed: if the pair exists only the other way round, nothing is deleted and the error says so, because in a traceability chain the direction carries meaning.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | create the edge, or delete it | |
| toItemId | Yes | Target TraceID (e.g. FR-012) | |
| fromItemId | Yes | Source TraceID (e.g. UN-4) | |
| toDocumentId | Yes | Document UUID containing the target TraceID | |
| toColumnIndex | No | create only: which of the source row’s link columns shows the chip; defaults to its first OUTPUT link column | |
| fromDocumentId | Yes | Document UUID containing the source TraceID |