social.skyphone.spot.review

riyo.skyphone.social

Documentation

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.

main record

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.

Record Key tid Timestamp-based ID

Properties

category string Optional

Reviewer-chosen category of the place.

maxLength: 64 bytes
Known values: restaurant, cafe, bar, salon, clinic, hotel, gym, shop, other
createdAt string datetime Required

When this review record was created.

lang string language Optional

Primary language of the review text (BCP 47).

photos array of blob Optional

Photos taken at or of the place.

maxLength: 8 items
place ref #placeRef Required

The place being reviewed.

rating integer Required

Overall rating, 1 (worst) to 5 (best).

minimum: 1maximum: 5
subject ref com.atproto.repo.strongRef Optional

Optional reference to a feed post (app.bsky.feed.post) announcing this review, if the author chose to cross-post.

text string Optional

Free-form review body.

maxLength: 30000 bytesmaxGraphemes: 3000 graphemes
visitedAt string datetime Optional

When the reviewer visited the place. Clients SHOULD truncate to date precision to avoid leaking the reviewer's real-time location.

View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "place",
      "rating",
      "createdAt"
    ],
    "properties": {
      "lang": {
        "type": "string",
        "format": "language",
        "description": "Primary language of the review text (BCP 47)."
      },
      "text": {
        "type": "string",
        "maxLength": 30000,
        "description": "Free-form review body.",
        "maxGraphemes": 3000
      },
      "place": {
        "ref": "#placeRef",
        "type": "ref",
        "description": "The place being reviewed."
      },
      "photos": {
        "type": "array",
        "items": {
          "type": "blob",
          "accept": [
            "image/*"
          ],
          "maxSize": 2000000
        },
        "maxLength": 8,
        "description": "Photos taken at or of the place."
      },
      "rating": {
        "type": "integer",
        "maximum": 5,
        "minimum": 1,
        "description": "Overall rating, 1 (worst) to 5 (best)."
      },
      "subject": {
        "ref": "com.atproto.repo.strongRef",
        "type": "ref",
        "description": "Optional reference to a feed post (app.bsky.feed.post) announcing this review, if the author chose to cross-post."
      },
      "category": {
        "type": "string",
        "maxLength": 64,
        "description": "Reviewer-chosen category of the place.",
        "knownValues": [
          "restaurant",
          "cafe",
          "bar",
          "salon",
          "clinic",
          "hotel",
          "gym",
          "shop",
          "other"
        ]
      },
      "createdAt": {
        "type": "string",
        "format": "datetime",
        "description": "When this review record was created."
      },
      "visitedAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the reviewer visited the place. Clients SHOULD truncate to date precision to avoid leaking the reviewer's real-time location."
      }
    }
  },
  "description": "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."
}
placeRef object

No description available.

Properties

id string Required

Place identifier within the source namespace.

maxLength: 256 bytes
latitude string Optional

Optional decimal latitude as a string (e.g. "35.6812"), for self-describing records.

longitude string Optional

Optional decimal longitude as a string (e.g. "139.7671").

name string Optional

Display name of the place at the time of review, so records remain human-readable even if the source registry is unavailable.

maxGraphemes: 300 graphemes
source string Required

Namespace of the place identifier. Reviews referring to the same (source, id) pair describe the same place.

maxLength: 64 bytes
Known values: skyphone, osm, google
View raw schema
{
  "type": "object",
  "required": [
    "source",
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 256,
      "description": "Place identifier within the source namespace."
    },
    "name": {
      "type": "string",
      "description": "Display name of the place at the time of review, so records remain human-readable even if the source registry is unavailable.",
      "maxGraphemes": 300
    },
    "source": {
      "type": "string",
      "maxLength": 64,
      "description": "Namespace of the place identifier. Reviews referring to the same (source, id) pair describe the same place.",
      "knownValues": [
        "skyphone",
        "osm",
        "google"
      ]
    },
    "latitude": {
      "type": "string",
      "description": "Optional decimal latitude as a string (e.g. \"35.6812\"), for self-describing records."
    },
    "longitude": {
      "type": "string",
      "description": "Optional decimal longitude as a string (e.g. \"139.7671\")."
    }
  }
}

Lexicon Garden

@