full diff

world.treeline.segment.record

treeline.world +16 −0
From
bafyreibvkiqkuwulcvoa5m7hoytlitne2qmejmq6y46puuf2e7u3hsdytm indexed 2026-10-21 17:40 UTC View this version
To
bafyreibyvzuoucizckkhjuxhljd7dg6a2aoqqx3cqyijdow6hjh7inu2bu indexed 2026-11-09 20:40 UTC View this version

Compatibility

backward compatible Backward compatible. 10 non-breaking changes.

Non-breaking changes (10)
  • AddedVertex AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
  • AddedVertex AddedVertex { vertex_id: "world.treeline.segment.record:body.labels" }
  • AddedVertex AddedVertex { vertex_id: "world.treeline.segment.record:body.labels:variant0" }
  • AddedVertex AddedVertex { vertex_id: "world.treeline.segment.record:body.langs" }
  • AddedVertex AddedVertex { vertex_id: "world.treeline.segment.record:body.langs:items" }
  • AddedEdge AddedEdge { src: "world.treeline.segment.record:body", tgt: "world.treeline.segment.record:body.labels", kind: "prop", name: Some("labels") }
  • AddedEdge AddedEdge { src: "world.treeline.segment.record:body", tgt: "world.treeline.segment.record:body.langs", kind: "prop", name: Some("langs") }
  • AddedEdge AddedEdge { src: "world.treeline.segment.record:body.labels", tgt: "world.treeline.segment.record:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
  • AddedEdge AddedEdge { src: "world.treeline.segment.record:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "world.treeline.segment.record:body.langs", tgt: "world.treeline.segment.record:body.langs:items", kind: "items", name: None }

Migration guidance

Added

  • AddedVertex { vertex_id: "com.atproto.label.defs#selfLabels" }
  • AddedVertex { vertex_id: "world.treeline.segment.record:body.labels" }
  • AddedVertex { vertex_id: "world.treeline.segment.record:body.labels:variant0" }
  • AddedVertex { vertex_id: "world.treeline.segment.record:body.langs" }
  • AddedVertex { vertex_id: "world.treeline.segment.record:body.langs:items" }

Notes

  • Non-breaking: AddedEdge { src: "world.treeline.segment.record:body", tgt: "world.treeline.segment.record:body.labels", kind: "prop", name: Some("labels") }
  • Non-breaking: AddedEdge { src: "world.treeline.segment.record:body", tgt: "world.treeline.segment.record:body.langs", kind: "prop", name: Some("langs") }
  • Non-breaking: AddedEdge { src: "world.treeline.segment.record:body.labels", tgt: "world.treeline.segment.record:body.labels:variant0", kind: "variant", name: Some("com.atproto.label.defs#selfLabels") }
  • Non-breaking: AddedEdge { src: "world.treeline.segment.record:body.labels:variant0", tgt: "com.atproto.label.defs#selfLabels", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "world.treeline.segment.record:body.langs", tgt: "world.treeline.segment.record:body.langs:items", kind: "items", name: None }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "externalTrailIds": {
55 "properties": {
66 "cotrexId": {
77 "description": "COTREX trail feature identifier.",
88 "type": "string"
99 },
1010 "osmRelationId": {
1111 "description": "OpenStreetMap relation identifier.",
1212 "type": "string"
1313 },
1414 "osmWayId": {
1515 "description": "OpenStreetMap way identifier.",
1616 "type": "string"
1717 },
1818 "usfsTrailNumber": {
1919 "description": "United States Forest Service trail identifier.",
2020 "type": "string"
2121 }
2222 },
2323 "type": "object"
2424 },
2525 "gradeStats": {
2626 "properties": {
2727 "avgGradePct": {
2828 "description": "Mean gradient percentage (as a decimal string, e.g. '12.5').",
2929 "type": "string"
3030 },
3131 "climbCategory": {
3232 "description": "Standard climb category rating.",
3333 "knownValues": [
3434 "HC",
3535 "1",
3636 "2",
3737 "3",
3838 "4",
3939 "uncategorized"
4040 ],
4141 "type": "string"
4242 },
4343 "maxGradePct": {
4444 "description": "Peak gradient percentage (as a decimal string, e.g. '18.2').",
4545 "type": "string"
4646 }
4747 },
4848 "type": "object"
4949 },
5050 "main": {
5151 "description": "A competitive trail timing segment with defined start/finish gates.",
5252 "key": "tid",
5353 "record": {
5454 "properties": {
5555 "createdAt": {
5656 "description": "Segment creation timestamp.",
5757 "format": "datetime",
5858 "type": "string"
5959 },
6060 "description": {
6161 "description": "Optional notes or description of the segment terrain.",
6262 "maxGraphemes": 2000,
6363 "maxLength": 20000,
6464 "type": "string"
6565 },
6666 "directionality": {
6767 "default": "forward",
6868 "description": "Directionality of timing traversal.",
6969 "knownValues": [
7070 "forward",
7171 "reverse",
7272 "out_and_back"
7373 ],
7474 "type": "string"
7575 },
7676 "endGate": {
7777 "description": "End timing gate coordinate and tolerance radius.",
7878 "ref": "#timingGate",
7979 "type": "ref"
8080 },
8181 "geometry": {
8282 "description": "Canonical polyline geometry for map matching.",
8383 "ref": "#simplifiedLineString",
8484 "type": "ref"
8585 },
8686 "gradeStats": {
8787 "description": "Gradient statistics and climb category.",
8888 "ref": "#gradeStats",
8989 "type": "ref"
9090 },
91 "labels": {
92 "description": "Optional self-label values the author applies to this record, effectively content warnings (e.g. graphic-media for an injury photo).",
93 "refs": [
94 "com.atproto.label.defs#selfLabels"
95 ],
96 "type": "union"
97 },
98 "langs": {
99 "description": "Optional. The human languages of this record's text (the title and description), as BCP-47 tags, so consumers can filter or translate.",
100 "items": {
101 "format": "language",
102 "type": "string"
103 },
104 "maxLength": 3,
105 "type": "array"
106 },
91107 "physicalTrailRef": {
92108 "description": "Public authoritative trail registry cross-references (OSM, COTREX, USFS).",
93109 "ref": "#externalTrailIds",
94110 "type": "ref"
95111 },
96112 "segmentType": {
97113 "description": "Type or profile category of the segment.",
98114 "knownValues": [
99115 "climb",
100116 "descent",
101117 "sprint",
102118 "trail",
103119 "traverse"
104120 ],
105121 "type": "string"
106122 },
107123 "sourceActivityRef": {
108124 "description": "Optional reference to the source activity from which the segment was extracted.",
109125 "ref": "com.atproto.repo.strongRef",
110126 "type": "ref"
111127 },
112128 "sport": {
113129 "description": "Primary sport class for this segment (e.g. mountain_bike, trail_run).",
114130 "type": "string"
115131 },
116132 "startGate": {
117133 "description": "Start timing gate coordinate and tolerance radius.",
118134 "ref": "#timingGate",
119135 "type": "ref"
120136 },
121137 "title": {
122138 "description": "Title or display name of the segment.",
123139 "maxGraphemes": 300,
124140 "maxLength": 3000,
125141 "type": "string"
126142 }
127143 },
128144 "required": [
129145 "title",
130146 "segmentType",
131147 "sport",
132148 "startGate",
133149 "endGate",
134150 "directionality",
135151 "geometry",
136152 "createdAt"
137153 ],
138154 "type": "object"
139155 },
140156 "type": "record"
141157 },
142158 "simplifiedLineString": {
143159 "properties": {
144160 "coordinates": {
145161 "description": "Polyline coordinate tuples array.",
146162 "items": {
147163 "items": {
148164 "type": "string"
149165 },
150166 "type": "array"
151167 },
152168 "maxLength": 500,
153169 "type": "array"
154170 },
155171 "type": {
156172 "const": "LineString",
157173 "description": "GeoJSON LineString type.",
158174 "type": "string"
159175 }
160176 },
161177 "required": [
162178 "type",
163179 "coordinates"
164180 ],
165181 "type": "object"
166182 },
167183 "timingGate": {
168184 "properties": {
169185 "coordinate": {
170186 "description": "Timing gate coordinate tuple [lon, lat, ele?].",
171187 "items": {
172188 "type": "string"
173189 },
174190 "type": "array"
175191 },
176192 "radiusMeters": {
177193 "default": 25,
178194 "description": "Snapping radius in meters around the gate coordinate.",
179195 "maximum": 200,
180196 "minimum": 5,
181197 "type": "integer"
182198 }
183199 },
184200 "required": [
185201 "coordinate"
186202 ],
187203 "type": "object"
188204 }
189205 },
190206 "id": "world.treeline.segment.record",
191207 "lexicon": 1
192208}

Compare other versions