fyi.opensocial.putSiteTab

lexicons.opensocial.fyi

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Give something in the group's spaces — a record, or a space — a tab on its site, or name its tab again if it has one. Allowed to whoever may write it as the group (a record: its space's credentialScopes) or configure it (a space), as well as group.configure.",
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "about": {
              "description": "What the tab is about: a record in one of the group's spaces, or one of its spaces, by URI.",
              "maxLength": 512,
              "type": "string"
            },
            "channel": {
              "description": "The channel to put a new tab in, by slug.",
              "maxLength": 64,
              "type": "string"
            },
            "existing": {
              "description": "Only name its tab again, if it has one; never add one.",
              "type": "boolean"
            },
            "group": {
              "description": "The group DID. Every method is served by the group's host and authorized against that group's roles.",
              "format": "did",
              "type": "string"
            },
            "page": {
              "description": "One of the site's files to show, as the site's tabs have it. Needs group.configure.",
              "maxLength": 256,
              "type": "string"
            },
            "template": {
              "description": "What it shows: a template the kit bundles, by name, or one the site already uses. Without, it is like the site's other tabs about this kind of thing, or shows the kit's template for it. A template not for this kind of thing needs group.configure.",
              "maxLength": 512,
              "type": "string"
            },
            "title": {
              "maxGraphemes": 64,
              "maxLength": 640,
              "type": "string"
            }
          },
          "required": [
            "group",
            "about",
            "title"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "channel": {
              "description": "Where its tab is; none, when it has none and existing asked not to add one.",
              "type": "string"
            },
            "slug": {
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "fyi.opensocial.putSiteTab",
  "lexicon": 1
}

Validate Record

Validate a record against fyi.opensocial.putSiteTab

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2gqnilpksz2e7faj3bwvo6qc
CID
bafyreie63k6bkkngxpr6w5wanfg7x3aigft3ayfsxzulnuogt3sok2xewq
Indexed At
2026-10-08 18:10 UTC
AT-URI
at://did:plc:2gqnilpksz2e7faj3bwvo6qc/com.atproto.lexicon.schema/fyi.opensocial.putSiteTab

Similar Lexicons

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

  • A template for a tab for a group's site, published by whoever made it. A site names it by URI; an agent installs it as a skill. Keyed by the template's name.

  • Take away the tabs the group's site has about something in its spaces, when it's gone, say. Allowed to whoever putSiteTab would allow.

  • Replace the group's site. Requires group.configure. Its files are uploaded first, with uploadSiteFile. Fields are inlined rather than referencing fyi.opensocial.site, because a record def cannot be used as an input obje…

  • A group's site, in its members space: channels of tabs, shown one at a time, each a whole HTML document drawn in a sandboxed frame. Authored by the group DID; written through putSite by whoever holds group.configure. An…

Lexicon Garden

@