Skip to content

Lists and membership

Lists and membership define durable work targets, the Records they accept, and whether members are stored or recomputed.

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 kindOwns
Static ListAdding and removing members, manual ordering, local field definitions, and local values
Dynamic ListSaving 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.