org.latha.gathering

nandi.uk

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "actorRef": {
      "description": "A lightweight reference to an ATProto identity.",
      "properties": {
        "did": {
          "description": "ATProto DID.",
          "format": "did",
          "type": "string"
        },
        "handle": {
          "description": "Current ATProto handle.",
          "type": "string"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "alignment": {
      "description": "A mapping between a framework principle and an observed feature, with strength rating.",
      "properties": {
        "feature": {
          "description": "The observed feature (e.g., self-authenticating data, interoperable apps).",
          "maxGraphemes": 200,
          "maxLength": 2000,
          "type": "string"
        },
        "principle": {
          "description": "The framework principle (e.g., user sovereignty, anti-monopoly).",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "strength": {
          "description": "Alignment strength.",
          "knownValues": [
            "org.latha.gathering#strong",
            "org.latha.gathering#moderate",
            "org.latha.gathering#emerging",
            "org.latha.gathering#none"
          ],
          "type": "string"
        }
      },
      "required": [
        "principle",
        "feature"
      ],
      "type": "object"
    },
    "attendee": {
      "description": "A rich attendee record with role, projects, and metadata. Fills the gap left by community.lexicon.calendar.rsvp (which has no role field).",
      "properties": {
        "bio": {
          "description": "Short bio or tagline.",
          "maxGraphemes": 500,
          "maxLength": 5000,
          "type": "string"
        },
        "did": {
          "description": "ATProto DID.",
          "format": "did",
          "type": "string"
        },
        "displayName": {
          "description": "Display name.",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "handle": {
          "description": "ATProto handle.",
          "type": "string"
        },
        "notes": {
          "description": "Researcher notes about this attendee.",
          "maxGraphemes": 1000,
          "maxLength": 10000,
          "type": "string"
        },
        "projects": {
          "description": "Projects this person builds or maintains.",
          "items": {
            "ref": "org.latha.gathering#projectRef",
            "type": "ref"
          },
          "type": "array"
        },
        "role": {
          "description": "Role in the gathering: host, organizer, participant, speaker, volunteer.",
          "ref": "org.latha.gathering#role",
          "type": "ref"
        },
        "tags": {
          "description": "Interest tags (a11y, privacy, transit, category-theory, etc.).",
          "items": {
            "maxLength": 640,
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "did"
      ],
      "type": "object"
    },
    "cancelled": {
      "description": "Gathering has been cancelled.",
      "type": "token"
    },
    "connection": {
      "description": "A typed relationship between two actors. DID-based, unlike network.cosmik.connection which is URL-based.",
      "properties": {
        "description": {
          "description": "Why this connection matters.",
          "maxGraphemes": 500,
          "maxLength": 5000,
          "type": "string"
        },
        "source": {
          "description": "Source person.",
          "ref": "org.latha.gathering#actorRef",
          "type": "ref"
        },
        "target": {
          "description": "Target person.",
          "ref": "org.latha.gathering#actorRef",
          "type": "ref"
        },
        "type": {
          "description": "Relationship type (e.g., conviviality-alignment, civic-infrastructure, shared-practice).",
          "maxLength": 500,
          "type": "string"
        }
      },
      "required": [
        "source",
        "target",
        "type"
      ],
      "type": "object"
    },
    "convergenceAssessment": {
      "description": "Assessment of the gathering's alignment with a theoretical framework (degrowth, conviviality, commons, etc.).",
      "properties": {
        "alignments": {
          "description": "Principle-to-feature alignment records.",
          "items": {
            "ref": "org.latha.gathering#alignment",
            "type": "ref"
          },
          "type": "array"
        },
        "framework": {
          "description": "The framework being assessed (e.g., degrowth, conviviality, commons, permacomputing).",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "gaps": {
          "description": "Where the gathering or network falls short of the framework.",
          "maxGraphemes": 2000,
          "maxLength": 20000,
          "type": "string"
        },
        "overallAlignment": {
          "description": "Summary assessment of overall alignment.",
          "maxGraphemes": 500,
          "maxLength": 5000,
          "type": "string"
        }
      },
      "required": [
        "framework"
      ],
      "type": "object"
    },
    "emerging": {
      "description": "Emerging alignment.",
      "type": "token"
    },
    "host": {
      "description": "Host of the gathering.",
      "type": "token"
    },
    "hybrid": {
      "description": "Hybrid (in-person and virtual) gathering.",
      "type": "token"
    },
    "infraLayer": {
      "description": "A named infrastructure layer with responsible parties.",
      "properties": {
        "description": {
          "description": "What this layer provides.",
          "maxGraphemes": 500,
          "maxLength": 5000,
          "type": "string"
        },
        "name": {
          "description": "Layer name (e.g., Physical infrastructure, Protocol infrastructure).",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "responsible": {
          "description": "People or identities responsible for this layer.",
          "items": {
            "ref": "org.latha.gathering#actorRef",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "infrastructureMap": {
      "description": "A map of social and technical infrastructure layers present at the gathering.",
      "properties": {
        "layers": {
          "description": "Named infrastructure layers with responsible parties.",
          "items": {
            "ref": "org.latha.gathering#infraLayer",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "inperson": {
      "description": "In-person gathering.",
      "type": "token"
    },
    "location": {
      "description": "A physical location. Mirrors community.lexicon.location.address fields.",
      "properties": {
        "address": {
          "description": "Street address.",
          "maxGraphemes": 200,
          "maxLength": 2000,
          "type": "string"
        },
        "country": {
          "description": "ISO 3166-1 alpha-2 country code.",
          "maxLength": 2,
          "type": "string"
        },
        "locality": {
          "description": "City or locality.",
          "maxGraphemes": 50,
          "maxLength": 500,
          "type": "string"
        },
        "name": {
          "description": "Venue name.",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "postalCode": {
          "description": "Postal code.",
          "maxLength": 20,
          "type": "string"
        },
        "region": {
          "description": "State or province.",
          "maxGraphemes": 50,
          "maxLength": 500,
          "type": "string"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "A community gathering or meetup with structured attendee data and extensible analysis sections.",
      "key": "tid",
      "record": {
        "properties": {
          "attendees": {
            "description": "People who attended the gathering, with roles and metadata.",
            "items": {
              "ref": "org.latha.gathering#attendee",
              "type": "ref"
            },
            "type": "array"
          },
          "createdAt": {
            "description": "Client-declared timestamp when this record was created.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "Brief description of the gathering.",
            "maxGraphemes": 2000,
            "maxLength": 20000,
            "type": "string"
          },
          "endsAt": {
            "description": "Client-declared timestamp when the gathering ends.",
            "format": "datetime",
            "type": "string"
          },
          "format": {
            "description": "Gathering format (e.g., unconference, workshop, hackathon, panel).",
            "maxGraphemes": 100,
            "maxLength": 1000,
            "type": "string"
          },
          "host": {
            "description": "The primary host or organizing identity.",
            "ref": "org.latha.gathering#actorRef",
            "type": "ref"
          },
          "locations": {
            "description": "Where the gathering takes place.",
            "items": {
              "ref": "org.latha.gathering#location",
              "type": "ref"
            },
            "type": "array"
          },
          "mode": {
            "description": "The attendance mode of the gathering.",
            "ref": "org.latha.gathering#mode",
            "type": "ref"
          },
          "name": {
            "description": "Name of the gathering.",
            "maxGraphemes": 200,
            "maxLength": 2000,
            "type": "string"
          },
          "sections": {
            "description": "Open union of modular analysis sections. Each entry must specify a $type. Built-in section types: thematicCluster, networkAnalysis, convergenceAssessment, infrastructureMap. Other lexicons may add additional section types.",
            "items": {
              "closed": false,
              "refs": [
                "org.latha.gathering#thematicCluster",
                "org.latha.gathering#networkAnalysis",
                "org.latha.gathering#convergenceAssessment",
                "org.latha.gathering#infrastructureMap"
              ],
              "type": "union"
            },
            "type": "array"
          },
          "startsAt": {
            "description": "Client-declared timestamp when the gathering starts.",
            "format": "datetime",
            "type": "string"
          },
          "status": {
            "description": "The status of the gathering.",
            "ref": "org.latha.gathering#status",
            "type": "ref"
          },
          "uris": {
            "description": "Platform links (OpenMeet, Meetup.com, etc.).",
            "items": {
              "ref": "org.latha.gathering#uri",
              "type": "ref"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "mode": {
      "description": "Attendance mode of the gathering.",
      "knownValues": [
        "org.latha.gathering#inperson",
        "org.latha.gathering#hybrid",
        "org.latha.gathering#virtual"
      ],
      "type": "string"
    },
    "moderate": {
      "description": "Moderate alignment.",
      "type": "token"
    },
    "networkAnalysis": {
      "description": "Structured analysis of connections between attendees and projects.",
      "properties": {
        "connections": {
          "description": "Typed relationships between attendees.",
          "items": {
            "ref": "org.latha.gathering#connection",
            "type": "ref"
          },
          "type": "array"
        },
        "keyInsights": {
          "description": "What the network structure reveals.",
          "items": {
            "maxGraphemes": 500,
            "maxLength": 5000,
            "type": "string"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "none": {
      "description": "No alignment.",
      "type": "token"
    },
    "organizer": {
      "description": "Organizer of the gathering.",
      "type": "token"
    },
    "participant": {
      "description": "Participant in the gathering.",
      "type": "token"
    },
    "planned": {
      "description": "Gathering is planned.",
      "type": "token"
    },
    "postponed": {
      "description": "Gathering has been postponed.",
      "type": "token"
    },
    "projectRef": {
      "description": "A reference to a project or tool.",
      "properties": {
        "name": {
          "description": "Project name.",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        },
        "uri": {
          "description": "Link to the project.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "rescheduled": {
      "description": "Gathering has been rescheduled.",
      "type": "token"
    },
    "role": {
      "description": "Role of an attendee in the gathering.",
      "knownValues": [
        "org.latha.gathering#host",
        "org.latha.gathering#organizer",
        "org.latha.gathering#participant",
        "org.latha.gathering#speaker",
        "org.latha.gathering#volunteer"
      ],
      "type": "string"
    },
    "scheduled": {
      "description": "Gathering is scheduled.",
      "type": "token"
    },
    "speaker": {
      "description": "Speaker at the gathering.",
      "type": "token"
    },
    "status": {
      "description": "Status of the gathering.",
      "knownValues": [
        "org.latha.gathering#planned",
        "org.latha.gathering#scheduled",
        "org.latha.gathering#rescheduled",
        "org.latha.gathering#postponed",
        "org.latha.gathering#cancelled"
      ],
      "type": "string"
    },
    "strong": {
      "description": "Strong alignment.",
      "type": "token"
    },
    "thematicCluster": {
      "description": "A group of attendees united by a shared theme or practice.",
      "properties": {
        "description": {
          "description": "What unites this cluster.",
          "maxGraphemes": 1000,
          "maxLength": 10000,
          "type": "string"
        },
        "members": {
          "description": "DIDs and handles of cluster members.",
          "items": {
            "ref": "org.latha.gathering#actorRef",
            "type": "ref"
          },
          "type": "array"
        },
        "name": {
          "description": "Cluster name (e.g., Organizer Core, Technologist-Philosophers).",
          "maxGraphemes": 100,
          "maxLength": 1000,
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "uri": {
      "description": "A named URI. Mirrors community.lexicon.calendar.event#uri.",
      "properties": {
        "name": {
          "description": "Label for the URI.",
          "maxGraphemes": 50,
          "maxLength": 500,
          "type": "string"
        },
        "uri": {
          "description": "The URI.",
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "uri"
      ],
      "type": "object"
    },
    "virtual": {
      "description": "Virtual gathering.",
      "type": "token"
    },
    "volunteer": {
      "description": "Volunteer at the gathering.",
      "type": "token"
    }
  },
  "description": "A community gathering or meetup record with attendees, analysis sections, and framework convergence assessments. Self-contained record covering event metadata, rich attendee data, and extensible modular analysis.",
  "id": "org.latha.gathering",
  "lexicon": 1
}

Validate Record

Validate a record against org.latha.gathering

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:ngokl2gnmpbvuvrfckja3g7p
CID
bafyreibmlbvifmeb6jw6fpbmci7snhmodn3526d33wxdqjudsa7c7hl2vm
Indexed At
2026-04-25 20:35 UTC
AT-URI
at://did:plc:ngokl2gnmpbvuvrfckja3g7p/com.atproto.lexicon.schema/org.latha.gathering

Version History (3 versions)

Similar Lexicons

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

  • org.swappulse.meetup recordnot from the namespace authority

    A local in-person collector meetup, mirrored to AT Protocol so meetups are discoverable across instances. RSVPs are separate org.swappulse.meetupRsvp records referencing this meetup via strongRef.

  • A recurring meetup group with a persistent identity.

  • Extended metadata for a community.lexicon.calendar.event record, adding group affiliation, capacity, speakers, and sessions.

  • org.swappulse.meetupRsvp recordnot from the namespace authority

    An attendee's RSVP for a meetup, mirrored to AT Protocol as a real org.swappulse.meetupRsvp record. References the meetup via strongRef so RSVPs are portable and verifiable across instances.

Lexicon Garden

@