app.placita.place

placita.app

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A place saved by a user. The primary entity of Placita: one record per place, stored in the user's own repository.",
      "key": "tid",
      "record": {
        "properties": {
          "category": {
            "description": "Place type from Placita's fixed list, for example restaurant, cafe or museum. Missing or unknown means generic.",
            "knownValues": [
              "generic",
              "restaurant",
              "fastfood",
              "cafe",
              "bar",
              "beer",
              "wine",
              "nightclub",
              "bakery",
              "grocery",
              "clothing",
              "shopping",
              "lodging",
              "campsite",
              "museum",
              "attraction",
              "viewpoint",
              "worship",
              "park",
              "playground",
              "sports",
              "swimming",
              "zoo",
              "cinema",
              "theatre",
              "library",
              "school",
              "college",
              "hospital",
              "pharmacy",
              "doctor",
              "dentist",
              "bank",
              "atm",
              "post",
              "police",
              "fuel",
              "parking",
              "bus",
              "rail",
              "airport",
              "ferry"
            ],
            "maxLength": 32,
            "type": "string"
          },
          "createdAt": {
            "description": "When the place was saved.",
            "format": "datetime",
            "type": "string"
          },
          "location": {
            "description": "Where the place is. Normally community.lexicon.location.geo: coordinates as strings, with the street address in its name field when known.",
            "refs": [
              "community.lexicon.location.geo",
              "community.lexicon.location.address"
            ],
            "type": "union"
          },
          "name": {
            "description": "Name of the place as the user saved it.",
            "maxGraphemes": 100,
            "maxLength": 300,
            "type": "string"
          },
          "note": {
            "description": "The user's own note about the place.",
            "maxGraphemes": 1000,
            "maxLength": 3000,
            "type": "string"
          },
          "noteTitle": {
            "description": "Optional short title for the note.",
            "maxGraphemes": 100,
            "maxLength": 100,
            "type": "string"
          },
          "openingHours": {
            "description": "Opening hours in OpenStreetMap opening_hours syntax, for example Mo-Su 09:00-18:00.",
            "maxLength": 512,
            "type": "string"
          },
          "osm": {
            "description": "Details copied from OpenStreetMap when the place was linked. Only set together with osmType and osmId. A copy made at a point in time: it is not kept up to date.",
            "ref": "#osmDetails",
            "type": "ref"
          },
          "osmId": {
            "description": "ID of the linked OpenStreetMap feature as a decimal string. Used together with osmType.",
            "maxLength": 32,
            "type": "string"
          },
          "osmType": {
            "description": "Type of the linked OpenStreetMap feature. Set only when the user confirmed the match. Used together with osmId.",
            "knownValues": [
              "node",
              "way",
              "relation"
            ],
            "type": "string"
          },
          "phone": {
            "description": "The place's phone number, as entered or taken from OpenStreetMap.",
            "maxLength": 64,
            "type": "string"
          },
          "photo": {
            "accept": [
              "image/png",
              "image/jpeg",
              "image/webp"
            ],
            "description": "Legacy single photo. Only older records have it. New records use photos.",
            "maxSize": 2000000,
            "type": "blob"
          },
          "photos": {
            "description": "Photos the user uploaded for this place. Up to 4.",
            "items": {
              "accept": [
                "image/png",
                "image/jpeg",
                "image/webp"
              ],
              "maxSize": 2000000,
              "type": "blob"
            },
            "maxItems": 4,
            "type": "array"
          },
          "rating": {
            "description": "The user's own rating of the place, from 1 (poor) to 5 (excellent). Only set when status is been. Absent means not rated.",
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "source": {
            "description": "Where the place came from: a map or review link the user pasted, an OpenStreetMap search result, or manual entry.",
            "knownValues": [
              "google",
              "foursquare",
              "osm",
              "apple",
              "tripadvisor",
              "manual"
            ],
            "type": "string"
          },
          "sourcePhotoAuthor": {
            "description": "Creator or credit text returned by Wikimedia Commons for sourcePhotoUrl.",
            "maxLength": 500,
            "type": "string"
          },
          "sourcePhotoLicense": {
            "description": "License of sourcePhotoUrl, e.g. CC BY-SA 4.0. Attribution duty applies when shown.",
            "maxLength": 64,
            "type": "string"
          },
          "sourcePhotoLicenseUrl": {
            "description": "License details URL returned by Wikimedia Commons.",
            "maxLength": 2048,
            "type": "string"
          },
          "sourcePhotoPageUrl": {
            "description": "Source file page URL for attribution and reuse details.",
            "maxLength": 2048,
            "type": "string"
          },
          "sourcePhotoSourceName": {
            "description": "Origin label for the source photo suggestion.",
            "maxLength": 128,
            "type": "string"
          },
          "sourcePhotoUrl": {
            "description": "URL of a free-licensed photo found for this place (Wikimedia Commons, OSM image tag, Wikidata P18). Not a blob - it is a reference to an external image, with attribution.",
            "maxLength": 2048,
            "type": "string"
          },
          "sourceUrl": {
            "description": "The link the place was created from, when there was one.",
            "maxLength": 2048,
            "type": "string"
          },
          "status": {
            "default": "want",
            "description": "want means the user wants to go there. been means the user has been there.",
            "knownValues": [
              "want",
              "been"
            ],
            "type": "string"
          },
          "tags": {
            "description": "The user's tags for this place, as strong references to app.placita.tag records.",
            "items": {
              "ref": "com.atproto.repo.strongRef",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "visibility": {
            "default": "hidden",
            "description": "Whether Placita shows this place in public discovery. This is a display hint only: every record in an AT Protocol repository can be read by anyone, including hidden ones.",
            "knownValues": [
              "hidden",
              "public"
            ],
            "type": "string"
          },
          "website": {
            "description": "The place's website.",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "name",
          "status",
          "visibility",
          "location",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "osmAddress": {
      "description": "A structured address, as OpenStreetMap returns it. Every part is optional.",
      "properties": {
        "city": {
          "description": "City, town or village.",
          "maxLength": 200,
          "type": "string"
        },
        "country": {
          "description": "Country name.",
          "maxLength": 200,
          "type": "string"
        },
        "countryCode": {
          "description": "Two-letter ISO 3166-1 country code, upper case.",
          "maxLength": 2,
          "minLength": 2,
          "type": "string"
        },
        "houseNumber": {
          "description": "House or building number.",
          "maxLength": 32,
          "type": "string"
        },
        "postcode": {
          "description": "Postal code.",
          "maxLength": 32,
          "type": "string"
        },
        "state": {
          "description": "Region or state.",
          "maxLength": 200,
          "type": "string"
        },
        "street": {
          "description": "Street or road name.",
          "maxLength": 200,
          "type": "string"
        },
        "suburb": {
          "description": "Neighbourhood, quarter or suburb.",
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "osmDetails": {
      "description": "A copy of what OpenStreetMap knew about the linked feature at checkedAt. Data (c) OpenStreetMap contributors, available under the Open Database Licence (ODbL). Treat the values as suggestions: they can be wrong or out of date, and the user's own fields always win.",
      "properties": {
        "address": {
          "description": "The structured address OpenStreetMap has for the feature.",
          "ref": "#osmAddress",
          "type": "ref"
        },
        "checkedAt": {
          "description": "When the details were copied from OpenStreetMap.",
          "format": "datetime",
          "type": "string"
        },
        "tags": {
          "description": "Raw OpenStreetMap tags (key and value) of the feature, such as cuisine, wheelchair or wikidata. Tags already stored in other fields (name, website, phone, opening hours) and OpenStreetMap-internal tags (source, note, fixme) are left out. At most 60.",
          "items": {
            "ref": "#osmTag",
            "type": "ref"
          },
          "maxLength": 60,
          "type": "array"
        }
      },
      "type": "object"
    },
    "osmTag": {
      "description": "One OpenStreetMap tag.",
      "properties": {
        "key": {
          "description": "The tag key, for example cuisine.",
          "maxLength": 64,
          "type": "string"
        },
        "value": {
          "description": "The tag value, for example italian;pizza. Values over 255 characters are not stored.",
          "maxGraphemes": 255,
          "maxLength": 1024,
          "type": "string"
        }
      },
      "required": [
        "key",
        "value"
      ],
      "type": "object"
    }
  },
  "id": "app.placita.place",
  "lexicon": 1
}

Validate Record

Validate a record against app.placita.place

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

Metadata

DID
did:plc:sg5d3buklhrsufaej4n4hjzx
CID
bafyreign73spk6lbq7ymlu5c3m6cj6f2chmvh4dtmgreshk3udt7ro2e4q
Indexed At
2026-10-13 19:20 UTC
AT-URI
at://did:plc:sg5d3buklhrsufaej4n4hjzx/com.atproto.lexicon.schema/app.placita.place

Version History (2 versions)

Referenced Schemas (2)

Similar Lexicons

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

  • A public review of a real-world place (restaurant, cafe, shop, etc.). Designed so any AT Protocol app can read, render, and aggregate place reviews regardless of which app created them.

  • A user-created venue definition

  • A place embedded inline in a passport entry. Self-contained: carries name, coordinates, and enough identifiers for any AT Proto consumer to look up richer data from ATGeo (https://atgeo.org). atgeoCollection + atgeoRkey…

  • A place with a review

  • A record for keeping track of a place in Spots

Lexicon Garden

@