A cycling, running, hiking, walking, etc. route shared by a user. The associated track file is stored as a blob.
tid
Timestamp-based ID
Properties
activity
string
Required
The activity this route is intended for. Open enum; unknown values are allowed.
app.attrails.defs#cycling, app.attrails.defs#running, app.attrails.defs#hiking, app.attrails.defs#walking, app.attrails.defs#othercreatedAt
string
datetime
Required
An RFC 3339 formatted timestamp.
description
string
Optional
Description of the route, as CommonMark markdown. Clients must not render raw HTML.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemesdetails
union
Optional
Activity-specific attributes. Open union: new activity detail types can be added later without breaking existing clients.
difficulty
string
Optional
Author's subjective difficulty for the stated activity.
app.attrails.defs#easy, app.attrails.defs#moderate, app.attrails.defs#hard, app.attrails.defs#extremeimages
array
of
ref
app.attrails.defs#image
Optional
No description available.
maxLength: 10 itemslabels
union
Optional
Self-label values for this route, e.g. to flag sensitive photos.
langs
array
of
string
language
Optional
Languages of this record's text (name, description, tags, image alt text), as BCP-47 tags. If absent, consumers should assume English ('en').
maxLength: 3 itemsname
string
Required
Name of the route.
maxLength: 1000 bytesminLength: 1 bytesmaxGraphemes: 100 graphemessurface
string
Optional
Predominant surface. Activity-neutral.
app.attrails.defs#paved, app.attrails.defs#gravel, app.attrails.defs#trail, app.attrails.defs#mixedtags
array
of
string
Optional
Free-form tags, stored without a leading '#'.
maxLength: 20 itemstrack
blob
Required
The route's track, commonly as a GPX file. Subject to max size limitations imposed by the user's PDS, so large routes might need to be simplified or compressed to fit.
maxSize: 976.6 KBView raw schema
{
"description": "A cycling, running, hiking, walking, etc. route shared by a user. The associated track file is stored as a blob.",
"key": "tid",
"record": {
"properties": {
"activity": {
"description": "The activity this route is intended for. Open enum; unknown values are allowed.",
"knownValues": [
"app.attrails.defs#cycling",
"app.attrails.defs#running",
"app.attrails.defs#hiking",
"app.attrails.defs#walking",
"app.attrails.defs#other"
],
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"description": {
"description": "Description of the route, as CommonMark markdown. Clients must not render raw HTML.",
"maxGraphemes": 3000,
"maxLength": 30000,
"type": "string"
},
"details": {
"description": "Activity-specific attributes. Open union: new activity detail types can be added later without breaking existing clients.",
"refs": [
"app.attrails.route#cyclingDetails"
],
"type": "union"
},
"difficulty": {
"description": "Author's subjective difficulty for the stated activity.",
"knownValues": [
"app.attrails.defs#easy",
"app.attrails.defs#moderate",
"app.attrails.defs#hard",
"app.attrails.defs#extreme"
],
"type": "string"
},
"images": {
"items": {
"ref": "app.attrails.defs#image",
"type": "ref"
},
"maxLength": 10,
"type": "array"
},
"labels": {
"description": "Self-label values for this route, e.g. to flag sensitive photos.",
"refs": [
"com.atproto.label.defs#selfLabels"
],
"type": "union"
},
"langs": {
"description": "Languages of this record's text (name, description, tags, image alt text), as BCP-47 tags. If absent, consumers should assume English ('en').",
"items": {
"format": "language",
"type": "string"
},
"maxLength": 3,
"type": "array"
},
"name": {
"description": "Name of the route.",
"maxGraphemes": 100,
"maxLength": 1000,
"minLength": 1,
"type": "string"
},
"surface": {
"description": "Predominant surface. Activity-neutral.",
"knownValues": [
"app.attrails.defs#paved",
"app.attrails.defs#gravel",
"app.attrails.defs#trail",
"app.attrails.defs#mixed"
],
"type": "string"
},
"tags": {
"description": "Free-form tags, stored without a leading '#'.",
"items": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"maxLength": 20,
"type": "array"
},
"track": {
"accept": [
"application/gpx+xml",
"application/xml",
"text/xml"
],
"description": "The route's track, commonly as a GPX file. Subject to max size limitations imposed by the user's PDS, so large routes might need to be simplified or compressed to fit.",
"maxSize": 976563,
"type": "blob"
}
},
"required": [
"name",
"activity",
"track",
"createdAt"
],
"type": "object"
},
"type": "record"
}