A cost cap needs a maximum, and a tag that matches no resource raises a warning
- A
maxCumulatedCostentry inglobalConstraintswithoutmaximumis now rejected with a400INVALID_VALUEerror. Before, the API accepted it and stored amaximumof 0, so the cap allowed no counted cost at all. Addmaximumto any such entry before you send the plan again. - A tag in the
costsByResourceTagof amaxCumulatedCostentry that no resource of the plan carries now raises a warning in the response. The plan is still accepted, and the tag still counts nothing. - See Capping a fleet-wide cost with
maxCumulatedCost.
Truck dimensions are in centimetres
- The API did not change.
height,width, andlengthof atruckprofile have always been whole numbers of centimetres. The reference said metres until this fix.- A whole number in metres, such as
length: 12, is accepted with no error and read as 12 centimetres. Check any truck profile that you wrote from the old reference. See Data model.
Plan listing pagination, running-endpoint response, and payload warnings
GET /plans(light representation) is now always paginated — previously, no paging was applied unlesspageoritemsPerPagewas explicitly set.PUT /plans/{planId}/runningnow returns anEnvelopedPlanReferencebody instead of an empty response.- The light plan representation gains the same metadata fields as the full
Planobject:state,nbResources,nbOrders,createdAt,createdBy,updatedAt,updatedBy,archivedAt. - Several plan and paging fields that were
nullablenow use field absence instead — check for the field’s presence rather than for anullvalue. - New
Warningconcept: non-blocking amendments applied to an accepted payload (traffic turned off, crow-fly forced,maxOptimizationDurationclamped, and so on) are now surfaced on five response envelopes instead of silently applied.
Initial release
First public release of the Kardinal Route Optimization API.

