A curated trail guide, course, or route record published on Treeline.
tid
Timestamp-based ID
Properties
clonedFrom
ref
com.atproto.repo.strongRef
Optional
Optional reference to the activity or route this record was saved from (Save as Route). The AppView checks the source's reuse rules and hides this route when they are not met.
constituentTrails
array
of
ref
#routeTrailSegment
Optional
Ordered physical trails comprising this route guide.
courseBlob
blob
Optional
Downloadable GPX/FIT course file with turn-by-turn cue sheets.
maxSize: 52.4 MBcreatedAt
string
datetime
Required
Creation timestamp.
cuePoints
array
of
ref
#routeCuePoint
Optional
Turn-by-turn navigational cues along the course.
description
string
Optional
Detailed guide, route directions, access notes, seasonal conditions, and water availability.
maxLength: 50000 bytesmaxGraphemes: 5000 graphemesdifficulty
string
Optional
Technical and physical difficulty assessment.
easy, moderate, hard, expert, extremeexternalIds
ref
#externalIds
Optional
External open mapping identifiers (OSM, COTREX, USFS, OpenTrails, Wikidata).
geometry
ref
#routeGeometry
Optional
Simplified GeoJSON LineString geometry of the route path.
gradeStats
ref
#gradeStats
Optional
Gradient profile and climb categorization for climbs or descents.
location
string
Optional
Geographical region or park name (e.g. White Mountains, NH).
maxLength: 2000 bytesmaxGraphemes: 200 graphemesparentRoute
ref
com.atproto.repo.strongRef
Optional
Reference to parent canonical trail or larger trail system if this route is a sub-segment or loop.
pointsOfInterest
array
of
ref
com.atproto.repo.strongRef
Optional
Generic strongRefs to any location-based pins, check-ins, summits, water sources, or hazard records across the ATmosphere.
privacy
string
Optional
Privacy visibility setting for this route or segment.
public, unlisted, followers, privatepublicrawBlob
blob
Optional
High-resolution GPX/FIT course file blob.
maxSize: 52.4 MBrelatedRecords
array
of
ref
com.atproto.repo.strongRef
Optional
Generic strongRefs to related network content (e.g. Bluesky trip report posts, photo records, gear lists).
routeType
string
Optional
Topological structure of the route.
loop, out_and_back, point_to_pointsegmentType
string
Optional
[Deprecated in v0.10: Competitive segments use world.treeline.segment.record. Retained for backward compatibility.] Functional classification of the route or segment.
trail, loop, climb, descent, sprint, traversesegments
array
of
ref
#routeSegmentItem
Optional
Ordered sub-segments or constituent trails that make up this composite route or loop.
source
string
Optional
Data provenance source.
user, osm, cotrex, usfs, opentrails, communityusersourceActivity
ref
com.atproto.repo.strongRef
Optional
StrongRef to the activity record from which this segment was extracted or initiated.
sport
array
of
string
Optional
Applicable sports or disciplines for this route (e.g., hike, trail_run, gravel_ride).
stats
ref
#routeStats
Optional
Route distance and elevation profile metrics.
surface
array
of
string
Optional
Surface composition types (e.g. singletrack, dirt_road, paved, rock_scramble, snow).
title
string
Required
Title or route name (e.g., Mount Rainier Wonderland Trail).
maxLength: 3000 bytesmaxGraphemes: 300 graphemesupdatedAt
string
datetime
Optional
Last updated timestamp.
waypoints
array
of
ref
com.atproto.repo.strongRef
Optional
References to waypoint records along this route.
View raw schema
{
"description": "A curated trail guide, course, or route record published on Treeline.",
"key": "tid",
"record": {
"properties": {
"clonedFrom": {
"description": "Optional reference to the activity or route this record was saved from (Save as Route). The AppView checks the source's reuse rules and hides this route when they are not met.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"constituentTrails": {
"description": "Ordered physical trails comprising this route guide.",
"items": {
"ref": "#routeTrailSegment",
"type": "ref"
},
"type": "array"
},
"courseBlob": {
"accept": [
"application/gpx+xml",
"application/vnd.ant.fit",
"application/vnd.garmin.tcx+xml",
"application/octet-stream",
"application/xml",
"text/xml"
],
"description": "Downloadable GPX/FIT course file with turn-by-turn cue sheets.",
"maxSize": 52428800,
"type": "blob"
},
"createdAt": {
"description": "Creation timestamp.",
"format": "datetime",
"type": "string"
},
"cuePoints": {
"description": "Turn-by-turn navigational cues along the course.",
"items": {
"ref": "#routeCuePoint",
"type": "ref"
},
"type": "array"
},
"description": {
"description": "Detailed guide, route directions, access notes, seasonal conditions, and water availability.",
"maxGraphemes": 5000,
"maxLength": 50000,
"type": "string"
},
"difficulty": {
"description": "Technical and physical difficulty assessment.",
"knownValues": [
"easy",
"moderate",
"hard",
"expert",
"extreme"
],
"type": "string"
},
"externalIds": {
"description": "External open mapping identifiers (OSM, COTREX, USFS, OpenTrails, Wikidata).",
"ref": "#externalIds",
"type": "ref"
},
"geometry": {
"description": "Simplified GeoJSON LineString geometry of the route path.",
"ref": "#routeGeometry",
"type": "ref"
},
"gradeStats": {
"description": "Gradient profile and climb categorization for climbs or descents.",
"ref": "#gradeStats",
"type": "ref"
},
"location": {
"description": "Geographical region or park name (e.g. White Mountains, NH).",
"maxGraphemes": 200,
"maxLength": 2000,
"type": "string"
},
"parentRoute": {
"description": "Reference to parent canonical trail or larger trail system if this route is a sub-segment or loop.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"pointsOfInterest": {
"description": "Generic strongRefs to any location-based pins, check-ins, summits, water sources, or hazard records across the ATmosphere.",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"type": "array"
},
"privacy": {
"default": "public",
"description": "Privacy visibility setting for this route or segment.",
"knownValues": [
"public",
"unlisted",
"followers",
"private"
],
"type": "string"
},
"rawBlob": {
"accept": [
"application/gpx+xml",
"application/vnd.ant.fit",
"application/vnd.garmin.tcx+xml",
"application/octet-stream",
"application/xml",
"text/xml"
],
"description": "High-resolution GPX/FIT course file blob.",
"maxSize": 52428800,
"type": "blob"
},
"relatedRecords": {
"description": "Generic strongRefs to related network content (e.g. Bluesky trip report posts, photo records, gear lists).",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"type": "array"
},
"routeType": {
"description": "Topological structure of the route.",
"knownValues": [
"loop",
"out_and_back",
"point_to_point"
],
"type": "string"
},
"segmentType": {
"description": "[Deprecated in v0.10: Competitive segments use world.treeline.segment.record. Retained for backward compatibility.] Functional classification of the route or segment.",
"knownValues": [
"trail",
"loop",
"climb",
"descent",
"sprint",
"traverse"
],
"type": "string"
},
"segments": {
"description": "Ordered sub-segments or constituent trails that make up this composite route or loop.",
"items": {
"ref": "#routeSegmentItem",
"type": "ref"
},
"type": "array"
},
"source": {
"default": "user",
"description": "Data provenance source.",
"knownValues": [
"user",
"osm",
"cotrex",
"usfs",
"opentrails",
"community"
],
"type": "string"
},
"sourceActivity": {
"description": "StrongRef to the activity record from which this segment was extracted or initiated.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"sport": {
"description": "Applicable sports or disciplines for this route (e.g., hike, trail_run, gravel_ride).",
"items": {
"type": "string"
},
"type": "array"
},
"stats": {
"description": "Route distance and elevation profile metrics.",
"ref": "#routeStats",
"type": "ref"
},
"surface": {
"description": "Surface composition types (e.g. singletrack, dirt_road, paved, rock_scramble, snow).",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title or route name (e.g., Mount Rainier Wonderland Trail).",
"maxGraphemes": 300,
"maxLength": 3000,
"type": "string"
},
"updatedAt": {
"description": "Last updated timestamp.",
"format": "datetime",
"type": "string"
},
"waypoints": {
"description": "References to waypoint records along this route.",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"type": "array"
}
},
"required": [
"title",
"createdAt"
],
"type": "object"
},
"type": "record"
}