Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/kardinal-plan-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Kardinal ARO Plan API
version: 2.55.0
description: This document specifies the REST API of Kardinal ARO v2.
contact:
url: https://kardinal.ai/
email: contact@kardinal.ai
servers:
- url: /api/v2
security:
- access_token: []
tags:
- name: Plan
description: How to create, retrieve, update and delete plans.
paths:
/agencies/{agencyId}/plans:
parameters:
- $ref: '#/components/parameters/agencyId'
get:
summary: Retrieves a collection of plans
description: 'At the moment, retrieving a collection of plans is not paginated by default.
The paging is performed when at least one of the paging query parameters (`page` or `itemsPerPage`) is
present with a valid value.
The default values are used like this:
- if `page` is present and `itemsPerPage` is absent, the paging is performed with a default value for `itemsPerPage`,
- if `itemsPerPage` is present and `page` is absent, the paging is performed with a default value for `page`,
- but if both `page` and `itemsPerPage` are absent, no paging is performed.
'
operationId: getPlans
tags:
- Plan
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/itemsPerPage'
- $ref: '#/components/parameters/archived'
responses:
'200':
description: Plan collection response in a light representation.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlansLight'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Retrieve a plan
operationId: getPlan
tags:
- Plan
parameters:
- $ref: '#/components/parameters/planMode'
responses:
'200':
description: Plan response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlan'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
put:
summary: Create or update a plan
operationId: putPlan
tags:
- Plan
parameters:
- $ref: '#/components/parameters/force'
requestBody:
description: The Plan to update.
content:
application/json:
schema:
$ref: '#/components/schemas/Plan'
responses:
'200':
description: Plan response updated.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlan'
'201':
description: Plan response created.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlan'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
delete:
summary: Delete a plan
operationId: deletePlan
tags:
- Plan
responses:
'204':
description: Plan is deleted and no content is returned.
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/running:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
put:
summary: Stop or restart the optimization of a plan
operationId: putPlanRunning
tags:
- Plan
parameters:
- $ref: '#/components/parameters/force'
requestBody:
description: 'A boolean value: false will stop the optimization, true will restart the optimization.'
content:
application/json:
schema:
type: boolean
example: false
responses:
'200':
description: The request succeeded.
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/solution:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Retrieve a plan solution
operationId: getPlanSolution
tags:
- Plan
responses:
'200':
description: Solution response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedSolution'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/solution/objectives:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Retrieve the objectives of a plan solution
operationId: getPlanSolutionObjectives
tags:
- Plan
responses:
'200':
description: Solution objectives response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedSolutionObjectives'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/state:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Fetch the latest state of a plan
operationId: fetchLastPlanState
tags:
- Plan
responses:
'200':
description: Latest plan state.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedTimedPlanState'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/states:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
- $ref: '#/components/parameters/limit'
get:
summary: Fetch the latest states of a plan
operationId: fetchLastNPlanStates
tags:
- Plan
responses:
'200':
description: Latest plan states.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedTimedPlanStates'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/status:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Retrieve a plan status
operationId: getPlanStatus
tags:
- Plan
responses:
'200':
description: Plan status response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlanStatus'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/mode:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
put:
summary: Changes a plan's mode
description: 'By default, a plan is in "standard" mode: the solution is entirely built by the OR algorithms, following the various plan constraints.
It is possible to switch the plan in "manual" mode: in this mode, the user can force some assignments which may violate some constraints.
'
operationId: putPlanMode
tags:
- Plan
parameters:
- $ref: '#/components/parameters/force'
requestBody:
description: The mode to set.
content:
application/json:
schema:
$ref: '#/components/schemas/PlanMode'
responses:
'200':
description: Plan mode response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedPlanMode'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/agencies/{agencyId}/plans/{planId}/manual/check:
parameters:
- $ref: '#/components/parameters/agencyId'
- $ref: '#/components/parameters/planId'
get:
summary: Check if a plan is in manual mode
operationId: checkPlanManualMode
tags:
- Plan
responses:
'200':
description: Check response.
content:
application/json:
schema:
$ref: '#/components/schemas/EnvelopedBoolResponse'
'401':
$ref: '#/components/responses/NotAuthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
WayPointBegin:
type: object
properties:
type:
type: string
enum:
- begin
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
position:
$ref: '#/components/schemas/Position'
status:
example: fixed
allOf:
- $ref: '#/components/schemas/WayPointStatus'
departureTime:
$ref: '#/components/schemas/DateTime'
violations:
type: array
items:
$ref: '#/components/schemas/WaypointViolation'
description: List of the Waypoint's violations.
fromPrevious:
$ref: '#/components/schemas/FromPrevious'
required:
- type
- position
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
CountryCodes:
type: array
items:
$ref: '#/components/schemas/CountryCode'
example:
- Switzerland
- BE
- ITA
OrderViolation:
type: object
description: Violation of a order's stops constraint.
properties:
type:
type: string
enum:
- order
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
expectedOrderedStopIds:
description: The stop ids in the expected order.
type: array
items:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
missedStopIds:
description: The stop ids missing from the tour.
type: array
items:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
badlyOrderedStopIds:
description: The stop ids badly ordered in the tour.
type: array
items:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
required:
- type
- expectedOrderedStopIds
MaxInterStopDurationViolation:
type: object
description: Violation of a resource's MaxInterStopDuration constraint.
properties:
type:
type: string
enum:
- maxInterStopDuration
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
wayPointIndex:
type: integer
description: The idx of the waypoint the violation applies to.
example: 0
maxInterStopDuration:
description: The expected maximum inter-stop duration.
allOf:
- $ref: '#/components/schemas/Duration'
exceededDuration:
description: The inter-stop duration that exceeds the maximum duration.
allOf:
- $ref: '#/components/schemas/Duration'
required:
- type
- maxInterStopDuration
- exceededDuration
EnvelopedTimedPlanStates:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/TimedPlanState'
agencyId:
$ref: '#/components/schemas/AgencyId'
planId:
$ref: '#/components/schemas/PlanId'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
Duration:
type: string
description: A period of time, expressed in the ISO8601 **duration** format.
pattern: ^P(\d+Y)?(\d+M)?(\d+W)?(\d+D)?(T(\d+H)?(\d+M)?(\d+S)?)?$
example: PT4M
EnvelopedErrors:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
AdditionalConstraintCapacities:
type: object
description: This constraint is valid if all the capacities are satisfied.
properties:
type:
type: string
enum:
- capacities
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
name:
type: string
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
capacities:
$ref: '#/components/schemas/Capacities'
resourceTag:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
required:
- type
- capacities
- resourceTag
AdditionalConstraintMaxStopTagGroups:
type: object
description: If the tour has stops whose stopTags constitute too many groups, then the tour is invalid.
properties:
type:
type: string
enum:
- maxStopTagGroups
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
name:
type: string
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
resourceTags:
type: array
items:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
example:
- subcontractorA
- subcontractorB
maxGroupsByStopTag:
$ref: '#/components/schemas/MaxGroupsByStopTag'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
required:
- type
- maxGroupsByStopTag
AuthorizedTimeWindowViolation:
type: object
description: Violation of a stop's TimeWindow constraint.
properties:
type:
type: string
enum:
- authorizedTimeWindow
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
wayPointIndex:
type: integer
description: The idx of the waypoint the violation applies to.
example: 0
forbiddenWindow:
description: The violated forbidden window.
allOf:
- $ref: '#/components/schemas/TimeWindow'
actualTime:
description: The time at which the waypoint is actually executed.
allOf:
- $ref: '#/components/schemas/DateTime'
required:
- type
- forbiddenWindow
- actualTime
PlanMode:
type: string
enum:
- standard
- manual
default: standard
example: standard
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
EnvelopedPlanStatus:
type: object
properties:
item:
$ref: '#/components/schemas/PlanStatus'
agencyId:
$ref: '#/components/schemas/AgencyId'
planId:
$ref: '#/components/schemas/PlanId'
planVersion:
$ref: '#/components/schemas/PlanVersion'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
RegexIdValidation:
type: string
description: 'At least one character among those allowed: unaccented alpha-numeric characters, "-", ".", "_", "~", ":", "@", "!", "$", ",".'
pattern: ^[a-zA-Z0-9-._~:@!$,]+$
ForbiddenAssignmentViolation:
type: object
description: Violation of a ForbiddenAssignment constraint.
properties:
type:
type: string
enum:
- forbiddenAssignment
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
wayPointIndex:
type: integer
description: The idx of the waypoint the violation applies to.
example: 0
forbiddenAssignments:
type: array
items:
$ref: '#/components/schemas/ForbiddenAssignment'
description: The list of forbidden assignments that are violated with the waypoint assigned to the resource.
required:
- type
Properties:
type: object
additionalProperties:
type: string
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
PlanObjectives:
type: array
items:
oneOf:
- $ref: '#/components/schemas/ObjectivesEnum'
- $ref: '#/components/schemas/MaximizePrecedencesObjective'
- $ref: '#/components/schemas/CustomObjective'
default:
- maximizeMandatoryStops
- minimizeDelay
- minimizeCosts
- minimizeResources
- minimizeOverOverlappingCapacitiesOnStops
- maximizeOptionalStops
- maximizePreferredStops
- minimizeWorkingDuration
- minimizeDistance
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
WayPointStop:
type: object
properties:
type:
type: string
enum:
- stop
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
stopId:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
position:
$ref: '#/components/schemas/Position'
status:
example: optimized
allOf:
- $ref: '#/components/schemas/WayPointStatus'
stopProperties:
$ref: '#/components/schemas/Properties'
orderProperties:
$ref: '#/components/schemas/Properties'
filledCapacitiesAfterStop:
$ref: '#/components/schemas/Capacities'
delay:
description: Delay related to the stop's preferred time windows.
allOf:
- $ref: '#/components/schemas/Duration'
arrivalTime:
$ref: '#/components/schemas/DateTime'
beginTime:
$ref: '#/components/schemas/DateTime'
departureTime:
$ref: '#/components/schemas/DateTime'
violations:
type: array
items:
$ref: '#/components/schemas/WaypointViolation'
description: List of the Waypoint's violations.
fromPrevious:
$ref: '#/components/schemas/FromPrevious'
stopKind:
$ref: '#/components/schemas/StopKind'
required:
- type
- position
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
AdditionalConstraintAtLeastOneConstraint:
type: object
description: If one of the constraint is valid, then the tour is valid.
properties:
type:
type: string
enum:
- atLeastOneConstraint
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
name:
type: string
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
constraints:
type: array
items:
oneOf:
- $ref: '#/components/schemas/AdditionalConstraintAtLeastOneValidCapacity'
- $ref: '#/components/schemas/AdditionalConstraintForbiddenAssignment'
- $ref: '#/components/schemas/AdditionalConstraintIncompatibleStopTags'
- $ref: '#/components/schemas/AdditionalConstraintAtLeastOneConstraint'
- $ref: '#/components/schemas/AdditionalConstraintCapacities'
- $ref: '#/components/schemas/AdditionalConstraintMaxStopTagGroups'
- $ref: '#/components/schemas/AdditionalConstraintRemovalStrategy'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
required:
- type
- constraints
SolutionObjective:
type: object
properties:
name:
type: string
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
priority:
type: integer
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
direction:
$ref: '#/components/schemas/OptimizationDirection'
value:
type: number
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
EnvelopedTimedPlanState:
type: object
properties:
item:
$ref: '#/components/schemas/TimedPlanState'
agencyId:
$ref: '#/components/schemas/AgencyId'
planId:
$ref: '#/components/schemas/PlanId'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
TimeWindow:
type: object
properties:
begin:
$ref: '#/components/schemas/DateTime'
end:
$ref: '#/components/schemas/DateTime'
required:
- begin
- end
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
IncompatibleStopTags:
type: array
description: Incompatibilities between stop tags (all elements must be different regardless of order).
uniqueItems: true
deprecated: true
items:
$ref: '#/components/schemas/StopTagPair'
example:
- - goat
- cabbage
- - wolf
- goat
AlternativesStop:
type: object
description: A stop composed of different alternative single stops.
properties:
id:
allOf:
- $ref: '#/components/schemas/RegexIdValidation'
type:
type: string
enum:
- alternatives
description: Discriminator identifying this as an alternatives stop, as opposed to a single stop.
alternatives:
type: array
items:
allOf:
- $ref: '#/components/schemas/SingleStop'
description: The list of single stops among which the algorithm must choose the best one to visit (for example choosing among multiple charging points or waste disposal sites). Using alternatives can increase optimization time.
required:
- type
- alternatives
EnvelopedSolutionObjectives:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/SolutionObjective'
agencyId:
$ref: '#/components/schemas/AgencyId'
planId:
$ref: '#/components/schemas/PlanId'
planVersion:
$ref: '#/components/schemas/PlanVersion'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
PlanStatus:
type: object
readOnly: true
properties:
planVersionInSolution:
description: The plan version taken into account in the current solution.
allOf:
- $ref: '#/components/schemas/PlanVersion'
waitingRoom:
description: If the maximum number of simultaneous running plans has already been reached, the plan waits in the waiting room for one of the running plans to finish.
allOf:
- $ref: '#/components/schemas/PlanStatusVersion'
waitingTraffic:
description: The plan is waiting for its traffic coefficients to be computed.
allOf:
- $ref: '#/components/schemas/PlanStatusVersion'
creation:
description: The plan is being created in order to be optimized.
allOf:
- $ref: '#/components/schemas/PlanStatusVersion'
optimization:
description: The plan is being optimized.
allOf:
- $ref: '#/components/schemas/PlanStatusVersion'
description: '[TO_VALIDATE] Description pending review by a Kardinal engineer.'
Plan:
type: object
description: A plan for a date and agency, with resource and orders associated.
properties:
id:
$ref: '#/components/schemas/PlanId'
agencyId:
$ref: '#/components/schemas/AgencyId'
version:
$ref: '#/components/schemas/PlanVersion'
running:
type: boolean
description: To know if the plan is running.
readOnly: true
status:
allOf:
- $ref: '#/components/schemas/PlanStatus'
description: The plan's processing status across the optimization pipeline (waiting room, creation, optimization, and traffic-waiting stages), each tracking which plan version is currently waiting and currently running. Poll this field to know when a new solution is ready instead of relying on a push/webhook mechanism. See PlanStatus for the full breakdown of each stage.
state:
allOf:
- $ref: '#/components/schemas/PlanState'
properties:
allOf:
- $ref: '#/components/schemas/Properties'
description: Free-form key-value pairs (strings only) with no impact on optimization. Used to carry integration-specific information (for example an internal reference) that is returned unchanged in the plan and its solution. Can also be set on resources, orders, and stops.
resources:
type: array
items:
$ref: '#/components/schemas/Resource'
description: The list of resources (vehicle/driver pairs) available to fulfill the plan's orders.
nbResources:
type: number
format: integer
minimum: 0
readOnly: true
description: The number of resources in the plan.
orders:
type: array
items:
$ref: '#/components/schemas/Order'
description: The list of orders (sequences of stops) to be planned across the available resources.
nbOrders:
type: number
format: integer
minimum: 0
readOnly: true
description: The number of orders in the plan.
additionalOperationDurations:
type: array
description: Additional operation time for a resource and a stop, according to tags (pairs of tags must be unique).
uniqueItems: true
items:
$ref: '#/components/schemas/AdditionalOperationDuration'
operationDurationPoliciesByResourceTag:
type: object
description: Policies to remove the operation durations, by resource tag.
additionalProperties:
type: array
items:
$ref: '#/components/schemas/OperationDurationPolicy'
forbiddenAssignments:
type: array
uniqueItems: true
deprecated: true
items:
$ref: '#/components/schemas/ForbiddenAssignment'
incompatibleStopTags:
allOf:
- $ref: '#/components/schemas/IncompatibleStopTags'
additionalConstraints:
type: array
items:
oneOf:
- $ref: '#/components/schemas/AdditionalConstraintAtLeastOneValidCapacity'
- $ref: '#/components/schemas/AdditionalConstraintForbiddenAssignment'
- $ref: '#/components/schemas/AdditionalConstraintIncompatibleStopTags'
- $ref: '#/components/schemas/AdditionalConstraintAtLeastOneConstraint'
- $ref: '#/components/schemas/AdditionalConstraintCapacities'
- $ref: '#/components/schemas/AdditionalConstraintMaxStopTagGroups'
- $ref: '#/components/schemas/AdditionalConstraintRemovalStrategy'
description: A list of advanced constraints that go beyond what the standard modeling objects (resources, orders, stops) can express, each identified by a type (for example atLeastOneValidCapacity, forbiddenAssignment, incompatibleStopTags, atLeastOneConstraint, capacities, maxStopTagGroups, or removalStrategy). See the constraints catalog for the full list and their parameters.
globalConstraints:
type: array
description: List of global constraints to be satisfied by the returned solution.
items:
oneOf:
- $ref: '#/components/schemas/GlobalConstraintMaxCumulatedCost'
accessDurationsByStopTag:
type: object
description: Access durations is an additional duration before the beginning of a group of stops with the same stop tag.
additionalProperties:
allOf:
- $ref: '#/components/schemas/Duration'
example:
access:parking33: PT5M
overlappingCapacitiesByStopTag:
type: object
description: This field allows users to define a limit in the number of resources that are simultaneously present at stops sharing the same stop tag.
additionalProperties:
type: integer
example:
capa:bat22: 3
setupDurations:
type: array
items:
$ref: '#/components/schemas/SetupDuration'
description: Defines an additional duration incurred when a resource transitions from a stop tagged fromStopTag to a stop tagged toStopTag (for example customs crossings between countries, or cleaning required between incompatible cargo types), identified by the "setup:" tag convention.
objectives:
allOf:
- $ref: '#/components/schemas/PlanObjectives'
description: 'The ordered list of optimization objectives, processed lexicographically: the algorithm prioritizes improving higher-ranked objectives before lower-ranked ones, so the order should reflect business priorities. Defaults to a sequence that works well for most cases. See ObjectivesEnum for the available objectives.'
maxOptimizationDuration:
allOf:
- $ref: '#/components/schemas/Duration'
tz:
$ref: '#/components/schemas/TimeZone'
createdAt:
description: The plan's creation datetime.
# --- truncated at 32 KB (121 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kardinal/refs/heads/main/openapi/kardinal-plan-api-openapi.yml