Lists and membership
Lists and membership gather Records for work in Records & Lists. Choose a List by which Records it accepts and how its membership should change.
Ownership
Lists and membership keep a named collection apart from a Record's values. A List has a fixed target: one Entity kind or one Interface. The Console's Members target accepts Listable Records. Contacts uses Contactable, Pipeline uses Pipelineable, and Scored uses Scoreable. An Interface target can gather several kinds while preserving each member's kind and id. The target is fixed at creation.
Lifecycle
Lists and membership distinguish Static Lists from Dynamic Lists. A Static List retains members you add until you remove them. A Dynamic List retains a query and recomputes its members. Materializing a Dynamic List produces a Static List with its origin recorded. A public List creation call creates a Static List. It does not accept a query or a choice of kind.
| List kind | Owns |
|---|---|
| Static List | Adding and removing members, manual ordering, local field definitions, and local values |
| Dynamic List | Saving and refreshing the query, and materializing its result |
Boundaries
Lists and membership preserve the target's admission rule on each add. Adding the same Record twice leaves one member because membership uses both kind and id. A List's local field is scoped to that List. It does not redefine the Entity kind. Manual order belongs to Static membership. A saved display's sort belongs to Views and presentation and does not rewrite that order.
Failures
Lists and membership refuse a command owned by the other List kind with INVALID_LIST_KIND_OPERATION. The refusal names the command and the kind that accepts it. A target also refuses a Record that lacks the required kind or Interface. A member count alone cannot establish that a List contains the Records you meant to select. Read the member references before launching work against them.
Recovery
Lists and membership should be corrected at the choice that caused the refusal. For the wrong target, create a List with the needed target and add the admitted Records there. For manual edits to computed membership, use a Static List. lists.addMembers owns the exact add contract. Read the members back after the change. A successful create only confirms the collection exists.
Related
- Views and presentation helps operators save a useful display without changing membership.
- Import and target records guides an operator from imported values to verified List members.
- Reusable logic explains saved selection rules before a builder uses them as work targets.