fyi.opensocial.access

lexicons.opensocial.fyi

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Who may read this space. Present in every space under the group. The group authority issues space credentials according to this record and nothing else.",
      "key": "literal:self",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "credentialScopes": {
            "description": "Which OAuth scopes for the group DID each role may request in this space. A role that may write a kind of record as the group here may also publish that kind, as the group, in its public repo; '*' is any kind, in both.",
            "items": {
              "ref": "#roleScopes",
              "type": "ref"
            },
            "type": "array"
          },
          "readableBy": {
            "description": "Role ids that may read the space, or the literal string 'public' meaning any authenticated requester.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "writableBy": {
            "description": "Who may write into the space in their own name: role ids, or 'public' for anyone signed in. Absent is any member.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "readableBy",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "roleScopes": {
      "properties": {
        "role": {
          "description": "A role id: the record key of a fyi.opensocial.role record.",
          "maxLength": 64,
          "type": "string"
        },
        "scopes": {
          "description": "Collections this role may write in the space as the group: an NSID, or * for any. Every write, unless the grant names some: xyz.task?action=create lets the role add tasks but not change or delete them.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "role",
        "scopes"
      ],
      "type": "object"
    }
  },
  "id": "fyi.opensocial.access",
  "lexicon": 1
}

Validate Record

Validate a record against fyi.opensocial.access

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2gqnilpksz2e7faj3bwvo6qc
CID
bafyreicw4h647n2zcdnbftjeel6mlwpqatlsvlkdevpbik6ciogjujyrsy
Indexed At
2026-10-09 00:22 UTC
AT-URI
at://did:plc:2gqnilpksz2e7faj3bwvo6qc/com.atproto.lexicon.schema/fyi.opensocial.access

Version History (3 versions)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • The group's authorization config. Binds each role to a set of standardized actions and bounds role.assign and eject. Roles compose by union; there are no deny rules.

  • Add a modality space to the group. Requires space.create.

  • Change a space's config: its name, who can read it, and which roles may act as the group in it. Requires space.configure.

  • Roles, who holds them, the authz config, and the space index. Usually gated to members.

  • Obtain a DPoP-bound OAuth access token to act as the group DID. The host is the group's PDS and authorization server: the caller authenticates with their personal account (service auth) and presents a DPoP proof; the ho…

Lexicon Garden

@