app.kalangitan.location.snapshot

iamtheno.name

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "geo": {
      "description": "Shared location shape, referenced by feed.post, feed.note, feed.story, and location.snapshot. Coordinates must already be coarsened to the persona's configured precision before the record is written. The precision field records which level was applied.",
      "properties": {
        "label": {
          "description": "Optional human-readable place name.",
          "maxGraphemes": 256,
          "maxLength": 256,
          "type": "string"
        },
        "latitude": {
          "description": "Latitude in E7 microdegrees (degrees x 10^7), i.e. 145995000 = 14.5995N. The atproto data model has no float type, so coordinates are signed fixed-point integers.",
          "maximum": 900000000,
          "minimum": -900000000,
          "type": "integer"
        },
        "longitude": {
          "description": "Longitude in E7 microdegrees (degrees x 10^7).",
          "maximum": 1800000000,
          "minimum": -1800000000,
          "type": "integer"
        },
        "precision": {
          "description": "exact: precise point. neighborhood: coarsened to ~1km. city: coarsened to city centroid/extent.",
          "knownValues": [
            "exact",
            "neighborhood",
            "city"
          ],
          "type": "string"
        }
      },
      "required": [
        "latitude",
        "longitude",
        "precision"
      ],
      "type": "object"
    },
    "main": {
      "description": "A discrete \"here's where I was\" location record. A snapshot, like any other post. Contrast with app.kalangitan.location.live, which is a single continuously-overwritten record. Belongs to a persona via profileUri; the persona's location.visibility defaults govern whether snapshots are recorded at all and at what precision.",
      "key": "tid",
      "record": {
        "properties": {
          "capturedAt": {
            "description": "When the location was actually captured by the device.",
            "format": "datetime",
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "geo": {
            "ref": "app.kalangitan.location.snapshot#geo",
            "type": "ref"
          },
          "profileUri": {
            "description": "AT-URI of the app.kalangitan.actor.profile record this snapshot belongs to.",
            "format": "at-uri",
            "type": "string"
          }
        },
        "required": [
          "profileUri",
          "geo",
          "capturedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "app.kalangitan.location.snapshot",
  "lexicon": 1
}

Validate Record

Validate a record against app.kalangitan.location.snapshot

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2aalhpujw6kqsvraztyqlngu
CID
bafyreifxge73d3ruslcllwtwrwqgfj7kh6j3vxnju6hy2iu2ideirlyia4
Indexed At
2026-09-28 14:56 UTC
AT-URI
at://did:plc:2aalhpujw6kqsvraztyqlngu/com.atproto.lexicon.schema/app.kalangitan.location.snapshot

Similar Lexicons

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

  • app.kalangitan.location.live recordnot from the namespace authority

    Live location: a single continuously-overwritten record, NOT a growing collection. Belongs to a persona via profileUri; near-real-time updates are feasible because Spaces support direct PDS-to-PDS sync without a relay, …

  • app.kalangitan.location.visibility recordnot from the namespace authority

    Per-persona location defaults: whether location is shared at all (mode) and at what granularity (precision). These defaults keep posting low-friction. Location behavior is configured once per persona, not per post. CONV…

  • app.kalangitan.feed.post recordnot from the namespace authority

    A standard post. Location is a required part of every record in this app, not an optional tag. Belongs to exactly one persona via profileUri; the persona's location.visibility defaults govern how the location is stored …

  • A location reference

  • app.kalangitan.feed.note recordnot from the namespace authority

    A short, lightweight status note. Location is optional. Belongs to exactly one persona via profileUri. For a gated persona this record lives inside the persona's Space; Spaces provide access control, not confidentiality.

Lexicon Garden

@