world.treeline.route.review

An athlete's rating and review of a route. Field-compatible with app.attrails.review (subject, rating, text, completedAt, images, langs, labels, createdAt), plus an optional link to the athlete's own activity on the route and the gear they used. AppViews treat the most recent review per (author, subject) as canonical: to change a review, write a new one; older ones stay in the repo as history.

Repository @treeline.world did:plc:sjejpugpajgvxweilujzjcmq namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authorityroute.treeline.world
Indexed

Record

record · key tid

Properties

Optional proof of completion: the reviewer's own world.treeline.activity.record on this route. AppViews show a review as verified only when the activity is in the reviewer's repo and matches the subject route.

completedAt

string · datetime

Optional. When the reviewer last did the route.

createdAt

requiredstring · datetime

When the review was written. Decides which review per (author, subject) is the latest.

Optional reference to the world.treeline.gear.item the reviewer used on the route.

images

array

Optional photos, in display order. At most 4, so a review can be cross-posted as one app.bsky.embed.images embed. Clients must strip all EXIF metadata from the image blob before upload.

  • maxLength: 4
itemsref
Reference

labels

union

Optional self-label values the author applies to this record, effectively content warnings (e.g. graphic-media for an injury photo).

langs

array

Optional. The human languages of this record's text (the review text and image alt text), as BCP-47 tags, so consumers can filter or translate.

  • maxLength: 3
itemsstring · language

rating

requiredinteger

Star rating from 1 (worst) to 5 (best).

  • minimum: 1
  • maximum: 5

subject

requiredref

The route being reviewed: usually a world.treeline.route.record, but any route record from another app (e.g. app.attrails.route) may be reviewed.

text

string

Optional review text, as CommonMark. Clients must not render raw HTML.

  • maxLength: 30000
  • maxGraphemes: 3000

#aspectRatio

object

Width:height ratio of an image, so clients can lay out the gallery before the image loads. Matches app.bsky.embed.defs#aspectRatio.

Properties

height

requiredinteger
  • minimum: 1

width

requiredinteger
  • minimum: 1

#image

object

A photo attached to a review. image, alt and aspectRatio match app.bsky.embed.images#image and app.attrails.defs#image field for field.

Properties

alt

requiredstring

Alt text for screen readers and Bluesky embeds. May be empty, as on app.bsky.embed.images#image.

  • maxLength: 10000
  • maxGraphemes: 1000
Reference

image

requiredblob

The photo, re-encoded by the client with all EXIF metadata removed. Same size limit as app.bsky.embed.images#image.

  • maxSize: 1000000
  • accept: image/jpeg, image/png, image/webp

Similar lexicons

semantic match

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

  • A review of a route: a 1-5 rating, optional text, and optional photos. Activity-neutral. The AppView treats the most recent review per (author, subject) as canonical.

  • A cycling, running, hiking, walking, etc. route shared by a user. The associated track file is stored as a blob.

  • What a member thought of something, with a rating from 1 to 10, in a content space (D99). Members respond by replying to it, so a review heads a thread. The author edits it, rating included, by rewriting it at the same key; it sorts by createdAt, so an edit keeps its place.

  • A sports activity or outdoor adventure record logged on Treeline.

  • Width:height ratio so clients can lay out before the image loads.