{"source":"entur","operation":"plan_journey","description":"Plan a public-transport journey between two points. Signature: plan_journey(from_place: string, required; to_place: string, required; departure_time: string, optional, default None; num_patterns: integer, optional, default 3; search_window_minutes: integer, minutes, optional, default None; limit: integer, items, optional, default 25; offset: integer, items, optional, default 0).","signature":"plan_journey(from_place: string, required; to_place: string, required; departure_time: string, optional, default None; num_patterns: integer, optional, default 3; search_window_minutes: integer, minutes, optional, default None; limit: integer, items, optional, default 25; offset: integer, items, optional, default 0)","parameters":[{"name":"from_place","type":"string","schema":{"type":"string"},"required":true,"default":null,"description":"Origin as either a StopPlace id (\"NSR:StopPlace:...\") or a \"lat,lon\" string (e.g. \"59.911,10.75\").","unit":null},{"name":"to_place","type":"string","schema":{"type":"string"},"required":true,"default":null,"description":"Destination in the same format.","unit":null},{"name":"departure_time","type":"string","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false,"default":null,"description":"Optional ISO-8601 datetime to depart at; defaults to now.","unit":null},{"name":"num_patterns","type":"integer","schema":{"type":"integer"},"required":false,"default":3,"description":"Max alternative journeys to return (default 3). This is a cap, not a guarantee: the planner only returns departures inside its search window.","unit":null},{"name":"search_window_minutes","type":"integer","schema":{"anyOf":[{"type":"integer"},{"type":"null"}]},"required":false,"default":null,"description":"How many minutes after departure_time to search. Defaults to a dynamic window chosen by the planner, which on long-distance routes with sparse departures can contain only one (or zero) options. Set this to override the auto-widening described below (e.g. 1440 for a 24 h window). Unit: minutes.","unit":"minutes"},{"name":"limit","type":"integer","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"display_type":"integer","required":false,"default":25,"description":"Maximum list items returned by the gateway (default 25, maximum 100).","unit":"items"},{"name":"offset","type":"integer","schema":{"type":"integer","minimum":0,"default":0},"display_type":"integer","required":false,"default":0,"description":"Number of list items to skip before returning the page.","unit":"items"}],"json_get_url_template":"https://allemannsdata.com/wiki/api/v1/kilder/entur/plan_journey?from_place={from_place}&to_place={to_place}&departure_time={departure_time}&num_patterns=3&search_window_minutes={search_window_minutes}&limit=25&offset=0","schema_scope":"#/data in the successful operation envelope","response_schema":{"type":"array","items":{"type":"object","properties":{"duration_s":{"type":"integer"},"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"},"legs":{"type":"array","items":{"type":"object","properties":{"mode":{"type":["string","null"]},"line":{"type":["string","null"]},"line_name":{"type":["string","null"]},"from":{"type":["string","null"]},"to":{"type":["string","null"]},"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"},"distance_km":{"type":["number","null"]}},"additionalProperties":false,"required":["mode","start","end"]}},"search_window_minutes":{"type":"integer"}},"additionalProperties":false,"required":["duration_s","start","end","legs"]}},"response_schema_status":{"status":"declared","codegen_safe":true,"description":"Maintained response contract."},"entity_projection":{"status":"projected","entity_types":["transit_stop"],"description":"Recognized records and stable operation identifiers are projected; an empty array means the successful payload contained no recognizable entity."},"error_contract":{"scope":"top-level HTTP error response; never part of a success payload","schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object"}},"additionalProperties":false,"required":["code","message","retryable"]},"suggestion":{"type":"string"},"_meta":{"type":"object","properties":{"retrieved_at":{"type":"string","format":"date-time"},"language":{"type":"string","const":"en"},"content_languages":{"type":"array","items":{"type":"string"}},"sources":{"type":"array","items":{"type":"object"}}},"required":["retrieved_at","language","content_languages","sources"]},"_links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"api_index":{"type":"string","format":"uri"},"feedback":{"type":"string","format":"uri"}},"required":["self","api_index","feedback"],"additionalProperties":false}},"additionalProperties":false,"required":["error","suggestion","_meta","_links"]},"statuses":{"400":{"codes":["MISSING_PARAMETER","INVALID_PARAMETER","INVALID_REQUEST"],"retryable":false},"404":{"codes":["SOURCE_NOT_FOUND","OPERATION_NOT_FOUND","ENTITY_NOT_FOUND"],"retryable":false},"429":{"codes":["RATE_LIMITED","GATEWAY_RATE_LIMITED"],"retryable":true},"502":{"codes":["SOURCE_UNAVAILABLE"],"retryable":true},"500":{"codes":["INTERNAL_ERROR"],"retryable":true}}},"_links":{"self":"https://allemannsdata.com/wiki/api/v1/kilder/entur/plan_journey","operation":"https://allemannsdata.com/wiki/api/v1/kilder/entur/plan_journey","source":"https://allemannsdata.com/wiki/api/v1/kilder/entur","feedback":"https://allemannsdata.com/wiki/api/v1/feedback"},"output_fields":["[].duration_s","[].start","[].end","[].legs","[].legs[].mode","[].legs[].line","[].legs[].line_name","[].legs[].from","[].legs[].to","[].legs[].start","[].legs[].end","[].legs[].distance_km","[].search_window_minutes"],"output_fields_truncated":false,"canonical_field_aliases":{},"response_example":{"source":"entur","operation":"plan_journey","parameters":{"from_place":"example value","to_place":"example value","departure_time":"2026-01-15T12:00:00Z","num_patterns":3,"search_window_minutes":1},"data":[{"duration_s":1,"start":"2026-01-15T12:00:00Z","end":"2026-01-15T12:00:00Z","legs":[{"mode":"example value","line":"example value","line_name":"Example","from":"example value","to":"example value","start":"2026-01-15T12:00:00Z","end":"2026-01-15T12:00:00Z","distance_km":1.0}],"search_window_minutes":1}],"entities":[],"_meta":{"retrieved_at":"2026-01-15T12:00:00Z","language":"en","content_languages":["en"],"sources":[{"id":"entur","name":"Entur","description":"National stop search, journey planning, departures, live vehicle positions and service alerts for all public transport, ferries included, plus shared bikes, e-scooters and car sharing.","cache_ttl_seconds":30,"documentation":"https://developer.entur.org/pages-intro-getstarted/","rate_limit":"The gateway identifies the client to Entur; excessive traffic may be limited."}]},"_provenance":{"data":{"source":"entur","source_api":"https://allemannsdata.com/wiki/api/v1/kilder/entur"},"entities":{"source":"entur","source_api":"https://allemannsdata.com/wiki/api/v1/kilder/entur","derived_from":"#/data","description":"Normalized projection of data."}},"_links":{"self":"https://allemannsdata.com/wiki/api/v1/kilder/entur/plan_journey","source":"https://allemannsdata.com/wiki/api/v1/kilder/entur","wiki":"https://allemannsdata.com/wiki/kilder/entur/plan_journey/","feedback":"https://allemannsdata.com/wiki/api/v1/feedback"}}}
