team/remove:w and the same reach as update: the row is
soft-deleted. removed is false when it was already removed (a concurrent
removal, or a retry); published either way.
With a caller's tx nothing is published: the caller publishes after its commit.
Hidden, absent, deleted and forbidden all read as null.
One page of the members the caller may see, with the roles they may assign. Members of an internal role are invisible unless the caller is internal, whatever the filters say.
OptionalcreatedAt?: DbTimestampCriteriaOptionalincludeDeleted?: booleanOptionalorderBy?: OrderBy[]Defaults to name ASC, email ASC.
Optionalpage?: numberOptionalpageSize?: numberOptionalquery?: stringCase-insensitive substring over email, first and last name.
OptionalroleIds?: string[]Optionalstatuses?: ("ACTIVE" | "DELETED" | "DISABLED")[]OptionalupdatedAt?: DbTimestampCriteriaOptionaluserIds?: string[]The caller's own live memberships across every bank, by bank name, with
each one's grants and their user row. Needs no permission. q matches
the bank's search document.
OptionalbankIds?: string[]OptionaldashboardEnabled?: booleanOnly banks whose dashboard is open.
Optionalenterable?: booleanOnly memberships a session can enter: ACTIVE, of a bank whose dashboard is open.
Optionalpage?: numberOptionalpageSize?: numberOptionalq?: stringOptionalstatuses?: ("ACTIVE" | "DELETED" | "DISABLED")[]Every role in the caller's role set that they can see, highest rank first, with its grants: what the team page shows an owner choosing one.
roleId and status need team/role:w, a member within the caller's
reach who isn't the caller, and a target role within reach.
firstName / lastName rename the caller's OWN user only. A status that
changes is recorded as user.workspaceStatusChanged in the same transaction.
With a caller's tx nothing is published: the caller publishes after its commit.
OptionalrequestMetadata?: {The request's IP, location and agent, stored on the activity a status change records.
OptionalgeoLocation?: {Geolocation information from the request
OptionalipAddress?: stringIP address of the request
OptionaluserAgent?: {Optionaltx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>
A bank dashboard's roster, authorized by joining the caller's ACTIVE membership to their role's grants. A member is addressed by bank and user. Role, status and name live only in the rows.