---
id: SCR-MBR-MEM-001
title: Members list
route: '/console/{tenantId}/membership/members'
surface: console
product_area: membership
module: memberships
revision: 1
status: draft
design_intent: proposed
implementation_evidence: inconsistent
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-membership: 5994c270e8a37a30f848e99ba5b5ee6b87c08893
purpose: >-
  Provide searchable member results, saved views and selection actions; the
  existing implementation uses generated server records and has no Membership
  service connection.
supports:
  - CAP-MBR-MEM-005
  - CAP-MBR-MEM-015
  - CAP-MBR-MEM-017
  - JNY-MBR-MEM-005
permission: >-
  none enforced by the prototype; the connected screen should require
  membership.members.read, evaluated over organizational units for officers
entry_from:
  - Membership navigation in the console
  - A URL selecting a stored prototype view
exits_to:
  - Member detail is not implemented
  - Add member has no implemented destination
displays:
  - field: 'member identifier, name and e-mail'
    source: >-
      prototype: server-side generated member store; intended: listMemberships
      (DOM-MBR-MEM-001 number and owner)
  - field: chapter and region
    source: >-
      prototype store; intended: the membership's affiliations on the date
      (DOM-MBR-MEM-003)
  - field: status and tier
    source: >-
      prototype store; intended: today's standing and the current term's type
      (DOM-MBR-MEM-001, DOM-MBR-MEM-002)
  - field: 'joined, paid, renews and balance'
    source: >-
      prototype store; intended: the join date and current term
      (DOM-MBR-MEM-001, DOM-MBR-MEM-002); balance has no Membership source
  - field: result count and total
    source: 'prototype list route; intended: listMemberships paging'
actions:
  - label: Ask or filter
    operation_id: >-
      none: parsed in the browser into filters; intended listMemberships with
      filters
    permission: membership.members.read
    confirm: false
  - label: 'Save, update, delete or copy a view'
    operation_id: 'none: the console''s own prototype views route'
    permission: none enforced
    confirm: false
  - label: Set status (bulk)
    operation_id: >-
      none: the console's prototype bulk route; no Membership operation sets a
      status directly
    permission: none enforced
    confirm: true
  - label: Send reminder (bulk)
    operation_id: >-
      none: the console's prototype bulk route; reminders are a billing run
      action
    permission: none enforced
    confirm: true
  - label: Export (bulk)
    operation_id: 'none: the console''s prototype bulk route; intended exportRoster'
    permission: membership.rosters.export
    confirm: false
  - label: Add member
    operation_id: 'none: the button has no handler; intended createMembership'
    permission: membership.memberships.create
    confirm: false
states:
  - empty
  - loading
  - error
validation:
  - BR-CAP-MBR-MEM-005-10
  - BR-CAP-MBR-MEM-015-03
  - BR-CAP-MBR-MEM-017-01
patterns:
  - PageHeader in the standard console page
  - RecordSearch with Ask and Filter modes
  - ViewsMenu for saved searches
  - ColumnsMenu for visible fields
  - MembersTable and BulkActionBar for selection
  - MembersPagination for result pages
component: >-
  app/(console)/console/[tenantId]/membership/members/page.tsx;
  components/console/members/members-explorer.tsx
evidence:
  - >-
    react-console at baf6dae3:
    app/(console)/console/[tenantId]/membership/members/page.tsx;
    components/console/members/*.tsx;
    components/console/record-search/record-search.tsx; lib/members-store.ts;
    app/api/members/route.ts, bulk/route.ts, views/*.
  - 'rhythm-v2-docs: FND-MBR-MEM-003 (the prototype is not connected)'
  - >-
    react-console:lib/members-store.ts:getStore; app/api/members/route.ts:GET;
    components/console/members/bulk-action-bar.tsx:request (confirmation only
    above 100 selected, except export)
controls: [TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-006, TC-CHG-001, TC-CHG-002, TC-CHG-003, TC-CHG-004, TC-DAT-002, TC-DAT-003, TC-DAT-005, TC-DAT-006, TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-LOG-001, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PI-005, TC-PRV-001, TC-PRV-002, TC-SEC-001, TC-SEC-004, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-TEN-004]
---

# Members List

## What the Screen Is For

Staff can explore a member list using questions, filters and saved views. The built screen reads generated records from the console’s server-side prototype store. It provides no live Membership read or write and does not enforce Membership permission keys.

## What It Shows and Lets People Do

Results show identity, contact details, chapter, region, standing, tier, dates and balance, with configurable columns, sorting and paging. Ask converts text into filters through the built-in parser without a model call. Saved views support update, deletion and shared links. Selection supports prototype status changes, reminders and CSV export; changing status or sending reminders asks for confirmation only above one hundred selected records, while export requires no confirmation. The Add member button has no handler.

A connected implementation needs scoped membership reads and roster export operations. Prototype balance and direct bulk status changes have no equivalent Membership data contract. The validation references identify future integration obligations rather than checks enforced by this prototype.

## States and Errors

LoadingLine indicates result refresh. Failed queries show an error and retry action, and empty results offer filter clearing. Action progress prevents repeated button activation and reports failures through notifications. No permission-driven read-only or inactive state is built into this page.

## Patterns It Must Respect

The contract describes the existing PageHeader, RecordSearch, view and column menus, MembersTable, BulkActionBar and MembersPagination. Integration should preserve those built interactions while replacing prototype data and unsupported actions according to reviewed product decisions.
