{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "Field Service Routing",
    "description" : "Assign customer visits to technicians, and route the technicians to those visits, optimizing for increased productivity and reduced travel time.",
    "contact" : {
      "name" : "Timefold BV",
      "url" : "https://timefold.ai",
      "email" : "info@timefold.ai"
    },
    "version" : "v1"
  },
  "servers" : [ {
    "url" : "/api/models/field-service-routing"
  } ],
  "tags" : [ {
    "name" : "Demo data",
    "description" : "Generated demo data for the model"
  }, {
    "name" : "Vehicle Route Plan",
    "description" : "Timefold Vehicle Routing - Optimize routes of vehicles to visit customers available in specified time windows"
  } ],
  "paths" : {
    "/v1/demo-data" : {
      "get" : {
        "summary" : "List of available demo datasets.",
        "tags" : [ "Demo data" ],
        "responses" : {
          "200" : {
            "description" : "List of available demo datasets",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/DemoMetaData"
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/demo-data/{demoDataId}" : {
      "get" : {
        "summary" : "Get the demo dataset with the given identifier.",
        "tags" : [ "Demo data" ],
        "parameters" : [ {
          "description" : "ID of the demo dataset from the list of available datasets",
          "required" : true,
          "name" : "demoDataId",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case the given demo data does not exist",
            "content" : {
              "application/json" : { }
            }
          },
          "200" : {
            "description" : "Demo data as a dataset",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelRequestRoutePlanInputRoutePlanConfigOverrides"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/demo-data/{demoDataId}/input" : {
      "get" : {
        "summary" : "Get the demo dataset with the given identifier as model input only.",
        "tags" : [ "Demo data" ],
        "parameters" : [ {
          "description" : "ID of the demo dataset from the list of available datasets",
          "required" : true,
          "name" : "demoDataId",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case the given demo data does not exist",
            "content" : {
              "application/json" : { }
            }
          },
          "200" : {
            "description" : "Demo data as a dataset",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RoutePlanInput"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans" : {
      "post" : {
        "summary" : "Request a route plan to be solved, unique identifier is returned that can be used to get the route plan once solved",
        "operationId" : "schedule",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Optional name to be given to the dataset, if not provided a name will be generated.",
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Operation to execute on the POST request.",
          "name" : "operation",
          "in" : "query",
          "schema" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/OperationOnPost"
            }, {
              "default" : "SOLVE"
            } ]
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModelRequestRoutePlanInputRoutePlanConfigOverrides"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "In case request given does not meet expectations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ErrorInfo"
                  }, {
                    "$ref" : "#/components/schemas/ValidationErrorInfo"
                  } ]
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "202" : {
            "description" : "Successfully accepted request to post a dataset",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "string"
                    },
                    "parentId" : {
                      "description" : "The id of the parent data set this was created from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "originId" : {
                      "description" : "The id of the origin (root) data set this initially originates from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "name" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "submitDateTime" : {
                      "description" : "The moment the run is submitted",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "startDateTime" : {
                      "description" : "The moment the run begins initializing",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "activeDateTime" : {
                      "description" : "The moment the solving phase begins",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "completeDateTime" : {
                      "description" : "The moment the solving phase concludes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "shutdownDateTime" : {
                      "description" : "The moment the post-processing phase finishes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "solverStatus" : {
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/SolvingStatus"
                      } ],
                      "nullable" : true
                    },
                    "score" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "tags" : {
                      "uniqueItems" : true,
                      "type" : "array",
                      "items" : {
                        "type" : "string"
                      }
                    },
                    "validationResult" : {
                      "$ref" : "#/components/schemas/LegacyValidationResult"
                    },
                    "failureMessage" : {
                      "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
                      "type" : "string",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "get" : {
        "summary" : "List all route plans that are registered in the service (that are to be solved, in progress or solved), only returning its status",
        "operationId" : "getSchedules",
        "deprecated" : true,
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "page",
          "in" : "query",
          "schema" : {
            "format" : "int32",
            "default" : 0,
            "minimum" : 0,
            "type" : "integer"
          }
        }, {
          "name" : "size",
          "in" : "query",
          "schema" : {
            "format" : "int32",
            "default" : 100,
            "maximum" : 1000,
            "minimum" : 0,
            "type" : "integer"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Metadata"
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/recommendations/bulk-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied list of visits and time windows. This feature is in preview and might be a subject to change. This variant is suitable for recommendations for route plans that have not been solved before.",
        "operationId" : "bulk-recommend-time-windows-without-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BulkTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BulkTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/recommendations/visit-group-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied visit group and time windows. This variant is suitable for recommendations for route plans that have not been solved before.",
        "operationId" : "visit-group-recommend-time-windows-without-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/VisitGroupTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VisitGroupTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/recommendations/visit-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied visit and time windows. This variant is suitable for recommendations for route plans that have not been solved before.",
        "operationId" : "visit-recommend-time-windows-without-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/VisitTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VisitTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/score-analysis" : {
      "post" : {
        "summary" : "Calculates score analysis for the supplied schedule",
        "operationId" : "calculateScoreAnalysis",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ScoreAnalysisRequestRoutePlanInputRoutePlanConfigOverrides"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Score analysis for the supplied schedule",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScoreAnalysisDetail"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/validation-issue-types" : {
      "get" : {
        "summary" : "Get validation issue types supported by the model",
        "operationId" : "getValidationIssueTypes",
        "tags" : [ "Vehicle Route Plan" ],
        "responses" : {
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Validation issue types supported by the model",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationIssueTypes"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/validation-issue-types/{code}" : {
      "get" : {
        "summary" : "Get validation issue type by the code",
        "operationId" : "getValidationIssueTypeByCode",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the validation issue type",
          "required" : true,
          "name" : "code",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case the issue type of the given code does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Validation issue type of the given code",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationIssueTypes"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}" : {
      "delete" : {
        "summary" : "Terminate and return a route plan with the given identifier",
        "operationId" : "terminateSchedule",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "force",
          "in" : "query",
          "required" : false,
          "description" : "Instructs to forcibly terminate in case regular termination fails",
          "schema" : {
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelResponseHardMediumSoftScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "post" : {
        "summary" : "Request solving a dataset under the given unique identifier.",
        "operationId" : "solveDataset",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the dataset",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "202" : {
            "description" : "Successfully accepted request to solve scheduling problem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "string"
                    },
                    "parentId" : {
                      "description" : "The id of the parent data set this was created from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "originId" : {
                      "description" : "The id of the origin (root) data set this initially originates from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "name" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "submitDateTime" : {
                      "description" : "The moment the run is submitted",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "startDateTime" : {
                      "description" : "The moment the run begins initializing",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "activeDateTime" : {
                      "description" : "The moment the solving phase begins",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "completeDateTime" : {
                      "description" : "The moment the solving phase concludes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "shutdownDateTime" : {
                      "description" : "The moment the post-processing phase finishes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "solverStatus" : {
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/SolvingStatus"
                      } ],
                      "nullable" : true
                    },
                    "score" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "tags" : {
                      "uniqueItems" : true,
                      "type" : "array",
                      "items" : {
                        "type" : "string"
                      }
                    },
                    "validationResult" : {
                      "$ref" : "#/components/schemas/LegacyValidationResult"
                    },
                    "failureMessage" : {
                      "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
                      "type" : "string",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "get" : {
        "summary" : "Get a route plan with the given identifier. It's the best route plan so far as the solver might still be running",
        "operationId" : "getSchedule",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelResponseHardMediumSoftScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "put" : {
        "tags" : [ "Administration" ],
        "operationId" : "restoreSchedule",
        "description" : "Restores previously deleted dataset if it is still available.",
        "summary" : "Restores dataset that was previously deleted.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Unique id of the dataset to be restored.",
          "schema" : {
            "type" : "string"
          },
          "required" : true
        } ],
        "security" : [ {
          "auth" : [ ]
        } ],
        "responses" : {
          "204" : {
            "description" : "Item successfully restored."
          },
          "404" : {
            "description" : "Item cannot be restored or was not found."
          },
          "401" : {
            "description" : "Missing or invalid API key."
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation."
          }
        }
      }
    },
    "/v1/route-plans/{id}/config" : {
      "get" : {
        "summary" : "Get the configuration used for the schedule",
        "operationId" : "getScheduleConfig",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns the configuration used for a schedule with the given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelConfiguration2"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/events" : {
      "get" : {
        "summary" : "Subscribes to events of given dataset (of type metadata) as long as it has not yet reached final state (completed, failed, incomplete or invalid)",
        "operationId" : "getMetadataEvents",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "status",
          "in" : "query",
          "schema" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SolvingStatus"
            }
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given dataset does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "410" : {
            "description" : "In case given dataset is already in final state",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Event stream of dataset changes",
            "content" : {
              "text/event-stream" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Metadata"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/from-input" : {
      "post" : {
        "summary" : "Request a problem to be solved, based on a previously solved dataset. A unique identifier is returned that can be used to get the schedule once solved",
        "operationId" : "fromInput",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Optional name to be given to the dataset, if not provided a name will be generated.",
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Operation to execute on the POST request.",
          "name" : "operation",
          "in" : "query",
          "schema" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/OperationOnPost"
            }, {
              "default" : "SOLVE"
            } ]
          }
        }, {
          "description" : "Data to use as a source for the operation.",
          "name" : "select",
          "in" : "query",
          "schema" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/DatasetSelector"
            }, {
              "default" : "UNSOLVED"
            } ]
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModelConfiguration2"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "In case request given does not meet expectations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ErrorInfo"
                  }, {
                    "$ref" : "#/components/schemas/ValidationErrorInfo"
                  } ]
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "202" : {
            "description" : "Successfully accepted request to solve scheduling problem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "string"
                    },
                    "parentId" : {
                      "description" : "The id of the parent data set this was created from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "originId" : {
                      "description" : "The id of the origin (root) data set this initially originates from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "name" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "submitDateTime" : {
                      "description" : "The moment the run is submitted",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "startDateTime" : {
                      "description" : "The moment the run begins initializing",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "activeDateTime" : {
                      "description" : "The moment the solving phase begins",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "completeDateTime" : {
                      "description" : "The moment the solving phase concludes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "shutdownDateTime" : {
                      "description" : "The moment the post-processing phase finishes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "solverStatus" : {
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/SolvingStatus"
                      } ],
                      "nullable" : true
                    },
                    "score" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "tags" : {
                      "uniqueItems" : true,
                      "type" : "array",
                      "items" : {
                        "type" : "string"
                      }
                    },
                    "validationResult" : {
                      "$ref" : "#/components/schemas/LegacyValidationResult"
                    },
                    "failureMessage" : {
                      "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
                      "type" : "string",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/from-patch" : {
      "post" : {
        "summary" : "Preview: Request a problem to be solved, based on a previous dataset that is patched with given operations. A unique identifier is returned that can be used to get the dataset",
        "description" : "Request a problem to be solved, based on a previous dataset that is patched with given operations. This operation is in preview and might be a subject to change. This operation is not be available for everyone (feature-flagged).",
        "operationId" : "fromPatch",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Optional name to be given to the dataset, if not provided a name will be generated.",
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Operation to execute on the POST request.",
          "name" : "operation",
          "in" : "query",
          "schema" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/OperationOnPost"
            }, {
              "default" : "SOLVE"
            } ]
          }
        }, {
          "description" : "Data to use as a source for the operation.",
          "name" : "select",
          "in" : "query",
          "schema" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/DatasetSelector"
            }, {
              "default" : "SOLVED"
            } ]
          }
        }, {
          "name" : "configurationId",
          "in" : "query",
          "required" : false,
          "description" : "Optional identifier of the configuration profile. You may provide either the configuration profile’s unique ID or its name.",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "priority",
          "in" : "query",
          "required" : false,
          "description" : "Optional solve priority. Defaults to 5, minimum 0 (lowest priority), maximum 10 (highest priority).",
          "schema" : {
            "type" : "integer"
          }
        }, {
          "name" : "tags",
          "in" : "query",
          "required" : false,
          "description" : "Optional tags to be associated with dataset",
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModelInputPatchRequestRoutePlanConfigOverrides"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "400" : {
            "description" : "In case request given does not meet expectations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ErrorInfo"
                  }, {
                    "$ref" : "#/components/schemas/ValidationErrorInfo"
                  } ]
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "202" : {
            "description" : "Successfully patched and accepted request to solve scheduling problem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "string"
                    },
                    "parentId" : {
                      "description" : "The id of the parent data set this was created from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "originId" : {
                      "description" : "The id of the origin (root) data set this initially originates from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "name" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "submitDateTime" : {
                      "description" : "The moment the run is submitted",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "startDateTime" : {
                      "description" : "The moment the run begins initializing",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "activeDateTime" : {
                      "description" : "The moment the solving phase begins",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "completeDateTime" : {
                      "description" : "The moment the solving phase concludes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "shutdownDateTime" : {
                      "description" : "The moment the post-processing phase finishes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "solverStatus" : {
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/SolvingStatus"
                      } ],
                      "nullable" : true
                    },
                    "score" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "tags" : {
                      "uniqueItems" : true,
                      "type" : "array",
                      "items" : {
                        "type" : "string"
                      }
                    },
                    "validationResult" : {
                      "$ref" : "#/components/schemas/LegacyValidationResult"
                    },
                    "failureMessage" : {
                      "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
                      "type" : "string",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/input" : {
      "get" : {
        "summary" : "Get input dataset",
        "operationId" : "getScheduleInput",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns input dataset for given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/RoutePlanInput"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/logs" : {
      "get" : {
        "summary" : "Get logs with given identifier",
        "operationId" : "getScheduleLogs",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns logs with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LogInfo"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/metadata" : {
      "get" : {
        "summary" : "Get a route plan status with the given identifier",
        "operationId" : "getMetadata",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Metadata"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "patch" : {
        "tags" : [ "Administration" ],
        "operationId" : "updateMetadata",
        "description" : "Update dataset name and tags if still available",
        "summary" : "Update dataset name and tags",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "tags" : {
                    "uniqueItems" : true,
                    "type" : "array",
                    "items" : {
                      "type" : "string"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Unique id of the dataset to be updated.",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "security" : [ {
          "auth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Dataset successfully updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Metadata"
                }
              }
            }
          },
          "404" : {
            "description" : "Dataset not found."
          },
          "400" : {
            "description" : "Dataset can not be updated, invalid state."
          },
          "401" : {
            "description" : "Missing or invalid API key."
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation."
          }
        }
      }
    },
    "/v1/route-plans/{id}/model-request" : {
      "get" : {
        "summary" : "Get complete input request for given schedule with given identifier",
        "operationId" : "getModelRequest",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling input with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelRequestRoutePlanInputRoutePlanConfigOverrides"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/new-run" : {
      "post" : {
        "summary" : "(Deprecated endpoint, please use /{id}/from-input instead) Request a problem to be solved, based on a previously solved dataset. A unique identifier is returned that can be used to get the schedule once solved",
        "operationId" : "reschedule",
        "deprecated" : true,
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "required" : false,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModelConfiguration2"
              }
            }
          }
        },
        "responses" : {
          "400" : {
            "description" : "In case request given does not meet expectations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "oneOf" : [ {
                    "$ref" : "#/components/schemas/ErrorInfo"
                  }, {
                    "$ref" : "#/components/schemas/ValidationErrorInfo"
                  } ]
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "202" : {
            "description" : "Successfully accepted request to solve scheduling problem",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object",
                  "properties" : {
                    "id" : {
                      "type" : "string"
                    },
                    "parentId" : {
                      "description" : "The id of the parent data set this was created from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "originId" : {
                      "description" : "The id of the origin (root) data set this initially originates from",
                      "type" : "string",
                      "nullable" : true
                    },
                    "name" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "submitDateTime" : {
                      "description" : "The moment the run is submitted",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "startDateTime" : {
                      "description" : "The moment the run begins initializing",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "activeDateTime" : {
                      "description" : "The moment the solving phase begins",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "completeDateTime" : {
                      "description" : "The moment the solving phase concludes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "shutdownDateTime" : {
                      "description" : "The moment the post-processing phase finishes",
                      "type" : "string",
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/OffsetDateTime"
                      } ],
                      "nullable" : true
                    },
                    "solverStatus" : {
                      "allOf" : [ {
                        "$ref" : "#/components/schemas/SolvingStatus"
                      } ],
                      "nullable" : true
                    },
                    "score" : {
                      "type" : "string",
                      "nullable" : true
                    },
                    "tags" : {
                      "uniqueItems" : true,
                      "type" : "array",
                      "items" : {
                        "type" : "string"
                      }
                    },
                    "validationResult" : {
                      "$ref" : "#/components/schemas/LegacyValidationResult"
                    },
                    "failureMessage" : {
                      "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
                      "type" : "string",
                      "nullable" : true
                    }
                  }
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/recommendations/bulk-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied list of visits and time windows. This feature is in preview and might be a subject to change. This variant attempts to run the operation on the route plan with the given id that was processed before to optimize processing time.",
        "operationId" : "bulk-recommend-time-windows-with-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BulkTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "404" : {
            "description" : "In case request given route plan does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BulkTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/recommendations/visit-group-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied visit group and time windows. This variant attempts to run the operation on the route plan with given id that was processed before to optimize processing time.",
        "operationId" : "visit-group-recommend-time-windows-with-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/VisitGroupTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "404" : {
            "description" : "In case request given route plan does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VisitGroupTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/recommendations/visit-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates vehicle shift recommendations for the supplied visit and time windows. This variant attempts to run the operation on the route plan with given id that was processed before to optimize processing time.",
        "operationId" : "visit-recommend-time-windows-with-solved-model",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        } ],
        "requestBody" : {
          "required" : true,
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/VisitTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "responses" : {
          "404" : {
            "description" : "In case request given route plan does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "400" : {
            "description" : "Validation results in case of invalid input",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LegacyValidationResult"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Time window recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/VisitTimeWindowRecommendationResponse"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/run" : {
      "get" : {
        "summary" : "(Deprecated endpoint, please use /{id}/metadata instead) Get a route plan status with the given identifier",
        "operationId" : "getScheduleStatus",
        "deprecated" : true,
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Returns scheduling with given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Metadata"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      },
      "patch" : {
        "tags" : [ "Administration" ],
        "operationId" : "updateSchedule",
        "description" : "Update item name and tags if still available",
        "summary" : "(Deprecated endpoint, please use /{id}/metadata instead) Update item name and tags",
        "deprecated" : true,
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "object",
                "properties" : {
                  "name" : {
                    "type" : "string"
                  },
                  "tags" : {
                    "uniqueItems" : true,
                    "type" : "array",
                    "items" : {
                      "type" : "string"
                    }
                  }
                }
              }
            }
          }
        },
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Unique id of the item to be updated",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "security" : [ {
          "auth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Dataset successfully updated.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Metadata"
                }
              }
            }
          },
          "404" : {
            "description" : "Dataset not found."
          },
          "400" : {
            "description" : "Dataset can not be updated, invalid state."
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          }
        }
      }
    },
    "/v1/route-plans/{id}/score-analysis" : {
      "get" : {
        "summary" : "Get score analysis for a schedule with the given identifier",
        "operationId" : "getScoreAnalysis",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "includeJustifications",
          "in" : "query",
          "schema" : {
            "default" : false,
            "type" : "boolean"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Score analysis for a schedule with the given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ScoreAnalysisDetail"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/validation-result" : {
      "get" : {
        "summary" : "Get validation result of a dataset with the given identifier",
        "operationId" : "getValidationResult",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case the given dataset does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Validation results of a dataset with the given identifier",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ValidationResultAbstractRoutePlanValidationIssue"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/waypoints" : {
      "get" : {
        "summary" : "Calculates waypoints for problem with supplied identifier",
        "operationId" : "getWaypoints",
        "tags" : [ "Vehicle Route Plan" ],
        "parameters" : [ {
          "description" : "Unique identifier of the schedule",
          "required" : true,
          "name" : "id",
          "in" : "path",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Unique identifier of the object waypoints should be collected for",
          "name" : "objectId",
          "in" : "query",
          "schema" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        } ],
        "responses" : {
          "404" : {
            "description" : "In case request given schedule does not exist",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "500" : {
            "description" : "In case of processing errors",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          },
          "200" : {
            "description" : "Waypoints successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Waypoints"
                }
              }
            }
          },
          "401" : {
            "description" : "Missing or invalid API key"
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation"
          },
          "429" : {
            "description" : "Too many requests or other policy violations",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorInfo"
                }
              }
            }
          }
        },
        "security" : [ {
          "auth" : [ ]
        } ]
      }
    },
    "/v1/route-plans/{id}/purge" : {
      "delete" : {
        "tags" : [ "Administration" ],
        "operationId" : "deleteSchedule",
        "description" : "Delete dataset from storage and return the dataset with given identifier.",
        "summary" : "Delete dataset from storage.",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Unique id of the item to be deleted.",
          "schema" : {
            "type" : "string"
          },
          "required" : true
        } ],
        "security" : [ {
          "auth" : [ ]
        } ],
        "responses" : {
          "200" : {
            "description" : "Returns scheduling with given identifier.",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ModelResponseHardMediumSoftScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "400" : {
            "description" : "In case dataset is still solving."
          },
          "404" : {
            "description" : "In case the requested dataset does not exist."
          },
          "401" : {
            "description" : "Missing or invalid API key."
          },
          "403" : {
            "description" : "API key used with this call does not have access to the operation."
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "AbstractRoutePlanValidationIssue" : {
        "required" : [ "code", "severity", "id" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Issue code referring to an issue type.",
            "type" : "string"
          },
          "severity" : {
            "description" : "Issue severity",
            "enum" : [ "ERROR", "WARNING" ],
            "type" : "string"
          },
          "id" : {
            "format" : "int32",
            "description" : "Issue instance ID. Unique per dataset.",
            "type" : "integer"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/BreakStartBeforeShiftStartIssue"
        }, {
          "$ref" : "#/components/schemas/FixedBreaksOverlapIssue"
        }, {
          "$ref" : "#/components/schemas/FixedBreakTimeOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/FloatingBreakTimeOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryActualArrivalTimesNotChronologicalIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryActualDepartureTimesNotChronologicalIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryActualStartServiceTimesNotChronologicalIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryBreakWithActualsIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualArrivalTimeIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualStartServiceTimeIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryVisitActualStartServiceTimeBeforeActualArrivalTimeIssue"
        }, {
          "$ref" : "#/components/schemas/ItineraryVisitNotFoundIssue"
        }, {
          "$ref" : "#/components/schemas/LegacyBreakMaxStartTimeOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/LegacyBreakTimeOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/LinkedShiftAndContainedShiftHaveNonEmptyItineraryIssue"
        }, {
          "$ref" : "#/components/schemas/LinkedShiftCircularReferenceIssue"
        }, {
          "$ref" : "#/components/schemas/LinkedShiftNotInChronologicalOrderIssue"
        }, {
          "$ref" : "#/components/schemas/LinkedShiftShiftsOverlapIssue"
        }, {
          "$ref" : "#/components/schemas/LocationOutOfMapReferencedByMultipleEntitiesIssue"
        }, {
          "$ref" : "#/components/schemas/LocationReferencedByBreakOutOfMapIssue"
        }, {
          "$ref" : "#/components/schemas/LocationReferencedByVehicleShiftOutOfMapIssue"
        }, {
          "$ref" : "#/components/schemas/LocationReferencedByVisitOutOfMapIssue"
        }, {
          "$ref" : "#/components/schemas/LoopDetectedIssue"
        }, {
          "$ref" : "#/components/schemas/NoVehicleShiftWithCombinationOfSkillAndAreaIssue"
        }, {
          "$ref" : "#/components/schemas/NoVehicleShiftWithSkillCombinationIssue"
        }, {
          "$ref" : "#/components/schemas/NoVehicleShiftWithSkillIssue"
        }, {
          "$ref" : "#/components/schemas/NoVisitsIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitsStartServiceTimeOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitStartTimeAfterShiftIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitStartTimeBeforeShiftIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitStartTimeDuringBreakIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitStartTimeMissingIssue"
        }, {
          "$ref" : "#/components/schemas/PinnedVisitStartTimeNotInVisitTimeWindowsIssue"
        }, {
          "$ref" : "#/components/schemas/PlanFreezeDeparturesBeforeTimeDeprecatedIssue"
        }, {
          "$ref" : "#/components/schemas/PlanFreezeTimeConflictIssue"
        }, {
          "$ref" : "#/components/schemas/TechnicianRatingDefinedButConstraintDisabledIssue"
        }, {
          "$ref" : "#/components/schemas/TravelWeightConflictIssue"
        }, {
          "$ref" : "#/components/schemas/UnreferencedLocationOutOfMapIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleAreaInvalidButAutomaticallyFixableIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleAreaInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VehiclesEmptyIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxEndTimeMissingIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeLaterThanMaxEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeMissingIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftEndTimeDeclaredButDisabledIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeDeclaredButDisabledIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxLastVisitDepartureTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxSoftEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftTravelTimeGreaterThanMaxTravelTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMaxSoftVisitsGreaterThanMaxVisitsIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxLastVisitDepartureTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftLastVisitDepartureTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxLastVisitDepartureTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftEndTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftLastVisitDepartureTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMinFirstVisitArrivalTimeIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftsEmptyIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftSkillUndeclaredIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftStartTimeMissingIssue"
        }, {
          "$ref" : "#/components/schemas/VehicleShiftTagUndeclaredIssue"
        }, {
          "$ref" : "#/components/schemas/VisitAreaNotCoveredByAnyVehicleIssue"
        }, {
          "$ref" : "#/components/schemas/VisitAssignedMoreThanOnceIssue"
        }, {
          "$ref" : "#/components/schemas/VisitBothPreferredVehiclesAndPreferredVehiclesWeightsSetIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyDelayOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyMaxDelayConflictIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyMaxDelayToSameDayIncrementInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyMinDelayConflictIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyMinDelayToSameDayIncrementInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyNegativeMaxDelayIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyNegativeMinDelayIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyOrderConflictIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyPrecedingVisitNotFoundIssue"
        }, {
          "$ref" : "#/components/schemas/VisitDependencyTimeWindowsConflictIssue"
        }, {
          "$ref" : "#/components/schemas/VisitExcludesSelfIssue"
        }, {
          "$ref" : "#/components/schemas/VisitExcludesUnknownVisitIssue"
        }, {
          "$ref" : "#/components/schemas/VisitGroupTooSmallIssue"
        }, {
          "$ref" : "#/components/schemas/VisitMissingSkillFromServiceDurationBreakdownIssue"
        }, {
          "$ref" : "#/components/schemas/VisitPreferredVehicleNotFoundIssue"
        }, {
          "$ref" : "#/components/schemas/VisitPreferredWindowNoOverlapIssue"
        }, {
          "$ref" : "#/components/schemas/VisitPriorityDeprecatedIssue"
        }, {
          "$ref" : "#/components/schemas/VisitPriorityMissingIssue"
        }, {
          "$ref" : "#/components/schemas/VisitPriorityUndefinedIssue"
        }, {
          "$ref" : "#/components/schemas/VisitProhibitedVehicleNotFoundIssue"
        }, {
          "$ref" : "#/components/schemas/VisitRequiredVehicleNotFoundIssue"
        }, {
          "$ref" : "#/components/schemas/VisitSkillBreakdownTooLongIssue"
        }, {
          "$ref" : "#/components/schemas/VisitSkillUndeclaredIssue"
        }, {
          "$ref" : "#/components/schemas/VisitSlaConflictIssue"
        }, {
          "$ref" : "#/components/schemas/VisitTagNotOnAnyVehicleIssue"
        }, {
          "$ref" : "#/components/schemas/VisitTagUndeclaredIssue"
        }, {
          "$ref" : "#/components/schemas/VisitTimeWindowInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VisitTimeWindowOrderInvalidIssue"
        }, {
          "$ref" : "#/components/schemas/VisitTimeWindowTooSmallIssue"
        } ],
        "discriminator" : {
          "propertyName" : "code",
          "mapping" : {
            "BREAK_START_BEFORE_SHIFT_START" : "#/components/schemas/BreakStartBeforeShiftStartIssue",
            "FIXED_BREAKS_OVERLAP" : "#/components/schemas/FixedBreaksOverlapIssue",
            "FIXED_BREAK_TIME_ORDER_INVALID" : "#/components/schemas/FixedBreakTimeOrderInvalidIssue",
            "FLOATING_BREAK_TIME_ORDER_INVALID" : "#/components/schemas/FloatingBreakTimeOrderInvalidIssue",
            "ITINERARY_ACTUAL_ARRIVAL_TIMES_NOT_CHRONOLOGICAL" : "#/components/schemas/ItineraryActualArrivalTimesNotChronologicalIssue",
            "ITINERARY_ACTUAL_DEPARTURE_TIMES_NOT_CHRONOLOGICAL" : "#/components/schemas/ItineraryActualDepartureTimesNotChronologicalIssue",
            "ITINERARY_ACTUAL_START_SERVICE_TIMES_NOT_CHRONOLOGICAL" : "#/components/schemas/ItineraryActualStartServiceTimesNotChronologicalIssue",
            "ITINERARY_BREAK_WITH_ACTUALS" : "#/components/schemas/ItineraryBreakWithActualsIssue",
            "ITINERARY_VISIT_ACTUAL_DEPARTURE_TIME_BEFORE_ACTUAL_ARRIVAL_TIME" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualArrivalTimeIssue",
            "ITINERARY_VISIT_ACTUAL_DEPARTURE_TIME_BEFORE_ACTUAL_START_SERVICE_TIME" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualStartServiceTimeIssue",
            "ITINERARY_VISIT_ACTUAL_START_SERVICE_TIME_BEFORE_ACTUAL_ARRIVAL_TIME" : "#/components/schemas/ItineraryVisitActualStartServiceTimeBeforeActualArrivalTimeIssue",
            "ITINERARY_VISIT_NOT_FOUND" : "#/components/schemas/ItineraryVisitNotFoundIssue",
            "LEGACY_BREAK_MAX_START_TIME_ORDER_INVALID" : "#/components/schemas/LegacyBreakMaxStartTimeOrderInvalidIssue",
            "LEGACY_BREAK_TIME_ORDER_INVALID" : "#/components/schemas/LegacyBreakTimeOrderInvalidIssue",
            "LOCATION_OUT_OF_MAP_REFERENCED_BY_MULTIPLE_ENTITIES" : "#/components/schemas/LocationOutOfMapReferencedByMultipleEntitiesIssue",
            "LOCATION_REFERENCED_BY_BREAK_OUT_OF_MAP" : "#/components/schemas/LocationReferencedByBreakOutOfMapIssue",
            "LOCATION_REFERENCED_BY_VEHICLE_SHIFT_OUT_OF_MAP" : "#/components/schemas/LocationReferencedByVehicleShiftOutOfMapIssue",
            "LOCATION_REFERENCED_BY_VISIT_OUT_OF_MAP" : "#/components/schemas/LocationReferencedByVisitOutOfMapIssue",
            "LINKED_SHIFT_AND_CONTAINED_SHIFT_HAVE_NON_EMPTY_ITINERARY" : "#/components/schemas/LinkedShiftAndContainedShiftHaveNonEmptyItineraryIssue",
            "LINKED_SHIFT_CIRCULAR_REFERENCE_ISSUE" : "#/components/schemas/LinkedShiftCircularReferenceIssue",
            "LINKED_SHIFT_NOT_IN_CHRONOLOGICAL_ORDER_ISSUE" : "#/components/schemas/LinkedShiftNotInChronologicalOrderIssue",
            "LINKED_SHIFTS_OVERLAP_ISSUE" : "#/components/schemas/LinkedShiftShiftsOverlapIssue",
            "LOOP_DETECTED" : "#/components/schemas/LoopDetectedIssue",
            "NO_VEHICLE_SHIFT_WITH_SKILL_AREA_COMBINATION" : "#/components/schemas/NoVehicleShiftWithCombinationOfSkillAndAreaIssue",
            "NO_VEHICLE_SHIFT_WITH_SKILL_COMBINATION" : "#/components/schemas/NoVehicleShiftWithSkillCombinationIssue",
            "NO_VEHICLE_SHIFT_WITH_SKILL" : "#/components/schemas/NoVehicleShiftWithSkillIssue",
            "VISITS_EMPTY" : "#/components/schemas/NoVisitsIssue",
            "PINNED_VISITS_START_SERVICE_TIME_ORDER_INVALID" : "#/components/schemas/PinnedVisitsStartServiceTimeOrderInvalidIssue",
            "PINNED_VISIT_START_TIME_AFTER_SHIFT" : "#/components/schemas/PinnedVisitStartTimeAfterShiftIssue",
            "PINNED_VISIT_START_TIME_BEFORE_SHIFT" : "#/components/schemas/PinnedVisitStartTimeBeforeShiftIssue",
            "PINNED_VISIT_START_TIME_DURING_BREAK" : "#/components/schemas/PinnedVisitStartTimeDuringBreakIssue",
            "PINNED_VISIT_START_TIME_MISSING" : "#/components/schemas/PinnedVisitStartTimeMissingIssue",
            "PINNED_VISIT_START_TIME_NOT_IN_VISIT_TIME_WINDOWS" : "#/components/schemas/PinnedVisitStartTimeNotInVisitTimeWindowsIssue",
            "PLAN_FREEZE_DEPARTURES_BEFORE_TIME_DEPRECATED" : "#/components/schemas/PlanFreezeDeparturesBeforeTimeDeprecatedIssue",
            "PLAN_FREEZE_TIME_CONFLICT" : "#/components/schemas/PlanFreezeTimeConflictIssue",
            "TECHNICIAN_RATINGS_DISABLED" : "#/components/schemas/TechnicianRatingDefinedButConstraintDisabledIssue",
            "TRAVEL_WEIGHT_CONFLICT" : "#/components/schemas/TravelWeightConflictIssue",
            "UNREFERENCED_LOCATION_OUT_OF_MAP" : "#/components/schemas/UnreferencedLocationOutOfMapIssue",
            "VEHICLE_AREA_INVALID_BUT_AUTOMATICALLY_FIXABLE" : "#/components/schemas/VehicleAreaInvalidButAutomaticallyFixableIssue",
            "VEHICLE_AREA_INVALID" : "#/components/schemas/VehicleAreaInvalidIssue",
            "VEHICLES_EMPTY" : "#/components/schemas/VehiclesEmptyIssue",
            "VEHICLE_SHIFT_MAX_END_TIME_MISSING" : "#/components/schemas/VehicleShiftMaxEndTimeMissingIssue",
            "VEHICLE_SHIFT_MAX_LAST_VISIT_DEPARTURE_TIME_LATER_THAN_MAX_END_TIME" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeLaterThanMaxEndTimeIssue",
            "VEHICLE_SHIFT_MAX_LAST_VISIT_DEPARTURE_TIME_MISSING" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeMissingIssue",
            "VEHICLE_SHIFT_MAX_SOFT_END_TIME_DECLARED_BUT_DISABLED" : "#/components/schemas/VehicleShiftMaxSoftEndTimeDeclaredButDisabledIssue",
            "VEHICLE_SHIFT_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME_DECLARED_BUT_DISABLED" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeDeclaredButDisabledIssue",
            "VEHICLE_SHIFT_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME_LATER_THAN_MAX_END_TIME" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxEndTimeIssue",
            "VEHICLE_SHIFT_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME_LATER_THAN_MAX_LAST_VISIT_DEPARTURE_TIME" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxLastVisitDepartureTimeIssue",
            "VEHICLE_SHIFT_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME_LATER_THAN_MAX_SOFT_END_TIME" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxSoftEndTimeIssue",
            "VEHICLE_SHIFT_MAX_SOFT_TRAVEL_TIME_GREATER_THAN_MAX_TRAVEL_TIME" : "#/components/schemas/VehicleShiftMaxSoftTravelTimeGreaterThanMaxTravelTimeIssue",
            "VEHICLE_SHIFT_MAX_SOFT_VISITS_GREATER_THAN_MAX_VISITS" : "#/components/schemas/VehicleShiftMaxSoftVisitsGreaterThanMaxVisitsIssue",
            "VEHICLE_SHIFT_MIN_FIRST_VISIT_ARRIVAL_TIME_LATER_THAN_MAX_END_TIME" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxEndTimeIssue",
            "VEHICLE_SHIFT_MIN_FIRST_VISIT_ARRIVAL_TIME_LATER_THAN_MAX_LAST_VISIT_DEPARTURE_TIME" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxLastVisitDepartureTimeIssue",
            "VEHICLE_SHIFT_MIN_FIRST_VISIT_ARRIVAL_TIME_LATER_THAN_MAX_SOFT_END_TIME" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftEndTimeIssue",
            "VEHICLE_SHIFT_MIN_FIRST_VISIT_ARRIVAL_TIME_LATER_THAN_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftLastVisitDepartureTimeIssue",
            "VEHICLE_SHIFT_MIN_START_TIME_LATER_THAN_MAX_END_TIME" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxEndTimeIssue",
            "VEHICLE_SHIFT_MIN_START_TIME_LATER_THAN_MAX_LAST_VISIT_DEPARTURE_TIME" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxLastVisitDepartureTimeIssue",
            "VEHICLE_SHIFT_MIN_START_TIME_LATER_THAN_MAX_SOFT_END_TIME" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftEndTimeIssue",
            "VEHICLE_SHIFT_MIN_START_TIME_LATER_THAN_MAX_SOFT_LAST_VISIT_DEPARTURE_TIME" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftLastVisitDepartureTimeIssue",
            "VEHICLE_SHIFT_MIN_START_TIME_LATER_THAN_MIN_FIRST_VISIT_ARRIVAL_TIME" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMinFirstVisitArrivalTimeIssue",
            "VEHICLE_SHIFTS_EMPTY" : "#/components/schemas/VehicleShiftsEmptyIssue",
            "VEHICLE_SHIFT_SKILL_UNDECLARED" : "#/components/schemas/VehicleShiftSkillUndeclaredIssue",
            "VEHICLE_SHIFT_START_TIME_MISSING" : "#/components/schemas/VehicleShiftStartTimeMissingIssue",
            "VEHICLE_SHIFT_TAG_UNDECLARED" : "#/components/schemas/VehicleShiftTagUndeclaredIssue",
            "VISIT_AREA_NOT_COVERED_BY_ANY_VEHICLE" : "#/components/schemas/VisitAreaNotCoveredByAnyVehicleIssue",
            "VISIT_ASSIGNED_MORE_THAN_ONCE" : "#/components/schemas/VisitAssignedMoreThanOnceIssue",
            "VISIT_BOTH_PREFERRED_VEHICLES_AND_PREFERRED_VEHICLES_WEIGHTS_SET" : "#/components/schemas/VisitBothPreferredVehiclesAndPreferredVehiclesWeightsSetIssue",
            "VISIT_DEPENDENCY_DELAY_ORDER_INVALID" : "#/components/schemas/VisitDependencyDelayOrderInvalidIssue",
            "VISIT_DEPENDENCY_MAX_DELAY_CONFLICT" : "#/components/schemas/VisitDependencyMaxDelayConflictIssue",
            "VISIT_DEPENDENCY_MAX_DELAY_TO_SAME_DAY_INCREMENT_INVALID" : "#/components/schemas/VisitDependencyMaxDelayToSameDayIncrementInvalidIssue",
            "VISIT_DEPENDENCY_MIN_DELAY_CONFLICT" : "#/components/schemas/VisitDependencyMinDelayConflictIssue",
            "VISIT_DEPENDENCY_MIN_DELAY_TO_SAME_DAY_INCREMENT_INVALID" : "#/components/schemas/VisitDependencyMinDelayToSameDayIncrementInvalidIssue",
            "VISIT_DEPENDENCY_NEGATIVE_MAX_DELAY" : "#/components/schemas/VisitDependencyNegativeMaxDelayIssue",
            "VISIT_DEPENDENCY_NEGATIVE_MIN_DELAY" : "#/components/schemas/VisitDependencyNegativeMinDelayIssue",
            "VISIT_DEPENDENCY_ORDER_CONFLICT" : "#/components/schemas/VisitDependencyOrderConflictIssue",
            "VISIT_DEPENDENCY_NOT_FOUND" : "#/components/schemas/VisitDependencyPrecedingVisitNotFoundIssue",
            "VISIT_DEPENDENCY_TIME_WINDOWS_CONFLICT" : "#/components/schemas/VisitDependencyTimeWindowsConflictIssue",
            "VISIT_EXCLUDES_SELF" : "#/components/schemas/VisitExcludesSelfIssue",
            "VISIT_EXCLUDES_UNKNOWN_VISIT" : "#/components/schemas/VisitExcludesUnknownVisitIssue",
            "VISIT_GROUP_TOO_SMALL" : "#/components/schemas/VisitGroupTooSmallIssue",
            "VISIT_MISSING_SKILL_FROM_SERVICE_DURATION_BREAKDOWN" : "#/components/schemas/VisitMissingSkillFromServiceDurationBreakdownIssue",
            "VISIT_PREFERRED_VEHICLE_NOT_FOUND" : "#/components/schemas/VisitPreferredVehicleNotFoundIssue",
            "VISIT_PREFERRED_WINDOW_NO_OVERLAP" : "#/components/schemas/VisitPreferredWindowNoOverlapIssue",
            "VISIT_PRIORITY_DEPRECATED" : "#/components/schemas/VisitPriorityDeprecatedIssue",
            "VISIT_PRIORITY_MISSING" : "#/components/schemas/VisitPriorityMissingIssue",
            "VISIT_PRIORITY_UNDEFINED" : "#/components/schemas/VisitPriorityUndefinedIssue",
            "VISIT_PROHIBITED_VEHICLE_NOT_FOUND" : "#/components/schemas/VisitProhibitedVehicleNotFoundIssue",
            "VISIT_REQUIRED_VEHICLE_NOT_FOUND" : "#/components/schemas/VisitRequiredVehicleNotFoundIssue",
            "VISIT_SKILL_BREAKDOWN_TOO_LONG" : "#/components/schemas/VisitSkillBreakdownTooLongIssue",
            "VISIT_SKILL_UNDECLARED" : "#/components/schemas/VisitSkillUndeclaredIssue",
            "VISIT_SLA_CONFLICT" : "#/components/schemas/VisitSlaConflictIssue",
            "VISIT_TAG_NOT_ON_ANY_VEHICLE" : "#/components/schemas/VisitTagNotOnAnyVehicleIssue",
            "VISIT_TAG_UNDECLARED" : "#/components/schemas/VisitTagUndeclaredIssue",
            "VISIT_TIME_WINDOW_INVALID" : "#/components/schemas/VisitTimeWindowInvalidIssue",
            "VISIT_TIME_WINDOW_ORDER_INVALID" : "#/components/schemas/VisitTimeWindowOrderInvalidIssue",
            "VISIT_TIME_WINDOW_TOO_SMALL" : "#/components/schemas/VisitTimeWindowTooSmallIssue"
          }
        }
      },
      "BalanceMovableAndNonMovableVisitsJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "movableOccupationRatioThreshold" : {
            "format" : "double",
            "type" : "number"
          },
          "movableVisitsTimeSpent" : {
            "description" : "The total amount of time (ISO 8601 duration) the vehicle shift spent on movable visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "overallTimeSpent" : {
            "description" : "The total amount of time (ISO 8601 duration) the vehicle shift spent on all visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "BalanceTimeUtilizationJustification" : {
        "type" : "object",
        "properties" : {
          "unfairnessScore" : {
            "format" : "int64",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "Break" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the break.",
            "type" : "string"
          },
          "type" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/BreakType"
            } ],
            "nullable" : true
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/FixedBreak"
        }, {
          "$ref" : "#/components/schemas/FloatingBreak"
        }, {
          "$ref" : "#/components/schemas/LegacyBreak"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "FIXED" : "#/components/schemas/FixedBreak",
            "FLOATING" : "#/components/schemas/FloatingBreak",
            "LEGACY" : "#/components/schemas/LegacyBreak"
          }
        }
      },
      "BreakPlan" : {
        "description" : "The output itinerary item representing a break.",
        "required" : [ "id", "kind" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/OutputItineraryItem"
        } ],
        "properties" : {
          "id" : {
            "description" : "The identifier of the break this itinerary item represents.",
            "type" : "string"
          },
          "kind" : {
            "description" : "The itinerary item kind, 'BREAK' in this case.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          },
          "startTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the planned break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "endTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the planned break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "travelTimeFromPreviousStandstill" : {
            "description" : "The assigned vehicle shift's travel time (ISO 8601 duration) from its previous location to this break location. Omitted when this break is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "travelDistanceMetersFromPreviousStandstill" : {
            "format" : "int64",
            "description" : "The assigned vehicle shift's travel distance (meters) from its previous location to this break location. Omitted when this break is unreachable on the map.",
            "type" : "integer",
            "nullable" : true
          },
          "unreachable" : {
            "description" : "Determines if this break's location (if any) is unreachable from the previous standstill on the map.",
            "type" : "boolean"
          }
        }
      },
      "BreakStartBeforeShiftStartIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/BreakStartBeforeShiftStartIssueDetail"
          }
        }
      },
      "BreakStartBeforeShiftStartIssueDetail" : {
        "type" : "object",
        "properties" : {
          "breakId" : {
            "type" : "string"
          },
          "breakStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "vehicleShiftStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "BreakType" : {
        "enum" : [ "FIXED", "LEGACY", "FLOATING" ],
        "type" : "string"
      },
      "BulkTimeWindowRecommendation" : {
        "required" : [ "vehicleShifts", "kpis" ],
        "type" : "object",
        "properties" : {
          "scoreDiff" : {
            "type" : "string"
          },
          "constraintDiffs" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationConstraintDetail"
            }
          },
          "timeWindow" : {
            "description" : "Time window that the recommendation ties to (present only if specified in the request).",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            } ]
          },
          "vehicleShifts" : {
            "description" : "Vehicle shift recommendations for the time window and the visit group to fit.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          },
          "kpis" : {
            "description" : "The travel time, distance and other metrics including the vehicle that newly handles the fitted visit group.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutputMetrics"
            } ]
          },
          "dependentVehicleShifts" : {
            "description" : "Contains a list of vehicle shifts that need to be changed as they are dependent on the recommended vehicle shifts (e.g. due to a visit group or visit dependency relationship.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          }
        }
      },
      "BulkTimeWindowRecommendationRequest" : {
        "required" : [ "maxNumberOfRecommendationsPerTimeWindow", "fitVisitIds", "modelInput" ],
        "type" : "object",
        "properties" : {
          "maxNumberOfRecommendationsPerTimeWindow" : {
            "format" : "int32",
            "description" : "The maximum number of retrieved recommendations per time window",
            "minimum" : 1,
            "type" : "integer",
            "example" : 1
          },
          "fitVisitIds" : {
            "description" : "Identifiers of the visits that require time window recommendations. The visits with the given identifiers need to be a part of the 'modelInput'.",
            "maxItems" : 20,
            "minItems" : 1,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "timeWindows" : {
            "description" : "Time windows to get the vehicle shift recommendations for. If omitted, the time windows of the individual visits are used. Specifying either 'timeWindows' here in the request or providing time windows at the individual visits is highly recommended.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            },
            "example" : [ {
              "minStartTime" : "2024-01-23T08:00:00",
              "maxEndTime" : "2024-01-23T18:00:00"
            } ]
          },
          "config" : {
            "description" : "Optional configuration to override the defaults.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationConfig"
            } ]
          },
          "modelInput" : {
            "description" : "Input route plan that contains visits with identifiers specified by 'fitVisitIds' attribute.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          },
          "includeDependencies" : {
            "description" : "Whether the dependent vehicle shifts should be returned or not",
            "default" : "NONE",
            "enum" : [ "ALL", "NONE" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "BulkTimeWindowRecommendationResponse" : {
        "type" : "object",
        "properties" : {
          "recommendations" : {
            "description" : "The array of recommendations of a bulk visit assignment to vehicle shifts for a given time window.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BulkTimeWindowRecommendation"
            }
          }
        }
      },
      "Coordinate" : {
        "description" : "Array of two or three elements: longitude and latitude, in that order. May include altitude as the third element. Additional elements are ignored as recommended in Section 3.1.1 of the spec (https://datatracker.ietf.org/doc/html/rfc7946).",
        "maxItems" : 3,
        "minItems" : 2,
        "type" : "array",
        "items" : {
          "format" : "double",
          "type" : "number"
        },
        "example" : [ -76.3, 40.5 ]
      },
      "Cost" : {
        "type" : "object",
        "properties" : {
          "fixedCost" : {
            "description" : "The fixed part of the cost is applied always.",
            "default" : 0,
            "minimum" : 0,
            "type" : "number"
          },
          "rates" : {
            "description" : "The list of rates defining the cost per time-unit for a specific duration measured from the previous rate end or the vehicle shift start (if there is no previous rate).",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Rate"
            }
          }
        },
        "additionalProperties" : false
      },
      "DatasetSelector" : {
        "enum" : [ "UNSOLVED", "SOLVED" ],
        "type" : "string"
      },
      "DateAdjusterSpec" : {
        "enum" : [ "SAME_DAY", "NEXT_DAY", "NEXT_MONTH", "NEXT_MONDAY", "NEXT_TUESDAY", "NEXT_WEDNESDAY", "NEXT_THURSDAY", "NEXT_FRIDAY", "NEXT_SATURDAY", "NEXT_SUNDAY" ],
        "type" : "string"
      },
      "DemoDataConfigEntry" : {
        "type" : "object",
        "properties" : {
          "key" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          }
        }
      },
      "DemoMetaData" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "shortDescription" : {
            "type" : "string"
          },
          "longDescription" : {
            "type" : "string"
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "config" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DemoDataConfigEntry"
            }
          }
        }
      },
      "Duration" : {
        "format" : "duration",
        "type" : "string",
        "example" : "P1D"
      },
      "ErrorInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "type" : "string"
          }
        }
      },
      "ExcludedVisitJustification" : {
        "type" : "object",
        "properties" : {
          "excludingVisitId" : {
            "type" : "string"
          },
          "excludedVisitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "FixedBreak" : {
        "description" : "A break with fixed start and end time and optional location.",
        "required" : [ "id", "type", "startTime", "endTime" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/Break"
        } ],
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the break.",
            "type" : "string"
          },
          "type" : {
            "pattern" : "^FIXED$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/BreakType"
            } ]
          },
          "location" : {
            "description" : "The coordinates of the location of the break.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "costImpact" : {
            "description" : "The impact of this break on the vehicle shift cost calculation.",
            "default" : "PAID",
            "enum" : [ "PAID" ],
            "type" : "string"
          },
          "startTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "endTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "FixedBreakTimeOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/FixedBreakTimeOrderInvalidIssueDetail"
          }
        }
      },
      "FixedBreakTimeOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "breakId" : {
            "type" : "string"
          },
          "startTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "endTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "FixedBreaksOverlapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/FixedBreaksOverlapIssueDetail"
          }
        }
      },
      "FixedBreaksOverlapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "currentBreakId" : {
            "type" : "string"
          },
          "previousBreakId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "FloatingBreak" : {
        "description" : "A break that can be scheduled at any moment within its minStartTime and maxEndTime (optional).",
        "required" : [ "id", "type", "minStartTime", "duration" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/Break"
        } ],
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the break.",
            "type" : "string"
          },
          "type" : {
            "pattern" : "^FLOATING$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/BreakType"
            } ]
          },
          "location" : {
            "description" : "The coordinates of the location of the break.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "costImpact" : {
            "description" : "The impact of this break on the vehicle shift cost calculation.",
            "default" : "PAID",
            "enum" : [ "PAID" ],
            "type" : "string"
          },
          "minStartTime" : {
            "description" : "The earliest time (ISO 8601 datetime with offset to UTC) to schedule the break start at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxEndTime" : {
            "description" : "The latest time (ISO 8601 datetime with offset to UTC) when the break ends.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "duration" : {
            "description" : "The duration (ISO 8601 duration) of the break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "FloatingBreakTimeOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/FloatingBreakTimeOrderInvalidIssueDetail"
          }
        }
      },
      "FloatingBreakTimeOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "breakId" : {
            "type" : "string"
          },
          "minStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "breakDuration" : {
            "$ref" : "#/components/schemas/Duration"
          },
          "maxEndTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "GeoJsonAreaGeometry" : {
        "description" : "Common interface for GeoJSON area (i.e. not a point) geometry representations.",
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/GeometryType"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/Polygon"
        }, {
          "$ref" : "#/components/schemas/MultiPolygon"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "Polygon" : "#/components/schemas/Polygon",
            "MultiPolygon" : "#/components/schemas/MultiPolygon"
          }
        }
      },
      "GeoJsonGeometry" : {
        "description" : "Any supported GeoJSON geometry representation.",
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "$ref" : "#/components/schemas/GeometryType"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/Point"
        }, {
          "$ref" : "#/components/schemas/Polygon"
        }, {
          "$ref" : "#/components/schemas/MultiPolygon"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "Point" : "#/components/schemas/Point",
            "Polygon" : "#/components/schemas/Polygon",
            "MultiPolygon" : "#/components/schemas/MultiPolygon"
          }
        }
      },
      "GeometryType" : {
        "description" : "The type of geometry. One of 'Point', 'Polygon', or 'MultiPolygon'.",
        "enum" : [ "Point", "Polygon", "MultiPolygon" ],
        "type" : "string"
      },
      "InputItineraryItem" : {
        "required" : [ "id", "kind" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the input itinerary item.",
            "type" : "string"
          },
          "kind" : {
            "description" : "The kind of the itinerary item (\"VISIT\"). The kind \"BREAK\" is now deprecated in the input and will be removed.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          },
          "startServiceTime" : {
            "description" : "The planned time (ISO 8601 datetime with offset to UTC) when the assigned vehicle shift starts to perform the service job for this visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "pin" : {
            "description" : "Determines whether this visit is pinned and if its start service time and assignment to a shift's itinerary must not be changed. Requires \"startServiceTime\" to be present and within the time boundaries of its visit and shift. In case multiple visits on an itinerary are pinned, they need to be chronologically sorted by their \"startServiceTime\".",
            "default" : false,
            "type" : "boolean"
          },
          "actualArrivalTime" : {
            "description" : "The actual time (ISO 8601 datetime with offset to UTC) when the vehicle arrived at this location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "actualStartServiceTime" : {
            "description" : "The actual time (ISO 8601 datetime with offset to UTC) when the vehicle starts the service on this assigned visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "actualDepartureTime" : {
            "description" : "The actual time (ISO 8601 datetime with offset to UTC) when the vehicle departed from this location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "IssueCode" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "string"
          }
        }
      },
      "IssueDetail" : {
        "type" : "object"
      },
      "IssueMessage" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The type of the issue type detail.",
            "type" : "string",
            "readOnly" : true
          },
          "message" : {
            "type" : "string"
          }
        }
      },
      "IssueMetadata" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The type of the issue type detail.",
            "type" : "string",
            "readOnly" : true
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/IssueMessage"
        } ]
      },
      "IssueSeverity" : {
        "enum" : [ "ERROR", "WARNING" ],
        "type" : "string"
      },
      "IssueType" : {
        "required" : [ "code", "severity" ],
        "type" : "object",
        "properties" : {
          "code" : {
            "description" : "Unique case-sensitive code of the issue type.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/IssueCode"
            } ]
          },
          "severity" : {
            "description" : "Issue severity",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/IssueSeverity"
            } ]
          },
          "metadata" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IssueMetadata"
            }
          }
        }
      },
      "ItineraryActualArrivalTimesNotChronologicalIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryActualArrivalTimesNotChronologicalIssueDetail"
          }
        }
      },
      "ItineraryActualArrivalTimesNotChronologicalIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "previousVisitId" : {
            "type" : "string"
          },
          "actualArrivalTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "previousActualArrivalTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryActualDepartureTimesNotChronologicalIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryActualDepartureTimesNotChronologicalIssueDetail"
          }
        }
      },
      "ItineraryActualDepartureTimesNotChronologicalIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "previousVisitId" : {
            "type" : "string"
          },
          "actualDepartureTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "previousActualDepartureTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryActualStartServiceTimesNotChronologicalIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryActualStartServiceTimesNotChronologicalIssueDetail"
          }
        }
      },
      "ItineraryActualStartServiceTimesNotChronologicalIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "previousVisitId" : {
            "type" : "string"
          },
          "actualStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "previousActualStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryBreakWithActualsIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryBreakWithActualsIssueDetail"
          }
        }
      },
      "ItineraryBreakWithActualsIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryItemKind" : {
        "enum" : [ "VISIT", "BREAK" ],
        "type" : "string"
      },
      "ItineraryVisitActualDepartureTimeBeforeActualArrivalTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualArrivalTimeIssueDetail"
          }
        }
      },
      "ItineraryVisitActualDepartureTimeBeforeActualArrivalTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "actualDepartureTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "actualArrivalTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryVisitActualDepartureTimeBeforeActualStartServiceTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryVisitActualDepartureTimeBeforeActualStartServiceTimeIssueDetail"
          }
        }
      },
      "ItineraryVisitActualDepartureTimeBeforeActualStartServiceTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "actualDepartureTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "actualStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryVisitActualStartServiceTimeBeforeActualArrivalTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryVisitActualStartServiceTimeBeforeActualArrivalTimeIssueDetail"
          }
        }
      },
      "ItineraryVisitActualStartServiceTimeBeforeActualArrivalTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "actualStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "actualArrivalTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ItineraryVisitNotFoundIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/ItineraryVisitNotFoundIssueDetail"
          }
        }
      },
      "ItineraryVisitNotFoundIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "JustificationColocatedPair" : {
        "required" : [ "from", "to" ],
        "type" : "object",
        "properties" : {
          "from" : {
            "$ref" : "#/components/schemas/Location"
          },
          "to" : {
            "$ref" : "#/components/schemas/Location"
          }
        }
      },
      "JustificationConsecutiveGroupPair" : {
        "required" : [ "precedingVisitId", "followingVisitId" ],
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "followingVisitId" : {
            "type" : "string"
          }
        }
      },
      "LegacyBreak" : {
        "description" : "A break that can either be a fixed or a floating break. Deprecated, use either a FixedBreak or a FloatingBreak instead.",
        "required" : [ "id", "minStartTime", "duration" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/Break"
        } ],
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the break.",
            "type" : "string"
          },
          "type" : {
            "default" : "LEGACY",
            "pattern" : "^LEGACY$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/BreakType"
            } ],
            "nullable" : true
          },
          "location" : {
            "description" : "The coordinates of the location of the break.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "costImpact" : {
            "description" : "The impact of this break on the vehicle shift cost calculation.",
            "default" : "PAID",
            "enum" : [ "PAID" ],
            "type" : "string"
          },
          "minStartTime" : {
            "description" : "The earliest time (ISO 8601 datetime with offset to UTC) to schedule the break start at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxStartTime" : {
            "description" : "The latest time (ISO 8601 datetime with offset to UTC) to schedule the break start at.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "maxEndTime" : {
            "description" : "The latest time (ISO 8601 datetime with offset to UTC) when the break ends.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "duration" : {
            "description" : "The duration (ISO 8601 duration) of the break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        },
        "additionalProperties" : false,
        "deprecated" : true
      },
      "LegacyBreakMaxStartTimeOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LegacyBreakMaxStartTimeOrderInvalidIssueDetail"
          }
        },
        "deprecated" : true
      },
      "LegacyBreakMaxStartTimeOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "breakId" : {
            "type" : "string"
          },
          "minBreakStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "maxBreakStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "maxBreakEndTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        },
        "deprecated" : true
      },
      "LegacyBreakTimeOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LegacyBreakTimeOrderInvalidIssueDetail"
          }
        },
        "deprecated" : true
      },
      "LegacyBreakTimeOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "breakId" : {
            "type" : "string"
          },
          "minStartTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "maxEndTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        },
        "deprecated" : true
      },
      "LegacyValidationResult" : {
        "description" : "The result of the validation of the model input",
        "type" : "object",
        "properties" : {
          "summary" : {
            "description" : "The summary of the validation. The model input passes the validation if the summary does not contain errors.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ValidationStatus"
            } ]
          },
          "errors" : {
            "description" : "The list of errors that occurred during the validation. If the list is empty, the model input is considered valid.",
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "warnings" : {
            "description" : "The list of warnings that occurred during the validation.",
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "additionalProperties" : false
      },
      "LinearRing" : {
        "description" : "An array of at least 4 coordinates forming a linear ring. The first and last positions must be equivalent.",
        "minItems" : 4,
        "type" : "array",
        "items" : {
          "$ref" : "#/components/schemas/Coordinate"
        },
        "example" : [ [ 40.5, -76.3 ], [ 41.5, -76.3 ], [ 41.5, -75.3 ], [ 40.5, -76.3 ] ]
      },
      "LinkedShift" : {
        "required" : [ "id", "shifts" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The identifier of this shift link. This will be the id of the new shift that combines the linked shifts.",
            "type" : "string"
          },
          "shifts" : {
            "description" : "The list of shifts that are linked.",
            "minItems" : 1,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ShiftLink"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "maxTravelTimePerVisit" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) per visit (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxTravelTime" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) for this shift itinerary (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxSoftTravelTime" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) for this shift itinerary (soft).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxVisits" : {
            "format" : "int32",
            "description" : "The maximum number of visits allowed per shift (hard).",
            "type" : "integer",
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxSoftVisits" : {
            "format" : "int32",
            "description" : "The maximum number of visits allowed per shift (soft).",
            "type" : "integer",
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "skills" : {
            "description" : "An array of skills this linked shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillDefinition"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "tags" : {
            "description" : "An array of names of tags this linked shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/tags"
            }
          },
          "requiredBreaks" : {
            "description" : "An array of breaks affecting this linked shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Break"
            },
            "externalDocs" : {
              "description" : "Lunch breaks and personal appointments documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/lunch-breaks-and-personal-appointments"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "temporarySkillSets" : {
            "description" : "An array of skills that are valid/applicable only within specified time intervals.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TemporarySkillSet"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            }
          },
          "temporaryTagSets" : {
            "description" : "An array of tags that are valid/applicable only within specified time intervals.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TemporaryTagSet"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/tags"
            }
          },
          "movableOccupationRatioThreshold" : {
            "format" : "double",
            "description" : "Influences the ratio between movable and non-movable visits to assign to this linked shift.",
            "default" : 1.0,
            "maximum" : 1.0,
            "minimum" : 0.0,
            "type" : "number",
            "externalDocs" : {
              "description" : "Movable visits and multi-day schedules documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/movable-visits-and-multi-day-schedules"
            }
          },
          "cost" : {
            "description" : "The cost rates applicable to this linked shift. If not provided, this linked shift will not be included in the vehicle cost optimization.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Cost"
            } ],
            "externalDocs" : {
              "description" : "Technician costs documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/technician-costs"
            }
          },
          "travelTimeAdjustment" : {
            "description" : "The travel time adjustment for every route taken by this linked shift. A typical use-case is to implement a \"buffer\" allowing for unexpected traffic delays or long parking time when traveling.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TravelTimeAdjustment"
            } ],
            "nullable" : true
          },
          "pinNextVisitDuringFreeze" : {
            "description" : "Determines if a visit which this linked shift might be traveling to at the freeze time is pinned automatically or not. Overrides the global 'pinNextVisitDuringFreeze' value if set.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/NextVisitFreezeType"
            } ],
            "externalDocs" : {
              "description" : "Real-time planning documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/real-time-planning/real-time-planning-pinning-visits"
            },
            "nullable" : true
          },
          "pinned" : {
            "description" : "Determines if the whole itinerary of this linked shift is pinned. Will be set automatically for linked shifts where the maxEndTime of all contained shifts is before the freezeTime.",
            "default" : false,
            "type" : "boolean"
          },
          "itinerary" : {
            "description" : "The array of itinerary items (visits and breaks) assigned to this linked shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputItineraryItem"
            }
          }
        },
        "additionalProperties" : false
      },
      "LinkedShiftAndContainedShiftHaveNonEmptyItineraryDetail" : {
        "type" : "object",
        "properties" : {
          "linkedShiftId" : {
            "type" : "string"
          },
          "containedShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LinkedShiftAndContainedShiftHaveNonEmptyItineraryIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LinkedShiftAndContainedShiftHaveNonEmptyItineraryDetail"
          }
        }
      },
      "LinkedShiftCircularReferenceIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LinkedShiftCircularReferenceIssueDetail"
          }
        }
      },
      "LinkedShiftCircularReferenceIssueDetail" : {
        "type" : "object",
        "properties" : {
          "linkedShiftId" : {
            "type" : "string"
          },
          "vehicleId" : {
            "type" : "string"
          },
          "precedingShiftIds" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "shiftIdReferringToPrecedingShift" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LinkedShiftNotInChronologicalOrderIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LinkedShiftNotInChronologicalOrderIssueDetail"
          }
        }
      },
      "LinkedShiftNotInChronologicalOrderIssueDetail" : {
        "type" : "object",
        "properties" : {
          "shiftLinkId" : {
            "type" : "string"
          },
          "linkedShiftId" : {
            "type" : "string"
          },
          "vehicleId" : {
            "type" : "string"
          },
          "fromShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LinkedShiftShiftsOverlapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LinkedShiftShiftsOverlapIssueDetail"
          }
        }
      },
      "LinkedShiftShiftsOverlapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "linkedShiftId" : {
            "type" : "string"
          },
          "fromShiftId" : {
            "type" : "string"
          },
          "toShiftId" : {
            "type" : "string"
          },
          "fromShiftEnd" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "toShiftStart" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LocalTime" : {
        "format" : "local-time",
        "type" : "string",
        "externalDocs" : {
          "description" : "As defined by 'partial-time' in RFC3339",
          "url" : "https://www.rfc-editor.org/rfc/rfc3339.html#section-5.6"
        },
        "example" : "13:45:30.123456789"
      },
      "Location" : {
        "description" : "The coordinates of the location of the break.",
        "maxItems" : 2,
        "minItems" : 2,
        "type" : "array",
        "items" : {
          "format" : "double",
          "type" : "number"
        },
        "example" : [ 40.5044403760272, -76.37894009358867 ],
        "nullable" : true
      },
      "LocationOutOfMapReferencedByMultipleEntitiesIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LocationOutOfMapReferencedByMultipleEntitiesIssueDetail"
          }
        }
      },
      "LocationOutOfMapReferencedByMultipleEntitiesIssueDetail" : {
        "type" : "object",
        "properties" : {
          "location" : {
            "$ref" : "#/components/schemas/Location"
          },
          "entityType" : {
            "$ref" : "#/components/schemas/ReferencingEntityType"
          },
          "numberOfEntitiesAffected" : {
            "format" : "int32",
            "type" : "integer"
          },
          "numberOfEntitiesShownAsErrors" : {
            "format" : "int32",
            "type" : "integer"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LocationReferencedByBreakOutOfMapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LocationReferencedByBreakOutOfMapIssueDetail"
          }
        }
      },
      "LocationReferencedByBreakOutOfMapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "location" : {
            "$ref" : "#/components/schemas/Location"
          },
          "breakId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LocationReferencedByVehicleShiftOutOfMapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LocationReferencedByVehicleShiftOutOfMapIssueDetail"
          }
        }
      },
      "LocationReferencedByVehicleShiftOutOfMapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "location" : {
            "$ref" : "#/components/schemas/Location"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LocationReferencedByVisitOutOfMapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LocationReferencedByVisitOutOfMapIssueDetail"
          }
        }
      },
      "LocationReferencedByVisitOutOfMapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "location" : {
            "$ref" : "#/components/schemas/Location"
          },
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "LogInfo" : {
        "type" : "object",
        "properties" : {
          "details" : {
            "type" : "string"
          }
        }
      },
      "LoopDetectedIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/LoopDetectedIssueDetail"
          }
        }
      },
      "LoopDetectedIssueDetail" : {
        "type" : "object",
        "properties" : {
          "loopedVisitGroupIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "loopedVehicleShiftIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "message" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "MapsConfiguration" : {
        "type" : "object",
        "properties" : {
          "provider" : {
            "type" : "string"
          },
          "location" : {
            "type" : "string"
          },
          "maxDistanceFromRoad" : {
            "format" : "double",
            "type" : "number"
          },
          "transportType" : {
            "type" : "string"
          }
        }
      },
      "MaxDelayTo" : {
        "required" : [ "maxStartDateAdjuster" ],
        "type" : "object",
        "properties" : {
          "maxStartDateAdjuster" : {
            "description" : "The adjuster function for the date part of the delayed visit maximum start, such as NEXT_DAY, NEXT_MONDAY, etc.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DateAdjusterSpec"
            } ]
          },
          "maxStartDateAdjusterIncrement" : {
            "format" : "int32",
            "description" : "The increment which determines how many times maxStartDateAdjuster is applied.",
            "default" : 1,
            "minimum" : 1,
            "type" : "integer"
          },
          "maxStartTime" : {
            "description" : "The time part (ISO 8601 local datetime) of the delayed visit maximum start (inclusive). The zone offset is taken either from the source date time, or from the timezone attribute, if supplied.",
            "default" : "00:00",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LocalTime"
            } ]
          },
          "timezone" : {
            "format" : "timezone-id",
            "description" : "The optional region-based TZDB identifier of the timezone which rules apply to the maxStartDateAdjuster and maxStartTime combination. If omitted, the zone offset of the source date time for the adjustment is kept - if DST changes need to be handled, the timezone must be supplied.",
            "type" : "string",
            "example" : "Europe/Brussels",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "MaxLastVisitDepartureTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "lastVisitDepartureTime" : {
            "description" : "The actual last visit departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxLastVisitDepartureTime" : {
            "description" : "The max last visit departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxShiftEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "shiftEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxShiftEndTime" : {
            "description" : "The max end time (ISO 8601 datetime with offset to UTC) of the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxShiftSoftEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "shiftEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxShiftSoftEndTime" : {
            "description" : "The max soft end time (ISO 8601 datetime with offset to UTC) of the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxShiftTravelTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "The actual travel time (ISO 8601 duration) associated with the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "maxTravelTime" : {
            "description" : "The maximum travel time (ISO 8601 duration) allowed for the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxSoftLastVisitDepartureTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "lastVisitDepartureTime" : {
            "description" : "The actual last visit departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxSoftLastVisitDepartureTime" : {
            "description" : "The max soft last visit departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxSoftShiftTravelTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "The actual travel time (ISO 8601 duration) associated with the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "maxSoftTravelTime" : {
            "description" : "The maximum soft travel time (ISO 8601 duration) allowed for the vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxSoftVisitsPerShiftJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitCount" : {
            "format" : "int32",
            "description" : "The actual number of visits assigned to the vehicle shift.",
            "type" : "integer"
          },
          "maxSoftVisits" : {
            "format" : "int32",
            "description" : "The soft maximum number of visits allowed for the vehicle shift.",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxTravelTimePerVisitJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "The actual travel time (ISO 8601 duration) associated with the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "maxTravelTimePerVisit" : {
            "description" : "The maximum travel time (ISO 8601 duration) allowed per visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxVisitsPerShiftJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "visitCount" : {
            "format" : "int32",
            "description" : "The actual number of visits assigned to the vehicle shift.",
            "type" : "integer"
          },
          "maxVisits" : {
            "format" : "int32",
            "description" : "The maximum number of visits allowed for the vehicle shift.",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaximizeProfitJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "fixedProfit" : {
            "type" : "number"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaximizeTechnicianRatingJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleId" : {
            "type" : "string"
          },
          "technicianRating" : {
            "format" : "double",
            "type" : "number"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "Metadata" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MetadataHardMediumSoftScore" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "parentId" : {
            "description" : "The id of the parent data set this was created from",
            "type" : "string",
            "nullable" : true
          },
          "originId" : {
            "description" : "The id of the origin (root) data set this initially originates from",
            "type" : "string",
            "nullable" : true
          },
          "name" : {
            "type" : "string",
            "nullable" : true
          },
          "submitDateTime" : {
            "description" : "The moment the run is submitted",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "startDateTime" : {
            "description" : "The moment the run begins initializing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "activeDateTime" : {
            "description" : "The moment the solving phase begins",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "completeDateTime" : {
            "description" : "The moment the solving phase concludes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "shutdownDateTime" : {
            "description" : "The moment the post-processing phase finishes",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "solverStatus" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/SolvingStatus"
            } ],
            "nullable" : true
          },
          "score" : {
            "type" : "string",
            "nullable" : true
          },
          "tags" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "validationResult" : {
            "$ref" : "#/components/schemas/LegacyValidationResult"
          },
          "failureMessage" : {
            "description" : "The message describing the reason of failure, in case of solverStatus=SOLVING_FAILED.",
            "type" : "string",
            "nullable" : true
          }
        }
      },
      "MinDelayTo" : {
        "required" : [ "minStartDateAdjuster" ],
        "type" : "object",
        "properties" : {
          "minStartDateAdjuster" : {
            "description" : "The adjuster function for the date part of the delayed visit minimum start, such as NEXT_DAY, NEXT_MONDAY, etc.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DateAdjusterSpec"
            } ]
          },
          "minStartDateAdjusterIncrement" : {
            "format" : "int32",
            "description" : "The increment which determines how many times minStartDateAdjuster is applied.",
            "default" : 1,
            "minimum" : 1,
            "type" : "integer"
          },
          "minStartTime" : {
            "description" : "The time part (ISO 8601 local datetime) of the delayed visit minimum start (inclusive). The zone offset is taken either from the source date time, or from the timezone attribute, if supplied.",
            "default" : "00:00",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/LocalTime"
            } ]
          },
          "timezone" : {
            "format" : "timezone-id",
            "description" : "The optional region-based TZDB identifier of the timezone which rules apply to the minStartDateAdjuster and minStartTime combination. If omitted, the zone offset of the source date time for the adjustment is kept - if DST changes need to be handled, the timezone must be supplied.",
            "type" : "string",
            "example" : "Europe/Brussels",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "MinimizeShiftCostsJustification" : {
        "type" : "object",
        "properties" : {
          "shiftId" : {
            "type" : "string"
          },
          "costs" : {
            "type" : "number"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeTravelDistanceJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "travelDistanceMeters" : {
            "format" : "int64",
            "description" : "Travel distance (in meters) associated with the visit.",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeTravelTimeJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "Travel time (ISO 8601 duration) associated with the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeUnnecessarySkillsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "overQualificationLevel" : {
            "format" : "int32",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeVisitCompletionRiskJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "departureTime" : {
            "description" : "The visit departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "vehicleShiftEndTime" : {
            "description" : "The vehicle shift end time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeWaitingTimeJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "waitingTimeSeconds" : {
            "format" : "int64",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "ModelConfigModelConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "overrides" : {
            "description" : "The configuration of individual (soft) constraints weights and additional global model configuration attributes.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConfigObject" : {
        "type" : "object",
        "properties" : {
          "overrides" : {
            "description" : "The configuration of individual (soft) constraints weights and additional global model configuration attributes.",
            "type" : "object",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConfigOverrides" : {
        "type" : "object"
      },
      "ModelConfigRoutePlanConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "overrides" : {
            "description" : "The configuration of individual (soft) constraints weights and additional global model configuration attributes.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConfiguration1" : {
        "type" : "object",
        "properties" : {
          "run" : {
            "description" : "The run configuration.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RunConfiguration"
            } ],
            "nullable" : true
          },
          "model" : {
            "description" : "The model configuration. Impacts the quality of solution.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigModelConfigOverrides"
            } ],
            "nullable" : true
          },
          "resourcesConfiguration" : {
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ResourcesConfiguration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "mapsConfiguration" : {
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MapsConfiguration"
            } ],
            "readOnly" : true,
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConfiguration2" : {
        "type" : "object",
        "properties" : {
          "run" : {
            "description" : "The run configuration.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RunConfiguration"
            } ],
            "nullable" : true
          },
          "model" : {
            "description" : "The model configuration. Impacts the quality of solution.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigRoutePlanConfigOverrides"
            } ],
            "nullable" : true
          },
          "resourcesConfiguration" : {
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ResourcesConfiguration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "mapsConfiguration" : {
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MapsConfiguration"
            } ],
            "readOnly" : true,
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ModelConstraintJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          }
        }
      },
      "ModelInput" : {
        "type" : "object"
      },
      "ModelInputPatch" : {
        "required" : [ "op", "path" ],
        "type" : "object",
        "properties" : {
          "op" : {
            "description" : "Operation to be applied",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelInputPatchOp"
            } ]
          },
          "path" : {
            "description" : "Path within the dataset structure to be modified. Can use field expression with format [fieldName=value] or index to point to selected objects",
            "type" : "string",
            "example" : "/employees/[id=Employee123]"
          },
          "value" : {
            "description" : "Value (object, array or simple value) to be used for add or replace operations. It should not be given for remove operation",
            "additionalProperties" : true,
            "anyOf" : [ { }, {
              "type" : "array",
              "items" : { }
            } ]
          }
        }
      },
      "ModelInputPatchOp" : {
        "enum" : [ "add", "remove", "replace" ],
        "type" : "string"
      },
      "ModelInputPatchRequestRoutePlanConfigOverrides" : {
        "required" : [ "patch" ],
        "type" : "object",
        "properties" : {
          "config" : {
            "description" : "Optional configuration to be applied when solving the patched dataset.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfiguration2"
            } ]
          },
          "patch" : {
            "description" : "List of patches to be applied to the original dataset.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ModelInputPatch"
            }
          }
        }
      },
      "ModelRequestRoutePlanInputRoutePlanConfigOverrides" : {
        "required" : [ "modelInput" ],
        "type" : "object",
        "properties" : {
          "config" : {
            "description" : "The configuration of the model request. If not provided, defaults of the model are used.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfiguration2"
            } ],
            "nullable" : true
          },
          "modelInput" : {
            "description" : "The model input to solve.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ModelResponseHardMediumSoftScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics" : {
        "type" : "object",
        "properties" : {
          "metadata" : {
            "description" : "The model dataset metadata.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MetadataHardMediumSoftScore"
            } ],
            "nullable" : true
          },
          "modelOutput" : {
            "description" : "The solution to the requested model input.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutput"
            } ],
            "nullable" : true
          },
          "inputMetrics" : {
            "description" : "Key metrics aggregated from the model input.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInputMetrics"
            } ],
            "nullable" : true
          },
          "kpis" : {
            "description" : "Key metrics aggregated from the model output.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutputMetrics"
            } ],
            "nullable" : true
          },
          "run" : {
            "description" : "The model run metadata. Deprecated in favor of \"metadata\"",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MetadataHardMediumSoftScore"
            } ],
            "readOnly" : true,
            "nullable" : true,
            "deprecated" : true
          }
        }
      },
      "MultiPolygon" : {
        "description" : "A GeoJSON MultiPolygon object representing an array of polygons.",
        "required" : [ "type", "coordinates" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeoJsonAreaGeometry"
        } ],
        "properties" : {
          "type" : {
            "description" : "The concrete type of this GeoJson object.",
            "pattern" : "^MultiPolygon$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/GeometryType"
            } ]
          },
          "coordinates" : {
            "description" : "An array of linear ring arrays forming polygons.",
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "type" : "array",
              "items" : {
                "$ref" : "#/components/schemas/LinearRing"
              }
            }
          }
        },
        "additionalProperties" : false
      },
      "NextVisitFreezeType" : {
        "description" : "Defines how to handle the next visit of a vehicle that is between two visits at the freeze time:  ALWAYS: If a vehicle is between two visits at the freeze time, always pin the visit it is traveling to, in addition to all visits that are completed, or started. In other words, all visits that are completed, started or departed to are pinned. This is the safest option to use in terms of not disrupting ongoing work. NEVER: If a vehicle is between two visits at the freeze time, never pin the visit it is traveling to, in addition to all visits that are completed, or started. In other words, all visits that are completed or started are pinned. This is the least safe option to use in terms of not disrupting ongoing work, but giving the user complete control of the following visit pinning.",
        "enum" : [ "ALWAYS", "NEVER" ],
        "type" : "string"
      },
      "NoConflictWithFixedBreakJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoConflictWithFixedLocationBreakJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoLoopsAllowedJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "visitGroupId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoSemiAssignedVisitGroupsJustification" : {
        "type" : "object",
        "properties" : {
          "visitGroupId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoVehicleShiftWithCombinationOfSkillAndAreaIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/NoVehicleShiftWithCombinationOfSkillAndAreaIssueDetail"
          }
        }
      },
      "NoVehicleShiftWithCombinationOfSkillAndAreaIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "requiredSkills" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillRequirement"
            }
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "NoVehicleShiftWithSkillCombinationIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/NoVehicleShiftWithSkillCombinationIssueDetail"
          }
        }
      },
      "NoVehicleShiftWithSkillCombinationIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "requiredSkills" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillRequirement"
            }
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "NoVehicleShiftWithSkillIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/NoVehicleShiftWithSkillIssueDetail"
          }
        }
      },
      "NoVehicleShiftWithSkillIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "skillName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "NoVisitsIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "OffsetDateTime" : {
        "format" : "date-time",
        "type" : "string",
        "example" : "2022-03-10T12:15:50-04:00"
      },
      "OperationOnPost" : {
        "enum" : [ "NONE", "SOLVE" ],
        "type" : "string"
      },
      "OutputItineraryItem" : {
        "required" : [ "id", "kind" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The identifier of this itinerary item.",
            "type" : "string"
          },
          "kind" : {
            "description" : "The itinerary item kind, 'VISIT' or 'BREAK'.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/VisitPlan"
        }, {
          "$ref" : "#/components/schemas/BreakPlan"
        } ],
        "discriminator" : {
          "propertyName" : "kind",
          "mapping" : {
            "VISIT" : "#/components/schemas/VisitPlan",
            "BREAK" : "#/components/schemas/BreakPlan"
          }
        }
      },
      "PenalizeInactiveShiftTravelDistanceJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "travelDistanceMeters" : {
            "format" : "int64",
            "description" : "Travel distance (in meters) associated with the inactive vehicle shift.",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PenalizeInactiveShiftTravelTimeJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "Travel time (ISO 8601 duration) associated with the inactive vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitStartTimeAfterShiftIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitStartTimeAfterShiftIssueDetail"
          }
        }
      },
      "PinnedVisitStartTimeAfterShiftIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitStartTimeBeforeShiftIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitStartTimeBeforeShiftIssueDetail"
          }
        }
      },
      "PinnedVisitStartTimeBeforeShiftIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitStartTimeDuringBreakIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitStartTimeDuringBreakIssueDetail"
          }
        }
      },
      "PinnedVisitStartTimeDuringBreakIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "fixedBreakId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitStartTimeMissingIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitStartTimeMissingIssueDetail"
          }
        }
      },
      "PinnedVisitStartTimeMissingIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitStartTimeNotInVisitTimeWindowsIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitStartTimeNotInVisitTimeWindowsIssueDetail"
          }
        }
      },
      "PinnedVisitStartTimeNotInVisitTimeWindowsIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PinnedVisitsStartServiceTimeOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/PinnedVisitsStartServiceTimeOrderInvalidIssueDetail"
          }
        }
      },
      "PinnedVisitsStartServiceTimeOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "PlanFreezeDeparturesBeforeTimeDeprecatedIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "PlanFreezeTimeConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "PlanningWindow" : {
        "required" : [ "startDate", "endDate" ],
        "type" : "object",
        "properties" : {
          "startDate" : {
            "description" : "The start (ISO 8601 datetime with offset to UTC) of the time interval to schedule for (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "endDate" : {
            "description" : "The end (ISO 8601 datetime with offset to UTC) of the time interval to schedule for (exclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "Point" : {
        "description" : "A GeoJSON Point object representing a single geographic position.",
        "required" : [ "type", "coordinates" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeoJsonGeometry"
        } ],
        "properties" : {
          "type" : {
            "description" : "The concrete type of this GeoJson object.",
            "pattern" : "^Point$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/GeometryType"
            } ]
          },
          "coordinates" : {
            "description" : "An array of coordinates. For a Point, there is one single position.",
            "maxItems" : 1,
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Coordinate"
            }
          },
          "coordinate" : {
            "$ref" : "#/components/schemas/Coordinate"
          }
        },
        "additionalProperties" : false
      },
      "Polygon" : {
        "description" : "A GeoJSON Polygon object representing a polygon with one or more linear rings. The first linear ring is the outer boundary (shell), and any subsequent linear rings are holes.",
        "required" : [ "type", "coordinates" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/GeoJsonAreaGeometry"
        } ],
        "properties" : {
          "type" : {
            "description" : "The concrete type of this GeoJson object.",
            "pattern" : "^Polygon$",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/GeometryType"
            } ]
          },
          "coordinates" : {
            "description" : "An array of linear rings. The first element is the outer boundary, and any subsequent elements are holes.",
            "minItems" : 1,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LinearRing"
            }
          }
        },
        "additionalProperties" : false
      },
      "PreferGroupingColocatedVisitsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "description" : "The id of the visit avoiding unnecessary travel.",
            "type" : "string"
          },
          "colocatedRoutes" : {
            "description" : "The co-located locations planned consecutively in the itinerary associated with the visit. They represent travel which has been avoided because these locations are planned one after another.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JustificationColocatedPair"
            }
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferSchedulingEarlierBasedOnSlaJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "departureTime" : {
            "description" : "The departure time (ISO 8601 datetime with offset to UTC) of the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "latestSlaEndTime" : {
            "description" : "The latest SLA end time (ISO 8601 datetime with offset to UTC) of the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferSchedulingOptionalVisitsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferVisitVehicleMatchPreferredVehiclesJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "assignedVehicleId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferVisitsScheduledToEarliestDayJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "startTime" : {
            "description" : "The actual visit start time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "earliestStartTime" : {
            "description" : "The earliest possible visit start time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferredConsecutiveGroupJustification" : {
        "type" : "object",
        "properties" : {
          "consecutivePair" : {
            "description" : "The consecutive pair of visits in the same preferred consecutive group.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/JustificationConsecutiveGroupPair"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferredVehicle" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The identifier of the preferred vehicle.",
            "type" : "string"
          },
          "weight" : {
            "format" : "int64",
            "description" : "The weight of this vehicle preference.",
            "default" : 1,
            "maximum" : 1000000000,
            "minimum" : 1,
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "PriorityConfiguration" : {
        "description" : "Configuration of priority.",
        "required" : [ "priority", "weight" ],
        "type" : "object",
        "properties" : {
          "priority" : {
            "description" : "Name of the priority.",
            "type" : "string"
          },
          "weight" : {
            "format" : "int64",
            "description" : "Weight associated with the priority.",
            "minimum" : 0,
            "type" : "integer"
          },
          "assignment" : {
            "description" : "Defines the visit assignment type associated with this priority: MANDATORY or OPTIONAL. When not provided, it defaults to AUTO, which derives the type from whether the visit can be scheduled outside the current planning period.",
            "default" : "AUTO",
            "enum" : [ "MANDATORY", "OPTIONAL", "AUTO" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "Profit" : {
        "type" : "object",
        "properties" : {
          "fixedProfit" : {
            "description" : "A fixed amount of profit associated with completing this visit.",
            "minimum" : 0,
            "type" : "number"
          }
        },
        "additionalProperties" : false
      },
      "Rate" : {
        "required" : [ "duration" ],
        "type" : "object",
        "properties" : {
          "duration" : {
            "description" : "The duration of this rate from the end of the previous rate (if there is no previous rate, from the start of the shift).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "activationCost" : {
            "description" : "The cost applied once this rate is activated.",
            "default" : 0,
            "minimum" : 0,
            "type" : "number"
          },
          "costPerUnit" : {
            "description" : "The cost per unit (minute/hour/..) associated with this rate.",
            "default" : 0,
            "minimum" : 0,
            "type" : "number"
          },
          "unit" : {
            "description" : "The time unit for specifying the cost.",
            "default" : "HOUR",
            "enum" : [ "MINUTE", "HOUR" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "RecommendationConfig" : {
        "type" : "object",
        "properties" : {
          "model" : {
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigRoutePlanConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "RecommendationConstraintDetail" : {
        "type" : "object",
        "properties" : {
          "score" : {
            "type" : "string"
          },
          "constraintName" : {
            "type" : "string"
          },
          "matchesDiff" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "properties" : {
                "score" : {
                  "type" : "string"
                },
                "justification" : {
                  "$ref" : "#/components/schemas/VehicleRouteJustification"
                }
              }
            }
          },
          "matchCountDiff" : {
            "format" : "int32",
            "type" : "integer"
          }
        }
      },
      "RecommendationTimeWindow" : {
        "type" : "object",
        "properties" : {
          "startTime" : {
            "description" : "The start (ISO 8601 datetime with offset to UTC) of the recommendation time window (inclusive). This field is deprecated, please use minStartTime instead.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "deprecated" : true
          },
          "endTime" : {
            "description" : "The end (ISO 8601 datetime with offset to UTC) of the recommendation time window (inclusive). This field is deprecated, please use maxEndTime instead.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "deprecated" : true
          },
          "minStartTime" : {
            "description" : "The minimum start (ISO 8601 datetime with offset to UTC) of the recommendation time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxStartTime" : {
            "description" : "The maximum start (ISO 8601 datetime with offset to UTC) of the recommendation time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "maxEndTime" : {
            "description" : "The maximum end (ISO 8601 datetime with offset to UTC) of the recommendation time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ReferencingEntityType" : {
        "enum" : [ "NONE", "VISIT", "VEHICLE_SHIFT", "BREAK" ],
        "type" : "string"
      },
      "RequireFloatingBreakMaxEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "floatingBreakId" : {
            "type" : "string"
          },
          "endTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the floating break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxEndTime" : {
            "description" : "The max end time (ISO 8601 datetime with offset to UTC) of the floating break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequirePinnedVisitOnCorrectShiftJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "fixedShiftId" : {
            "type" : "string"
          },
          "actualShiftId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequirePinnedVisitStartServiceTimeJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "fixedStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "actualStartServiceTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireReachableItinerariesJustification" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireReachableVisitsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireSchedulingMandatoryVisitsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireServiceMaxEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "serviceEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxServiceEndTime" : {
            "description" : "The max end time (ISO 8601 datetime with offset to UTC) of the visit time window.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireServiceMaxStartTimeJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "startTime" : {
            "description" : "The actual start time (ISO 8601 datetime with offset to UTC) of the visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxStartTime" : {
            "description" : "The max start time (ISO 8601 datetime with offset to UTC) of the visit time window.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireSkillsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "missingSkillCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "missingSkillLevelCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireTagsJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "missingTagCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencyMaxDelayJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "precedingVisitEndTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the preceding visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependentVisitId" : {
            "type" : "string"
          },
          "dependentVisitStartTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the dependent visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maximumDelay" : {
            "description" : "The maximum delay (ISO 8601 duration) between the two visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencyMaxDelayToJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "precedingVisitEndTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the preceding visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependentVisitId" : {
            "type" : "string"
          },
          "dependentVisitStartTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the dependent visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maximumStartAfterDelay" : {
            "description" : "The maximum start (ISO 8601 datetime with offset to UTC) of the dependent visit after the delay between the two visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencyMinDelayJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "precedingVisitEndTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the preceding visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependentVisitId" : {
            "type" : "string"
          },
          "dependentVisitStartTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the dependent visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "minimumDelay" : {
            "description" : "The minimum delay (ISO 8601 duration) between the two visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencyMinDelayToJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "precedingVisitEndTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the preceding visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependentVisitId" : {
            "type" : "string"
          },
          "dependentVisitStartTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the dependent visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "minimumStartAfterDelay" : {
            "description" : "The minimum start (ISO 8601 datetime with offset to UTC) of the dependent visit after the delay between the two visits.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencyPrerequisiteJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "dependentVisitId" : {
            "type" : "string"
          },
          "dependentVisitVehicleId" : {
            "description" : "The id of the vehicle assigned to the dependent visit.",
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitDependencySameVehicleJustification" : {
        "type" : "object",
        "properties" : {
          "precedingVisitId" : {
            "type" : "string"
          },
          "precedingVisitVehicleId" : {
            "description" : "The id of the vehicle assigned to the preceding visit.",
            "type" : "string"
          },
          "followingVisitId" : {
            "type" : "string"
          },
          "followingVisitVehicleId" : {
            "description" : "The id of the vehicle assigned to the following visit.",
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitVehicleMatchRequiredVehiclesJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "requiredVehiclesIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "assignedVehicleId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireVisitVehicleNotMatchProhibitedVehiclesJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "prohibitedVehicleIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "assignedVehicleId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "ResourcesConfiguration" : {
        "type" : "object",
        "properties" : {
          "memory" : {
            "format" : "double",
            "type" : "number"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "RoutePlanConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "maxSoftShiftEndTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "maxSoftLastVisitDepartureTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "maxSoftShiftTravelTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "maxSoftVisitsPerShiftWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeTravelTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeTravelDistanceWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferGroupingColocatedVisitsWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferVisitsScheduledToEarliestDayWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferSchedulingOptionalVisitsWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeVisitCompletionRiskWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeUnnecessarySkillsWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "balanceTimeUtilizationWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferVisitVehicleMatchPreferredVehiclesWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeShiftCostsWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "maximizeTechnicianRatingWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "latestSlaEndTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferSchedulingEarlierBasedOnSlaWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "preferredVisitTimeWindowWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "visitCompletionRiskMinimalTimeToShiftEnd" : {
            "description" : "The minimal time \"buffer\" (ISO 8601 duration) before the end time of a vehicle shift. Every visit with a scheduled completion before that moment is considered completable without any risk.",
            "default" : "PT0S",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "visitCompletionRiskMinimalPriority" : {
            "description" : "The minimal priority level for considering the visit completion risk.",
            "default" : "6",
            "type" : "string"
          },
          "travelTimeAdjustment" : {
            "description" : "The default travel time adjustment for every route between any two locations. A typical use-case is to implement a \"buffer\" allowing for unexpected traffic delays or long parking time when traveling.  Can be overridden by a specific VehicleShift.travelTimeAdjustment.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TravelTimeAdjustment"
            } ],
            "nullable" : true
          },
          "priorityWeights" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PriorityConfiguration"
            },
            "nullable" : true
          },
          "defaultTechnicianRating" : {
            "format" : "double",
            "description" : "The default technician rating used for technicians without a rating.",
            "default" : 0.0,
            "type" : "number",
            "nullable" : true
          },
          "minimizeWaitingTimeWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "minimizeVisitsOutsidePreferredArea" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "maximizeProfitWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          },
          "durationAddedForFirstVisitOnLocation" : {
            "description" : "The extra overhead time (ISO 8601 duration) added to the first visit at a location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "defaultAssignmentType" : {
            "description" : "The assignment type used for the built-in priorities 1-10. The default is AUTO, but it can be set to MANDATORY.",
            "default" : "AUTO",
            "enum" : [ "AUTO", "MANDATORY" ],
            "type" : "string",
            "nullable" : true
          },
          "preferConsecutiveGroupWeight" : {
            "format" : "int64",
            "minimum" : 0,
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "RoutePlanInput" : {
        "type" : "object",
        "properties" : {
          "locationSetName" : {
            "description" : "The optional name of the set of locations contained in this plan, used for referencing a pre-calculated location time/distance matrix to speed up processing. If specified, all locations in the model must be a subset of the referenced pre-calculated location set. If unspecified, a new time/distance matrix will be calculated for the request.",
            "type" : "string",
            "nullable" : true
          },
          "vehicles" : {
            "description" : "The list of all vehicles along with their shifts that are part of this vehicle routing plan.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Vehicle"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "visits" : {
            "description" : "The list of all customer visits which are not a part of a visit group.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Visit"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "visitGroups" : {
            "description" : "The list of all customer visit groups, i.e. visits serviced by multiple vehicles.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VisitGroup"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "skills" : {
            "description" : "The list of all skill names defined for this plan (for validation purposes). A skill can be assigned to a vehicle shift and a visit, the resulting plan then can be penalized when the required and provided skills or skill levels do not match.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "tags" : {
            "description" : "The list of all tags defined for this plan (for validation purposes). A tag can be assigned to a vehicle shift and a visit, the resulting plan then can be penalized when the required and provided tags do not match.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tag"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "planningWindow" : {
            "description" : "The time period that the plan is for, e.g. we are planning vehicle shifts for the week of 2024-01-01 to 2024-01-07.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/PlanningWindow"
            } ],
            "nullable" : true
          },
          "freezeDeparturesBeforeTime" : {
            "description" : "The ISO 8601 date, time and time zone offset up to that all vehicle shifts are pinned (\"frozen\"). This means every visit, assigned to a vehicle shift, that the shift already completed or started traveling to before the 'freezeDeparturesBeforeTime' is pinned and will not be reassigned to another shift or moved to a different position in the list of assigned visits for the shift. When omitted, no freeze is in effect. Deprecated, please use 'freezeTime' and 'pinNextVisitDuringFreeze' instead.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true,
            "deprecated" : true
          },
          "freezeTime" : {
            "description" : "The ISO 8601 date, time and time zone offset up to that all vehicle shifts are pinned (\"frozen\"). This means every visit, assigned to a vehicle shift, that the shift already completed or started work on before the 'freezeTime' is pinned and will not be reassigned to another shift or moved to a different position in the list of assigned visits for the shift. When omitted, no freeze is in effect. The pinning of visits that a vehicle might be traveling to at the freeze time is determined by the 'pinNextVisitDuringFreeze' value.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "pinNextVisitDuringFreeze" : {
            "description" : "Determines if a visit which a vehicle might be traveling to at the freeze time is pinned automatically or not.",
            "default" : "ALWAYS",
            "enum" : [ "ALWAYS", "NEVER" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "RoutePlanInputMetrics" : {
        "type" : "object",
        "properties" : {
          "vehicles" : {
            "format" : "number",
            "title" : "Vehicles",
            "description" : "The number of vehicles submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 44,
            "x-tf-priority" : "1",
            "x-tf-example" : "44"
          },
          "vehicleShifts" : {
            "format" : "number",
            "title" : "Vehicle shifts",
            "description" : "The number of available vehicle shifts in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 112,
            "x-tf-priority" : "2",
            "x-tf-example" : "112"
          },
          "visits" : {
            "format" : "number",
            "title" : "Visits",
            "description" : "The number of visits submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 654,
            "x-tf-priority" : "3",
            "x-tf-example" : "654"
          },
          "mandatoryVisits" : {
            "format" : "number",
            "title" : "Mandatory visits",
            "description" : "The number of mandatory visits submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 532,
            "x-tf-priority" : "4",
            "x-tf-example" : "532"
          },
          "optionalVisits" : {
            "format" : "number",
            "title" : "Optional visits",
            "description" : "The number of optional visits submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 122,
            "x-tf-priority" : "5",
            "x-tf-example" : "122"
          },
          "pinnedVisits" : {
            "format" : "number",
            "title" : "Pinned visits",
            "description" : "The number of visits pinned in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 145,
            "x-tf-priority" : "6",
            "x-tf-example" : "145"
          },
          "visitsWithSla" : {
            "format" : "number",
            "title" : "Visits with SLA",
            "description" : "The number of visits with an SLA defined.",
            "type" : "number",
            "readOnly" : true,
            "example" : 112,
            "x-tf-priority" : "7",
            "x-tf-example" : "112"
          },
          "visitGroups" : {
            "format" : "number",
            "title" : "Visit groups",
            "description" : "The number of visit groups submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 54,
            "x-tf-priority" : "8",
            "x-tf-example" : "54"
          },
          "visitDependencies" : {
            "format" : "number",
            "title" : "Visit dependencies",
            "description" : "The number of visit dependencies submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 23,
            "x-tf-priority" : "9",
            "x-tf-example" : "23"
          },
          "excludedVisits" : {
            "format" : "number",
            "title" : "Excluded visits",
            "description" : "The number of visits excluded by at least one other visit in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 145,
            "x-tf-priority" : "10",
            "x-tf-example" : "145"
          },
          "movableVisits" : {
            "format" : "number",
            "title" : "Movable visits",
            "description" : "The number of movable visits submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 354,
            "x-tf-priority" : "11",
            "x-tf-example" : "354"
          }
        }
      },
      "RoutePlanOutput" : {
        "type" : "object",
        "properties" : {
          "vehicles" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehiclePlan"
            }
          },
          "unassignedVisits" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "RoutePlanOutputMetrics" : {
        "type" : "object",
        "properties" : {
          "averageTravelTimePerVisit" : {
            "title" : "Average travel time per visit",
            "description" : "The average travel time (defined in the ISO 8601 format) per assigned visit of all vehicles in the schedule.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT26M32S",
            "nullable" : true,
            "x-tf-priority" : "1",
            "x-tf-example" : "26 minutes"
          },
          "totalTravelTime" : {
            "title" : "Total travel time",
            "description" : "The combined travel time of all (defined in the ISO 8601 format) vehicles in the schedule.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT110H18M47S",
            "x-tf-priority" : "2",
            "x-tf-example" : "4 days 14 hours 18 minutes"
          },
          "travelTimeFromStartLocationToFirstVisit" : {
            "title" : "Travel time from start location to first visit",
            "description" : "The combined travel time (defined in the ISO 8601 format) vehicles will travel from their start location to their first assigned visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT32H54M34S",
            "x-tf-priority" : "17",
            "x-tf-example" : "1 day 8 hours 54 minutes"
          },
          "travelTimeBetweenVisits" : {
            "title" : "Travel time between visits",
            "description" : "The combined travel time (defined in the ISO 8601 format) vehicles will spend between different visits in this schedule, excluding the travel time from the start location to the first assigned visit, and the travel time from last assigned visit to the end location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT43H43M52S",
            "x-tf-priority" : "19",
            "x-tf-example" : "1 day 19 hours 43 minutes"
          },
          "travelTimeFromLastVisitToEndLocation" : {
            "title" : "Travel time from last visit to end location",
            "description" : "The combined travel time (defined in the ISO 8601 format) vehicles will travel from their last assigned visit to their end location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT33H40M21S",
            "x-tf-priority" : "21",
            "x-tf-example" : "1 day 9 hours 40 minutes"
          },
          "averageTravelDistanceMetersPerVisit" : {
            "format" : "distance",
            "title" : "Average travel distance per visit",
            "description" : "The average distance per visit (rounded to whole meters) each of the vehicles will travel in this schedule.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 21510,
            "nullable" : true,
            "x-tf-priority" : "3",
            "x-tf-example" : "21 km"
          },
          "totalTravelDistanceMeters" : {
            "format" : "distance",
            "title" : "Total travel distance",
            "description" : "The sum of the distances each of the vehicles will travel in this schedule.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 784911,
            "x-tf-priority" : "4",
            "x-tf-example" : "784.91 km"
          },
          "travelDistanceFromStartLocationToFirstVisitMeters" : {
            "format" : "distance",
            "title" : "Travel distance from start location to first visit",
            "description" : "The sum of the distances the vehicles will travel from their start location to their first assigned visit.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 218148,
            "x-tf-priority" : "18",
            "x-tf-example" : "218.15 km"
          },
          "travelDistanceBetweenVisitsMeters" : {
            "format" : "distance",
            "title" : "Travel distance between visits",
            "description" : "The sum of the distances each vehicle will travel between different visits in this schedule, excluding the distance from the start location to the first assigned visit, and the distance from the last assigned visit to the end location.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 328508,
            "x-tf-priority" : "20",
            "x-tf-example" : "328.51 km"
          },
          "travelDistanceFromLastVisitToEndLocationMeters" : {
            "format" : "distance",
            "title" : "Travel distance from last visit to end location",
            "description" : "The sum of the distances the vehicles will travel from their last assigned visit to their end location.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 238255,
            "x-tf-priority" : "22",
            "x-tf-example" : "238.26 km"
          },
          "totalUnassignedVisits" : {
            "format" : "number",
            "title" : "Unassigned visits",
            "description" : "The number of visits that could not be assigned a vehicle in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 64,
            "x-tf-priority" : "5",
            "x-tf-example" : "0"
          },
          "totalAssignedVisits" : {
            "format" : "number",
            "title" : "Assigned visits",
            "description" : "The number of visits assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 80,
            "x-tf-priority" : "25",
            "x-tf-example" : "80"
          },
          "assignedMandatoryVisits" : {
            "format" : "number",
            "title" : "Assigned mandatory visits",
            "description" : "The number of mandatory visits assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "26",
            "x-tf-example" : "10"
          },
          "unassignedMandatoryVisits" : {
            "format" : "number",
            "title" : "Unassigned mandatory visits",
            "description" : "The number of mandatory visits that could not be assigned a vehicle in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 8,
            "x-tf-priority" : "6",
            "x-tf-example" : "8"
          },
          "assignedOptionalVisits" : {
            "format" : "number",
            "title" : "Assigned optional visits",
            "description" : "The number of optional visits assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 20,
            "nullable" : true,
            "x-tf-priority" : "27",
            "x-tf-example" : "20"
          },
          "unassignedOptionalVisits" : {
            "format" : "number",
            "title" : "Unassigned optional visits",
            "description" : "The number of optional visits that could not be assigned a vehicle in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 2,
            "nullable" : true,
            "x-tf-priority" : "7",
            "x-tf-example" : "2"
          },
          "totalActivatedVehicles" : {
            "format" : "number",
            "title" : "Activated vehicles",
            "description" : "The number of vehicles that have been assigned at least one visit in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "8",
            "x-tf-example" : "10"
          },
          "workingTimeFairnessPercentage" : {
            "format" : "percentage",
            "title" : "Working time fairness",
            "description" : "How fairly the work is distributed among technicians. The higher the percentage, the more equally the working times are distributed between technicians.",
            "type" : "number",
            "readOnly" : true,
            "example" : 95.98,
            "nullable" : true,
            "x-tf-example" : "95.98%",
            "x-tf-priority" : "12"
          },
          "totalTechnicianCosts" : {
            "format" : "number",
            "title" : "Total technician costs",
            "description" : "The total costs of all technicians (if defined) in the plan.",
            "type" : "number",
            "readOnly" : true,
            "example" : 1000.5,
            "nullable" : true,
            "x-tf-example" : "1000.5",
            "x-tf-priority" : "9"
          },
          "totalOvertime" : {
            "title" : "Total overtime",
            "description" : "The amount of overtime (defined in the ISO 8601 format) required for this schedule.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT10H18M",
            "x-tf-priority" : "10",
            "x-tf-example" : "10 hours 18 minutes"
          },
          "availableOvertime" : {
            "title" : "Available overtime",
            "description" : "The amount of available overtime (defined in the ISO 8601 format) provided by this schedule.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT12H10M",
            "nullable" : true,
            "x-tf-priority" : "11",
            "x-tf-example" : "12 hours 10 minutes"
          },
          "averageTechnicianRating" : {
            "format" : "number",
            "title" : "Average technician rating",
            "description" : "The average technician rating assigned to visits.",
            "type" : "number",
            "readOnly" : true,
            "example" : 5.98,
            "nullable" : true,
            "x-tf-example" : "5.98",
            "x-tf-priority" : "13"
          },
          "percentageVisitsInSla" : {
            "format" : "percentage",
            "title" : "Visits finished in SLA (%)",
            "description" : "The percentage of visits that are finished before the latest SLA end time.",
            "type" : "number",
            "readOnly" : true,
            "example" : 95.98,
            "nullable" : true,
            "x-tf-example" : "95.98%",
            "x-tf-priority" : "16"
          },
          "absoluteVisitsInSla" : {
            "format" : "number",
            "title" : "Visits finished in SLA",
            "description" : "The absolute number of visits that are finished before the latest SLA end time.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 95,
            "nullable" : true,
            "x-tf-example" : "95",
            "x-tf-priority" : "14"
          },
          "percentageVisitsOutsidePreferredArea" : {
            "format" : "percentage",
            "title" : "Visits assigned outside the preferred area of the vehicle (%)",
            "description" : "The percentage of visits that are outside the preferred area of the vehicle",
            "type" : "number",
            "readOnly" : true,
            "example" : 95.98,
            "nullable" : true,
            "x-tf-example" : "95.98%",
            "x-tf-priority" : "23"
          },
          "absoluteVisitsOutsidePreferredArea" : {
            "format" : "number",
            "title" : "Visits assigned outside the preferred area of the vehicle",
            "description" : "The absolute number of visits that are outside the preferred area of the vehicle",
            "type" : "integer",
            "readOnly" : true,
            "example" : 95,
            "nullable" : true,
            "x-tf-example" : "95",
            "x-tf-priority" : "24"
          },
          "unassignedExcludedVisits" : {
            "format" : "number",
            "title" : "Unassigned visits excluded by other visits",
            "description" : "The number of unassigned visits that are excluded by other visits.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 95,
            "nullable" : true,
            "x-tf-example" : "95",
            "x-tf-priority" : "15"
          },
          "totalProfit" : {
            "format" : "number",
            "title" : "Total profit",
            "description" : "The total profit of all assigned visits in the plan.",
            "type" : "number",
            "readOnly" : true,
            "example" : 800.0,
            "nullable" : true,
            "x-tf-example" : "800.0",
            "x-tf-priority" : "28"
          }
        }
      },
      "RunConfiguration" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "description" : "Optional name to be given to the dataset. If not provided, the name will be generated.",
            "maxLength" : 255,
            "minLength" : 0,
            "type" : "string",
            "nullable" : true
          },
          "termination" : {
            "$ref" : "#/components/schemas/SolverTerminationConfig"
          },
          "maxThreadCount" : {
            "format" : "int32",
            "description" : "Optional maximum number of threads to be used for solving.",
            "minimum" : 1,
            "type" : "integer",
            "nullable" : true
          },
          "tags" : {
            "description" : "Optional tags to be assigned to the dataset.",
            "maxItems" : 100,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "additionalProperties" : false
      },
      "ScoreAnalysisConfigModelConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "model" : {
            "description" : "Model configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigModelConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ScoreAnalysisConfigRoutePlanConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "model" : {
            "description" : "Model configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ModelConfigRoutePlanConfigOverrides"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "ScoreAnalysisDetail" : {
        "type" : "object",
        "properties" : {
          "score" : {
            "type" : "string"
          },
          "constraints" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "properties" : {
                "name" : {
                  "type" : "string"
                },
                "weight" : {
                  "type" : "string"
                },
                "score" : {
                  "type" : "string"
                },
                "matches" : {
                  "type" : "array",
                  "items" : {
                    "type" : "object",
                    "properties" : {
                      "score" : {
                        "type" : "string"
                      },
                      "justification" : {
                        "$ref" : "#/components/schemas/ModelConstraintJustification"
                      }
                    }
                  }
                },
                "matchCount" : {
                  "format" : "int32",
                  "type" : "integer"
                }
              }
            }
          }
        }
      },
      "ScoreAnalysisRequestRoutePlanInputRoutePlanConfigOverrides" : {
        "required" : [ "modelInput" ],
        "type" : "object",
        "properties" : {
          "config" : {
            "description" : "Configuration for the score analysis.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ScoreAnalysisConfigRoutePlanConfigOverrides"
            } ],
            "nullable" : true
          },
          "modelInput" : {
            "description" : "The model input to analyze.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "ServiceDurationPart" : {
        "required" : [ "skill", "duration" ],
        "type" : "object",
        "properties" : {
          "skill" : {
            "description" : "The skill name that this part of the visit service duration refers to.",
            "type" : "string"
          },
          "duration" : {
            "description" : "The part (ISO 8601 duration) of visit service duration corresponding to the related skill. The total sum of all durations in the breakdown must not be greater than visit.serviceDuration, but can be less, allowing for a part of the service duration to stay uncategorized.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "ShiftLink" : {
        "required" : [ "id", "fromShiftId", "toShiftId" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The identifier of this shift link segment.",
            "type" : "string"
          },
          "fromShiftId" : {
            "description" : "The ID of the shift this link starts from.",
            "type" : "string"
          },
          "toShiftId" : {
            "description" : "The ID of the shift this link transitions to.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "SkillDefinition" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "description" : "The unique name of the skill.",
            "type" : "string"
          },
          "level" : {
            "format" : "int32",
            "description" : "The positive number representing the level of this skill (the higher the better). If the level is null, the default value will be assumed.",
            "default" : 1,
            "minimum" : 1,
            "type" : "integer",
            "nullable" : true
          },
          "multiplier" : {
            "format" : "float",
            "description" : "The float number to multiply a visit service duration part corresponding to this skill.  If this skill should not affect matching visit service duration at all (i.e. excluded from averaging), provide null.",
            "minimum" : 0.0,
            "exclusiveMinimum" : true,
            "type" : "number",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "SkillRequirement" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "description" : "The name of the required skill.",
            "type" : "string"
          },
          "minLevel" : {
            "format" : "int32",
            "description" : "The positive number representing the minimum required level of this skill. When any skill definition, regardless its level, can match this requirement, provide null.",
            "minimum" : 1,
            "type" : "integer",
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "SolverTerminationConfig" : {
        "type" : "object",
        "properties" : {
          "spentLimit" : {
            "description" : "Maximum duration (ISO 8601 duration format) to keep the solver running (e.g. PT1H).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "example" : "PT1H"
          },
          "unimprovedSpentLimit" : {
            "description" : "Maximum unimproved score duration (ISO 8601 duration format). If the score has not improved during this period (e.g. PT5M), terminate the solver. If no value is provided, the default diminished returns termination will apply. If set, stepCountLimit must be empty. Warning: using this option will disable the default diminished returns termination which is recommended for most use cases.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "example" : "PT5M"
          },
          "stepCountLimit" : {
            "format" : "int32",
            "description" : "Maximum solver step count. The solver will stop solving after a pre-determined amount of steps. Use when you require results independently of the hardware resources performance. Use this termination if you want to benchmark your models, not recommended for production use. If set, unimprovedSpentLimit must be empty. Warning: using this option will disable the default diminished returns termination which is recommended for most use cases.",
            "type" : "integer",
            "example" : 1000
          }
        },
        "additionalProperties" : false
      },
      "SolvingStatus" : {
        "enum" : [ "DATASET_CREATED", "DATASET_VALIDATED", "DATASET_INVALID", "DATASET_COMPUTED", "SOLVING_SCHEDULED", "SOLVING_STARTED", "SOLVING_ACTIVE", "SOLVING_COMPLETED", "SOLVING_INCOMPLETE", "SOLVING_FAILED" ],
        "type" : "string"
      },
      "Tag" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "name" : {
            "description" : "The unique name of the tag.",
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "TechnicianRatingDefinedButConstraintDisabledIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/TechnicianRatingDefinedButConstraintDisabledIssueDetail"
          }
        }
      },
      "TechnicianRatingDefinedButConstraintDisabledIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "TemporarySkillSet" : {
        "required" : [ "start", "end", "skills" ],
        "type" : "object",
        "properties" : {
          "start" : {
            "description" : "The start of the related skills validity time range (inclusive). ISO 8601 datetime with offset to UTC.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "end" : {
            "description" : "The end of the related skills validity time range (exclusive). ISO 8601 datetime with offset to UTC.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "skills" : {
            "description" : "The array of skills that are valid only in the related time interval.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillDefinition"
            },
            "x-uniqueItemsProperty" : "name"
          }
        },
        "additionalProperties" : false
      },
      "TemporaryTagSet" : {
        "required" : [ "start", "end", "tags" ],
        "type" : "object",
        "properties" : {
          "start" : {
            "description" : "The start of the related tags validity time range (inclusive). ISO 8601 datetime with offset to UTC.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "end" : {
            "description" : "The end of the related tags validity time range (exclusive). ISO 8601 datetime with offset to UTC.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "tags" : {
            "description" : "The array of tags that are valid only in the related time interval.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "additionalProperties" : false
      },
      "TimeWindow" : {
        "required" : [ "minStartTime", "maxEndTime" ],
        "type" : "object",
        "properties" : {
          "minStartTime" : {
            "description" : "The minimum start time (ISO 8601 datetime with offset to UTC) of the time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxStartTime" : {
            "description" : "The maximum start time (ISO 8601 datetime with offset to UTC) of the time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "maxEndTime" : {
            "description" : "The maximum end time (ISO 8601 datetime with offset to UTC) of the time window (inclusive).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "TravelTimeAdjustment" : {
        "type" : "object",
        "properties" : {
          "multiplier" : {
            "format" : "float",
            "description" : "The coefficient to multiply the original travel time obtained from a map service with. Must be greater than zero (typically will be greater than `1.0` to make the travel time longer).",
            "default" : 1.0,
            "minimum" : 0,
            "exclusiveMinimum" : true,
            "type" : "number"
          },
          "extraTime" : {
            "description" : "The additional time (ISO 8601 duration) to add to the original travel time obtained from a map service. Must be positive or zero duration.",
            "default" : "PT0S",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "TravelWeightConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "UnreferencedLocationOutOfMapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/UnreferencedLocationOutOfMapIssueDetail"
          }
        }
      },
      "UnreferencedLocationOutOfMapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "unreferencedLocation" : {
            "$ref" : "#/components/schemas/Location"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "ValidationErrorInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "ValidationIssueTypes" : {
        "required" : [ "issueTypes" ],
        "type" : "object",
        "properties" : {
          "issueTypes" : {
            "description" : "List of all supported validation issue types together with their metadata.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/IssueType"
            }
          }
        }
      },
      "ValidationResultAbstractRoutePlanValidationIssue" : {
        "required" : [ "status" ],
        "type" : "object",
        "properties" : {
          "status" : {
            "description" : "Determines if the validated dataset is accepted for further processing",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ValidationStatus"
            } ]
          },
          "issues" : {
            "description" : "Validation issues found",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
            }
          }
        }
      },
      "ValidationStatus" : {
        "enum" : [ "VALIDATION_NOT_SUPPORTED", "OK", "WARNINGS", "ERRORS" ],
        "type" : "string"
      },
      "Vehicle" : {
        "required" : [ "id", "shifts" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the vehicle.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/getting-started-with-field-service-routing"
            }
          },
          "vehicleType" : {
            "description" : "The type of the vehicle (VAN, ... ).",
            "default" : "VAN",
            "enum" : [ "VAN" ],
            "type" : "string"
          },
          "shifts" : {
            "description" : "The list of vehicle shifts assigned to this vehicle.",
            "minItems" : 1,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShift"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "historicalTimeUtilized" : {
            "description" : "The historical amount of time a technician has worked in the past. This information will be used in the fairness constraint. This value should be based on the same time frame as the historicalTimeCapacity value.",
            "default" : "PT0S",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Fairness documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/fairness"
            }
          },
          "historicalTimeCapacity" : {
            "description" : "The historical amount of time a technician was available in the past. This information will be used in the fairness constraint. This value should be based on the same time frame as the historicalTimeUtilized value.",
            "default" : "PT0S",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Fairness documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/fairness"
            }
          },
          "technicianRating" : {
            "format" : "double",
            "description" : "The rating of a technician based on a metric chosen by the user. The higher the value, the better the rating.",
            "maximum" : 100.0,
            "minimum" : 0.0,
            "type" : "number",
            "externalDocs" : {
              "description" : "Technician ratings documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/technician-ratings"
            }
          },
          "requiredArea" : {
            "description" : "The required coverage area for the technician, defined as a GeoJSON Polygon or MultiPolygon. If not supplied, the area is unlimited.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/GeoJsonAreaGeometry"
            } ],
            "externalDocs" : {
              "description" : "Technician coverage area documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/technician-area"
            }
          },
          "preferredArea" : {
            "description" : "The preferred coverage area for the technician, defined as a GeoJSON Polygon or MultiPolygon. If not supplied, the area is unlimited.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/GeoJsonAreaGeometry"
            } ],
            "externalDocs" : {
              "description" : "Technician coverage area documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/technician-area"
            }
          },
          "linkedShifts" : {
            "description" : "The list of linked shifts assigned to this vehicle. A linked shift is formed by linking two or more individual vehicle shifts and can be used as an alternative to scheduling every individual shift. This feature is in preview and might be a subject to change.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LinkedShift"
            },
            "x-uniqueItemsProperty" : "id"
          }
        },
        "additionalProperties" : false
      },
      "VehicleAreaInvalidButAutomaticallyFixableIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleAreaInvalidButAutomaticallyFixableIssueDetail"
          }
        }
      },
      "VehicleAreaInvalidButAutomaticallyFixableIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleAreaInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleAreaInvalidIssueDetail"
          }
        }
      },
      "VehicleAreaInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleMetrics" : {
        "type" : "object",
        "properties" : {
          "activatedShifts" : {
            "format" : "int32",
            "description" : "The number of activated shifts for this vehicle.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "assignedVisits" : {
            "format" : "int32",
            "description" : "The number of visits assigned to shifts for this vehicle.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "totalShiftDuration" : {
            "description" : "The total duration (ISO 8601 duration) of this vehicle's activated and reachable shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalServiceDuration" : {
            "description" : "The total service time (ISO 8601 duration) of this vehicle's activated shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalTravelTime" : {
            "description" : "The total reachable travel time (ISO 8601 duration) of this vehicle's activated shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalTravelDistanceMeters" : {
            "format" : "int64",
            "description" : "The total reachable travel distance (in meters) of this vehicle's activated shifts.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "totalBreakTime" : {
            "description" : "The total time spent in breaks (ISO 8601 duration) of this vehicle's activated and reachable shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalWaitingTime" : {
            "description" : "The total waiting time (ISO 8601 duration) of this vehicle's activated and reachable shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalOvertime" : {
            "description" : "The total used overtime (ISO 8601 duration) of this vehicle's activated shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true
          },
          "availableOvertime" : {
            "description" : "The available overtime (ISO 8601 duration) of this vehicle's activated shifts.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalProfit" : {
            "description" : "The total profit of all visits assigned to this vehicle.",
            "type" : "number",
            "readOnly" : true,
            "nullable" : true
          }
        }
      },
      "VehiclePlan" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the vehicle.",
            "type" : "string"
          },
          "shifts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          },
          "linkedShifts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          },
          "metrics" : {
            "description" : "The metrics for this vehicle.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/VehicleMetrics"
            } ]
          }
        }
      },
      "VehicleRouteJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/BalanceMovableAndNonMovableVisitsJustification"
        }, {
          "$ref" : "#/components/schemas/MaxLastVisitDepartureTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxShiftEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxShiftSoftEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxSoftLastVisitDepartureTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxTravelTimePerVisitJustification"
        }, {
          "$ref" : "#/components/schemas/MaxShiftTravelTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxSoftShiftTravelTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeTravelDistanceJustification"
        }, {
          "$ref" : "#/components/schemas/PenalizeInactiveShiftTravelDistanceJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeTravelTimeJustification"
        }, {
          "$ref" : "#/components/schemas/PenalizeInactiveShiftTravelTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeUnnecessarySkillsJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeVisitCompletionRiskJustification"
        }, {
          "$ref" : "#/components/schemas/NoConflictWithFixedBreakJustification"
        }, {
          "$ref" : "#/components/schemas/NoLoopsAllowedJustification"
        }, {
          "$ref" : "#/components/schemas/NoSemiAssignedVisitGroupsJustification"
        }, {
          "$ref" : "#/components/schemas/VisitOutsideRequiredAreaJustification"
        }, {
          "$ref" : "#/components/schemas/PreferSchedulingOptionalVisitsJustification"
        }, {
          "$ref" : "#/components/schemas/NoConflictWithFixedLocationBreakJustification"
        }, {
          "$ref" : "#/components/schemas/PreferVisitsScheduledToEarliestDayJustification"
        }, {
          "$ref" : "#/components/schemas/PreferGroupingColocatedVisitsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireFloatingBreakMaxEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireSchedulingMandatoryVisitsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireServiceMaxEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireServiceMaxStartTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireSkillsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireTagsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencyPrerequisiteJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencyMinDelayJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencyMaxDelayJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencyMinDelayToJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencyMaxDelayToJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitDependencySameVehicleJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitVehicleMatchRequiredVehiclesJustification"
        }, {
          "$ref" : "#/components/schemas/BalanceTimeUtilizationJustification"
        }, {
          "$ref" : "#/components/schemas/PreferVisitVehicleMatchPreferredVehiclesJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeShiftCostsJustification"
        }, {
          "$ref" : "#/components/schemas/MaximizeTechnicianRatingJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeShiftCostsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireVisitVehicleNotMatchProhibitedVehiclesJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeWaitingTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequirePinnedVisitOnCorrectShiftJustification"
        }, {
          "$ref" : "#/components/schemas/RequirePinnedVisitStartServiceTimeJustification"
        }, {
          "$ref" : "#/components/schemas/ExcludedVisitJustification"
        }, {
          "$ref" : "#/components/schemas/RequireReachableItinerariesJustification"
        }, {
          "$ref" : "#/components/schemas/RequireReachableVisitsJustification"
        }, {
          "$ref" : "#/components/schemas/MaxVisitsPerShiftJustification"
        }, {
          "$ref" : "#/components/schemas/MaxSoftVisitsPerShiftJustification"
        }, {
          "$ref" : "#/components/schemas/MaximizeProfitJustification"
        }, {
          "$ref" : "#/components/schemas/PreferSchedulingEarlierBasedOnSlaJustification"
        }, {
          "$ref" : "#/components/schemas/PreferredConsecutiveGroupJustification"
        } ]
      },
      "VehicleShift" : {
        "required" : [ "id", "startLocation" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of this vehicle shift.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/getting-started-with-field-service-routing"
            }
          },
          "startLocation" : {
            "description" : "The location coordinates where the vehicle starts its shift (it travels to the first visit from there).",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "endLocation" : {
            "description" : "The location coordinates where the vehicle ends its shift (it travels there from the last visit). Defaults to the start location when omitted.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "minStartTime" : {
            "description" : "The date and time (ISO 8601 datetime with offset to UTC) of the minimum vehicle shift start. At least one of minStartTime and minFirstVisitArrivalTime is required, minStartTime must be before or equal to minFirstVisitArrivalTime.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "minFirstVisitArrivalTime" : {
            "description" : "The minimum date and time (ISO 8601 datetime with offset to UTC) of the arrival to the first visit in the shift. At least one of minStartTime and minFirstVisitArrivalTime is required, minStartTime must be before or equal to minFirstVisitArrivalTime.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxSoftLastVisitDepartureTime" : {
            "description" : "The maximum departure time (ISO 8601 datetime with offset to UTC) from the last visit (soft).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxLastVisitDepartureTime" : {
            "description" : "The maximum departure time (ISO 8601 datetime with offset to UTC) from the last visit (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxSoftEndTime" : {
            "description" : "The maximum arrival time (ISO 8601 datetime with offset to UTC) to the end location (soft).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxEndTime" : {
            "description" : "The maximum arrival time (ISO 8601 datetime with offset to UTC) to the end location (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxTravelTimePerVisit" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) per visit (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxTravelTime" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) for this shift itinerary (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxSoftTravelTime" : {
            "description" : "The maximum travel time limit (ISO 8601 duration) for this shift itinerary (soft).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxVisits" : {
            "format" : "int32",
            "description" : "The maximum number of visits allowed per shift (hard).",
            "type" : "integer",
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "maxSoftVisits" : {
            "format" : "int32",
            "description" : "The maximum number of visits allowed per shift (soft).",
            "type" : "integer",
            "externalDocs" : {
              "description" : "Route optimization documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/route-optimization"
            },
            "nullable" : true
          },
          "skills" : {
            "description" : "An array of skills this vehicle shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillDefinition"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "tags" : {
            "description" : "An array of names of tags this vehicle shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/tags"
            }
          },
          "requiredBreaks" : {
            "description" : "An array of breaks affecting this vehicle shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Break"
            },
            "externalDocs" : {
              "description" : "Lunch breaks and personal appointments documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/lunch-breaks-and-personal-appointments"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "temporarySkillSets" : {
            "description" : "An array of skills that are valid/applicable only within specified time intervals.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TemporarySkillSet"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            }
          },
          "temporaryTagSets" : {
            "description" : "An array of tags that are valid/applicable only within specified time intervals.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TemporaryTagSet"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/tags"
            }
          },
          "movableOccupationRatioThreshold" : {
            "format" : "double",
            "description" : "Influences the ratio between movable and non-movable visits to assign to this vehicle shift.",
            "default" : 1.0,
            "maximum" : 1.0,
            "minimum" : 0.0,
            "type" : "number",
            "externalDocs" : {
              "description" : "Movable visits and multi-day schedules documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/movable-visits-and-multi-day-schedules"
            }
          },
          "cost" : {
            "description" : "The cost rates applicable to this vehicle shift. If not provided, this vehicle shift will not be included in the vehicle cost optimization.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Cost"
            } ],
            "externalDocs" : {
              "description" : "Technician costs documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/vehicle-resource-constraints/technician-costs"
            }
          },
          "travelTimeAdjustment" : {
            "description" : "The travel time adjustment for every route taken by this vehicle shift. A typical use-case is to implement a \"buffer\" allowing for unexpected traffic delays or long parking time when traveling.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/TravelTimeAdjustment"
            } ],
            "nullable" : true
          },
          "pinNextVisitDuringFreeze" : {
            "description" : "Determines if a visit which this vehicle shift might be traveling to at the freeze time is pinned automatically or not. Overrides the global 'pinNextVisitDuringFreeze' value if set.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/NextVisitFreezeType"
            } ],
            "externalDocs" : {
              "description" : "Real-time planning documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/real-time-planning/real-time-planning-pinning-visits"
            },
            "nullable" : true
          },
          "pinned" : {
            "description" : "Determines if the whole itinerary of this vehicle shift is pinned. Will be set automatically for shifts with maxEndTime before the freezeTime.",
            "default" : false,
            "type" : "boolean"
          },
          "itinerary" : {
            "description" : "The array of itinerary items (visits and breaks) assigned to this vehicle shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputItineraryItem"
            }
          }
        },
        "additionalProperties" : false
      },
      "VehicleShiftMaxEndTimeMissingIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxEndTimeMissingIssueDetail"
          }
        }
      },
      "VehicleShiftMaxEndTimeMissingIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxLastVisitDepartureTimeLaterThanMaxEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeLaterThanMaxEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMaxLastVisitDepartureTimeLaterThanMaxEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxLastVisitDepartureTimeMissingIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxLastVisitDepartureTimeMissingIssueDetail"
          }
        }
      },
      "VehicleShiftMaxLastVisitDepartureTimeMissingIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftEndTimeDeclaredButDisabledIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftEndTimeDeclaredButDisabledIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftEndTimeDeclaredButDisabledIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeDeclaredButDisabledIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeDeclaredButDisabledIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeDeclaredButDisabledIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxLastVisitDepartureTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxLastVisitDepartureTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxLastVisitDepartureTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxSoftEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxSoftEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftLastVisitDepartureTimeLaterThanMaxSoftEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftTravelTimeGreaterThanMaxTravelTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftTravelTimeGreaterThanMaxTravelTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftTravelTimeGreaterThanMaxTravelTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMaxSoftVisitsGreaterThanMaxVisitsIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMaxSoftVisitsGreaterThanMaxVisitsIssueDetail"
          }
        }
      },
      "VehicleShiftMaxSoftVisitsGreaterThanMaxVisitsIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMetrics" : {
        "type" : "object",
        "properties" : {
          "totalServiceDuration" : {
            "description" : "The total service time (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalBreakDuration" : {
            "description" : "The total break time (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalWaitingTime" : {
            "description" : "The total waiting time (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalTravelTime" : {
            "description" : "The total travel time (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeFromStartLocationToFirstVisit" : {
            "description" : "The travel time (ISO 8601 duration) from this vehicle shift's start location to the first visit.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeBetweenVisits" : {
            "description" : "The travel time (ISO 8601 duration) between this vehicle shift's visits.\"",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeFromLastVisitToEndLocation" : {
            "description" : "The travel time (ISO 8601 duration) from this vehicle shift's last visit to shift's end location.\"",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "totalTravelDistanceMeters" : {
            "format" : "int64",
            "description" : "The total travel distance (in meters) of this vehicle shift.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceFromStartLocationToFirstVisitMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) from this vehicle shift's start location to shift's first visit.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceBetweenVisitsMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) between this vehicle shift's visits.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceFromLastVisitToEndLocationMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) from this vehicle shift's last visit to shift's end location.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "endLocationArrivalTime" : {
            "description" : "The arrival time (ISO 8601 datetime with offset to UTC) of this vehicle shift to its end location. Cannot be determined when the shift itinerary contains a route that is not reachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "technicianCosts" : {
            "description" : "The technician costs of this vehicle shift.",
            "type" : "number",
            "readOnly" : true,
            "nullable" : true
          },
          "overtime" : {
            "description" : "The used overtime (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true
          },
          "availableOvertime" : {
            "description" : "The available overtime (ISO 8601 duration) of this vehicle shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "visitsOutsidePreferredArea" : {
            "format" : "int64",
            "description" : "The number of assigned visits outside this vehicle's preferredArea",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "totalProfit" : {
            "description" : "The total profit of all visits assigned to this vehicle shift.",
            "type" : "number",
            "readOnly" : true,
            "nullable" : true
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxLastVisitDepartureTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxLastVisitDepartureTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxLastVisitDepartureTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftLastVisitDepartureTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftLastVisitDepartureTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinFirstVisitArrivalTimeLaterThanMaxSoftLastVisitDepartureTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxLastVisitDepartureTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxLastVisitDepartureTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxLastVisitDepartureTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxSoftEndTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftEndTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxSoftEndTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxSoftLastVisitDepartureTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMaxSoftLastVisitDepartureTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMaxSoftLastVisitDepartureTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMinFirstVisitArrivalTimeIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftMinStartTimeLaterThanMinFirstVisitArrivalTimeIssueDetail"
          }
        }
      },
      "VehicleShiftMinStartTimeLaterThanMinFirstVisitArrivalTimeIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftPlan" : {
        "required" : [ "id", "startTime" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the vehicle shift.",
            "type" : "string"
          },
          "startTime" : {
            "description" : "The date and time (ISO 8601 datetime with offset to UTC) of the vehicle shift actual start.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "readOnly" : true
          },
          "pinned" : {
            "description" : "Determines if this vehicle shift has been pinned during solving.",
            "type" : "boolean",
            "readOnly" : true
          },
          "unreachable" : {
            "description" : "Determines if this vehicle shift itinerary is unreachable on map.",
            "type" : "boolean",
            "readOnly" : true
          },
          "itinerary" : {
            "description" : "Itinerary of the vehicle shift route.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputItineraryItem"
            },
            "readOnly" : true
          },
          "metrics" : {
            "description" : "The travel time and distance metrics for this vehicle shift route.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/VehicleShiftMetrics"
            } ],
            "readOnly" : true
          }
        }
      },
      "VehicleShiftSkillUndeclaredIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftSkillUndeclaredIssueDetail"
          }
        }
      },
      "VehicleShiftSkillUndeclaredIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "skillName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftStartTimeMissingIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftStartTimeMissingIssueDetail"
          }
        }
      },
      "VehicleShiftStartTimeMissingIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftTagUndeclaredIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftTagUndeclaredIssueDetail"
          }
        }
      },
      "VehicleShiftTagUndeclaredIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleShiftId" : {
            "type" : "string"
          },
          "tagName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehicleShiftsEmptyIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VehicleShiftsEmptyIssueDetail"
          }
        }
      },
      "VehicleShiftsEmptyIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VehiclesEmptyIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "Visit" : {
        "required" : [ "id", "location", "serviceDuration" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "A unique identifier of the visit.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/getting-started-with-field-service-routing"
            }
          },
          "name" : {
            "description" : "The name of the visit, if omitted, id is used.",
            "type" : "string",
            "nullable" : true
          },
          "location" : {
            "description" : "The location coordinates of this visit.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/getting-started-with-field-service-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "timeWindows" : {
            "description" : "The array of time windows during which a vehicle shift may perform the service job for this visit.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeWindow"
            },
            "externalDocs" : {
              "description" : "Time windows and opening hours documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-time-windows"
            }
          },
          "serviceDuration" : {
            "description" : "The estimated duration (ISO 8601 duration) of the service.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/getting-started-with-field-service-routing"
            },
            "example" : "\"PT1H\" - 1 hour; \"PT10M\" - 10 minutes; \"PT1H30M10S\" - 1 hour 30 minutes 10 seconds"
          },
          "serviceDurationBreakdown" : {
            "description" : "The breakdown of serviceDuration value by individual skills. The sum of all durations in the breakdown must not be greater than serviceDuration.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ServiceDurationPart"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            }
          },
          "serviceDurationAdjustment" : {
            "description" : "The adjustment (ISO 8601 duration) of the serviceDuration. Can be negative.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true,
            "deprecated" : true
          },
          "durationAddedForFirstVisitOnLocation" : {
            "description" : "The extra overhead time (ISO 8601 duration) added to this visit when it's the first visit on that location. If not set, the value from RoutePlanConfigOverrides.durationAddedForFirstVisitOnLocation is used as default.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "requiredSkills" : {
            "description" : "An array of skills required by this visit. Only vehicle shifts providing all skills (level >= minLevel) can be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillRequirement"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/skills"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "requiredTags" : {
            "description" : "An array of names of tags required by this visit. Only vehicle shifts providing all tags can be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/tags"
            }
          },
          "requiredVehicles" : {
            "description" : "The array of vehicle ids that are allowed to be assigned to this visit. If empty, any vehicle is allowed to be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Visit requirements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/visit-requirements"
            }
          },
          "prohibitedVehicles" : {
            "description" : "The array of vehicle ids that are prohibited from being assigned to this visit. If empty, no vehicle is prohibited from being assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Visit requirements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/visit-requirements"
            }
          },
          "priority" : {
            "description" : "The priority of assigning this visit.",
            "default" : "6",
            "type" : "string",
            "externalDocs" : {
              "description" : "Priority and optional visits documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/priority-visits-and-optional-visits"
            }
          },
          "visitDependencies" : {
            "description" : "The array of visits which this visit depends on.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VisitDependency"
            },
            "externalDocs" : {
              "description" : "Visit requirements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/visit-requirements"
            }
          },
          "pinningRequested" : {
            "description" : "Determines if the user requested to pin this particular visit (must be already assigned).",
            "default" : false,
            "type" : "boolean",
            "externalDocs" : {
              "description" : "Real-time planning documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/real-time-planning/real-time-planning-pinning-visits"
            }
          },
          "minStartTravelTime" : {
            "description" : "The minimum time (ISO 8601 date time) when a shift can start traveling to this visit. When set, it can postpone visit's arrival time. The value of this attribute is set automatically during solving but has to be preserved when the plan is used multiple times for solving with different values of freezeTime (for example, in real-time planning scenario).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Real-time planning documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/real-time-planning/real-time-planning-pinning-visits"
            },
            "nullable" : true
          },
          "preferredVehicles" : {
            "description" : "The array of vehicle ids that are preferred for this visit. If empty, no preferences on vehicles exist. Only one of preferredVehicles and preferredVehiclesWeights can be set.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Visit requirements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/visit-requirements"
            }
          },
          "preferredVehiclesWeights" : {
            "description" : "The array of vehicle ids and preference weights (see PreferredVehicle) that are preferred for this visit. If empty, no weighted preferences on vehicles exist. Only one of preferredVehicles and preferredVehiclesWeights can be set.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PreferredVehicle"
            },
            "externalDocs" : {
              "description" : "Visit requirements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-requirements-area-affinity-and-tags/visit-requirements"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "latestSlaEndTime" : {
            "description" : "The latest time (ISO 8601 date time) when the visit can end.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Visit service level agreements documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-slas"
            },
            "nullable" : true
          },
          "preferredTimeWindows" : {
            "description" : "The array of preferred time windows during which a vehicle shift may perform the service job for this visit.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeWindow"
            },
            "externalDocs" : {
              "description" : "Time windows and opening hours documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-time-windows"
            }
          },
          "preferredConsecutiveGroupId" : {
            "description" : "The id of the preferred consecutive group this visit belongs to. The solver prefers to schedule all visits sharing the same preferredConsecutiveGroupId consecutively on the same vehicle shift (only breaks may appear between them).",
            "type" : "string",
            "nullable" : true
          },
          "exclusions" : {
            "description" : "The array of visits that cannot be assigned together with this visit. Exclusions are mutual and automatically enforced in both directions. This feature is in preview and might be a subject to change.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VisitExclusionItem"
            }
          },
          "profit" : {
            "description" : "The profit associated with completing this visit.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Profit"
            } ],
            "externalDocs" : {
              "description" : "Visit profit documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/visit-profit"
            },
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "VisitAreaNotCoveredByAnyVehicleIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitAreaNotCoveredByAnyVehicleIssueDetail"
          }
        }
      },
      "VisitAreaNotCoveredByAnyVehicleIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitAssignedMoreThanOnceIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitAssignedMoreThanOnceIssueDetail"
          }
        }
      },
      "VisitAssignedMoreThanOnceIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "assignmentCount" : {
            "format" : "int64",
            "type" : "integer"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitBothPreferredVehiclesAndPreferredVehiclesWeightsSetIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitBothPreferredVehiclesAndPreferredVehiclesWeightsSetIssueDetail"
          }
        }
      },
      "VisitBothPreferredVehiclesAndPreferredVehiclesWeightsSetIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependency" : {
        "required" : [ "id", "precedingVisit" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "A unique string identifier of this visit dependency.",
            "type" : "string"
          },
          "precedingVisit" : {
            "description" : "The ID of the preceding visit (the visit which this visit depends on).",
            "type" : "string"
          },
          "minDelay" : {
            "description" : "The minimum delay (ISO 8601 duration) between the preceding visit's departure time and this visit's start service time. Must be positive or zero. Mutually exclusive with 'minDelayTo'.",
            "default" : "PT0M",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "minDelayTo" : {
            "description" : "The earliest date and time (specified as a temporal adjustment function, such as NEXT_DAY, NEXT_MONDAY) the service for this visit may start after the departure of the preceding visit. Mutually exclusive with 'minDelay'.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MinDelayTo"
            } ],
            "nullable" : true
          },
          "maxDelay" : {
            "description" : "The maximum delay (ISO 8601 duration) between the preceding visit's departure time and this visit's start service time. Must be positive or zero. Mutually exclusive with 'maxDelayTo'.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "maxDelayTo" : {
            "description" : "The latest date and time (specified as a temporal adjustment function, such as NEXT_DAY, NEXT_MONDAY) the service for this visit may start after the departure of the preceding visit. Mutually exclusive with 'maxDelay'.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MaxDelayTo"
            } ],
            "nullable" : true
          },
          "coordination" : {
            "description" : "The additional coordination requirement between this visit and the preceding visit.",
            "default" : "NONE",
            "enum" : [ "NONE", "SAME_VEHICLE" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "VisitDependencyDelayOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyDelayOrderInvalidIssueDetail"
          }
        }
      },
      "VisitDependencyDelayOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyMaxDelayConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyMaxDelayConflictIssueDetail"
          }
        }
      },
      "VisitDependencyMaxDelayConflictIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyMaxDelayToSameDayIncrementInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyMaxDelayToSameDayIncrementInvalidIssueDetail"
          }
        }
      },
      "VisitDependencyMaxDelayToSameDayIncrementInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyMinDelayConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyMinDelayConflictIssueDetail"
          }
        }
      },
      "VisitDependencyMinDelayConflictIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyMinDelayToSameDayIncrementInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyMinDelayToSameDayIncrementInvalidIssueDetail"
          }
        }
      },
      "VisitDependencyMinDelayToSameDayIncrementInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyNegativeMaxDelayIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyNegativeMaxDelayIssueDetail"
          }
        }
      },
      "VisitDependencyNegativeMaxDelayIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyNegativeMinDelayIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyNegativeMinDelayIssueDetail"
          }
        }
      },
      "VisitDependencyNegativeMinDelayIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyOrderConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyOrderConflictIssueDetail"
          }
        }
      },
      "VisitDependencyOrderConflictIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyPrecedingVisitNotFoundIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyPrecedingVisitNotFoundIssueDetail"
          }
        }
      },
      "VisitDependencyPrecedingVisitNotFoundIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitDependencyTimeWindowsConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitDependencyTimeWindowsConflictIssueDetail"
          }
        }
      },
      "VisitDependencyTimeWindowsConflictIssueDetail" : {
        "type" : "object",
        "properties" : {
          "dependencyId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "precedingVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitExcludesSelfIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitExcludesSelfIssueDetail"
          }
        }
      },
      "VisitExcludesSelfIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitExcludesUnknownVisitIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitExcludesUnknownVisitIssueDetail"
          }
        }
      },
      "VisitExcludesUnknownVisitIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "excludedVisitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitExclusionItem" : {
        "required" : [ "id", "type" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the item that is being excluded.",
            "type" : "string"
          },
          "type" : {
            "description" : "The type of the excluded item. Currently only (\"VISIT\") is supported",
            "enum" : [ "VISIT" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "VisitGroup" : {
        "required" : [ "id", "visits" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "A unique string identifier of this visit group.",
            "type" : "string"
          },
          "alignment" : {
            "description" : "Alignment of visits in the visit group.",
            "default" : "START",
            "enum" : [ "START", "END" ],
            "type" : "string",
            "externalDocs" : {
              "description" : "Multi-vehicle visits documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/multi-vehicle-visits"
            }
          },
          "serviceDurationStrategy" : {
            "description" : "The strategy to calculate the service duration of the visits in this visit group.",
            "default" : "INDIVIDUAL",
            "enum" : [ "INDIVIDUAL", "BEST_PROFICIENCY" ],
            "type" : "string",
            "externalDocs" : {
              "description" : "Multi-vehicle visits documentation",
              "url" : "https://docs.timefold.ai/field-service-routing/latest/visit-service-constraints/multi-vehicle-visits"
            }
          },
          "visits" : {
            "description" : "The array of visits that form together this visit group (at least two visits are required).",
            "minItems" : 2,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Visit"
            },
            "x-uniqueItemsProperty" : "id"
          }
        },
        "additionalProperties" : false
      },
      "VisitGroupTimeWindowRecommendation" : {
        "required" : [ "timeWindow", "vehicleShifts", "kpis" ],
        "type" : "object",
        "properties" : {
          "scoreDiff" : {
            "type" : "string"
          },
          "constraintDiffs" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationConstraintDetail"
            }
          },
          "timeWindow" : {
            "description" : "Time window that the recommendation ties to.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            } ]
          },
          "vehicleShifts" : {
            "description" : "Vehicle shift recommendations for the time window and the visit group to fit.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          },
          "kpis" : {
            "description" : "The travel time, distance and other metrics including the vehicle that newly handles the fitted visit group.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutputMetrics"
            } ]
          },
          "dependentVehicleShifts" : {
            "description" : "Contains a list of vehicle shifts that need to be changed as they are dependent on the recommended vehicle shift (e.g. due to a visit group or visit dependency relationship.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          }
        }
      },
      "VisitGroupTimeWindowRecommendationRequest" : {
        "required" : [ "maxNumberOfRecommendationsPerTimeWindow", "fitVisitGroupId", "timeWindows", "modelInput" ],
        "type" : "object",
        "properties" : {
          "maxNumberOfRecommendationsPerTimeWindow" : {
            "format" : "int32",
            "description" : "The maximum number of retrieved recommendations per time window",
            "minimum" : 1,
            "type" : "integer",
            "example" : 1
          },
          "fitVisitGroupId" : {
            "description" : "Identifier of the visit group to get the time window recommendations for. The visit group with given identifier needs to be a part of the 'modelInput'.",
            "type" : "string"
          },
          "timeWindows" : {
            "description" : "Time windows to get the vehicle shift recommendations for.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            },
            "example" : [ {
              "minStartTime" : "2024-01-23T08:00:00",
              "maxEndTime" : "2024-01-23T18:00:00"
            } ]
          },
          "config" : {
            "description" : "Optional configuration to override the defaults.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationConfig"
            } ]
          },
          "modelInput" : {
            "description" : "Input route plan that contains a visit group with identifier specified by 'fitVisitGroupId' attribute.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          },
          "includeDependencies" : {
            "description" : "Whether the dependent vehicle shifts should be returned or not",
            "default" : "NONE",
            "enum" : [ "ALL", "NONE" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "VisitGroupTimeWindowRecommendationResponse" : {
        "type" : "object",
        "properties" : {
          "recommendations" : {
            "description" : "The array of recommendations of a visit group assignment to vehicle shifts for a given time window.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VisitGroupTimeWindowRecommendation"
            }
          }
        }
      },
      "VisitGroupTooSmallIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "visitGroupId" : {
            "type" : "string"
          },
          "detail" : {
            "$ref" : "#/components/schemas/IssueDetail"
          }
        }
      },
      "VisitMissingSkillFromServiceDurationBreakdownIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitMissingSkillFromServiceDurationBreakdownIssueDetail"
          }
        }
      },
      "VisitMissingSkillFromServiceDurationBreakdownIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "skillName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitOutsideRequiredAreaJustification" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "vehicleShiftId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "VisitPlan" : {
        "description" : "The output itinerary item representing a visit.",
        "required" : [ "id", "kind" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/OutputItineraryItem"
        } ],
        "properties" : {
          "id" : {
            "description" : "The identifier of the visit this itinerary item represents.",
            "type" : "string"
          },
          "kind" : {
            "description" : "The itinerary item kind, 'VISIT' in this case.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          },
          "arrivalTime" : {
            "description" : "The planned arrival time (ISO 8601 datetime with offset to UTC) of the assigned vehicle shift to this visit. Omitted when this visit is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "startServiceTime" : {
            "description" : "The planned time (ISO 8601 datetime with offset to UTC) when the assigned vehicle shift starts to perform the service job for this visit. Omitted when this visit is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "departureTime" : {
            "description" : "The planned departure time (ISO 8601 datetime with offset to UTC) of the assigned vehicle shift from this visit. Omitted when this visit is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "effectiveServiceDuration" : {
            "description" : "The service duration (ISO 8601 duration) after applying assigned vehicle shift's service duration multipliers (if any) and serviceDurationAdjustment.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "travelTimeFromPreviousStandstill" : {
            "description" : "The assigned vehicle shift's travel time (ISO 8601 duration) from its previous location to this visit location. Omitted when this visit is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "travelDistanceMetersFromPreviousStandstill" : {
            "format" : "int64",
            "description" : "The assigned vehicle shift's travel distance (meters) from its previous location to this visit location. Omitted when this visit is unreachable on the map.",
            "type" : "integer"
          },
          "unreachable" : {
            "description" : "Determines if this visit location is unreachable from the previous standstill on the map.",
            "type" : "boolean"
          },
          "minStartTravelTime" : {
            "description" : "The minimum time (ISO 8601 date time) when a shift can start traveling to this visit. When set, it can postpone visit's arrival time. The value of this attribute is set automatically during solving but has to be preserved when the plan is used multiple times for solving with different values of freezeTime (for example, in real-time planning scenario).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "pinned" : {
            "description" : "Determines whether this visit is pinned at this itinerary position (it could not have been moved during solving) or not.",
            "type" : "boolean"
          }
        }
      },
      "VisitPreferredVehicleNotFoundIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitPreferredVehicleNotFoundIssueDetail"
          }
        }
      },
      "VisitPreferredVehicleNotFoundIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitPreferredWindowNoOverlapIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitPreferredWindowNoOverlapIssueDetail"
          }
        }
      },
      "VisitPreferredWindowNoOverlapIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "softTimeWindow" : {
            "$ref" : "#/components/schemas/TimeWindow"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitPriorityDeprecatedIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitPriorityDeprecatedIssueDetail"
          }
        }
      },
      "VisitPriorityDeprecatedIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitPriorityMissingIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitPriorityMissingIssueDetail"
          }
        }
      },
      "VisitPriorityMissingIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitPriorityUndefinedIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitPriorityUndefinedIssueDetail"
          }
        }
      },
      "VisitPriorityUndefinedIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitProhibitedVehicleNotFoundIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitProhibitedVehicleNotFoundIssueDetail"
          }
        }
      },
      "VisitProhibitedVehicleNotFoundIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitRequiredVehicleNotFoundIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitRequiredVehicleNotFoundIssueDetail"
          }
        }
      },
      "VisitRequiredVehicleNotFoundIssueDetail" : {
        "type" : "object",
        "properties" : {
          "vehicleId" : {
            "type" : "string"
          },
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitSkillBreakdownTooLongIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitSkillBreakdownTooLongIssueDetail"
          }
        }
      },
      "VisitSkillBreakdownTooLongIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitSkillUndeclaredIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitSkillUndeclaredIssueDetail"
          }
        }
      },
      "VisitSkillUndeclaredIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "skillName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitSlaConflictIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitSlaConflictIssueDetail"
          }
        }
      },
      "VisitSlaConflictIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitTagNotOnAnyVehicleIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitTagNotOnAnyVehicleIssueDetail"
          }
        }
      },
      "VisitTagNotOnAnyVehicleIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "tagName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitTagUndeclaredIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitTagUndeclaredIssueDetail"
          }
        }
      },
      "VisitTagUndeclaredIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "tagName" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitTimeWindowInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitTimeWindowInvalidIssueDetail"
          }
        }
      },
      "VisitTimeWindowInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "timeWindow" : {
            "$ref" : "#/components/schemas/TimeWindow"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitTimeWindowOrderInvalidIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitTimeWindowOrderInvalidIssueDetail"
          }
        }
      },
      "VisitTimeWindowOrderInvalidIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "timeWindow" : {
            "$ref" : "#/components/schemas/TimeWindow"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "VisitTimeWindowRecommendation" : {
        "required" : [ "timeWindow", "vehicleShift", "kpis" ],
        "type" : "object",
        "properties" : {
          "scoreDiff" : {
            "type" : "string"
          },
          "constraintDiffs" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationConstraintDetail"
            }
          },
          "timeWindow" : {
            "description" : "Time window that the recommendation ties to.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            } ]
          },
          "vehicleShift" : {
            "description" : "Vehicle shift recommendation for the time window and the visit to fit.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            } ]
          },
          "dependentVehicleShifts" : {
            "description" : "Contains a list of vehicle shifts that need to be changed as they are dependent on the recommended vehicle shift (e.g. due to a visit group or visit dependency relationship.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VehicleShiftPlan"
            }
          },
          "kpis" : {
            "description" : "The travel time, distance and other metrics including the vehicle that newly handles the fitted visit.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutputMetrics"
            } ]
          }
        }
      },
      "VisitTimeWindowRecommendationRequest" : {
        "required" : [ "maxNumberOfRecommendationsPerTimeWindow", "fitVisitId", "timeWindows", "modelInput" ],
        "type" : "object",
        "properties" : {
          "maxNumberOfRecommendationsPerTimeWindow" : {
            "format" : "int32",
            "description" : "The maximum number of retrieved recommendations per time window",
            "minimum" : 1,
            "type" : "integer",
            "example" : 1
          },
          "fitVisitId" : {
            "description" : "Identifier of the visit to get the time window recommendations for.  The visit with given identifier needs to be a part of the 'modelInput'.",
            "type" : "string"
          },
          "timeWindows" : {
            "description" : "Time windows to get the vehicle shift recommendations for.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            },
            "example" : [ {
              "minStartTime" : "2024-01-23T08:00:00",
              "maxEndTime" : "2024-01-23T18:00:00"
            } ]
          },
          "config" : {
            "description" : "Optional configuration to override the defaults.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationConfig"
            } ]
          },
          "modelInput" : {
            "description" : "Input route plan that contains visit with identifier specified by 'fitVisitId' attribute.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          },
          "includeDependencies" : {
            "description" : "Whether the dependent vehicle shifts should be returned or not",
            "default" : "NONE",
            "enum" : [ "ALL", "NONE" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "VisitTimeWindowRecommendationResponse" : {
        "type" : "object",
        "properties" : {
          "recommendations" : {
            "description" : "The array of recommendations of a visit assignment to a vehicle shift for a given time window.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/VisitTimeWindowRecommendation"
            }
          }
        }
      },
      "VisitTimeWindowTooSmallIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ],
        "properties" : {
          "detail" : {
            "$ref" : "#/components/schemas/VisitTimeWindowTooSmallIssueDetail"
          }
        }
      },
      "VisitTimeWindowTooSmallIssueDetail" : {
        "type" : "object",
        "properties" : {
          "visitId" : {
            "type" : "string"
          },
          "timeWindow" : {
            "$ref" : "#/components/schemas/TimeWindow"
          },
          "type" : {
            "type" : "string"
          }
        }
      },
      "Waypoints" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "waypoints" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Location"
            }
          }
        }
      }
    },
    "securitySchemes" : {
      "auth" : {
        "type" : "apiKey",
        "in" : "header",
        "name" : "X-API-KEY",
        "description" : "API key required to authenticate as part of Timefold Platform"
      }
    }
  }
}