Features
Links between cards
A link between two cards, with a direction, and the screen handles the rest.
A link joins two cards and has a kind: PARENT, BLOCKS, GENERATED or RELATED. It is stored as a single directed record, with a source and a target.
The direction is the database's; the label is the screen's
The API knows nothing about “the direction chosen on screen”. For the inverse labels (“is a child of”, “is blocked by”), the client swaps the ids and calls the same route on the other card. That way there is one record per link, not a mirrored pair.
The three refusals
- A card does not link to itself.
- Both cards must be in the same workspace. That boundary has no setting that opens it.
- Different projects are refused by default. That half *does* have a setting (
allowCrossProjectLinks), and two cards with no project count as the same grouping.
At most one link between two cards
In either direction: creating a second link between the same two cards is refused even with the source and target swapped.