{"items":[{"type":"link","label":"Bettermile Route API","link":"/products/route/apis/ntc/tour-commander-api","routeSlug":"/products/route/apis/ntc/tour-commander-api","content":{"contentType":"overview","meta":{"name":"Bettermile Route API"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"tour-commander-api.json","url":"/_bundle/products/route/apis/ntc/@1.0/tour-commander-api.json?download"},{"kind":"download","label":"tour-commander-api.yaml","url":"/_bundle/products/route/apis/ntc/@1.0/tour-commander-api.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"route-api@bettermile.com","label":"route-api@bettermile.com","withCopyButton":true,"copyContent":"route-api@bettermile.com"},{"kind":"externallink","title":"License","titleTranslationKey":"info.license","label":"Proprietary","url":"https://bettermile.com/legal-notice"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"java","title":"Java","lang":"Java"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"go","title":"Go","lang":"Go"},{"key":"python","title":"Python","lang":"Python"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Bettermile Route API (1.0.0)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Part of Bettermile API responsible for tour management."},"children":[]}]}]}]}],"sectionId":"/products/route/apis/ntc/tour-commander-api"}],"sectionId":"/products/route/apis/ntc/tour-commander-api"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/typical-lifecycle"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Typical lifecycle"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a tour"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v1/tours"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") for a given date, assignment (vehicle / route / driver) and depot. Bettermile looks up the jobs associated with that assignment from Data Gateway."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Create a sequence"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v1/tours/{tourId}/sequences"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") to get an optimised order of waypoints for the respective tour. Sequence creation is synchronous — the returned "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"sequenceId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is usable immediately to fetch the full sequence via "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /v1/tours/{tourId}/sequences/{sequenceId}"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /v1/tours/{tourId}/sequences/latest"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(optional) "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Track and adjust the tour as it's driven"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": pin or unpin a waypoint's timeframe or stop time when it needs to be fixed against automatic recalculation, and report job status changes ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /v1/tours/{tourId}/jobs/statuses"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") as an auxiliary channel alongside the DataGateWay connector updates."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(optional) "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Custom jobs and waypoints"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Custom Job"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" / "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Custom Waypoint"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" tags) let you add a job to a tour that wasn't provided via DataGateway, and group jobs into a waypoint manually."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"All endpoints share a single "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"x-api-key"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for authentication and a general per-customer rate limit (see the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"429"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" response on each operation)."},"children":[]}]}]}]}],"sectionId":"/products/route/apis/ntc/tour-commander-api/section/typical-lifecycle"}]}]}},{"type":"link","label":"Typical lifecycle","link":"/products/route/apis/ntc/tour-commander-api/section/typical-lifecycle","routeSlug":"/products/route/apis/ntc/tour-commander-api/section/typical-lifecycle","content":null},{"type":"group","label":"Tour","link":"/products/route/apis/ntc/tour-commander-api/tour","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour","items":[{"label":"Request creation of a new tour","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/tour/createtour","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour/createtour","metadata":{"seo":{"title":"Request creation of a new tour","description":"Request creation of a new tour"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createTour","name":"Request creation of a new tour","isWebhook":false,"pointer":"/paths/~1v1~1tours/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Request creation of a new tour","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateTourRequest"}},"schemaId":"components/schemas/CreateTourRequest","pointer":"/paths/~1v1~1tours/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/tours","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateTourRequest"}},"responseCodes":["200","400","401","429","500"],"pointer":"/v1/tours","href":"tour/createtour","openApiOperationId":"createTour","summary":"Request creation of a new tour"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/CreateTourRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateTourRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tour has been successfully created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_118"}},"schemaId":"schema_118"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/401/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_118","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_118"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/401/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/post/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tour/createtour"}],"panels":[]}]},"httpPath":"/v1/tours"},{"label":"Get tours for a given date, optionally narrowed down by a given assignment value","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/tour/gettours","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour/gettours","metadata":{"seo":{"title":"Get tours for a given date, optionally narrowed down by a given assignment value","description":"Get tours for a given date, optionally narrowed down by a given assignment value"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTours","name":"Get tours for a given date, optionally narrowed down by a given assignment value","isWebhook":false,"pointer":"/paths/~1v1~1tours/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get tours for a given date, optionally narrowed down by a given assignment value","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"date","in":"query","schemaId":"schema_120","required":true},{"name":"assignment","in":"query","schemaId":"schema_121"}],"pointer":"/paths/~1v1~1tours/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[],"query":[{"name":"date","in":"query","required":true,"schemaId":"schema_120"},{"name":"assignment","in":"query","required":false,"schemaId":"schema_121"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","429","500"],"pointer":"/v1/tours","href":"tour/gettours","openApiOperationId":"getTours","summary":"Get tours for a given date, optionally narrowed down by a given assignment value"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"List of tours matching the provided criteria","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_122"}},"schemaId":"schema_122"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/401/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_122","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_122"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/401/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tour/gettours"}],"panels":[]}]},"httpPath":"/v1/tours"},{"label":"Get tour by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/tour/gettourbyid","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour/gettourbyid","metadata":{"seo":{"title":"Get tour by ID","description":"Get tour by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getTourById","name":"Get tour by ID","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get tour by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours/{tourId}","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}","href":"tour/gettourbyid","openApiOperationId":"getTourById","summary":"Get tour by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Full tour information, excluding the current sequence","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}},"schemaId":"schema_124"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_124","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_124"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tour/gettourbyid"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}"},{"label":"Set tour destination","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/tour/settourdestination","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour/settourdestination","metadata":{"seo":{"title":"Set tour destination","description":"Set tour destination"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"setTourDestination","name":"Set tour destination","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1destination/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Set tour destination","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1destination/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SetTourDestinationRequest"}},"schemaId":"components/schemas/SetTourDestinationRequest","pointer":"/paths/~1v1~1tours~1{tourId}~1destination/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/tours/{tourId}/destination","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/SetTourDestinationRequest"}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/destination","href":"tour/settourdestination","openApiOperationId":"setTourDestination","summary":"Set tour destination"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/SetTourDestinationRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/SetTourDestinationRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Tour destination has been set successfully","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1destination/put/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tour/settourdestination"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/destination"},{"label":"Get potential recalculation gain for tour","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/tour/getpotentialrecalcgain","routeSlug":"/products/route/apis/ntc/tour-commander-api/tour/getpotentialrecalcgain","metadata":{"seo":{"title":"Get potential recalculation gain for tour","description":"Get potential recalculation gain for tour - how much time could be save, if  instead of a fixed optimisation sequence update a full optimsation sequence update is  done instead. Recommended for tours with “fixed” and “use provided” optimization only;  ensure to have a destination set on the tour beforehand."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPotentialRecalcGain","name":"Get potential recalculation gain for tour","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get potential recalculation gain for tour","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get potential recalculation gain for tour - how much time could be save, if  instead of a fixed optimisation sequence update a full optimsation sequence update is  done instead. Recommended for tours with “fixed” and “use provided” optimization only;  ensure to have a destination set on the tour beforehand."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/parameters"},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"lat","in":"query","schemaId":"schema_126","required":true},{"name":"lon","in":"query","schemaId":"schema_126","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours/{tourId}/potential-recalc-gain","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[{"name":"lat","in":"query","required":true,"schemaId":"schema_126"},{"name":"lon","in":"query","required":true,"schemaId":"schema_126"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","409","429","500"],"pointer":"/v1/tours/{tourId}/potential-recalc-gain","href":"tour/getpotentialrecalcgain","openApiOperationId":"getPotentialRecalcGain","summary":"Get potential recalculation gain for tour"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Potential recalculation gain - how much time can be saved after tour recalculation.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_127"}},"schemaId":"schema_127"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example"]},{"code":"409","description":"Error response returned in case operation will result in incorrect state of the resource\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_127","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_127"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example"]}}},{"code":"409","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/tour/getpotentialrecalcgain"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/potential-recalc-gain"}],"content":{"contentType":"group","meta":{"name":"Tour"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Tour","showPageActions":true},{"nodeType":"markdoc","content":"Operations on the tour level"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours","summary":"Request creation of a new tour","prefix":{"name":"post","color":"post"},"badges":[],"link":"/tour/createtour","deprecated":false},{"title":"/v1/tours","summary":"Get tours for a given date, optionally narrowed down by a given assignment value","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tour/gettours","deprecated":false},{"title":"/v1/tours/{tourId}","summary":"Get tour by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tour/gettourbyid","deprecated":false},{"title":"/v1/tours/{tourId}/destination","summary":"Set tour destination","prefix":{"name":"put","color":"put"},"badges":[],"link":"/tour/settourdestination","deprecated":false},{"title":"/v1/tours/{tourId}/potential-recalc-gain","summary":"Get potential recalculation gain for tour","prefix":{"name":"get","color":"get"},"badges":[],"link":"/tour/getpotentialrecalcgain","deprecated":false}]}]}]}]}},{"type":"group","label":"Sequence","link":"/products/route/apis/ntc/tour-commander-api/sequence","routeSlug":"/products/route/apis/ntc/tour-commander-api/sequence","items":[{"label":"Create a new sequence","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/sequence/createsequence","routeSlug":"/products/route/apis/ntc/tour-commander-api/sequence/createsequence","metadata":{"seo":{"title":"Create a new sequence","description":"Creates a new sequence synchronously. The returned sequenceId is usable immediately to fetch the full sequence via GET .../sequences/{sequenceId} or GET .../sequences/latest."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createSequence","name":"Create a new sequence","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a new sequence","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Creates a new sequence synchronously. The returned sequenceId is usable immediately to fetch the full sequence via GET .../sequences/{sequenceId} or GET .../sequences/latest."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateSequenceRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"]}},"schemaId":"components/schemas/CreateSequenceRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/tours/{tourId}/sequences","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateSequenceRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"]}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/sequences","href":"sequence/createsequence","openApiOperationId":"createSequence","summary":"Create a new sequence"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/CreateSequenceRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateSequenceRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint","paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"]}},"examples":[{},{},{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Sequence has been successfully created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_128"}},"schemaId":"schema_128"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_128","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_128"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/sequence/createsequence"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/sequences"},{"label":"Get sequences for a given tour, ordered from newest to oldest","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/sequence/getsequences","routeSlug":"/products/route/apis/ntc/tour-commander-api/sequence/getsequences","metadata":{"seo":{"title":"Get sequences for a given tour, ordered from newest to oldest","description":"Get sequences for a given tour, ordered from newest to oldest"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getSequences","name":"Get sequences for a given tour, ordered from newest to oldest","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get sequences for a given tour, ordered from newest to oldest","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours/{tourId}/sequences","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/sequences","href":"sequence/getsequences","openApiOperationId":"getSequences","summary":"Get sequences for a given tour, ordered from newest to oldest"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"List of sequences, created for a given tour","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_129"}},"schemaId":"schema_129"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_129","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_129"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/sequence/getsequences"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/sequences"},{"label":"Get latest generated sequence for a given tour","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/sequence/getlatestsequence","routeSlug":"/products/route/apis/ntc/tour-commander-api/sequence/getlatestsequence","metadata":{"seo":{"title":"Get latest generated sequence for a given tour","description":"Get latest generated sequence for a given tour"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getLatestSequence","name":"Get latest generated sequence for a given tour","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1latest/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get latest generated sequence for a given tour","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours/{tourId}/sequences/latest","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/sequences/latest","href":"sequence/getlatestsequence","openApiOperationId":"getLatestSequence","summary":"Get latest generated sequence for a given tour"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Full sequence information, including open, closed and unassigned waypoints","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}},"schemaId":"schema_130"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_130","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/sequence/getlatestsequence"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/sequences/latest"},{"label":"Get a sequence by ID","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/sequence/getsequencebyid","routeSlug":"/products/route/apis/ntc/tour-commander-api/sequence/getsequencebyid","metadata":{"seo":{"title":"Get a sequence by ID","description":"Get a sequence by ID"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getSequenceById","name":"Get a sequence by ID","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get a sequence by ID","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"sequenceId","in":"path","schemaId":"schema_131","description":"Unique sequence identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/tours/{tourId}/sequences/{sequenceId}","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"sequenceId","in":"path","required":true,"example":10234,"schemaId":"schema_131"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/sequences/{sequenceId}","href":"sequence/getsequencebyid","openApiOperationId":"getSequenceById","summary":"Get a sequence by ID"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Full sequence information, including open, closed and unassigned waypoints","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}},"schemaId":"schema_130"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_130","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_130"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/sequence/getsequencebyid"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/sequences/{sequenceId}"}],"content":{"contentType":"group","meta":{"name":"Sequence"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Sequence","showPageActions":true},{"nodeType":"markdoc","content":"Operations on the sequence level"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours/{tourId}/sequences","summary":"Create a new sequence","prefix":{"name":"post","color":"post"},"badges":[],"link":"/sequence/createsequence","deprecated":false},{"title":"/v1/tours/{tourId}/sequences","summary":"Get sequences for a given tour, ordered from newest to oldest","prefix":{"name":"get","color":"get"},"badges":[],"link":"/sequence/getsequences","deprecated":false},{"title":"/v1/tours/{tourId}/sequences/latest","summary":"Get latest generated sequence for a given tour","prefix":{"name":"get","color":"get"},"badges":[],"link":"/sequence/getlatestsequence","deprecated":false},{"title":"/v1/tours/{tourId}/sequences/{sequenceId}","summary":"Get a sequence by ID","prefix":{"name":"get","color":"get"},"badges":[],"link":"/sequence/getsequencebyid","deprecated":false}]}]}]}]}},{"type":"group","label":"Waypoint","link":"/products/route/apis/ntc/tour-commander-api/waypoint","routeSlug":"/products/route/apis/ntc/tour-commander-api/waypoint","items":[{"label":"Pin waypoint timeframe","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/waypoint/pinwaypointtimeframe","routeSlug":"/products/route/apis/ntc/tour-commander-api/waypoint/pinwaypointtimeframe","metadata":{"seo":{"title":"Pin waypoint timeframe","description":"Pins the provided timeframe to the waypoint. If the provided timeframe is NULL, the current waypoint timeframe will be removed if present. Calling this endpoint, even with the NULL timeframe, prevents the automatic timeframe resolution logic from running for the affected waypoint."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"pinWaypointTimeFrame","name":"Pin waypoint timeframe","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Pin waypoint timeframe","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Pins the provided timeframe to the waypoint. If the provided timeframe is NULL, the current waypoint timeframe will be removed if present. Calling this endpoint, even with the NULL timeframe, prevents the automatic timeframe resolution logic from running for the affected waypoint.\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"waypointId","in":"path","schemaId":"schema_132","description":"Unique waypoint identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PinTimeFrameRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame","paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"]}},"schemaId":"components/schemas/PinTimeFrameRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame","paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/tours/{tourId}/waypoints/{waypointId}/time-frame","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"waypointId","in":"path","required":true,"example":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","schemaId":"schema_132"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PinTimeFrameRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame","paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"]}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/waypoints/{waypointId}/time-frame","href":"waypoint/pinwaypointtimeframe","openApiOperationId":"pinWaypointTimeFrame","summary":"Pin waypoint timeframe"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/PinTimeFrameRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame","paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PinTimeFrameRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame","paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Timeframe has been successfully pinned","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/waypoint/pinwaypointtimeframe"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/waypoints/{waypointId}/time-frame"},{"label":"Pin waypoint stop time","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/waypoint/pinwaypointstoptime","routeSlug":"/products/route/apis/ntc/tour-commander-api/waypoint/pinwaypointstoptime","metadata":{"seo":{"title":"Pin waypoint stop time","description":"Pins the provided stop time value to the waypoint. Calling this endpoint \"freezes\" the stop time of the waypoint at provided value."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"pinWaypointStopTime","name":"Pin waypoint stop time","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Pin waypoint stop time","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Pins the provided stop time value to the waypoint. Calling this endpoint \"freezes\" the stop time of the waypoint at provided value.\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"waypointId","in":"path","schemaId":"schema_132","description":"Unique waypoint identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PinStopTimeRequest"}},"schemaId":"components/schemas/PinStopTimeRequest","pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"waypointId","in":"path","required":true,"example":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","schemaId":"schema_132"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/PinStopTimeRequest"}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","href":"waypoint/pinwaypointstoptime","openApiOperationId":"pinWaypointStopTime","summary":"Pin waypoint stop time"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/PinStopTimeRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/PinStopTimeRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Stop time has been successfully pinned","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/waypoint/pinwaypointstoptime"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time"},{"label":"Unpin waypoint stop time","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/waypoint/unpinwaypointstoptime","routeSlug":"/products/route/apis/ntc/tour-commander-api/waypoint/unpinwaypointstoptime","metadata":{"seo":{"title":"Unpin waypoint stop time","description":"Removes the previously pinned stop time value from the waypoint. Calling this endpoint \"unfreezes\" the stop time of the waypoint, allowing for the stop time value to be to dynamically calculated."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"unpinWaypointStopTime","name":"Unpin waypoint stop time","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Unpin waypoint stop time","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Removes the previously pinned stop time value from the waypoint. Calling this endpoint \"unfreezes\" the stop time of the waypoint, allowing for the stop time value to be to dynamically calculated.\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"waypointId","in":"path","schemaId":"schema_132","description":"Unique waypoint identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"waypointId","in":"path","required":true,"example":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","schemaId":"schema_132"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","href":"waypoint/unpinwaypointstoptime","openApiOperationId":"unpinWaypointStopTime","summary":"Unpin waypoint stop time"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Stop time has been successfully unpinned","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/waypoint/unpinwaypointstoptime"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time"}],"content":{"contentType":"group","meta":{"name":"Waypoint"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Waypoint","showPageActions":true},{"nodeType":"markdoc","content":"Operations on the waypoint level"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours/{tourId}/waypoints/{waypointId}/time-frame","summary":"Pin waypoint timeframe","prefix":{"name":"put","color":"put"},"badges":[],"link":"/waypoint/pinwaypointtimeframe","deprecated":false},{"title":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","summary":"Pin waypoint stop time","prefix":{"name":"put","color":"put"},"badges":[],"link":"/waypoint/pinwaypointstoptime","deprecated":false},{"title":"/v1/tours/{tourId}/waypoints/{waypointId}/stop-time","summary":"Unpin waypoint stop time","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/waypoint/unpinwaypointstoptime","deprecated":false}]}]}]}]}},{"type":"group","label":"Job","link":"/products/route/apis/ntc/tour-commander-api/job","routeSlug":"/products/route/apis/ntc/tour-commander-api/job","items":[{"label":"Apply changes to statuses of jobs","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/job/applyjobstatuschanges","routeSlug":"/products/route/apis/ntc/tour-commander-api/job/applyjobstatuschanges","metadata":{"seo":{"title":"Apply changes to statuses of jobs","description":"Updates the status of one of more jobs, so that these changes can be reflected upon the tour instantly. This is only an auxiliary way for providing Bettermile with job updates, while the main job updates are still to be transmitted over the connector."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"applyJobStatusChanges","name":"Apply changes to statuses of jobs","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Apply changes to statuses of jobs","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Updates the status of one of more jobs, so that these changes can be reflected upon the tour instantly. This is only an auxiliary way for providing Bettermile with job updates, while the main job updates are still to be transmitted over the connector.\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApplyJobStatusChangesRequest"}},"schemaId":"components/schemas/ApplyJobStatusChangesRequest","pointer":"/paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/tours/{tourId}/jobs/statuses","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ApplyJobStatusChangesRequest"}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/jobs/statuses","href":"job/applyjobstatuschanges","openApiOperationId":"applyJobStatusChanges","summary":"Apply changes to statuses of jobs"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/ApplyJobStatusChangesRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApplyJobStatusChangesRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Changes to statuses of jobs have been successfully applied","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/job/applyjobstatuschanges"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/jobs/statuses"}],"content":{"contentType":"group","meta":{"name":"Job"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Job","showPageActions":true},{"nodeType":"markdoc","content":"Operations on the job level"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours/{tourId}/jobs/statuses","summary":"Apply changes to statuses of jobs","prefix":{"name":"post","color":"post"},"badges":[],"link":"/job/applyjobstatuschanges","deprecated":false}]}]}]}]}},{"type":"group","label":"Custom Job","link":"/products/route/apis/ntc/tour-commander-api/custom-job","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-job","items":[{"label":"Create a custom job","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/custom-job/createcustomjob","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-job/createcustomjob","metadata":{"seo":{"title":"Create a custom job","description":"Creates a custom job"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createCustomJob","name":"Create a custom job","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a custom job","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates a custom job"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomJobRequest"}},"schemaId":"components/schemas/CreateCustomJobRequest","pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/tours/{tourId}/custom-jobs","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateCustomJobRequest"}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/custom-jobs","href":"custom-job/createcustomjob","openApiOperationId":"createCustomJob","summary":"Create a custom job"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/CreateCustomJobRequest","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomJobRequest"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully created a custom job","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateCustomJobResponse"}},"schemaId":"components/schemas/CreateCustomJobResponse"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"components/schemas/CreateCustomJobResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateCustomJobResponse"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-job/createcustomjob"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/custom-jobs"},{"label":"Deletes a custom job","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/custom-job/deletecustomjob","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-job/deletecustomjob","metadata":{"seo":{"title":"Deletes a custom job","description":"Deletes a custom job"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteCustomJob","name":"Deletes a custom job","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Deletes a custom job","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Deletes a custom job"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"jobId","in":"path","schemaId":"schema_133","description":"Unique job identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/v1/tours/{tourId}/custom-jobs/{jobId}","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"jobId","in":"path","required":true,"example":"c1a4e572-89ab-4cde-8f01-234567890abc","schemaId":"schema_133"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/custom-jobs/{jobId}","href":"custom-job/deletecustomjob","openApiOperationId":"deleteCustomJob","summary":"Deletes a custom job"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully deleted the custom job","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-job/deletecustomjob"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/custom-jobs/{jobId}"}],"content":{"contentType":"group","meta":{"name":"Custom Job"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Custom Job","showPageActions":true},{"nodeType":"markdoc","content":"Operations on custom jobs"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours/{tourId}/custom-jobs","summary":"Create a custom job","prefix":{"name":"post","color":"post"},"badges":[],"link":"/custom-job/createcustomjob","deprecated":false},{"title":"/v1/tours/{tourId}/custom-jobs/{jobId}","summary":"Deletes a custom job","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/custom-job/deletecustomjob","deprecated":false}]}]}]}]}},{"type":"group","label":"Custom Waypoint","link":"/products/route/apis/ntc/tour-commander-api/custom-waypoint","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-waypoint","items":[{"label":"Create a custom waypoint","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/custom-waypoint/createcustomwaypoint","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-waypoint/createcustomwaypoint","metadata":{"seo":{"title":"Create a custom waypoint","description":"Creates a custom waypoint by grouping provided jobs together"}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createCustomWaypoint","name":"Create a custom waypoint","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Create a custom waypoint","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Creates a custom waypoint by grouping provided jobs together"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomWaypointRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds","paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"]}},"schemaId":"components/schemas/CreateCustomWaypointRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds","paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/tours/{tourId}/custom-waypoints","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/CreateCustomWaypointRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds","paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"]}},"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/custom-waypoints","href":"custom-waypoint/createcustomwaypoint","openApiOperationId":"createCustomWaypoint","summary":"Create a custom waypoint"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"schemaId":"components/schemas/CreateCustomWaypointRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds","paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"],"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/CreateCustomWaypointRequest","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds","paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"]}},"examples":[{},{}]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully created a custom waypoint","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateCustomWaypointResponse"}},"schemaId":"components/schemas/CreateCustomWaypointResponse"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"components/schemas/CreateCustomWaypointResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CreateCustomWaypointResponse"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-waypoint/createcustomwaypoint"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/custom-waypoints"},{"label":"Deletes a custom waypoint","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/products/route/apis/ntc/tour-commander-api/custom-waypoint/deletecustomwaypoint","routeSlug":"/products/route/apis/ntc/tour-commander-api/custom-waypoint/deletecustomwaypoint","metadata":{"seo":{"title":"Deletes a custom waypoint","description":"Deletes a custom waypoint, allowing the backend to regroup the jobs from this waypoint freely."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteCustomWaypoint","name":"Deletes a custom waypoint","isWebhook":false,"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Deletes a custom waypoint","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Deletes a custom waypoint, allowing the backend to regroup the jobs from this waypoint freely.\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"ApiKeyAuth","scopes":[],"type":"apiKey","in":"header","paramName":"x-api-key"}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"tourId","in":"path","schemaId":"schema_123","description":"Unique tour identifier (generated by Better Route backend)","required":true},{"name":"waypointId","in":"path","schemaId":"schema_132","description":"Unique waypoint identifier (generated by Better Route backend)","required":true}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/v1/tours/{tourId}/custom-waypoints/{waypointId}","servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"parameters":{"path":[{"name":"tourId","in":"path","required":true,"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schemaId":"schema_123"},{"name":"waypointId","in":"path","required":true,"example":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","schemaId":"schema_132"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ApiKeyAuth","type":"apiKey","name":"x-api-key","in":"header"}],"scopes":[]}],"responseCodes":["200","400","401","404","429","500"],"pointer":"/v1/tours/{tourId}/custom-waypoints/{waypointId}","href":"custom-waypoint/deletecustomwaypoint","openApiOperationId":"deleteCustomWaypoint","summary":"Deletes a custom waypoint"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successfully deleted the custom waypoint","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}},"schemaId":"schema_125"},{"code":"400","description":"Error response returned when the request is invalid. In most cases this implies that some data in the request is either missing or has incorrect format.\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example"]},{"code":"401","description":"Error response returned when the provided API key is missing or invalid\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example"]},{"code":"404","description":"Error response returned in cases the requested endpoint or data can't be found\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example"]},{"code":"429","description":"Error response returned in case operation encounter rate limit\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example"]},{"code":"500","description":"Error response returned whenever the server fails to process the request\n","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example"]}},"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example"]}],"pointer":"/paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses"}],"panels":[{"children":[{"kind":"response","responseCodes":[{"code":"200","schemaId":"schema_125","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_125"}}},{"code":"400","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example"]}}},{"code":"401","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example"]}}},{"code":"404","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example"]}}},{"code":"429","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example"]}}},{"code":"500","schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example"],"mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_119","exampleIds":["paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example"]}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/custom-waypoint/deletecustomwaypoint"}],"panels":[]}]},"httpPath":"/v1/tours/{tourId}/custom-waypoints/{waypointId}"}],"content":{"contentType":"group","meta":{"name":"Custom Waypoint"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Custom Waypoint","showPageActions":true},{"nodeType":"markdoc","content":"Operations on custom waypoints"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/v1/tours/{tourId}/custom-waypoints","summary":"Create a custom waypoint","prefix":{"name":"post","color":"post"},"badges":[],"link":"/custom-waypoint/createcustomwaypoint","deprecated":false},{"title":"/v1/tours/{tourId}/custom-waypoints/{waypointId}","summary":"Deletes a custom waypoint","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/custom-waypoint/deletecustomwaypoint","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/NullValue":{"id":"components/schemas/NullValue","kind":"json-schema","title":"NullValue","data":{"description":"Null value","type":"null","enum":[null]}},"components/schemas/JobType":{"id":"components/schemas/JobType","kind":"json-schema","title":"JobType","data":{"description":"Types of a job","type":"string","enum":["DELIVERY","PICKUP","COLLECTION","CUSTOM","UNKNOWN"]}},"components/schemas/JobState":{"id":"components/schemas/JobState","kind":"json-schema","title":"JobState","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Status of the job:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PROCESSED: The job has been processed (e.g. delivered, picked up or collected)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNPROCESSED: The job has not been processed yet"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNKNOWN: The processing status of the job could not be determined"},"children":[]}]}]}]}],"type":"string","enum":["PROCESSED","UNPROCESSED","UNKNOWN"]}},"components/schemas/JobOutcome":{"id":"components/schemas/JobOutcome","kind":"json-schema","title":"JobOutcome","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The outcome of processing this job:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"SUCCESS: The job was processed successfully"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNSUCCESSFUL: The job could not be processed successfully (e.g. a failed delivery attempt)"},"children":[]}]}]}]}],"type":"string","enum":["SUCCESS","UNSUCCESSFUL"]}},"components/schemas/WaypointStatus":{"id":"components/schemas/WaypointStatus","kind":"json-schema","title":"WaypointStatus","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"State of the waypoint:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNPROCESSED: None of the waypoint's jobs have been processed yet"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PROCESSED: All of the waypoint's jobs have been processed"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"CONFIRMED: The waypoint has been processed, and this has additionally been confirmed"},"children":[]}]}]}]}],"type":"string","enum":["UNPROCESSED","PROCESSED","CONFIRMED"]}},"components/schemas/SequenceError":{"id":"components/schemas/SequenceError","kind":"json-schema","title":"SequenceError","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Describes a reason that prevents this waypoint from being placed into the sequence:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNREACHABLE_TIMEFRAME: The waypoint cannot be visited within the given timeframe"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"OUTSIDE_ROAD_NETWORK: The waypoint cannot be accessed over road network"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"EXCEEDS_MAX_DISTANCE_TO_DEPOT: The waypoint is too far away from tour's depot"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"UNMAPPED_REASON: Some other undocumented reason"},"children":[]}]}]}]}],"type":"string","enum":["UNREACHABLE_TIMEFRAME","OUTSIDE_ROAD_NETWORK","EXCEEDS_MAX_DISTANCE_TO_DEPOT","UNMAPPED_REASON"]}},"components/schemas/SequenceCreationMode":{"id":"components/schemas/SequenceCreationMode","kind":"json-schema","title":"SequenceCreationMode","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Mode which is used to create a sequence:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"FIXED_OPTIMIZATION instructs that ETAs of waypoints are to be re-calculated,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"while the order of the waypoints is mostly kept intact"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"(waypoint may only be moved in certain special cases,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"like when the time frame changes for a waypoint)"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"FULL_OPTIMIZATION  instructs the backend to create an entirely new sequence,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"without attempts to maintain the previous order of waypoints"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RETURN_TO_PREVIOUS_WAYPOINT_ORDER can be used to return to a previously used order of waypoints,"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"in a situation when results of running FULL_OPTIMIZATION need to be \"undone\""},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"USE_PROVIDED instructs the backend to keep the order of the provided waypoint ids (time frames will be ignored)"},"children":[]}]}]}]}],"type":"string","enum":["FIXED_OPTIMIZATION","FULL_OPTIMIZATION","RETURN_TO_PREVIOUS_WAYPOINT_ORDER","USE_PROVIDED"]}},"components/schemas/RttCategory":{"id":"components/schemas/RttCategory","kind":"json-schema","title":"RttCategory","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Category assigned by Real Time Tracking, based on how closely this tour's actual arrival"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"times have historically matched its estimated arrival times:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GOOD: The tour is reliably trackable; real-time tracking can be offered to consignees"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"MEDIUM: The tour is trackable, though less reliably than GOOD; real-time tracking can still be offered to consignees"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"BLOCKED: The tour is not reliably trackable, as ETA/ATA differences tend to be too large;"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"consignees are only shown broader time windows instead of live tracking"},"children":[]}]}]}]}],"type":"string","enum":["GOOD","MEDIUM","BLOCKED"]}},"components/schemas/WaypointType":{"id":"components/schemas/WaypointType","kind":"json-schema","title":"WaypointType","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type of the waypoint:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"GENERATED means that the waypoint was generated automatically"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"CUSTOM means that the waypoint was created via Custom Waypoint API"},"children":[]}]}]}]}],"type":"string","enum":["GENERATED","CUSTOM"]}},"components/schemas/Coordinates":{"id":"components/schemas/Coordinates","kind":"json-schema","title":"Coordinates","data":{"description":"A pair of coordinates","type":"object","properties":{"lat":{"type":"number","format":"double","description":"Latitude","nullable":false},"lon":{"type":"number","format":"double","description":"Longitude","nullable":false}}}},"components/schemas/Address":{"id":"components/schemas/Address","kind":"json-schema","title":"Address","data":{"description":"An address","type":"object","properties":{"street":{"description":"Street","type":"string","nullable":true},"streetNumber":{"description":"Street number","type":"string","nullable":true},"locality":{"description":"City, town, village etc","type":"string","nullable":true},"subLocality":{"description":"Subdivision of city, district etc","type":"string","nullable":true},"postalCode":{"description":"Postal/zip code","type":"string","nullable":true},"country":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country as \"alpha-2 code\" of ISO 3166 (https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes)"},"children":[]}]}]}],"type":"string","nullable":true},"streetCoordinates":{"anyOf":[{"$ref":"#/components/schemas/Coordinates"},{"$ref":"#/components/schemas/NullValue"}]},"rooftopCoordinates":{"anyOf":[{"$ref":"#/components/schemas/Coordinates"},{"$ref":"#/components/schemas/NullValue"}]}}}},"components/schemas/TimeFrame":{"id":"components/schemas/TimeFrame","kind":"json-schema","title":"TimeFrame","data":{"description":"Time window with earliest and latest possible time","type":"object","properties":{"earliest":{"type":"string","example":"14:00:00"},"latest":{"type":"string","example":"16:00:00"},"timezone":{"type":"string","example":"Europe/Berlin"}}}},"components/schemas/Job":{"id":"components/schemas/Job","kind":"json-schema","title":"Job","data":{"description":"A job, i.e. a single delivery, pickup, collection etc.","type":"object","properties":{"jobId":{"description":"A unique identifier used within Bettermile. The API will only accept / use this id to identify jobs in requests.\n","type":"string","format":"uuid"},"externalId":{"description":"The job id provided to Bettermile Data Gateway. Can't be used to reference this job when communicating with the API.\n","example":"E00013222111","nullable":true,"type":"string"},"type":{"$ref":"#/components/schemas/JobType"},"originalAddress":{"description":"Only present, if also provided via the connector data.\n","anyOf":[{"$ref":"#/components/schemas/Address"},{"$ref":"#/components/schemas/NullValue"}]},"redirectOriginalAddress":{"description":"Only present, if also provided via the connector data.\n","anyOf":[{"$ref":"#/components/schemas/Address"},{"$ref":"#/components/schemas/NullValue"}],"example":null},"navigationAddress":{"description":"Filled by Bettermile during tour creation. A job provided without a navigationAddress will be not included in any waypoint.\n","anyOf":[{"$ref":"#/components/schemas/Address"},{"$ref":"#/components/schemas/NullValue"}]},"state":{"anyOf":[{"$ref":"#/components/schemas/JobState"},{"$ref":"#/components/schemas/NullValue"}],"example":"UNPROCESSED"},"outcome":{"anyOf":[{"$ref":"#/components/schemas/JobOutcome"},{"$ref":"#/components/schemas/NullValue"}],"example":null},"timeFrames":{"type":"array","items":{"$ref":"#/components/schemas/TimeFrame"}}},"example":{"jobId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111","type":"DELIVERY","originalAddress":null,"redirectOriginalAddress":null,"navigationAddress":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"state":"UNPROCESSED","outcome":null,"timeFrames":[{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"}]}}},"components/schemas/JobStatusChange":{"id":"components/schemas/JobStatusChange","kind":"json-schema","title":"JobStatusChange","data":{"description":"It contains all the information required to change the status of the job","type":"object","required":["jobId","state","timestamp"],"properties":{"jobId":{"type":"string","format":"uuid","description":"Job identifier generated by the backend"},"state":{"$ref":"#/components/schemas/JobState"},"timestamp":{"description":"Time at which this job status was changed (it should not be older than 1h)","type":"string","format":"date-time"},"outcome":{"anyOf":[{"$ref":"#/components/schemas/JobOutcome"},{"$ref":"#/components/schemas/NullValue"}],"example":"SUCCESS"},"description":{"type":"string","nullable":true,"description":"Description for the status change","maxLength":200},"coords":{"anyOf":[{"$ref":"#/components/schemas/Coordinates"},{"$ref":"#/components/schemas/NullValue"}]}}}},"components/schemas/ApiError":{"id":"components/schemas/ApiError","kind":"json-schema","title":"ApiError","data":{"description":"Error response","type":"object","properties":{"status":{"type":"integer","description":"HTTP error status","example":400},"message":{"type":"string","description":"Human readable error message","example":"'depot' field can't be null"},"errorCode":{"type":"string","description":"Machine-friendly error message containing only alphanumeric characters and '.'","example":"tour.list.fetch.failed.bad.request"},"details":{"type":"array","nullable":true,"items":{"type":"string"}}}}},"components/schemas/TourList":{"id":"components/schemas/TourList","kind":"json-schema","title":"TourList","data":{"description":"List of tours.","type":"array","items":{"$ref":"#/components/schemas/TourListItem"},"example":[{"tourId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","date":"2026-08-03","assignment":"876-042","depot":"DEPOT-BERLIN-01","created":"2026-08-01T10:00:00Z"}]}},"components/schemas/TourListItem":{"id":"components/schemas/TourListItem","kind":"json-schema","title":"TourListItem","data":{"description":"Basic information about an individual tour","type":"object","properties":{"tourId":{"type":"string","format":"uuid","description":"Tour identifier generated by the backend"},"date":{"type":"string","format":"date","description":"Date on which the tour is / will be driven"},"assignment":{"type":"string","description":"Vehicle / route / driver identifier."},"depot":{"type":"string","description":"Depot identifier"},"created":{"type":"string","format":"date-time"}},"example":{"tourId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","date":"2026-08-03","assignment":"876-042","depot":"DEPOT-BERLIN-01","created":"2026-08-01T10:00:00Z"}}},"components/schemas/Tour":{"id":"components/schemas/Tour","kind":"json-schema","title":"Tour","data":{"description":"Full information about an individual tour, excluding the sequence information","allOf":[{"$ref":"#/components/schemas/TourListItem"},{"type":"object","properties":{"jobs":{"description":"All jobs for tour's assignment.\nJobs not referenced in waypoints have no or insufficient address data.","type":"array","nullable":false,"items":{"$ref":"#/components/schemas/Job"}},"waypoints":{"description":"Tour waypoints in no particular order","type":"array","items":{"$ref":"#/components/schemas/Waypoint"}},"rttCategory":{"$ref":"#/components/schemas/RttCategory"},"destination":{"$ref":"#/components/schemas/Destination"},"unassignedJobIdentifiers":{"description":"Identifiers of jobs that couldn't be assigned to any waypoint\n(e.g. due to lacking coordinates).","type":"array","nullable":false,"items":{"$ref":"#/components/schemas/JobIdentifier"}}}}],"example":{"tourId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","date":"2026-08-03","assignment":"876-042","depot":"DEPOT-BERLIN-01","created":"2026-08-01T10:00:00Z","jobs":[{"jobId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111","type":"DELIVERY","originalAddress":null,"redirectOriginalAddress":null,"navigationAddress":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"state":"UNPROCESSED","outcome":null,"timeFrames":[{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"}]}],"waypoints":[{"waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","jobIdentifiers":[{"internalId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111"}],"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"status":"UNPROCESSED","closedAtTimestamp":null,"stopTimeInSeconds":300,"timeFrame":{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"},"type":"GENERATED"}],"rttCategory":"GOOD","destination":{"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"eta":"2026-08-03T15:30:00Z"},"unassignedJobIdentifiers":[]}}},"components/schemas/SequenceList":{"id":"components/schemas/SequenceList","kind":"json-schema","title":"SequenceList","data":{"description":"List of sequences.","type":"array","items":{"$ref":"#/components/schemas/SequenceListItem"},"example":[{"sequenceId":10234,"mode":"FIXED_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"2026-08-03T08:00:00Z","sequenceIdWithPreviousWaypointOrder":null,"created":"2026-08-03T07:55:00Z","sequenceFidelity":0.95}]}},"components/schemas/SequenceListItem":{"id":"components/schemas/SequenceListItem","kind":"json-schema","title":"SequenceListItem","data":{"description":"Basic information about a sequence, excluding waypoints","type":"object","properties":{"sequenceId":{"type":"number","format":"int64"},"mode":{"$ref":"#/components/schemas/SequenceCreationMode"},"coords":{"$ref":"#/components/schemas/Coordinates"},"startTime":{"type":"string","format":"date-time","nullable":true},"sequenceIdWithPreviousWaypointOrder":{"type":"number","format":"int64","nullable":true},"created":{"type":"string","format":"date-time"},"sequenceFidelity":{"type":"number","format":"double","nullable":true,"minimum":0,"maximum":1}},"example":{"sequenceId":10234,"mode":"FIXED_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"2026-08-03T08:00:00Z","sequenceIdWithPreviousWaypointOrder":null,"created":"2026-08-03T07:55:00Z","sequenceFidelity":0.95}}},"components/schemas/Destination":{"id":"components/schemas/Destination","kind":"json-schema","title":"Destination","data":{"description":"Destination for a tour / sequence","type":"object","nullable":true,"properties":{"address":{"type":"object","nullable":true,"allOf":[{"$ref":"#/components/schemas/Address"}]},"eta":{"description":"Arrival time to the destination","type":"string","format":"date-time","nullable":true}},"example":{"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"eta":"2026-08-03T15:30:00Z"}}},"components/schemas/Sequence":{"id":"components/schemas/Sequence","kind":"json-schema","title":"Sequence","data":{"description":"Full information about a sequence, including open, closed and unassigned waypoints","allOf":[{"$ref":"#/components/schemas/SequenceListItem"},{"type":"object","properties":{"destination":{"$ref":"#/components/schemas/Destination"},"openWaypoints":{"description":"Open waypoints, ordered accordingly to their place in the sequence","type":"array","items":{"$ref":"#/components/schemas/SequenceWaypoint"}},"closedWaypoints":{"description":"Waypoints that are already closed (i.e. all jobs are done)","type":"array","items":{"$ref":"#/components/schemas/SequenceWaypoint"}},"unassignedWaypoints":{"description":"Waypoints that are not part of the sequence but are still open\n(e.g. waypoints that could not be added to the sequence due to unreachable timeframes)","type":"array","items":{"$ref":"#/components/schemas/SequenceWaypoint"}}}}],"example":{"sequenceId":10234,"mode":"FIXED_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"2026-08-03T08:00:00Z","sequenceIdWithPreviousWaypointOrder":null,"created":"2026-08-03T07:55:00Z","sequenceFidelity":0.95,"destination":{"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"eta":"2026-08-03T15:30:00Z"},"openWaypoints":[{"waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","jobIdentifiers":[{"internalId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111"}],"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"status":"UNPROCESSED","closedAtTimestamp":null,"stopTimeInSeconds":300,"timeFrame":{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"},"type":"GENERATED","eta":"2026-08-03T14:45:00Z","sequenceError":null}],"closedWaypoints":[],"unassignedWaypoints":[]}}},"components/schemas/Waypoint":{"id":"components/schemas/Waypoint","kind":"json-schema","title":"Waypoint","data":{"description":"Waypoint information, but without the sequence data (like ETA)","type":"object","properties":{"waypointId":{"description":"A unique identifier of this waypoint","type":"string","format":"uuid"},"jobIds":{"description":"List of job references as UUIDs.\nDeprecated use jobIdentifiers instead","deprecated":true,"type":"array","items":{"type":"string","format":"uuid"}},"jobIdentifiers":{"description":"List of job IDs (internal and external)","type":"array","items":{"$ref":"#/components/schemas/JobIdentifier"}},"address":{"$ref":"#/components/schemas/Address"},"status":{"$ref":"#/components/schemas/WaypointStatus"},"closedAtTimestamp":{"description":"Time at which this waypoint was closed","type":"string","format":"date-time","nullable":true},"stopTimeInSeconds":{"description":"How much time is planned for stopping at the waypoint and delivering / picking up parcels","type":"number","format":"int32"},"timeFrame":{"anyOf":[{"$ref":"#/components/schemas/TimeFrame"},{"$ref":"#/components/schemas/NullValue"}]},"type":{"$ref":"#/components/schemas/WaypointType"}},"example":{"waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","jobIdentifiers":[{"internalId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111"}],"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"status":"UNPROCESSED","closedAtTimestamp":null,"stopTimeInSeconds":300,"timeFrame":{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"},"type":"GENERATED"}}},"components/schemas/SequenceWaypoint":{"id":"components/schemas/SequenceWaypoint","kind":"json-schema","title":"SequenceWaypoint","data":{"description":"Waypoint enriched with the sequence data","type":"object","allOf":[{"$ref":"#/components/schemas/Waypoint"},{"type":"object","properties":{"eta":{"description":"Estimated time of arrival at this waypoint","type":"string","format":"date-time"},"sequenceError":{"anyOf":[{"$ref":"#/components/schemas/SequenceError"},{"$ref":"#/components/schemas/NullValue"}],"example":null}}}],"example":{"waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456","jobIdentifiers":[{"internalId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111"}],"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null},"status":"UNPROCESSED","closedAtTimestamp":null,"stopTimeInSeconds":300,"timeFrame":{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"},"type":"GENERATED","eta":"2026-08-03T14:45:00Z","sequenceError":null}}},"components/schemas/JobIdentifier":{"id":"components/schemas/JobIdentifier","kind":"json-schema","title":"JobIdentifier","data":{"type":"object","properties":{"internalId":{"nullable":false,"description":"Internal Job ID reference as UUID","type":"string","format":"uuid"},"externalId":{"nullable":true,"description":"External Job ID reference as string","type":"string"}},"example":{"internalId":"c1a4e572-89ab-4cde-8f01-234567890abc","externalId":"E00013222111"}}},"components/schemas/CreateTourRequest":{"id":"components/schemas/CreateTourRequest","kind":"json-schema","title":"CreateTourRequest","data":{"description":"Input for tour creation","type":"object","required":["date","assignment","depot"],"properties":{"date":{"type":"string","format":"date","description":"Date on which the tour is / will be driven. Must not be in the past"},"assignment":{"type":"string","description":"Vehicle / route / driver identifier. This value is used to look up jobs in Data Gateway","minLength":1,"maxLength":128},"depot":{"type":"string","description":"Depot identifier","minLength":1,"maxLength":128},"depotIsDestination":{"type":"boolean","description":"Whether to use depot address as the destination for the tour.","default":false}},"example":{"date":"2026-08-03","assignment":"876-042","depot":"DEPOT-BERLIN-01","depotIsDestination":true}}},"components/schemas/TourCreated":{"id":"components/schemas/TourCreated","kind":"json-schema","title":"TourCreated","data":{"description":"Output from tour creation","type":"object","properties":{"tourId":{"type":"string","format":"uuid"}},"example":{"tourId":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}}},"components/schemas/SetTourDestinationRequest":{"id":"components/schemas/SetTourDestinationRequest","kind":"json-schema","title":"SetTourDestinationRequest","data":{"description":"Input for setting tour destination","type":"object","required":["lat","lon"],"properties":{"country":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Country as \"alpha-2 code\" of ISO 3166 (https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes). If this value is not provided, the country of the depot that this tour belongs to will be used."},"children":[]}]}]}],"type":"string","nullable":true},"lat":{"description":"Latitude","type":"number","format":"double","nullable":false,"minimum":-90,"maximum":90},"lon":{"description":"Longitude","type":"number","format":"double","nullable":false,"minimum":-180,"maximum":180}},"example":{"country":"DE","lat":52.52,"lon":13.405}}},"components/schemas/CreateSequenceRequest":{"id":"components/schemas/CreateSequenceRequest","kind":"json-schema","title":"CreateSequenceRequest","data":{"description":"Input for sequence creation","type":"object","required":["mode","coords","startTime"],"properties":{"mode":{"$ref":"#/components/schemas/SequenceCreationMode"},"coords":{"$ref":"#/components/schemas/Coordinates"},"startTime":{"description":"Local time of day, without a timezone offset.","type":"string","pattern":"^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d)?$","example":"08:00:00"},"waypointIds":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List of waypoints IDs representing expected order of waypoints in the generated sequence. When provided, sequence creation mode must be 'USE_PROVIDED'."},"children":[]}]}]}],"type":"array","items":{"type":"string","format":"uuid"}},"firstWaypointId":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ID of the waypoint which must become first in the generated sequence. When provided, sequence creation mode must be 'FULL_OPTIMIZATION'."},"children":[]}]}]}],"type":"string","format":"uuid"}}}},"components/schemas/SequenceCreated":{"id":"components/schemas/SequenceCreated","kind":"json-schema","title":"SequenceCreated","data":{"description":"Output from sequence creation","type":"object","properties":{"sequenceId":{"type":"number","format":"int64"}},"example":{"sequenceId":10234}}},"components/schemas/PinTimeFrameRequest":{"id":"components/schemas/PinTimeFrameRequest","kind":"json-schema","title":"PinTimeFrameRequest","data":{"description":"Input for pinning a timeframe to the waypoint","type":"object","properties":{"timeFrame":{"description":"Set to a timeframe object to pin it to the waypoint. Set explicitly to null to remove any previously pinned timeframe.\n","anyOf":[{"$ref":"#/components/schemas/TimeFrame"},{"$ref":"#/components/schemas/NullValue"}]}}}},"components/schemas/PinStopTimeRequest":{"id":"components/schemas/PinStopTimeRequest","kind":"json-schema","title":"PinStopTimeRequest","data":{"description":"Input for pinning a stop time to the waypoint","type":"object","properties":{"stopTime":{"description":"Stop time in seconds","nullable":false,"type":"number","format":"int64","minimum":1,"maximum":10800}},"example":{"stopTime":300}}},"components/schemas/ApplyJobStatusChangesRequest":{"id":"components/schemas/ApplyJobStatusChangesRequest","kind":"json-schema","title":"ApplyJobStatusChangesRequest","data":{"description":"Input for applying changes to statuses of jobs","type":"object","properties":{"statusChanges":{"description":"List of job status changes to be applied (only 1 status change per job is allowed)\n","type":"array","items":{"$ref":"#/components/schemas/JobStatusChange"},"minItems":1,"maxItems":150}},"example":{"statusChanges":[{"jobId":"c1a4e572-89ab-4cde-8f01-234567890abc","state":"PROCESSED","timestamp":"2026-07-29T09:15:00Z","outcome":"SUCCESS","description":"Delivered to neighbor","coords":{"lat":52.52,"lon":13.405}}]}}},"components/schemas/CreateCustomJobRequest":{"id":"components/schemas/CreateCustomJobRequest","kind":"json-schema","title":"CreateCustomJobRequest","data":{"description":"Input for creating a custom job","type":"object","properties":{"rawAddress":{"description":"Address in a format suitable for geocoding\n","type":"string","minLength":1,"maxLength":500},"countryCode":{"description":"Two letter country code defined in ISO 3166-1\n","type":"string","example":"DE","minLength":2,"maxLength":2},"externalId":{"description":"Optional ID that can used to identify the job. If provided, this value must not collide with externalId on any other job.\n","type":"string","nullable":true,"maxLength":200}},"example":{"rawAddress":"Oranienstraße 183, 10999 Berlin, DE","countryCode":"DE","externalId":"CUST-99213"}}},"components/schemas/CreateCustomJobResponse":{"id":"components/schemas/CreateCustomJobResponse","kind":"json-schema","title":"CreateCustomJobResponse","data":{"description":"Result of creating a custom job","type":"object","properties":{"jobId":{"description":"Internal ID assigned to this job by the backend","type":"string","format":"uuid","nullable":false},"waypointId":{"description":"Internal ID of (potentially new) waypoint to which the job has been assigned","type":"string","format":"uuid","nullable":false}},"example":{"jobId":"c1a4e572-89ab-4cde-8f01-234567890abc","waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456"}}},"components/schemas/PotentialRecalcGainResponse":{"id":"components/schemas/PotentialRecalcGainResponse","kind":"json-schema","title":"PotentialRecalcGainResponse","data":{"description":"Result of requesting for potential recalculation gain","type":"object","properties":{"potentialGainInSeconds":{"description":"potential time gaines in seconds","type":"number","format":"int32","nullable":true}},"example":{"potentialGainInSeconds":420}}},"components/schemas/CreateCustomWaypointRequest":{"id":"components/schemas/CreateCustomWaypointRequest","kind":"json-schema","title":"CreateCustomWaypointRequest","data":{"description":"Input for creating a custom waypoint","type":"object","properties":{"jobIds":{"description":"IDs of the jobs to be added under the custom waypoint","oneOf":[{"$ref":"#/components/schemas/JobInternalIds"},{"$ref":"#/components/schemas/JobExternalIds"}]},"address":{"description":"Specifies address to be used for the custom waypoint. If omitted or explicitly null, the address is inherited from the jobs assigned to this waypoint.\n","anyOf":[{"$ref":"#/components/schemas/Address"},{"$ref":"#/components/schemas/NullValue"}]}}}},"components/schemas/CreateCustomWaypointResponse":{"id":"components/schemas/CreateCustomWaypointResponse","kind":"json-schema","title":"CreateCustomWaypointResponse","data":{"description":"Result of creating a custom waypoint","type":"object","properties":{"waypointId":{"description":"Internal ID of the created custom waypoint","type":"string","format":"uuid","nullable":false}},"example":{"waypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456"}}},"components/schemas/JobInternalIds":{"id":"components/schemas/JobInternalIds","kind":"json-schema","title":"JobInternalIds","data":{"type":"object","required":["internalIds"],"properties":{"internalIds":{"description":"A list of internal Job IDs assigned by Bettermile","nullable":false,"type":"array","items":{"type":"string","format":"uuid"}}}}},"components/schemas/JobExternalIds":{"id":"components/schemas/JobExternalIds","kind":"json-schema","title":"JobExternalIds","data":{"type":"object","required":["externalIds"],"properties":{"externalIds":{"description":"A list of external Job IDs assigned by the tenant","nullable":false,"type":"array","items":{"type":"string"}}}}},"schema_118":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TourCreated"}}},"id":"schema_118"},"schema_119":{"kind":"json-schema","data":{"type":"object","properties":{"error":{"$ref":"#/components/schemas/ApiError"}}},"id":"schema_119"},"schema_120":{"kind":"json-schema","data":{"type":"string","format":"date"},"id":"schema_120"},"schema_121":{"kind":"json-schema","data":{"type":"string"},"id":"schema_121"},"schema_122":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/TourList"}}},"id":"schema_122"},"schema_123":{"kind":"json-schema","data":{"type":"string","format":"uuid","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"id":"schema_123"},"schema_124":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Tour"}}},"id":"schema_124"},"schema_125":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"type":"object","example":{}}}},"id":"schema_125"},"schema_126":{"kind":"json-schema","data":{"type":"number","format":"double"},"id":"schema_126"},"schema_127":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/PotentialRecalcGainResponse"}}},"id":"schema_127"},"schema_128":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SequenceCreated"}}},"id":"schema_128"},"schema_129":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SequenceList"}}},"id":"schema_129"},"schema_130":{"kind":"json-schema","data":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Sequence"}}},"id":"schema_130"},"schema_131":{"kind":"json-schema","data":{"type":"integer","format":"int64","example":10234},"id":"schema_131"},"schema_132":{"kind":"json-schema","data":{"type":"string","format":"uuid","example":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456"},"id":"schema_132"},"schema_133":{"kind":"json-schema","data":{"type":"string","format":"uuid","example":"c1a4e572-89ab-4cde-8f01-234567890abc"},"id":"schema_133"}},"exampleStore":{"paths/~1v1~1tours/post/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours/post/responses/400/content/application~1json/example"},"paths/~1v1~1tours/post/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours/post/responses/401/content/application~1json/example"},"paths/~1v1~1tours/post/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours/post/responses/429/content/application~1json/example"},"paths/~1v1~1tours/post/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours/post/responses/500/content/application~1json/example"},"paths/~1v1~1tours/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}/get/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1destination/put/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1destination/put/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1destination/put/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1destination/put/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1destination/put/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example":{"value":{"error":{"status":409,"message":"No destination set on tour"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/409/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1potential-recalc-gain/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization":{"value":{"mode":"FIXED_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"08:00:00"},"key":"fixedOptimization","summary":"Recalculate ETAs, while keeping the existing waypoint order (main use case)","id":"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fixedOptimization"},"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization":{"value":{"mode":"FULL_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"08:00:00"},"key":"fullOptimization","summary":"Re-optimize the whole remaining route","id":"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimization"},"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint":{"value":{"mode":"FULL_OPTIMIZATION","coords":{"lat":52.52,"lon":13.405},"startTime":"08:00:00","firstWaypointId":"b3f1a2c4-1234-4a2b-9c3d-abcdef123456"},"key":"fullOptimizationFromWaypoint","summary":"Re-optimize, but force a specific waypoint to be visited first","id":"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/fullOptimizationFromWaypoint"},"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided":{"value":{"mode":"USE_PROVIDED","coords":{"lat":52.52,"lon":13.405},"startTime":"08:00:00","waypointIds":["b3f1a2c4-1234-4a2b-9c3d-abcdef123456","9ac2f001-5678-4a2b-9c3d-abcdef654321"]},"key":"useProvided","summary":"Force a specific, explicit waypoint order","id":"paths/~1v1~1tours~1{tourId}~1sequences/post/requestBody/content/application~1json/examples/useProvided"},"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/post/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1latest/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1sequences~1{sequenceId}/get/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame":{"value":{"timeFrame":{"earliest":"14:00:00","latest":"16:00:00","timezone":"Europe/Berlin"}},"key":"pinTimeFrame","summary":"Pin an explicit timeframe","id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/pinTimeFrame"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame":{"value":{"timeFrame":null},"key":"removeTimeFrame","summary":"Remove any previously pinned timeframe (explicit null)","id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/requestBody/content/application~1json/examples/removeTimeFrame"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1time-frame/put/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/put/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1waypoints~1{waypointId}~1stop-time/delete/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1jobs~1statuses/post/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs/post/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-jobs~1{jobId}/delete/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds":{"value":{"jobIds":{"internalIds":["c1a4e572-89ab-4cde-8f01-234567890abc"]}},"key":"byInternalIds","summary":"Group jobs by Bettermile-internal job IDs","id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byInternalIds"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds":{"value":{"jobIds":{"externalIds":["E00013222111"]},"address":{"street":"Oranienstraße","streetNumber":"183","locality":"Berlin","subLocality":null,"postalCode":"10999","country":"DE","streetCoordinates":{"lat":52.4998,"lon":13.4189},"rooftopCoordinates":null}},"key":"byExternalIds","summary":"Group jobs by tenant-provided external job IDs, with an explicit address","id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/requestBody/content/application~1json/examples/byExternalIds"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints/post/responses/500/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example":{"value":{"error":{"status":400,"message":"'date' field is required"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/400/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example":{"value":{"error":{"status":401,"message":"Request is missing 'x-api-key' header"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/401/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example":{"value":{"error":{"status":404,"message":"Tour not found"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/404/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example":{"value":{"error":{"status":429,"message":"Rate limit exceeded"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/429/content/application~1json/example"},"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example":{"value":{"error":{"status":500,"message":"Server error"}},"id":"paths/~1v1~1tours~1{tourId}~1custom-waypoints~1{waypointId}/delete/responses/500/content/application~1json/example"}},"securitySchemeStore":{"ApiKeyAuth":{"id":"ApiKeyAuth","type":"apiKey","in":"header","paramName":"x-api-key"}},"servers":[{"url":"https://dev.routes.bettermile.com","description":"Dev API"}],"specType":"openapi"},"options":{"onlyRequiredInSamples":true,"sortRequiredPropsFirst":true,"codeSamples":{"skipOptionalParameters":true,"languages":[{"lang":"curl"},{"lang":"Java"},{"lang":"JavaScript"},{"lang":"Go"},{"lang":"Python"}]},"feedback":{"type":"mood","hide":false,"settings":{"label":"Was this section helpful?"}},"mockServer":{"off":true},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/products/route/apis/ntc/@1.0/tour-commander-api.json?download"},{"url":"/_bundle/products/route/apis/ntc/@1.0/tour-commander-api.yaml?download"}],"excludeFromSearch":false,"replayFeatures":{"graphql":false},"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Bettermile Route API","description":"Part of Bettermile API responsible for tour management.\n\n## Typical lifecycle\n1. **Create a tour** (`POST /v1/tours`) for a given date, assignment (vehicle / route / driver) and depot. Bettermile looks up the jobs associated with that assignment from Data Gateway.\n2. **Create a sequence** (`POST /v1/tours/{tourId}/sequences`) to get an optimised order of waypoints for the respective tour. Sequence creation is synchronous — the returned `sequenceId` is usable immediately to fetch the full sequence via `GET /v1/tours/{tourId}/sequences/{sequenceId}` or `GET /v1/tours/{tourId}/sequences/latest`.\n3. (optional) **Track and adjust the tour as it's driven**: pin or unpin a waypoint's timeframe or stop time when it needs to be fixed against automatic recalculation, and report job status changes (`POST /v1/tours/{tourId}/jobs/statuses`) as an auxiliary channel alongside the DataGateWay connector updates.\n4. (optional) **Custom jobs and waypoints** (`Custom Job` / `Custom Waypoint` tags) let you add a job to a tour that wasn't provided via DataGateway, and group jobs into a waypoint manually.\n\nAll endpoints share a single `x-api-key` for authentication and a general per-customer rate limit (see the `429` response on each operation)."}},"baseSlug":"/products/route/apis/ntc/tour-commander-api","routesMapping":{}}