{"items":[{"type":"link","label":"PTV OptiFlow Vehicle API","link":"/apis/vehicles/vehicle-api","routeSlug":"/apis/vehicles/vehicle-api","content":{"contentType":"overview","meta":{"name":"PTV OptiFlow Vehicle API"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"vehicle-api.json","url":"/_bundle/apis/vehicles/vehicle-api.json?download"},{"kind":"download","label":"vehicle-api.yaml","url":"/_bundle/apis/vehicles/vehicle-api.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"externallink","title":"URL","titleTranslationKey":"info.contact.url","label":"https://servicedesk.conundra.eu","url":"https://servicedesk.conundra.eu"}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"PTV OptiFlow Vehicle API (1.1.1)","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":"The Vehicle API provides endpoints for managing vehicles used in planning operations."}],"sectionId":"/apis/vehicles/vehicle-api"}],"sectionId":"/apis/vehicles/vehicle-api"}]}]}},{"type":"group","label":"Health check","link":"/apis/vehicles/vehicle-api/health","routeSlug":"/apis/vehicles/vehicle-api/health","items":[{"label":"Health check","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/vehicles/vehicle-api/health/ping","routeSlug":"/apis/vehicles/vehicle-api/health/ping","metadata":{"seo":{"title":"Health check","description":"The ping-endpoint can be used for validating a connection with the application. It will authenticate the caller and respond pong if everything is set-up correctly."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"ping","name":"Health check","isWebhook":false,"pointer":"/paths/~1ping/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Health check","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":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"ping"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"-endpoint can be used for validating a connection with the application. It will authenticate the caller and respond "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pong"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" if everything is set-up correctly."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"clientCredentials","scopes":[],"type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}]}]}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/ping","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"clientCredentials","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200","401"],"pointer":"/ping","href":"health/ping","openApiOperationId":"ping","summary":"Health check"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Returned when the application is responsive and you are authenticated.","mediaType":"text/plain","mediaTypes":["text/plain"],"mediaTypeContent":{"text/plain":{"schemaId":"schema_87","exampleIds":["paths/~1ping/get/responses/200/content/text~1plain/example"]}},"schemaId":"schema_87","exampleIds":["paths/~1ping/get/responses/200/content/text~1plain/example"]},{"code":"401","description":"Authentication required"}],"pointer":"/paths/~1ping/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_87","exampleIds":["paths/~1ping/get/responses/200/content/text~1plain/example"],"mediaTypes":["text/plain"],"mediaTypeContent":{"text/plain":{"schemaId":"schema_87","exampleIds":["paths/~1ping/get/responses/200/content/text~1plain/example"]}}},{"code":"401"}],"examples":[]}]}]}]},"httpPath":"/ping"}],"content":{"contentType":"group","meta":{"name":"health"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Health check","showPageActions":true},{"nodeType":"markdoc","content":"Miscellaneous endpoints for general API functionality"}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/ping","summary":"Health check","prefix":{"name":"get","color":"get"},"badges":[],"link":"/health/ping","deprecated":false}]}]}]}]}},{"type":"group","label":"Vehicle","link":"/apis/vehicles/vehicle-api/vehicle","routeSlug":"/apis/vehicles/vehicle-api/vehicle","items":[{"label":"Get cursor-based vehicle","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/vehicles/vehicle-api/vehicle/getpagedvehicles","routeSlug":"/apis/vehicles/vehicle-api/vehicle/getpagedvehicles","metadata":{"seo":{"title":"Get cursor-based vehicle","description":"Retrieve vehicle in bulk using cursor-based paging (see the Cursor-based pagination documentation on the PTV Developer Portal)."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getPagedVehicles","name":"Get cursor-based vehicle","isWebhook":false,"pointer":"/paths/~1vehicles/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get cursor-based vehicle","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":"Retrieve vehicle in bulk using cursor-based paging (see the Cursor-based pagination documentation on the PTV Developer Portal).\n"},{"nodeType":"security","requirements":[{"schemes":[{"name":"clientCredentials","scopes":[],"type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"query","label":"Query","labelTranslationKey":"query","parameters":[{"name":"cursor","in":"query","schemaId":"schema_87","description":"The cursor of the page to return. No cursor is expected for the initial request. The cursors returned by this endpoint can be used for subsequent requests.\n"},{"name":"limit","in":"query","schemaId":"schema_88","description":"Number of results to return per page.\n"}],"pointer":"/paths/~1vehicles/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/vehicles","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"parameters":{"path":[],"query":[{"name":"cursor","in":"query","required":false,"schemaId":"schema_87"},{"name":"limit","in":"query","required":false,"schemaId":"schema_88"}],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"clientCredentials","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200","400","401"],"pointer":"/vehicles","href":"vehicle/getpagedvehicles","openApiOperationId":"getPagedVehicles","summary":"Get cursor-based vehicle"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"The results for the current paged request and optional pointers to related result pages.","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPagedVehicles"}},"schemaId":"components/schemas/CursorPagedVehicles"},{"code":"400","description":"Bad request","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}},"schemaId":"components/schemas/ProblemWithViolations"},{"code":"401","description":"Authentication required"}],"pointer":"/paths/~1vehicles/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/CursorPagedVehicles","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/CursorPagedVehicles"}}},{"code":"400","schemaId":"components/schemas/ProblemWithViolations","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}}},{"code":"401"}],"examples":[]}]}]}]},"httpPath":"/vehicles"},{"label":"Upsert Vehicle","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/vehicles/vehicle-api/vehicle/upsertvehicle","routeSlug":"/apis/vehicles/vehicle-api/vehicle/upsertvehicle","metadata":{"seo":{"title":"Upsert Vehicle","description":"Create or update a Vehicle. A unique ID is required to identify the Vehicle.Calling this endpoint with an existing id will update the Vehicle."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"upsertVehicle","name":"Upsert Vehicle","isWebhook":false,"pointer":"/paths/~1vehicles~1{id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Upsert Vehicle","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":"Create or update a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". A unique ID is required to identify the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Calling this endpoint with an existing "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" will update the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Modifying (or retrieving) a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" will provide the caller with a version number for this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This version can be passed to the "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"_"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"upsert"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" endpoint as a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"_"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"weak ETag"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"If-Match"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" header."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This allows the caller to ensure that the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" has not been modified since the last time it was retrieved."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"clientCredentials","scopes":[],"type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_89","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique identifier for this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Should only contain characters which do not need URL encoding."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1vehicles~1{id}/put/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"Prefer","in":"header","schemaId":"schema_90","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The RFC7240 Prefer header indicates that a particular server behavior"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"is preferred by the client but is not required for successful completion"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"of the request (see "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"https://tools.ietf.org/html/rfc7240"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"RFC 7240"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The following behavior (see "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"_"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Examples"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") is supported by this API:"},"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":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"return=<minimal|representation>"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is used to suggest the server to"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"return using 204 without resource (minimal) or using 200 or 201 with"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"resource (representation) in the response body on success."},"children":[]}]}]}]}],"examples":{"minimal":{"description":"Indicate no response is needed, can be omitted","value":"[\"return=minimal\"]"},"representation":{"description":"Request the result of the operation as response","value":"[\"return=representation\"]"}}},{"name":"If-Match","in":"header","schemaId":"schema_91","description":"Weak Etag used for optimistic locking."}],"pointer":"/paths/~1vehicles~1{id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"schemaId":"components/schemas/Vehicle","pointer":"/paths/~1vehicles~1{id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/vehicles/{id}","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_89"}],"query":[],"querystring":[],"header":[{"name":"Prefer","in":"header","example":["return=minimal"],"schemaId":"schema_90"},{"name":"If-Match","in":"header","example":"W/\"24\"","schemaId":"schema_91"}],"cookie":[]},"security":[{"schemes":[{"id":"clientCredentials","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"responseCodes":["200","201","204","400","401","404","409","412"],"pointer":"/vehicles/{id}","href":"vehicle/upsertvehicle","openApiOperationId":"upsertVehicle","summary":"Upsert Vehicle"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"schemaId":"components/schemas/Vehicle","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Vehicle updated","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"schemaId":"components/schemas/Vehicle","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Preference-Applied":{"$ref":"#/components/headers/Preference-Applied"},"Location":{"$ref":"#/components/headers/Location"}},"headerSchemaId":"schema_92"},{"code":"201","description":"Vehicle created","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"schemaId":"components/schemas/Vehicle","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Preference-Applied":{"$ref":"#/components/headers/Preference-Applied"},"Location":{"$ref":"#/components/headers/Location"}},"headerSchemaId":"schema_92"},{"code":"204","description":"Vehicle updated","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Preference-Applied":{"$ref":"#/components/headers/Preference-Applied"},"Location":{"$ref":"#/components/headers/Location"}},"headerSchemaId":"schema_92"},{"code":"400","description":"Bad request","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}},"schemaId":"components/schemas/ProblemWithViolations"},{"code":"401","description":"Authentication required"},{"code":"404","description":"Not found","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"},{"code":"409","description":"Conflict","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"},{"code":"412","description":"This status is returned when an trying to modify an entity with an outdated version in the If-Match header.\n","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"}],"pointer":"/paths/~1vehicles~1{id}/put/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Vehicle","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}}},{"code":"201","schemaId":"components/schemas/Vehicle","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}}},{"code":"204"},{"code":"400","schemaId":"components/schemas/ProblemWithViolations","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}}},{"code":"401"},{"code":"404","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}},{"code":"409","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}},{"code":"412","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}}],"examples":[]}]}]}]},"httpPath":"/vehicles/{id}"},{"label":"Get Vehicle","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/vehicles/vehicle-api/vehicle/getvehicle","routeSlug":"/apis/vehicles/vehicle-api/vehicle/getvehicle","metadata":{"seo":{"title":"Get Vehicle","description":"Get an existing Vehicle, defined by their id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getVehicle","name":"Get Vehicle","isWebhook":false,"pointer":"/paths/~1vehicles~1{id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get Vehicle","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 an existing Vehicle, defined by their "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"clientCredentials","scopes":[],"type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_89","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The unique ID used to create this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"required":true}],"pointer":"/paths/~1vehicles~1{id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/vehicles/{id}","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_89"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"clientCredentials","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200","401","404"],"pointer":"/vehicles/{id}","href":"vehicle/getvehicle","openApiOperationId":"getVehicle","summary":"Get Vehicle"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" was successfully retrieved. Details are in the response body."},"children":[]}]}]}],"mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}},"schemaId":"components/schemas/Vehicle","headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"headerSchemaId":"schema_93"},{"code":"401","description":"Authentication required"},{"code":"404","description":"Not found","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"}],"pointer":"/paths/~1vehicles~1{id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/Vehicle","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/Vehicle"}}},{"code":"401"},{"code":"404","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}}],"examples":[]}]}]}]},"httpPath":"/vehicles/{id}"},{"label":"Delete Vehicle","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/apis/vehicles/vehicle-api/vehicle/deletevehicle","routeSlug":"/apis/vehicles/vehicle-api/vehicle/deletevehicle","metadata":{"seo":{"title":"Delete Vehicle","description":"Delete a Vehicle, defined by their id."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteVehicle","name":"Delete Vehicle","isWebhook":false,"pointer":"/paths/~1vehicles~1{id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete Vehicle","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":"Delete a Vehicle, defined by their "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"clientCredentials","scopes":[],"type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"id","in":"path","schemaId":"schema_89","description":"A unique identifier of an entity instance.","required":true}],"pointer":"/paths/~1vehicles~1{id}/delete/parameters"},{"nodeType":"item-content","variant":"headers","label":"Headers","labelTranslationKey":"header","parameters":[{"name":"If-Match","in":"header","schemaId":"schema_91","description":"Weak Etag used for optimistic locking."}],"pointer":"/paths/~1vehicles~1{id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/vehicles/{id}","servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"parameters":{"path":[{"name":"id","in":"path","required":true,"schemaId":"schema_89"}],"query":[],"querystring":[],"header":[{"name":"If-Match","in":"header","example":"W/\"24\"","schemaId":"schema_91"}],"cookie":[]},"security":[{"schemes":[{"id":"clientCredentials","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["204","400","401","404","412"],"pointer":"/vehicles/{id}","href":"vehicle/deletevehicle","openApiOperationId":"deleteVehicle","summary":"Delete Vehicle"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","description":"Mock server","isMockServer":true},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Deletion has succeeded and body is empty.\n"},{"code":"400","description":"Bad request","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}},"schemaId":"components/schemas/ProblemWithViolations"},{"code":"401","description":"Authentication required"},{"code":"404","description":"Not found","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"},{"code":"412","description":"This status is returned when an trying to modify an entity with an outdated version in the If-Match header.\n","mediaType":"application/problem+json","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}},"schemaId":"components/schemas/Problem"}],"pointer":"/paths/~1vehicles~1{id}/delete/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"204"},{"code":"400","schemaId":"components/schemas/ProblemWithViolations","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/ProblemWithViolations"}}},{"code":"401"},{"code":"404","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}},{"code":"412","schemaId":"components/schemas/Problem","mediaTypes":["application/problem+json"],"mediaTypeContent":{"application/problem+json":{"schemaId":"components/schemas/Problem"}}}],"examples":[]}]}]}]},"httpPath":"/vehicles/{id}"}],"content":{"contentType":"group","meta":{"name":"vehicle"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Vehicle","showPageActions":true},{"nodeType":"markdoc","content":"Endpoints for managing vehicles."}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/vehicles","summary":"Get cursor-based vehicle","prefix":{"name":"get","color":"get"},"badges":[],"link":"/vehicle/getpagedvehicles","deprecated":false},{"title":"/vehicles/{id}","summary":"Upsert Vehicle","prefix":{"name":"put","color":"put"},"badges":[],"link":"/vehicle/upsertvehicle","deprecated":false},{"title":"/vehicles/{id}","summary":"Get Vehicle","prefix":{"name":"get","color":"get"},"badges":[],"link":"/vehicle/getvehicle","deprecated":false},{"title":"/vehicles/{id}","summary":"Delete Vehicle","prefix":{"name":"delete","color":"delete"},"badges":[],"link":"/vehicle/deletevehicle","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/CursorPagedVehicles":{"id":"components/schemas/CursorPagedVehicles","kind":"json-schema","title":"CursorPagedVehicles","data":{"type":"object","properties":{"data":{"type":"array","description":"The set of results for the current page.\n","items":{"allOf":[{"$ref":"#/components/schemas/Vehicle"},{"type":"object","properties":{"etag":{"type":"string","example":"W/\"25\""}}}]}},"cursors":{"$ref":"#/components/schemas/Cursors"}}}},"components/schemas/Cursors":{"id":"components/schemas/Cursors","kind":"json-schema","title":"Cursors","data":{"type":"object","description":"Pointer(s) to related result pages.","properties":{"next":{"type":"string","description":"Pointer to the next page of results."}}}},"components/schemas/Vehicle":{"id":"components/schemas/Vehicle","kind":"json-schema","title":"Vehicle","data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9.~\\-_]+$","maxLength":512,"readOnly":true,"example":"truck-42","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unique identifier for this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Vehicle"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"description":{"type":"string","minLength":1,"maxLength":999,"example":"Horn plays La Cucaracha - use sparingly in residential areas","description":"Description of the vehicle.\n"},"mandatory":{"type":"boolean","default":false,"example":true,"description":"Whether OptiFlow must use this vehicle in a planning or not. If false, OptiFlow will only use this vehicle when it makes sense to do so.\n"},"driver":{"$ref":"#/components/schemas/Driver"},"start":{"$ref":"#/components/schemas/Start"},"end":{"$ref":"#/components/schemas/End"},"deployability":{"$ref":"#/components/schemas/Deployability"},"capabilities":{"type":"array","uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":999},"default":[],"example":["refrigerated","hazmat"],"description":"Capabilities this vehicle provides.\nUsed to make sure that orders requiring a specific capability, are only handled by vehicles with that capability.\nNote: if a capability contains a dash, it will be split into two capabilities upon exporting and re-importing the vehicle set in PTV OptiFlow Route Optimization.\n"},"transport_resource":{"$ref":"#/components/schemas/TransportResource"},"labels":{"type":"array","uniqueItems":true,"items":{"type":"string"},"default":[],"example":["priority","express"],"description":"Labels for categorizing vehicles. Can be used for facility filtering or defining constraints.\nNote: if a label contains a dash, it will be split into two labels upon exporting and re-importing the vehicle set in PTV OptiFlow Route Optimization.\n"},"cost":{"$ref":"#/components/schemas/Cost"},"route_settings":{"$ref":"#/components/schemas/RouteSettings"},"color":{"type":"string","example":"#FF5733","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The color used to display this vehicle's route in the planning overview."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Accepts CSS color names (e.g., \"red\", \"blue\") or hexadecimal color codes (e.g., \"#FF5733\", \"#123DEF\")."},"children":[]}]}]}]},"break_rule_group":{"type":"string","example":"BELGIUM-LEGAL","description":"Break Rule group for this vehicle. Allows bulk assignment of break rules to all vehicles in the group during planning.\n"},"plan_group":{"type":"string","example":"PLAN-GROUP-1","description":"Plan group for this vehicle. Can be used for filtering.\n"},"battery":{"$ref":"#/components/schemas/Battery"}},"required":["start","end","deployability"]}},"components/schemas/Battery":{"id":"components/schemas/Battery","kind":"json-schema","title":"Battery","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"span","attrs":{"style":{"backgroundColor":"orange","color":"white","padding":"4px 8px","borderRadius":"5px","fontSize":"12px","fontWeight":"bold"}}},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Early Access"},"children":[]}]}]}]}],"properties":{"capacity":{"type":"integer","minimum":1,"maximum":10000,"description":"Battery capacity in kWh."},"consumption":{"$ref":"#/components/schemas/Consumption"},"state_of_charge":{"$ref":"#/components/schemas/StateOfCharge"}},"required":["capacity","consumption"]}},"components/schemas/Consumption":{"id":"components/schemas/Consumption","kind":"json-schema","title":"Consumption","data":{"type":"object","properties":{"per_hundred_kilometers":{"type":"number","format":"double","exclusiveMinimum":0,"maximum":1000,"multipleOf":0.1,"description":"Battery consumption per 100 km in kWh."}},"required":["per_hundred_kilometers"]}},"components/schemas/StateOfCharge":{"id":"components/schemas/StateOfCharge","kind":"json-schema","title":"StateOfCharge","data":{"type":"object","properties":{"initial":{"type":"number","format":"double","minimum":0,"maximum":1,"multipleOf":0.001,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The initial battery energy level as a fraction of total capacity (0.0 = empty, 1.0 = fully charged)."},"children":[]}]}]}]},"minimum":{"type":"number","format":"double","minimum":0,"maximum":1,"multipleOf":0.001,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The minimum allowed battery energy level as a fraction of total capacity (0.0 = empty, 1.0 = fully charged)."},"children":[]}]}]}]}}}},"components/schemas/Driver":{"id":"components/schemas/Driver","kind":"json-schema","title":"Driver","data":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":999,"example":"John Doe","description":"Name of the driver.\n"},"efficiency_factor":{"type":"number","format":"double","default":1,"minimum":0.01,"maximum":2,"example":1.2,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Factor applied to service times and location stop times. A value of 1.0 (the default) does not alter the timings. Values < 1.0 increase the timings (lower efficiency), values > 1.0 decrease the timings (higher efficiency)."},"children":[]}]}]}]},"custom_data":{"$ref":"#/components/schemas/CustomData"}}}},"components/schemas/Start":{"id":"components/schemas/Start","kind":"json-schema","title":"Start","data":{"type":"object","properties":{"location":{"$ref":"#/components/schemas/StartLocation"},"service_time":{"type":"string","default":"PT0S","example":"PT20M","description":"Service time at the start location, formatted as ISO-8601 duration.\n"},"orders_to_deliver_available":{"type":"boolean","default":false,"example":true,"description":"Indicates whether the orders to deliver are already available at the start location.\n\nWhen true, the vehicle can begin deliveries immediately.\n\nWhen false, the vehicle must first drive to a depot to pick up orders before it can start delivering.\n\nNote: When the planning is a multi-tour VRP planning, only the orders to deliver on the first sub-tour are available at the start location.\n"}},"required":["location"]}},"components/schemas/StartLocation":{"id":"components/schemas/StartLocation","kind":"json-schema","title":"StartLocation","data":{"type":"object","properties":{"address":{"$ref":"#/components/schemas/Address"},"at_first_activity":{"type":"boolean","description":"When true, the vehicle starts at the location of its first activity.\n","example":false}}}},"components/schemas/End":{"id":"components/schemas/End","kind":"json-schema","title":"End","data":{"type":"object","properties":{"location":{"$ref":"#/components/schemas/EndLocation"},"service_time":{"type":"string","default":"PT0S","example":"PT15M","description":"Service time at the end location, formatted as ISO-8601 duration.\n"},"allow_picked_up_orders":{"type":"boolean","default":false,"example":true,"description":"Indicates whether the vehicle can end its route with picked-up orders still on board.\n\nWhen true, the vehicle can drive directly to the end location with picked-up orders remaining on board.\n\nWhen false, the vehicle must visit a depot to unload all picked-up orders before driving to the end location.\n"}},"required":["location"]}},"components/schemas/EndLocation":{"id":"components/schemas/EndLocation","kind":"json-schema","title":"EndLocation","data":{"type":"object","description":"End location for the vehicle. Only one of the properties should be set.\n","properties":{"address":{"$ref":"#/components/schemas/Address","description":"The address where the vehicle should end.\n"},"at_last_activity":{"type":"boolean","description":"When true, the vehicle ends at the location of its last activity.\n","example":false},"same_as_start":{"type":"boolean","description":"When true, the vehicle returns to its start location.\n","example":false}}}},"components/schemas/Address":{"id":"components/schemas/Address","kind":"json-schema","title":"Address","data":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-zA-Z0-9.~\\-_]+$","maxLength":512,"example":"50.9514048-3.8067878","description":"Unique identifier for this address.\n"},"name":{"type":"string","example":"The office","description":"Human-readable name for the location.\n"},"address_line":{"type":"string","example":"Voordries 41","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The part of the address that includes the street name, house number, bus number etc. Required when omitting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geo_point"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"city":{"type":"string","example":"Oosterzele","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"City name. Required when omitting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geo_point"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"zip_code":{"type":"string","example":"9860","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Postal code. Required when omitting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geo_point"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"country_code":{"$ref":"#/components/schemas/CountryCode"},"geo_point":{"$ref":"#/components/schemas/GeoPoint"}},"required":["id"]}},"components/schemas/Deployability":{"id":"components/schemas/Deployability","kind":"json-schema","title":"Deployability","data":{"type":"object","properties":{"window":{"$ref":"#/components/schemas/DeployabilityWindow"},"duration":{"$ref":"#/components/schemas/DeployabilityDuration"}},"required":["window"]}},"components/schemas/DeployabilityWindow":{"id":"components/schemas/DeployabilityWindow","kind":"json-schema","title":"DeployabilityWindow","data":{"type":"object","properties":{"start":{"$ref":"#/components/schemas/DeployabilityWindowStart"},"end":{"$ref":"#/components/schemas/DeployabilityWindowEnd"}},"required":["start","end"]}},"components/schemas/DeployabilityWindowStart":{"id":"components/schemas/DeployabilityWindowStart","kind":"json-schema","title":"DeployabilityWindowStart","data":{"type":"object","properties":{"earliest":{"type":"string","format":"date-time","example":"2025-01-01T08:00:00Z","description":"Earliest time the vehicle can start.\n"},"latest":{"type":"string","format":"date-time","example":"2025-01-01T10:00:00Z","description":"Latest time the vehicle can start.\n"}},"required":["earliest"]}},"components/schemas/DeployabilityWindowEnd":{"id":"components/schemas/DeployabilityWindowEnd","kind":"json-schema","title":"DeployabilityWindowEnd","data":{"type":"object","properties":{"latest":{"type":"string","format":"date-time","example":"2025-01-01T18:00:00Z","description":"Latest time the vehicle must end.\n"}},"required":["latest"]}},"components/schemas/DeployabilityDuration":{"id":"components/schemas/DeployabilityDuration","kind":"json-schema","title":"DeployabilityDuration","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"When specified, one of both durations must be > PT0S"},"children":[]}]}]}],"properties":{"at_most_without_overtime":{"type":"string","example":"PT8H","description":"Maximum deployment duration, without overtime, formatted as ISO-8601 duration.\n"},"allowed_overtime":{"type":"string","example":"PT2H","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Additional overtime allowed, formatted as ISO-8601 duration. When specified and > PT0S, the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"overtime_per_hour"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" cost must also be provided."},"children":[]}]}]}]}},"required":["at_most_without_overtime","allowed_overtime"]}},"components/schemas/TransportResource":{"id":"components/schemas/TransportResource","kind":"json-schema","title":"TransportResource","data":{"type":"object","properties":{"license_plate":{"type":"string","minLength":1,"maxLength":99,"example":"1-ABC-234","description":"License plate of the transport resource.\n"},"capacities":{"type":"array","uniqueItems":true,"items":{"$ref":"#/components/schemas/Capacity"},"default":[],"example":[{"type":"weight","value":3500},{"type":"volume","value":25.5}],"description":"Capacity specifications for the transport resource.\n"},"custom_data":{"$ref":"#/components/schemas/CustomData"}}}},"components/schemas/Capacity":{"id":"components/schemas/Capacity","kind":"json-schema","title":"Capacity","data":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/CapacityType"},"value":{"type":"number","format":"double","minimum":0,"example":100,"description":"Capacity value.\n"}},"required":["type","value"]}},"components/schemas/CapacityType":{"id":"components/schemas/CapacityType","kind":"json-schema","title":"CapacityType","data":{"type":"string","enum":["volume","weight","loadingMeters","capacity1","capacity2","capacity3","capacity4","capacity5"],"description":"Type of capacity measurement"}},"components/schemas/Cost":{"id":"components/schemas/Cost","kind":"json-schema","title":"Cost","data":{"type":"object","properties":{"fixed":{"type":"number","format":"double","minimum":0,"default":0,"example":50,"description":"Fixed cost for using this vehicle."},"per_hour":{"type":"number","format":"double","minimum":0,"default":0,"example":25,"description":"Hourly cost applied when this vehicle is in use, including drive time, wait time, and service time."},"per_kilometer":{"type":"number","format":"double","minimum":0,"default":0,"example":0.5,"description":"Cost per kilometer.\n"},"per_stop":{"type":"number","format":"double","minimum":0,"default":0,"example":12,"deprecated":true,"description":"Cost per stop this vehicle makes. Note that stops at depots or breaks are not considered as separate stops.\nDeprecated in favor of vehicle stop rule sets in plan profiles.\n"},"overtime_per_hour":{"type":"number","format":"double","exclusiveMinimum":0,"example":30,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Cost per hour overtime. When specified, the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"deployability"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" durations must also be provided and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"allowed_overtime"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" must be > PT0S."},"children":[]}]}]}]}}}},"components/schemas/RouteSettings":{"id":"components/schemas/RouteSettings","kind":"json-schema","title":"RouteSettings","data":{"type":"object","properties":{"routing_group":{"type":"string","example":"medium-truck","description":"Routing group for this vehicle. Allows bulk assignment of routing profiles to all vehicles in the group during planning.\n"},"max_distance_in_kilometers":{"type":"number","format":"double","exclusiveMinimum":0,"example":450,"description":"Maximum total distance for this vehicle's route, calculated as the sum of all subtour distances.\n"},"max_stops":{"type":"integer","minimum":1,"example":10,"deprecated":true,"description":"Maximum number of stops allowed per route for this vehicle. Deprecated in favor of vehicle stop rule sets in plan profiles.\n"},"driving_speed_factor":{"type":"number","format":"double","exclusiveMinimum":0,"maximum":2,"default":1,"example":1.5,"description":"Multiplier applied to this vehicle's default speed.\n"},"preferred_route_duration":{"$ref":"#/components/schemas/PreferredRouteDuration"}}}},"components/schemas/PreferredRouteDuration":{"id":"components/schemas/PreferredRouteDuration","kind":"json-schema","title":"PreferredRouteDuration","data":{"type":"object","properties":{"duration":{"type":"string","example":"PT8H","description":"The preferred duration of the route assigned to the vehicle.\nIf omitted, the preferred route duration of this vehicle is the average route duration.\n"},"importance":{"type":"number","format":"double","minimum":0,"maximum":1,"example":0.5,"description":"A scale between 0 and 1 resembling a tradeoff between minimizing the total hour cost and steering towards the preferred duration of the vehicle.\nHigher values indicate a stronger preference for a route duration close to the preferred one.\nAs the cost per hour increases, the influence of this tradeoff becomes more significant.\n"}},"required":["importance"]}},"components/schemas/GeoPoint":{"id":"components/schemas/GeoPoint","kind":"json-schema","title":"GeoPoint","data":{"properties":{"latitude":{"type":"number","format":"double","example":50.9514048,"minimum":-90,"maximum":90},"longitude":{"type":"number","format":"double","example":3.8067878,"minimum":-180,"maximum":180},"resolved":{"readOnly":true,"type":"object","description":"Geocoding resolution information.","properties":{"geocoded":{"type":"boolean","description":"Indicates if the provided address was geocoded or not.\nGeocoding only happens when the provided address does not yet have a geo-point.\n","example":true},"address":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The address that matches the resolved geo-point. Only present when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geocoded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"example":"Voordries 41, 9860 Oosterzele"},"precision":{"type":"integer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Geocoding confidence score from 0-10."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"10 indicates 100% confidence that the coordinates match the provided address. 0 indicates no confidence in the match."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Only present when "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geocoded"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"true"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"minimum":0,"maximum":10,"example":9}}}},"required":["latitude","longitude"]}},"components/schemas/CountryCode":{"id":"components/schemas/CountryCode","kind":"json-schema","title":"CountryCode","data":{"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A ISO3166-1 alpha-2 two letter country code. Required when omitting "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"geo_point"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}],"type":"string","pattern":"^[A-Z]{2}$","example":"BE"}},"components/schemas/CustomData":{"id":"components/schemas/CustomData","kind":"json-schema","title":"CustomData","data":{"title":"CustomData","description":"Custom key-value pairs for client usage.\nThese values have no meaning in the context of OptiFlow, but can be used to enrich the data with relevant information for the end users.\n\nKeys should not be blank nor contain periods.\nKeys with null values are not retained (same as omitting the key). Use an empty string (\"\") to retain keys without a concrete value.\n","additionalProperties":{"type":"string"},"default":{},"example":{"something":"customer specific"}}},"components/schemas/Problem":{"id":"components/schemas/Problem","kind":"json-schema","title":"Problem","data":{"type":"object","properties":{"title":{"type":"string","example":"Validation exception","description":"A short, summary of the problem."},"detail":{"type":"string","description":"A detailed explanation specific to this problem.","example":"The field contains invalid business formatting."}}}},"components/schemas/ProblemWithViolations":{"id":"components/schemas/ProblemWithViolations","kind":"json-schema","title":"ProblemWithViolations","data":{"allOf":[{"$ref":"#/components/schemas/Problem"},{"type":"object","properties":{"violations":{"type":"array","items":{"$ref":"#/components/schemas/Violation"}}}}]}},"components/schemas/Violation":{"id":"components/schemas/Violation","kind":"json-schema","title":"Violation","data":{"type":"object","properties":{"field":{"type":"string","example":"path.to.field"},"message":{"type":"string","example":"Field is required"}}}},"schema_87":{"kind":"json-schema","data":{"type":"string"},"id":"schema_87"},"schema_88":{"kind":"json-schema","data":{"type":"integer","minimum":1,"maximum":1000,"default":100},"id":"schema_88"},"schema_89":{"kind":"json-schema","data":{"type":"string","pattern":"^[a-zA-Z0-9.~\\-_]+$","maxLength":512},"id":"schema_89"},"schema_90":{"kind":"json-schema","data":{"type":"array","items":{"type":"string"}},"id":"schema_90"},"schema_91":{"kind":"json-schema","data":{"type":"string","example":"W/\"24\""},"id":"schema_91"},"schema_92":{"kind":"json-schema","data":{"type":"object","properties":{"ETag":{"type":"string","example":"W/\"25\"","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A weak Etag (ex "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"W/\"<etag_value>\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") which contains the current version of the entity"},"children":[]}]}]}]},"Preference-Applied":{"type":"string","example":"return=representation","description":"Indicates whether a preference has been applied."},"Location":{"type":"string","format":"URI","description":"A URI to access the result of the operation."}}},"id":"schema_92"},"schema_93":{"kind":"json-schema","data":{"type":"object","properties":{"ETag":{"type":"string","example":"W/\"25\"","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A weak Etag (ex "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"W/\"<etag_value>\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":") which contains the current version of the entity"},"children":[]}]}]}]}}},"id":"schema_93"}},"exampleStore":{"paths/~1ping/get/responses/200/content/text~1plain/example":{"value":"pong","id":"paths/~1ping/get/responses/200/content/text~1plain/example"}},"securitySchemeStore":{"clientCredentials":{"id":"clientCredentials","type":"oauth2","description":"This API uses OAuth2 with the Client Credentials flow for M2M communication. Client ID ans secret should be provided as a HTTP Basic Auth header.\n","flows":{"clientCredentials":{"tokenUrl":"https://auth.conundra.eu/auth/realms/prod/protocol/openid-connect/token","scopes":{}}}}},"servers":[{"url":"/_mock/apis/vehicles/vehicle-api","isMockServer":true,"description":"Mock server"},{"url":"https://api.conundra.eu/vehicle/v1","description":"Vehicle API Production"}]},"options":{"codeSamples":{"languages":[]},"hidePropertiesPrefix":true,"feedback":{"hide":true,"settings":{"label":""}},"hideSidebar":true,"mockServer":{"url":"/_mock/apis/vehicles/vehicle-api","position":"first","description":"Mock server"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/apis/vehicles/vehicle-api.json?download"},{"url":"/_bundle/apis/vehicles/vehicle-api.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"PTV OptiFlow Vehicle API","description":"The Vehicle API provides endpoints for managing vehicles used in planning operations.\n"}},"baseSlug":"/apis/vehicles/vehicle-api","routesMapping":{}}