Spaces
Two well-known spaces about the group, plus one space for each app or modality the group uses.
A group’s data is divided into spaces, and the standard fixes only two of them. Both hold records about the group, never app data.
The meta space
group.opensocial.meta is the group’s public face: its profile, description, avatar and rules, and how to get in. It concerns the group’s overall presence and discoverability.
Many groups make meta public even when everything else is private. It’s still a space, just one whose access record allows public reads. Today that means any signed-in account: nobody can read a space while signed out. See Presence & discovery.
| Record | Purpose |
|---|---|
profile |
Name, description, avatar, banner, join policy. Record key self. |
rule |
One rule each, with a stable URI a moderation action can cite. |
access |
Who may read this space. |
The members space
group.opensocial.members holds members-only information: the member list and each member’s acceptance, the roles and what they allow, and an index of the group’s other spaces. It concerns roles and access, and is usually readable by members only.
| Record | Purpose |
|---|---|
role |
Declares a role. The record key is the role id. |
permissions |
Binds roles to actions. Record key self. |
membership |
The group’s side of membership. The record key is the member’s DID. |
acceptance |
The member’s side, written by the member. |
space |
One entry per space under the group: the index of what exists. |
access |
Who may read this space. |
Modality spaces
Everything members do together lives in a separate space per app or modality. A group that wants an events calendar gets a calendar space holding community.lexicon.calendar.event records, and a forum gets a forum space holding threads. The standard doesn’t specify these space types. They belong to their apps. The ones apps share today, such as the calendar, are listed under Shared modalities.
A space is created with createSpace, which requires the space.create action. It gets its own access record and is added to the index in members. Apps discover what a group has by reading that index.
Every space has an access record
Whether it’s meta, members or a modality space, each space holds an access record (key self) saying which roles may read it. The host enforces reads.
The same record also lists, per role, which OAuth scopes a member may request when writing as the group in that space.
Anything beyond reading (who may post, who may pin a thread, who may create an event) is a modality-specific feature and belongs to that modality’s own lexicon. See Roles & access.
Space types at a glance
| Space type | Key | Hosted by | Purpose |
|---|---|---|---|
group.opensocial.meta |
self |
the group | Profile, rules, how to get in. |
group.opensocial.members |
self |
the group | Roles, who holds them, authz config, space index. |
group.opensocial.invites |
self |
each user | Where invites arrive. See Joining & invites. |
| modality spaces | any | the group | Defined by apps, e.g. a calendar or forum. |