# org.latha.gathering

> Published by [nandi.latha.org](https://lexicon.garden/identity/did:plc:ngokl2gnmpbvuvrfckja3g7p)

✓ This is the authoritative definition for this NSID.

## Description

A community gathering or meetup with structured attendee data and extensible thematic sections. Reuses community.lexicon.calendar.event for mode/status/uris and community.lexicon.location for locations. Adds rich attendee records (role, bio, projects, tags) and thematic clustering.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:ngokl2gnmpbvuvrfckja3g7p/org.latha.gathering)
- [Documentation](https://lexicon.garden/lexicon/did:plc:ngokl2gnmpbvuvrfckja3g7p/org.latha.gathering/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:ngokl2gnmpbvuvrfckja3g7p/org.latha.gathering/examples)

## Definitions

### `org.latha.gathering#host`

**Type**: `token`

Host of the gathering.

Host of the gathering.

### `org.latha.gathering`

**Type**: `record`

A community gathering or meetup with structured attendee data and extensible thematic sections.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `host` | `ref` → `org.latha.gathering#actorRef` | No | The primary host or organizing identity. |
| `mode` | `ref` → `community.lexicon.calendar.event#mode` | No | The attendance mode of the gathering. Reuses community.lexicon.calendar.event#mode. |
| `name` | `string` | Yes | Name of the gathering. |
| `uris` | `array` | No | Platform links (OpenMeet, Meetup.com, etc.). Reuses community.lexicon.calendar.event#uri. |
| `endsAt` | `string` (datetime) | No | Client-declared timestamp when the gathering ends. |
| `format` | `string` | No | Gathering format (e.g., unconference, workshop, hackathon, panel). |
| `status` | `ref` → `community.lexicon.calendar.event#status` | No | The status of the gathering. Reuses community.lexicon.calendar.event#status. |
| `sections` | `array` | No | Modular sections for grouping and analyzing the gathering. Each entry must specify a $type. Built-in: thematicCluster. Other lexicons may add more. |
| `startsAt` | `string` (datetime) | No | Client-declared timestamp when the gathering starts. |
| `attendees` | `array` | No | People who attended the gathering, with roles and metadata. |
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this record was created. |
| `locations` | `array` | No | Where the gathering takes place. Reuses community.lexicon.location union (address, geo, fsq, hthree). |
| `description` | `string` | No | Brief description of the gathering. |

### `org.latha.gathering#role`

**Type**: `string`

Role of an attendee in the gathering. No existing lexicon defines attendee roles; community.lexicon.calendar.rsvp only has going/interested/notgoing.

**Known Values**:
- `org.latha.gathering#host`
- `org.latha.gathering#organizer`
- `org.latha.gathering#participant`
- `org.latha.gathering#speaker`
- `org.latha.gathering#volunteer`

### `org.latha.gathering#speaker`

**Type**: `token`

Speaker at the gathering.

Speaker at the gathering.

### `org.latha.gathering#actorRef`

**Type**: `object`

A lightweight reference to an ATProto identity.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes | ATProto DID. |
| `handle` | `string` | No | Current ATProto handle. |

### `org.latha.gathering#attendee`

**Type**: `object`

A rich attendee record extending community.lexicon.calendar.rsvp with role, bio, projects, and tags. While rsvp is a separate record linking a subject to a status, attendee embeds identity and metadata directly.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `bio` | `string` | No | Short bio or tagline. |
| `did` | `string` (did) | Yes | ATProto DID. |
| `role` | `ref` → `org.latha.gathering#role` | No | Role in the gathering: host, organizer, participant, speaker, volunteer. |
| `tags` | `array` | No | Interest tags (a11y, privacy, transit, category-theory, etc.). |
| `notes` | `string` | No | Researcher notes about this attendee. |
| `handle` | `string` | No | ATProto handle. |
| `projects` | `array` | No | Projects this person builds or maintains. |
| `displayName` | `string` | No | Display name. |

### `org.latha.gathering#organizer`

**Type**: `token`

Organizer of the gathering.

Organizer of the gathering.

### `org.latha.gathering#volunteer`

**Type**: `token`

Volunteer at the gathering.

Volunteer at the gathering.

### `org.latha.gathering#projectRef`

**Type**: `object`

A reference to a project or tool.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (uri) | No | Link to the project. |
| `name` | `string` | Yes | Project name. |

### `org.latha.gathering#participant`

**Type**: `token`

Participant in the gathering.

Participant in the gathering.

### `org.latha.gathering#thematicCluster`

**Type**: `object`

A group of attendees united by a shared theme, practice, or infrastructure role. Each cluster names a social or technical layer present at the gathering.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `name` | `string` | Yes | Cluster name (e.g., Organizer Core, Protocol Infrastructure, Technologist-Philosophers). |
| `members` | `array` | No | People in this cluster. |
| `description` | `string` | No | What brings this group together or what they provide. |

## Raw Schema

```json
{
  "id": "org.latha.gathering",
  "defs": {
    "host": {
      "type": "token",
      "description": "Host of the gathering."
    },
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "name",
          "createdAt"
        ],
        "properties": {
          "host": {
            "ref": "org.latha.gathering#actorRef",
            "type": "ref",
            "description": "The primary host or organizing identity."
          },
          "mode": {
            "ref": "community.lexicon.calendar.event#mode",
            "type": "ref",
            "description": "The attendance mode of the gathering. Reuses community.lexicon.calendar.event#mode."
          },
          "name": {
            "type": "string",
            "maxLength": 2000,
            "description": "Name of the gathering.",
            "maxGraphemes": 200
          },
          "uris": {
            "type": "array",
            "items": {
              "ref": "community.lexicon.calendar.event#uri",
              "type": "ref"
            },
            "description": "Platform links (OpenMeet, Meetup.com, etc.). Reuses community.lexicon.calendar.event#uri."
          },
          "endsAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when the gathering ends."
          },
          "format": {
            "type": "string",
            "maxLength": 1000,
            "description": "Gathering format (e.g., unconference, workshop, hackathon, panel).",
            "maxGraphemes": 100
          },
          "status": {
            "ref": "community.lexicon.calendar.event#status",
            "type": "ref",
            "description": "The status of the gathering. Reuses community.lexicon.calendar.event#status."
          },
          "sections": {
            "type": "array",
            "items": {
              "refs": [
                "org.latha.gathering#thematicCluster"
              ],
              "type": "union",
              "closed": false
            },
            "description": "Modular sections for grouping and analyzing the gathering. Each entry must specify a $type. Built-in: thematicCluster. Other lexicons may add more."
          },
          "startsAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when the gathering starts."
          },
          "attendees": {
            "type": "array",
            "items": {
              "ref": "org.latha.gathering#attendee",
              "type": "ref"
            },
            "description": "People who attended the gathering, with roles and metadata."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this record was created."
          },
          "locations": {
            "type": "array",
            "items": {
              "refs": [
                "community.lexicon.location.address",
                "community.lexicon.location.geo",
                "community.lexicon.location.fsq",
                "community.lexicon.location.hthree"
              ],
              "type": "union"
            },
            "description": "Where the gathering takes place. Reuses community.lexicon.location union (address, geo, fsq, hthree)."
          },
          "description": {
            "type": "string",
            "maxLength": 20000,
            "description": "Brief description of the gathering.",
            "maxGraphemes": 2000
          }
        }
      },
      "description": "A community gathering or meetup with structured attendee data and extensible thematic sections."
    },
    "role": {
      "type": "string",
      "description": "Role of an attendee in the gathering. No existing lexicon defines attendee roles; community.lexicon.calendar.rsvp only has going/interested/notgoing.",
      "knownValues": [
        "org.latha.gathering#host",
        "org.latha.gathering#organizer",
        "org.latha.gathering#participant",
        "org.latha.gathering#speaker",
        "org.latha.gathering#volunteer"
      ]
    },
    "speaker": {
      "type": "token",
      "description": "Speaker at the gathering."
    },
    "actorRef": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did",
          "description": "ATProto DID."
        },
        "handle": {
          "type": "string",
          "description": "Current ATProto handle."
        }
      },
      "description": "A lightweight reference to an ATProto identity."
    },
    "attendee": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "bio": {
          "type": "string",
          "maxLength": 5000,
          "description": "Short bio or tagline.",
          "maxGraphemes": 500
        },
        "did": {
          "type": "string",
          "format": "did",
          "description": "ATProto DID."
        },
        "role": {
          "ref": "org.latha.gathering#role",
          "type": "ref",
          "description": "Role in the gathering: host, organizer, participant, speaker, volunteer."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 640
          },
          "description": "Interest tags (a11y, privacy, transit, category-theory, etc.)."
        },
        "notes": {
          "type": "string",
          "maxLength": 10000,
          "description": "Researcher notes about this attendee.",
          "maxGraphemes": 1000
        },
        "handle": {
          "type": "string",
          "description": "ATProto handle."
        },
        "projects": {
          "type": "array",
          "items": {
            "ref": "org.latha.gathering#projectRef",
            "type": "ref"
          },
          "description": "Projects this person builds or maintains."
        },
        "displayName": {
          "type": "string",
          "maxLength": 1000,
          "description": "Display name.",
          "maxGraphemes": 100
        }
      },
      "description": "A rich attendee record extending community.lexicon.calendar.rsvp with role, bio, projects, and tags. While rsvp is a separate record linking a subject to a status, attendee embeds identity and metadata directly."
    },
    "organizer": {
      "type": "token",
      "description": "Organizer of the gathering."
    },
    "volunteer": {
      "type": "token",
      "description": "Volunteer at the gathering."
    },
    "projectRef": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "uri",
          "description": "Link to the project."
        },
        "name": {
          "type": "string",
          "maxLength": 1000,
          "description": "Project name.",
          "maxGraphemes": 100
        }
      },
      "description": "A reference to a project or tool."
    },
    "participant": {
      "type": "token",
      "description": "Participant in the gathering."
    },
    "thematicCluster": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 1000,
          "description": "Cluster name (e.g., Organizer Core, Protocol Infrastructure, Technologist-Philosophers).",
          "maxGraphemes": 100
        },
        "members": {
          "type": "array",
          "items": {
            "ref": "org.latha.gathering#actorRef",
            "type": "ref"
          },
          "description": "People in this cluster."
        },
        "description": {
          "type": "string",
          "maxLength": 10000,
          "description": "What brings this group together or what they provide.",
          "maxGraphemes": 1000
        }
      },
      "description": "A group of attendees united by a shared theme, practice, or infrastructure role. Each cluster names a social or technical layer present at the gathering."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "A community gathering or meetup with structured attendee data and extensible thematic sections. Reuses community.lexicon.calendar.event for mode/status/uris and community.lexicon.location for locations. Adds rich attendee records (role, bio, projects, tags) and thematic clustering."
}
```
