world.treeline.route.record

treeline.world

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "externalIds": {
      "description": "Cross-references to public open mapping registries.",
      "properties": {
        "cotrexId": {
          "description": "Colorado Trail Explorer (COTREX) feature ID.",
          "type": "string"
        },
        "openTrailsId": {
          "description": "OpenTrails standard dataset feature identifier.",
          "type": "string"
        },
        "osmRelationId": {
          "description": "OpenStreetMap Relation ID.",
          "type": "string"
        },
        "osmWayId": {
          "description": "OpenStreetMap Way ID.",
          "type": "string"
        },
        "usfsTrailNumber": {
          "description": "US Forest Service official trail designation number (e.g., '514' for Hermosa Creek).",
          "type": "string"
        },
        "wikidataId": {
          "description": "Wikidata entity identifier.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "gradeStats": {
      "description": "Gradient statistics for climbs, descents, or trail segments.",
      "properties": {
        "averageGradePct": {
          "description": "Average slope gradient percentage (e.g. '7.5' for 7.5% climb, '-6.2' for descent).",
          "type": "string"
        },
        "climbCategory": {
          "description": "[Deprecated in v0.10: Use world.treeline.segment.record for competitive climb categorization.] Standard cycling/running climb category.",
          "knownValues": [
            "HC",
            "1",
            "2",
            "3",
            "4",
            "uncategorized"
          ],
          "type": "string"
        },
        "maxGradePct": {
          "description": "Maximum slope gradient percentage.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "main": {
      "description": "A curated trail guide, course, or route record published on Treeline.",
      "key": "tid",
      "record": {
        "properties": {
          "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"
    },
    "routeCuePoint": {
      "properties": {
        "coordinate": {
          "description": "Optional coordinate tuple [lon, lat, ele?] of the cue point.",
          "type": "unknown"
        },
        "distanceMeters": {
          "description": "Chainage offset along the route in meters.",
          "type": "integer"
        },
        "instruction": {
          "description": "Navigation instruction (e.g. Turn left at junction onto Colorado Trail).",
          "type": "string"
        }
      },
      "required": [
        "distanceMeters",
        "instruction"
      ],
      "type": "object"
    },
    "routeGeometry": {
      "description": "GeoJSON LineString representing the route path.",
      "properties": {
        "coordinates": {
          "description": "Simplified coordinate tuples array.",
          "items": {
            "type": "unknown"
          },
          "maxLength": 500,
          "type": "array"
        },
        "type": {
          "const": "LineString",
          "description": "GeoJSON geometry type.",
          "type": "string"
        }
      },
      "required": [
        "type",
        "coordinates"
      ],
      "type": "object"
    },
    "routeSegmentItem": {
      "description": "A constituent sub-segment or trail section in a composite route.",
      "properties": {
        "endKm": {
          "description": "Ending kilometer offset on the referenced route.",
          "type": "unknown"
        },
        "name": {
          "description": "Name or title of the constituent segment.",
          "maxGraphemes": 300,
          "type": "string"
        },
        "order": {
          "description": "1-based sequence order in the route traversal.",
          "minimum": 1,
          "type": "integer"
        },
        "reverseDirection": {
          "description": "True if the constituent segment is traversed in reverse direction.",
          "type": "boolean"
        },
        "route": {
          "description": "StrongRef to the route record representing this segment.",
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "startKm": {
          "description": "Starting kilometer offset on the referenced route.",
          "type": "unknown"
        }
      },
      "required": [
        "order"
      ],
      "type": "object"
    },
    "routeStats": {
      "description": "Distance and elevation stats for the route.",
      "properties": {
        "distanceMeters": {
          "description": "Total route distance in meters.",
          "minimum": 0,
          "type": "integer"
        },
        "elevationGainMeters": {
          "description": "Total cumulative ascent in meters.",
          "minimum": 0,
          "type": "integer"
        },
        "elevationLossMeters": {
          "description": "Total cumulative descent in meters.",
          "minimum": 0,
          "type": "integer"
        },
        "estimatedDurationSeconds": {
          "description": "Estimated moving duration in seconds for an average pace.",
          "minimum": 0,
          "type": "integer"
        },
        "highestPointMeters": {
          "description": "Maximum elevation on the route in meters.",
          "type": "integer"
        },
        "lowestPointMeters": {
          "description": "Minimum elevation on the route in meters.",
          "type": "integer"
        }
      },
      "type": "object"
    },
    "routeTrailSegment": {
      "properties": {
        "reverseDirection": {
          "default": false,
          "description": "Whether the trail is traversed in reverse direction.",
          "type": "boolean"
        },
        "sequenceOrder": {
          "description": "1-based order in traversal sequence.",
          "type": "integer"
        },
        "trailId": {
          "description": "Identifier of underlying physical trail.",
          "type": "string"
        }
      },
      "required": [
        "trailId"
      ],
      "type": "object"
    }
  },
  "id": "world.treeline.route.record",
  "lexicon": 1
}

Validate Record

Validate a record against world.treeline.route.record

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:sjejpugpajgvxweilujzjcmq
CID
bafyreifvibzrcyykwjhcipqgjwy7wplfaohu77vsj5fhipvkn6wfveuxoe
Indexed At
2026-09-25 14:12 UTC
AT-URI
at://did:plc:sjejpugpajgvxweilujzjcmq/com.atproto.lexicon.schema/world.treeline.route.record

Version History (2 versions)

Similar Lexicons

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

Lexicon Garden

@