fyi.opensocial.defs

lexicons.opensocial.fyi

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "actorView": {
      "description": "A person, as a view names them: their handle from their DID document, their name and face from the Bluesky profile in their own repo.",
      "properties": {
        "avatar": {
          "description": "Served renderably by the host, at /img/actor/{did}/{cid}.",
          "format": "uri",
          "type": "string"
        },
        "did": {
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "handle": {
          "format": "handle",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "eventView": {
      "properties": {
        "actor": {
          "format": "did",
          "type": "string"
        },
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "reason": {
          "type": "string"
        },
        "reasonType": {
          "type": "string"
        },
        "type": {
          "knownValues": [
            "report",
            "label",
            "negate",
            "resolve",
            "escalate",
            "note",
            "eject"
          ],
          "type": "string"
        },
        "val": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "createdAt"
      ],
      "type": "object"
    },
    "groupRule": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "rkey": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "rkey",
        "title"
      ],
      "type": "object"
    },
    "groupView": {
      "properties": {
        "avatar": {
          "description": "CID of the avatar blob; the host serves it at /img/{did}/avatar.",
          "type": "string"
        },
        "banner": {
          "description": "CID of the banner blob; the host serves it at /img/{did}/banner.",
          "type": "string"
        },
        "deactivated": {
          "description": "Set while a steward has the group switched off. Its spaces cannot be read until one of the stewards who could switch it off switches it back on.",
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "did": {
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "handle": {
          "format": "handle",
          "type": "string"
        },
        "joinPolicy": {
          "description": "How new members get in, as the profile states it.",
          "type": "string"
        },
        "members": {
          "format": "space-ref",
          "type": "string"
        },
        "meta": {
          "format": "space-ref",
          "type": "string"
        },
        "rules": {
          "items": {
            "ref": "#groupRule",
            "type": "ref"
          },
          "type": "array"
        },
        "url": {
          "description": "The group's own site, if it keeps one.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "did",
        "handle",
        "meta",
        "members"
      ],
      "type": "object"
    },
    "groupViewDetailed": {
      "description": "A group in full, as the viewer may see it. Profile fields and rules are present only when the viewer may read the meta space.",
      "properties": {
        "avatar": {
          "description": "CID of the avatar blob; the host serves it at /img/{did}/avatar.",
          "type": "string"
        },
        "banner": {
          "description": "CID of the banner blob; the host serves it at /img/{did}/banner.",
          "type": "string"
        },
        "deactivated": {
          "description": "Set while a steward has the group switched off. Its spaces cannot be read until one of the stewards who could switch it off switches it back on.",
          "type": "boolean"
        },
        "description": {
          "type": "string"
        },
        "did": {
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "handle": {
          "format": "handle",
          "type": "string"
        },
        "joinPolicy": {
          "description": "How new members get in, as the profile states it.",
          "type": "string"
        },
        "members": {
          "format": "space-ref",
          "type": "string"
        },
        "meta": {
          "format": "space-ref",
          "type": "string"
        },
        "rules": {
          "description": "In the order they are presented. Absent when the meta space is closed to the viewer.",
          "items": {
            "ref": "#groupRule",
            "type": "ref"
          },
          "type": "array"
        },
        "url": {
          "description": "The group's own site, if it keeps one.",
          "format": "uri",
          "type": "string"
        },
        "viewer": {
          "ref": "#viewerState",
          "type": "ref"
        }
      },
      "required": [
        "did",
        "handle",
        "meta",
        "members"
      ],
      "type": "object"
    },
    "inviteView": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "expiresAt": {
          "format": "datetime",
          "type": "string"
        },
        "invitee": {
          "format": "did",
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "uri": {
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "invitee",
        "createdAt"
      ],
      "type": "object"
    },
    "joinRequestView": {
      "properties": {
        "actor": {
          "description": "Who is asking, as a view names them.",
          "ref": "#actorView",
          "type": "ref"
        },
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "did": {
          "format": "did",
          "type": "string"
        },
        "invite": {
          "format": "at-uri",
          "type": "string"
        },
        "message": {
          "type": "string"
        }
      },
      "required": [
        "did",
        "createdAt"
      ],
      "type": "object"
    },
    "memberView": {
      "properties": {
        "actor": {
          "ref": "#actorView",
          "type": "ref"
        },
        "roles": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "actor",
        "roles"
      ],
      "type": "object"
    },
    "roleView": {
      "properties": {
        "description": {
          "type": "string"
        },
        "key": {
          "description": "The role id: its record key.",
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "required": [
        "key"
      ],
      "type": "object"
    },
    "spaceView": {
      "properties": {
        "name": {
          "type": "string"
        },
        "readableBy": {
          "description": "The space's read gate, when the viewer may read the space.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "type": {
          "format": "nsid",
          "type": "string"
        },
        "uri": {
          "format": "space-ref",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "type"
      ],
      "type": "object"
    },
    "subjectView": {
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "lastReportedAt": {
          "format": "datetime",
          "type": "string"
        },
        "reportCount": {
          "type": "integer"
        },
        "status": {
          "knownValues": [
            "open",
            "escalated",
            "resolved"
          ],
          "type": "string"
        },
        "subject": {
          "description": "A record's at-uri, or an account's DID.",
          "format": "uri",
          "type": "string"
        },
        "updatedAt": {
          "format": "datetime",
          "type": "string"
        }
      },
      "required": [
        "subject",
        "status",
        "createdAt"
      ],
      "type": "object"
    },
    "viewerState": {
      "description": "The requesting account's standing in the group. Only present for authed requests.",
      "properties": {
        "accepted": {
          "description": "For a member: whether their own acceptance is in the members space.",
          "type": "boolean"
        },
        "actions": {
          "description": "The union of actions across the viewer's roles: what the host would let them do.",
          "items": {
            "ref": "fyi.opensocial.permissions#action",
            "type": "ref"
          },
          "type": "array"
        },
        "member": {
          "type": "boolean"
        },
        "request": {
          "description": "The viewer's own pending request to join, when they are not a member and have one.",
          "ref": "#joinRequestView",
          "type": "ref"
        },
        "roles": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "member",
        "roles",
        "actions"
      ],
      "type": "object"
    }
  },
  "id": "fyi.opensocial.defs",
  "lexicon": 1
}

Validate Record

Validate a record against fyi.opensocial.defs

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2gqnilpksz2e7faj3bwvo6qc
CID
bafyreic44oifmoivat3iwibdblqjexuxnxn6v7a7zjflvppg44gvxpjagm
Indexed At
2026-10-03 01:13 UTC
AT-URI
at://did:plc:2gqnilpksz2e7faj3bwvo6qc/com.atproto.lexicon.schema/fyi.opensocial.defs

Version History (4 versions)

Referenced Schemas (1)

Similar Lexicons

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

  • The group's profile. Written by the group authority into the meta space.

  • Get a detailed view of a group: its profile and rules, and — for a viewer who may read the members space — its roster, roles, spaces and their read gates, plus the join queue for a viewer holding `admit`. Does not r…

  • Preview for a disabled join link. Carries only the code so clients can correlate with the input and render a disabled state.

  • social.colibri.community.defs not from the namespace authority

    A pending or dismissed membership application.

  • A pending request to join a community that requires approval.

Lexicon Garden

@