Itineraries
Two queries reach the itineraries your credential can already see. itinerary reads one in full; exportItinerary prepares it as a downloadable route file. Neither writes anything — the Data API only reads, and creating or editing an itinerary goes through the Map Studio API.
Access follows the same three-tier visibility model as everything else. A private itinerary is readable by the active members of the organization that owns it — and a personal itinerary, one owned by no organization, by its author alone; a public one ("anyone with the link") is readable by id across organizations. An itinerary that exists but is not visible to you answers forbidden; not found means no itinerary carries that id.
itinerary
Read one itinerary with its ordered segments, waypoints, and segment groups. This is the companion to the itineraries target of search, which returns references only.
Input
itinerary(input: ItineraryInput!)
idID!
Identifier of the itinerary to read. The only input: the whole itinerary comes back, with no windowing to declare.
Example
Response
name, description, activitySlugString / ActivitySlug
The itinerary's own identity. description and activitySlug are null when none is stored.
distance, ascentFloat / Int
Totals across every segment, in meters. Null when no segment contributes a value, which includes an itinerary with no segments yet.
isPrivate, organizationIdBoolean! / ID!
Which visibility tier the itinerary sits in, and which organization owns it.
segments[ItinerarySegment!]!
The ordered chain, each with its position, its metrics (distance, duration, ascent, descent, altitude, gradient), and its GeoJSON geometry. A segment that has not been computed carries null metrics; one with no geometry yet carries a null geometry.
waypoints[ItineraryWaypoint!]!
Named points along the itinerary, in order, each with its point as [longitude, latitude].
groups[ItinerarySegmentGroup!]!
Segment groups, oldest first. Empty when the itinerary has none.
segmentCount, waypointCount, groupCountInt!
Counts of each list, so a client can size a response without walking it.
Feed a segment's geometry straight to terrainProfile or analyzeGeometry to answer questions about the ground a saved route actually covers.
exportItinerary
Prepare a download of one of your itineraries as a route file.
Input
exportItinerary(input: ExportItineraryInput!)
idID!
Identifier of the itinerary to export. It must be one you can already read; nothing here widens access.
formatExportFormat!
GPX, KML, KMZ, GEOJSON, CSV, FIT, or TCX.
variantExportVariant
default: COURSE
COURSE for a planned route a device navigates turn by turn, ACTIVITY for the same geometry as a completed workout with synthesized timestamps. Applies to FIT and TCX only; every other format ignores it.
Example
Response
The query returns a signed URL, not the file. A GPX or FIT payload is of no use inlined into a GraphQL response, and a URL can be handed straight to a user or fetched by a client that wants the bytes.
urlString!
The signed download URL. It needs no further authentication and may be fetched once or many times inside its window.
filenameString!
Suggested file name including the extension, for example tour-du-mont-blanc.gpx.
formatExportFormat!
The format the download is encoded in, echoed from the request.
expiresAtString!
When the URL stops working, as an RFC 3339 timestamp. This is the authority on the window; do not assume a duration.
Nothing is stored by an export: it creates no share link and leaves no state behind, so the same itinerary can be prepared repeatedly in different formats without side effects.