{
  "openapi" : "3.0.3",
  "info" : {
    "title" : "Pick-up and Delivery Routing",
    "description" : "Assign pick-up and delivery jobs to drivers, 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/pickup-delivery-routing"
  } ],
  "tags" : [ {
    "name" : "Demo data",
    "description" : "Generated demo data for the model"
  }, {
    "name" : "Driver Route Plan",
    "description" : "Timefold Pickup and Delivery"
  } ],
  "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" : [ "Driver 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" : [ "Driver 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/job-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates driver shift recommendations for the supplied job and time windows. This variant is suitable for recommendations for route plans that have not been solved before.",
        "operationId" : "job-recommend-time-windows-without-solved-model",
        "tags" : [ "Driver 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/JobTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "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" : "Job recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobRecommendationResponse"
                }
              }
            }
          },
          "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/stops-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates driver shift recommendations for the supplied job and stop time windows. This variant is suitable for recommendations for route plans that have not been solved before.",
        "operationId" : "stops-recommend-time-windows-without-solved-model",
        "tags" : [ "Driver 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/StopsTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "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" : "Job recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobRecommendationResponse"
                }
              }
            }
          },
          "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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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/ModelResponseHardMediumSoftBigDecimalScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "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" : [ "Driver 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" : [ "Driver 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/ModelResponseHardMediumSoftBigDecimalScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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/job-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates driver shift recommendations for the supplied job 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" : "job-recommend-time-windows-with-solved-model",
        "tags" : [ "Driver 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/JobTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "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" : "Job recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobRecommendationResponse"
                }
              }
            }
          },
          "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/stops-recommend-time-windows" : {
      "post" : {
        "summary" : "Calculates driver shift recommendations for the supplied job and stop 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" : "stops-recommend-time-windows-with-solved-model",
        "tags" : [ "Driver 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/StopsTimeWindowRecommendationRequest"
              }
            }
          }
        },
        "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" : "Job recommendations successfully calculated",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/JobRecommendationResponse"
                }
              }
            }
          },
          "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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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" : [ "Driver 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/ModelResponseHardMediumSoftBigDecimalScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics"
                }
              }
            }
          },
          "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/LoopDetectedIssue"
        }, {
          "$ref" : "#/components/schemas/LegacyErrorIssue"
        }, {
          "$ref" : "#/components/schemas/LegacyWarningIssue"
        } ],
        "discriminator" : {
          "propertyName" : "code",
          "mapping" : {
            "LOOP_DETECTED" : "#/components/schemas/LoopDetectedIssue",
            "LEGACY-ERROR" : "#/components/schemas/LegacyErrorIssue",
            "LEGACY-WARNING" : "#/components/schemas/LegacyWarningIssue"
          }
        }
      },
      "Break" : {
        "required" : [ "id", "type" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the break.",
            "type" : "string"
          },
          "type" : {
            "$ref" : "#/components/schemas/BreakType"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/FixedBreak"
        }, {
          "$ref" : "#/components/schemas/FloatingBreak"
        } ],
        "discriminator" : {
          "propertyName" : "type",
          "mapping" : {
            "FIXED" : "#/components/schemas/FixedBreak",
            "FLOATING" : "#/components/schemas/FloatingBreak"
          }
        }
      },
      "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 driver shift's travel time (ISO 8601 duration) from its previous location to this stop 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 driver shift's travel distance (meters) from its previous location to this stop 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"
          }
        }
      },
      "BreakType" : {
        "enum" : [ "FIXED", "FLOATING" ],
        "type" : "string"
      },
      "Capacity" : {
        "description" : "Describes the capacity of a driver shift.",
        "required" : [ "type", "quantity" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The type of the capacity.",
            "type" : "string"
          },
          "quantity" : {
            "format" : "int64",
            "description" : "Describes the amount of the capacity provided by the owner of this capacity. The provided capacity relates to the capacity type.",
            "minimum" : 0,
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "DatasetSelector" : {
        "enum" : [ "UNSOLVED", "SOLVED" ],
        "type" : "string"
      },
      "Demand" : {
        "description" : "Describes the capacity demand of a stop.",
        "required" : [ "type" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The type of the capacity.",
            "type" : "string"
          },
          "pickup" : {
            "format" : "int64",
            "description" : "Describes the number of units of the capacity type that need to be picked up for the owner of this demand.",
            "default" : 0,
            "minimum" : 0,
            "type" : "integer"
          },
          "deliver" : {
            "format" : "int64",
            "description" : "Describes the number of units of the capacity type that need to be delivered for the owner of this demand.",
            "default" : 0,
            "minimum" : 0,
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "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"
            }
          }
        }
      },
      "Driver" : {
        "required" : [ "shifts" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "Unique identifier of the driver.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            }
          },
          "shifts" : {
            "description" : "List of shifts.",
            "minItems" : 1,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DriverShift"
            },
            "x-uniqueItemsProperty" : "id"
          }
        },
        "additionalProperties" : false
      },
      "DriverCapacityJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "DriverPlan" : {
        "required" : [ "id" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the driver.",
            "type" : "string"
          },
          "shifts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DriverShiftPlan"
            }
          }
        }
      },
      "DriverRouteJustification" : {
        "type" : "object",
        "properties" : {
          "description" : {
            "type" : "string"
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/DriverCapacityJustification"
        }, {
          "$ref" : "#/components/schemas/JobPoolingJustification"
        }, {
          "$ref" : "#/components/schemas/MatchPreferredDriversJustification"
        }, {
          "$ref" : "#/components/schemas/MatchRequiredDriversJustification"
        }, {
          "$ref" : "#/components/schemas/MaximumTimeBurdenJustification"
        }, {
          "$ref" : "#/components/schemas/MaxLastStopDepartureTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxShiftEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MaxShiftSoftEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeTravelTimeJustification"
        }, {
          "$ref" : "#/components/schemas/MinimizeUnnecessarySkillsJustification"
        }, {
          "$ref" : "#/components/schemas/NoConflictWithFixedBreakJustification"
        }, {
          "$ref" : "#/components/schemas/NoConflictWithFixedLocationBreakJustification"
        }, {
          "$ref" : "#/components/schemas/NoFixedBreakDuringJobJustification"
        }, {
          "$ref" : "#/components/schemas/NoFloatingBreakDuringJobJustification"
        }, {
          "$ref" : "#/components/schemas/NoLoopsAllowedJustification"
        }, {
          "$ref" : "#/components/schemas/NoSemiAssignedJobsJustification"
        }, {
          "$ref" : "#/components/schemas/PreferSchedulingOptionalStopsJustification"
        }, {
          "$ref" : "#/components/schemas/PreferStopsScheduledToEarliestDayJustification"
        }, {
          "$ref" : "#/components/schemas/ProhibitJobCombinationsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireFloatingBreakMaxEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireReachableItinerariesJustification"
        }, {
          "$ref" : "#/components/schemas/RequireReachableStopsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireSchedulingMandatoryStopsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireServiceMaxEndTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireServiceMaxStartTimeJustification"
        }, {
          "$ref" : "#/components/schemas/RequireSkillsJustification"
        }, {
          "$ref" : "#/components/schemas/RequireStopDependencyPrerequisiteJustification"
        }, {
          "$ref" : "#/components/schemas/RequireStopDependencySameDriverShiftJustification"
        }, {
          "$ref" : "#/components/schemas/RequireStopDependencySequenceJustification"
        }, {
          "$ref" : "#/components/schemas/RequireStopDriverNotMatchProhibitedDriversJustification"
        }, {
          "$ref" : "#/components/schemas/RequireTagsJustification"
        }, {
          "$ref" : "#/components/schemas/StopDelayJustification"
        }, {
          "$ref" : "#/components/schemas/LatestSlaEndTimeJustification"
        } ]
      },
      "DriverShift" : {
        "required" : [ "id", "startLocation" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the shift.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            }
          },
          "capacities" : {
            "description" : "List of the available capacities of the driver shift. Each capacity type needs to have a unique entry in this list.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Capacity"
            },
            "externalDocs" : {
              "description" : "Driver capacity documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/driver-capacity"
            }
          },
          "startLocation" : {
            "description" : "The location coordinates where the driver starts its shift (it travels to the first stop from there).",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ]
          },
          "endLocation" : {
            "description" : "The location coordinates where the driver ends its shift (it travels there from the last stop). Defaults to the start location when omitted.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "minStartTime" : {
            "description" : "Minimum start time of the shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "example" : "2024-06-20T07:00:00-04:00"
          },
          "maxEndTime" : {
            "description" : "Maximum (hard) end time of the shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "example" : "2024-06-20T16:00:00-04:00"
          },
          "maxSoftEndTime" : {
            "description" : "Maximum (soft) end time of the shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "example" : "2024-06-20T16:00:00-04:00"
          },
          "minFirstStopArrivalTime" : {
            "description" : "The minimum date and time (ISO 8601 datetime with offset to UTC) of the arrival to the first stop in the shift. At least one of minStartTime and minFirstStopArrivalTime is required, minStartTime must be before or equal to minFirstStopArrivalTime.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxLastStopDepartureTime" : {
            "description" : "The maximum departure time (ISO 8601 datetime with offset to UTC) from the last stop (hard).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "maxSoftLastStopDepartureTime" : {
            "description" : "The maximum departure time (ISO 8601 datetime with offset to UTC) from the last stop (soft).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Shift hours and overtime documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/shift-hours-and-overtime"
            },
            "nullable" : true
          },
          "itinerary" : {
            "description" : "The array of itinerary items (stops and breaks) assigned to this driver shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/InputItineraryItem"
            },
            "externalDocs" : {
              "description" : "Lunch breaks and personal appointments documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/lunch-breaks-and-personal-appointments"
            }
          },
          "skills" : {
            "description" : "An array of skills this driver shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/SkillDefinition"
            },
            "externalDocs" : {
              "description" : "Skills documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/skills"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "requiredBreaks" : {
            "description" : "An array of breaks affecting this driver shift.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Break"
            },
            "externalDocs" : {
              "description" : "Lunch breaks and personal appointments documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/lunch-breaks-and-personal-appointments"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "tags" : {
            "description" : "An array of names of tags this driver shift provides.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/tags"
            }
          },
          "pinNextStopDuringFreeze" : {
            "description" : "Determines if a stop which this driver shift might be traveling to at the freeze time is pinned automatically or not. Overrides the global 'pinNextStopDuringFreeze' value if set.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/NextStopFreezeType"
            } ],
            "nullable" : true
          },
          "pinned" : {
            "description" : "Determines if the whole itinerary of this driver shift is pinned. Will be set automatically for shifts with maxEndTime before the freezeTime.",
            "default" : false,
            "type" : "boolean"
          }
        },
        "additionalProperties" : false
      },
      "DriverShiftMetrics" : {
        "type" : "object",
        "properties" : {
          "totalTravelTime" : {
            "description" : "The total travel time (ISO 8601 duration) of this driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeFromStartLocationToFirstStop" : {
            "description" : "The travel time (ISO 8601 duration) from this driver shift's start location to the first stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeBetweenStops" : {
            "description" : "The travel time (ISO 8601 duration) between this driver shift's stops.\"",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "travelTimeFromLastStopToEndLocation" : {
            "description" : "The travel time (ISO 8601 duration) from this driver shift's last stop 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 driver shift.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceFromStartLocationToFirstStopMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) from this driver shift's start location to shift's first stop.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceBetweenStopsMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) between this driver shift's stops.",
            "type" : "integer",
            "readOnly" : true,
            "nullable" : true
          },
          "travelDistanceFromLastStopToEndLocationMeters" : {
            "format" : "int64",
            "description" : "The travel distance (in meters) from this driver shift's last stop 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 driver shift to its end location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "readOnly" : true,
            "nullable" : true
          },
          "overtime" : {
            "description" : "The overtime (ISO 8601 duration) of this driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "nullable" : true
          }
        }
      },
      "DriverShiftPlan" : {
        "required" : [ "id", "startTime" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the driver shift.",
            "type" : "string"
          },
          "startTime" : {
            "description" : "The date and time (ISO 8601 datetime with offset to UTC) of the driver shift actual start.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "readOnly" : true
          },
          "unreachable" : {
            "description" : "Indicates whether the driver shift itinerary contains an unreachable route.",
            "type" : "boolean",
            "readOnly" : true
          },
          "pinned" : {
            "description" : "Determines if this driver shift has been pinned during solving.",
            "type" : "boolean",
            "readOnly" : true
          },
          "itinerary" : {
            "description" : "Itinerary of the driver shift route.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OutputItineraryItem"
            },
            "readOnly" : true
          },
          "metrics" : {
            "description" : "The travel time and distance metrics for this driver shift route.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DriverShiftMetrics"
            } ],
            "readOnly" : true
          }
        }
      },
      "Duration" : {
        "format" : "duration",
        "type" : "string",
        "example" : "P1D"
      },
      "ErrorInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          },
          "details" : {
            "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"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "policy" : {
            "description" : "The policy for scheduling jobs during this break (PERMIT_JOBS or REJECT_JOBS). Defaults to PERMIT_JOBS.",
            "default" : "PERMIT_JOBS",
            "enum" : [ "PERMIT_JOBS", "REJECT_JOBS" ],
            "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
      },
      "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"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ],
            "nullable" : true
          },
          "policy" : {
            "description" : "The policy for scheduling jobs during this break (PERMIT_JOBS or REJECT_JOBS). Defaults to PERMIT_JOBS.",
            "default" : "PERMIT_JOBS",
            "enum" : [ "PERMIT_JOBS", "REJECT_JOBS" ],
            "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"
            } ]
          },
          "duration" : {
            "description" : "The duration (ISO 8601 duration) of the break.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          }
        },
        "additionalProperties" : false
      },
      "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.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          },
          "startServiceTime" : {
            "description" : "The planned time (ISO 8601 datetime with offset to UTC) when the assigned driver shift starts to perform the service for this stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "pin" : {
            "description" : "Determines whether this stop 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 stop and shift. In case multiple stops on an itinerary are pinned, they need to be chronologically sorted by their \"startServiceTime\".",
            "default" : false,
            "type" : "boolean"
          }
        },
        "additionalProperties" : false
      },
      "IssueCode" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "string"
          }
        }
      },
      "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"
            }
          }
        }
      },
      "ItineraryItemKind" : {
        "enum" : [ "STOP", "BREAK" ],
        "type" : "string"
      },
      "Job" : {
        "description" : "Represents unit of work that needs to be done to transport a patient/item from location A (pickup) to location B (delivery).",
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the job.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            }
          },
          "priority" : {
            "description" : "The priority of assigning this job.",
            "default" : "6",
            "type" : "string",
            "externalDocs" : {
              "description" : "Priority jobs and optional jobs documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/priority-jobs-and-optional-jobs"
            }
          },
          "stops" : {
            "description" : "The list of all stops.",
            "minItems" : 1,
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Stop"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "prohibitJobPooling" : {
            "description" : "Flag to prohibit pooling of transport jobs. If set to true, transport jobs won't share the driver with other jobs.",
            "default" : false,
            "type" : "boolean",
            "externalDocs" : {
              "description" : "Job pooling documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/job-pooling"
            }
          },
          "allowInterruption" : {
            "description" : "Determines if this job can be interrupted by breaks (BREAKS) or not (NONE).",
            "default" : "NONE",
            "enum" : [ "NONE", "BREAKS" ],
            "type" : "string",
            "externalDocs" : {
              "description" : "Lunch breaks and personal appointments documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/driver-resource-constraints/lunch-breaks-and-personal-appointments"
            }
          },
          "requiredDrivers" : {
            "description" : "The array of driver ids that are allowed to be assigned to this job. If empty, any driver is allowed to be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Job required drivers documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/job-required-drivers"
            }
          },
          "preferredDrivers" : {
            "description" : "The array of driver ids that are preferred to be assigned to this job. If empty, no driver is preferred to be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Job required drivers documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/job-required-drivers"
            }
          },
          "prohibitedDrivers" : {
            "description" : "The array of driver ids that are prohibited from being assigned to this job. If empty, no driver is prohibited from being assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Job required drivers documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/job-required-drivers"
            }
          },
          "requiredSkills" : {
            "description" : "An array of skills required by this job. Only driver 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/pickup-delivery-routing/latest/job-service-constraints/skills"
            },
            "x-uniqueItemsProperty" : "name"
          },
          "prohibitedJobs" : {
            "description" : "The array of job ids that are prohibited from being combined with this job. If empty, no job is prohibited from being combined with this job.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Prohibit job combinations documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/prohibited-job-combinations"
            }
          },
          "requiredTags" : {
            "description" : "An array of tags required by this job. Only driver shifts providing all tags can be assigned.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "externalDocs" : {
              "description" : "Tags documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/tags"
            }
          },
          "maximumTimeBurden" : {
            "description" : "Pooling this job with another job should not inconvenience this job by the maximum time \"burden\" (ISO 8601 duration). This is only relevant if job pooling is allowed. This value overwrites the global maximumTimeBurden setting for this specific job.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "externalDocs" : {
              "description" : "Maximum time burden documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/maximum-time-burden"
            }
          },
          "demands" : {
            "description" : "For jobs with exactly two stops, the demand can be defined on the job level. If set, the first stop will pick up all demand, and the second stop will deliver all demand. If stop-level demands are also set, they take precedence; if they do not match what the job-level demands would propagate, a validation warning is produced.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobDemand"
            },
            "externalDocs" : {
              "description" : "Driver capacity documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/driver-capacity"
            }
          }
        },
        "externalDocs" : {
          "description" : "Getting started documentation",
          "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
        }
      },
      "JobDemand" : {
        "description" : "Describes the capacity demand of a job.",
        "required" : [ "type", "demand" ],
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The type of the capacity.",
            "type" : "string"
          },
          "demand" : {
            "format" : "int64",
            "description" : "Describes the number of units of the capacity type that need to be picked up or delivered for the owner of this demand.",
            "minimum" : 0,
            "type" : "integer"
          }
        },
        "additionalProperties" : false
      },
      "JobPoolingJustification" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "JobRecommendation" : {
        "required" : [ "driverShift", "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"
            } ]
          },
          "driverShift" : {
            "description" : "Driver shift recommendation for the time window and the stops to fit.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/DriverShiftPlan"
            } ]
          },
          "kpis" : {
            "description" : "The travel time, distance and other metrics including the driver that newly handles the fitted stops.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanOutputMetrics"
            } ]
          }
        }
      },
      "JobRecommendationResponse" : {
        "type" : "object",
        "properties" : {
          "recommendations" : {
            "description" : "The array of recommendations of a job assignment to a driver shift for a given time window.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/JobRecommendation"
            }
          }
        }
      },
      "JobTimeWindowRecommendationRequest" : {
        "required" : [ "fitJobId", "modelInput", "maxNumberOfRecommendationsPerTimeWindow", "timeWindows" ],
        "type" : "object",
        "properties" : {
          "fitJobId" : {
            "description" : "Identifier of the job to get the recommendations for.  The job with given identifier needs to be a part of the 'modelInput'.",
            "type" : "string"
          },
          "config" : {
            "description" : "Optional configuration to override the defaults.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationConfig"
            } ]
          },
          "modelInput" : {
            "description" : "Input route plan that contains job with identifier specified by 'fitJobId' attribute.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          },
          "maxNumberOfRecommendationsPerTimeWindow" : {
            "format" : "int32",
            "description" : "The maximum number of retrieved recommendations per time window",
            "minimum" : 1,
            "type" : "integer",
            "example" : 1
          },
          "timeWindows" : {
            "description" : "Time windows to get the driver shift recommendations for.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/RecommendationTimeWindow"
            },
            "example" : {
              "startTime" : "2024-01-23T08:00:00",
              "endTime" : "2024-01-23T18:00:00"
            }
          }
        },
        "additionalProperties" : false
      },
      "LatestSlaEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "departureTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "latestSlaEndTime" : {
            "$ref" : "#/components/schemas/OffsetDateTime"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "LegacyErrorIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ]
      },
      "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
      },
      "LegacyWarningIssue" : {
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/AbstractRoutePlanValidationIssue"
        } ]
      },
      "LoadDetails" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "description" : "The capacity type identifier for the provided load details.",
            "type" : "string",
            "readOnly" : true
          },
          "previous" : {
            "format" : "int64",
            "description" : "The number of loaded units of the capacity type before the current stop is applied.",
            "type" : "integer",
            "readOnly" : true
          },
          "current" : {
            "format" : "int64",
            "description" : "The number of loaded units of the capacity type after the current stop is applied.",
            "type" : "integer",
            "readOnly" : true
          }
        }
      },
      "Location" : {
        "description" : "The location coordinates where the driver starts its shift (it travels to the first stop from there).",
        "maxItems" : 2,
        "minItems" : 2,
        "type" : "array",
        "items" : {
          "format" : "double",
          "type" : "number"
        },
        "externalDocs" : {
          "description" : "Getting started documentation",
          "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
        },
        "example" : [ 40.5044403760272, -76.37894009358867 ]
      },
      "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" : {
          "loopedJobIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "loopedDriverShiftIds" : {
            "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"
          }
        }
      },
      "MatchPreferredDriversJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "assignedDriverId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MatchRequiredDriversJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "requiredDriverIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "assignedDriverId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxLastStopDepartureTimeJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "lastStopDepartureTime" : {
            "description" : "The actual last stop departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxLastStopDepartureTime" : {
            "description" : "The max last stop departure time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxShiftEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "shiftEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxShiftEndTime" : {
            "description" : "The max end time (ISO 8601 datetime with offset to UTC) of the driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaxShiftSoftEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "shiftEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxSoftShiftEndTime" : {
            "description" : "The soft max end time (ISO 8601 datetime with offset to UTC) of the driver shift.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MaximumTimeBurdenJustification" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string"
          },
          "inconvenienceSeconds" : {
            "format" : "int64",
            "type" : "integer"
          },
          "maximumTimeBurdenSeconds" : {
            "format" : "int64",
            "type" : "integer"
          },
          "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
          }
        }
      },
      "MetadataHardMediumSoftBigDecimalScore" : {
        "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
          }
        }
      },
      "MinimizeTravelTimeJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "travelTime" : {
            "description" : "Travel time (ISO 8601 duration) associated with the stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "MinimizeUnnecessarySkillsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "driverShiftId" : {
            "type" : "string"
          },
          "overQualificationLevel" : {
            "format" : "int32",
            "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
      },
      "ModelResponseHardMediumSoftBigDecimalScoreRoutePlanOutputRoutePlanInputMetricsRoutePlanOutputMetrics" : {
        "type" : "object",
        "properties" : {
          "metadata" : {
            "description" : "The model dataset metadata.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/MetadataHardMediumSoftBigDecimalScore"
            } ],
            "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/MetadataHardMediumSoftBigDecimalScore"
            } ],
            "readOnly" : true,
            "nullable" : true,
            "deprecated" : true
          }
        }
      },
      "NextStopFreezeType" : {
        "description" : "Defines how to handle the next stop of a driver who is between two stops at the freeze time:  ALWAYS: If a driver is between two stops at the freeze time, always pin the stop they are traveling to, in addition to all stops that are completed, or have been started. In other words, all stops that are completed, started or departed to are pinned. This is the safest option to avoid disrupting ongoing work. NEVER: If a driver is between two stops at the freeze time, never pin the stop they are traveling to, in addition to all stops that are completed, or have been started. In other words, all stops that are completed or started are pinned. This is the least safe option to avoid disrupting ongoing work, and gives the user complete control of the following stop pinning.",
        "enum" : [ "ALWAYS", "NEVER" ],
        "type" : "string"
      },
      "NoConflictWithFixedBreakJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoConflictWithFixedLocationBreakJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoFixedBreakDuringJobJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoFloatingBreakDuringJobJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "breakId" : {
            "type" : "string"
          },
          "jobId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoLoopsAllowedJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "NoSemiAssignedJobsJustification" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "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, 'STOP' or 'BREAK'.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/ItineraryItemKind"
            } ]
          }
        },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/StopPlan"
        }, {
          "$ref" : "#/components/schemas/BreakPlan"
        } ],
        "discriminator" : {
          "propertyName" : "kind",
          "mapping" : {
            "STOP" : "#/components/schemas/StopPlan",
            "BREAK" : "#/components/schemas/BreakPlan"
          }
        }
      },
      "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
      },
      "PreferSchedulingOptionalStopsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "PreferStopsScheduledToEarliestDayJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "startTime" : {
            "description" : "The actual stop start time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "earliestStartTime" : {
            "description" : "The earliest possible stop start time (ISO 8601 datetime with offset to UTC).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "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 job/stop assignment type associated with this priority: MANDATORY or OPTIONAL.",
            "default" : "MANDATORY",
            "enum" : [ "MANDATORY", "OPTIONAL" ],
            "type" : "string"
          }
        },
        "additionalProperties" : false
      },
      "ProhibitJobCombinationsJustification" : {
        "type" : "object",
        "properties" : {
          "jobId" : {
            "type" : "string"
          },
          "conflictingJobId" : {
            "type" : "string"
          },
          "driverShiftId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "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/DriverRouteJustification"
                }
              }
            }
          },
          "matchCountDiff" : {
            "format" : "int32",
            "type" : "integer"
          }
        }
      },
      "RecommendationTimeWindow" : {
        "type" : "object",
        "properties" : {
          "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
      },
      "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"
          }
        }
      },
      "RequireReachableItinerariesJustification" : {
        "type" : "object",
        "properties" : {
          "driverShiftId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireReachableStopsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireSchedulingMandatoryStopsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireServiceMaxEndTimeJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "serviceEndTime" : {
            "description" : "The actual end time (ISO 8601 datetime with offset to UTC) of the stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxServiceEndTime" : {
            "description" : "The max end time (ISO 8601 datetime with offset to UTC) of the stop time window.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireServiceMaxStartTimeJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "startTime" : {
            "description" : "The actual start time (ISO 8601 datetime with offset to UTC) of the stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "maxStartTime" : {
            "description" : "The max start time (ISO 8601 datetime with offset to UTC) of the stop time window.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireSkillsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "driverShiftId" : {
            "type" : "string"
          },
          "missingSkillCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "missingSkillLevelCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireStopDependencyPrerequisiteJustification" : {
        "type" : "object",
        "properties" : {
          "precedingStopId" : {
            "type" : "string"
          },
          "dependentStopId" : {
            "type" : "string"
          },
          "dependentStopDriverId" : {
            "description" : "The id of the driver assigned to the dependent stop.",
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireStopDependencySameDriverShiftJustification" : {
        "type" : "object",
        "properties" : {
          "precedingStopId" : {
            "type" : "string"
          },
          "precedingStopDriverShiftId" : {
            "description" : "The id of the driver shift assigned to the preceding stop.",
            "type" : "string"
          },
          "followingStopId" : {
            "type" : "string"
          },
          "followingStopDriverShiftId" : {
            "description" : "The id of the driver shift assigned to the following stop.",
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireStopDependencySequenceJustification" : {
        "type" : "object",
        "properties" : {
          "precedingStopId" : {
            "type" : "string"
          },
          "precedingStopEndTime" : {
            "description" : "The end time (ISO 8601 datetime with offset to UTC) of the preceding stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "dependentStopId" : {
            "type" : "string"
          },
          "dependentStopStartTime" : {
            "description" : "The start time (ISO 8601 datetime with offset to UTC) of the dependent stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireStopDriverNotMatchProhibitedDriversJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "prohibitedDriverIds" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "assignedDriverId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "RequireTagsJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "driverShiftId" : {
            "type" : "string"
          },
          "missingTagCount" : {
            "format" : "int32",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "ResourcesConfiguration" : {
        "type" : "object",
        "properties" : {
          "memory" : {
            "format" : "double",
            "type" : "number"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          }
        }
      },
      "RoutePlanConfigOverrides" : {
        "type" : "object",
        "properties" : {
          "assignPreferredDriversWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "minimizeTravelTimeWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "minimizeUnnecessarySkillsWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "preferredShiftEndTimeWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "preferredFinalStopDepartureTimeWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "minimizeBreachingSlasWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "preferSchedulingOptionalStopsWeight" : {
            "minimum" : 0,
            "type" : "number"
          },
          "maximumTimeBurden" : {
            "description" : "Adding a job to an ongoing transportation of another job, should not inconvenience the job on the vehicle by the maximum time \"burden\" (ISO 8601 duration).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "nullable" : true
          },
          "preferStopsScheduledToEarliestDayWeight" : {
            "type" : "number"
          }
        },
        "additionalProperties" : false
      },
      "RoutePlanInput" : {
        "required" : [ "drivers", "jobs" ],
        "type" : "object",
        "properties" : {
          "drivers" : {
            "description" : "The list of drivers to assign jobs to.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Driver"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "jobs" : {
            "description" : "The list of jobs to assign to driver shifts.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Job"
            },
            "x-uniqueItemsProperty" : "id"
          },
          "planningWindow" : {
            "description" : "The time period that the plan is for, e.g. we are planning driver shifts for the week of 2027-02-01 to 2027-02-07.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/PlanningWindow"
            } ]
          },
          "priorityWeights" : {
            "description" : "The list of custom job priorities and their weights.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/PriorityConfiguration"
            },
            "nullable" : true,
            "x-uniqueItemsProperty" : "priority"
          },
          "freezeTime" : {
            "description" : "The ISO 8601 date, time and time zone offset at which all driver shifts are pinned (\"frozen\"). This means every stop, assigned to a driver 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 stops for the shift. When omitted, no freeze is in effect. The pinning of stops that a driver might be traveling to at the freeze time is determined by the 'pinNextStopDuringFreeze' value.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "nullable" : true
          },
          "pinNextStopDuringFreeze" : {
            "description" : "Determines if a stop which a driver 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" : {
          "jobs" : {
            "format" : "number",
            "title" : "Transportation jobs",
            "description" : "The number of jobs submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 112,
            "x-tf-priority" : "1",
            "x-tf-example" : "112"
          },
          "stops" : {
            "format" : "number",
            "title" : "Stops",
            "description" : "The number of stops submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 654,
            "x-tf-priority" : "2",
            "x-tf-example" : "654"
          },
          "drivers" : {
            "format" : "number",
            "title" : "Drivers",
            "description" : "The number of drivers submitted in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 44,
            "x-tf-priority" : "3",
            "x-tf-example" : "44"
          },
          "driverShifts" : {
            "format" : "number",
            "title" : "Driver shifts",
            "description" : "The number of available driver shifts in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 112,
            "x-tf-priority" : "4",
            "x-tf-example" : "112"
          },
          "pinnedStops" : {
            "format" : "number",
            "title" : "Pinned stops",
            "description" : "The number of stops pinned in the input dataset.",
            "type" : "number",
            "readOnly" : true,
            "example" : 145,
            "x-tf-priority" : "5",
            "x-tf-example" : "145"
          }
        }
      },
      "RoutePlanOutput" : {
        "type" : "object",
        "properties" : {
          "drivers" : {
            "description" : "The list of drivers and their assigned itineraries.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DriverPlan"
            }
          },
          "unassignedJobs" : {
            "description" : "The list of job IDs that could not be completely assigned.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/UnassignedJob"
            }
          }
        }
      },
      "RoutePlanOutputMetrics" : {
        "type" : "object",
        "properties" : {
          "totalTravelTime" : {
            "title" : "Total travel time",
            "description" : "The combined travel time of all (defined in the ISO 8601 format) drivers in the schedule.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT110H18M47S",
            "x-tf-priority" : "1",
            "x-tf-example" : "4 days 14 hours 18 minutes"
          },
          "totalTravelDistanceMeters" : {
            "format" : "distance",
            "title" : "Total travel distance",
            "description" : "The sum of the distances each of the drivers will travel in this schedule.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 784911,
            "x-tf-priority" : "2",
            "x-tf-example" : "784.91 km"
          },
          "totalActivatedDrivers" : {
            "format" : "number",
            "title" : "Activated drivers",
            "description" : "The number of drivers that have been assigned at least one stop in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "3",
            "x-tf-example" : "10"
          },
          "totalUnassignedJobs" : {
            "format" : "number",
            "title" : "Total unassigned jobs",
            "description" : "The number of unassigned jobs in the schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "4",
            "x-tf-example" : "10"
          },
          "totalAssignedJobs" : {
            "format" : "number",
            "title" : "Total assigned jobs",
            "description" : "The number of fully assigned jobs in the schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "5",
            "x-tf-example" : "10 "
          },
          "assignedMandatoryJobs" : {
            "format" : "number",
            "title" : "Assigned mandatory jobs",
            "description" : "The number of mandatory jobs assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "6",
            "x-tf-example" : "10"
          },
          "assignedOptionalJobs" : {
            "format" : "number",
            "title" : "Assigned optional jobs",
            "description" : "The number of optional jobs assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 20,
            "nullable" : true,
            "x-tf-priority" : "7",
            "x-tf-example" : "20"
          },
          "totalUnassignedStops" : {
            "format" : "number",
            "title" : "Unassigned stops",
            "description" : "The number of stops that could not be assigned a driver in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 64,
            "x-tf-priority" : "8",
            "x-tf-example" : "0"
          },
          "totalAssignedStops" : {
            "format" : "number",
            "title" : "Assigned stops",
            "description" : "The number of stops assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 80,
            "x-tf-priority" : "9",
            "x-tf-example" : "80"
          },
          "assignedMandatoryStops" : {
            "format" : "number",
            "title" : "Assigned mandatory stops",
            "description" : "The number of mandatory stops assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 10,
            "x-tf-priority" : "10",
            "x-tf-example" : "10"
          },
          "assignedOptionalStops" : {
            "format" : "number",
            "title" : "Assigned optional stops",
            "description" : "The number of optional stops assigned in this schedule.",
            "minimum" : 0,
            "type" : "integer",
            "readOnly" : true,
            "example" : 20,
            "nullable" : true,
            "x-tf-priority" : "11",
            "x-tf-example" : "20"
          },
          "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",
            "nullable" : true,
            "x-tf-priority" : "12",
            "x-tf-example" : "10 hours 18 minutes"
          },
          "travelTimeFromStartLocationToFirstStop" : {
            "title" : "Travel time from start location to first stop",
            "description" : "The combined travel time (defined in the ISO 8601 format) drivers will travel from their start location to their first assigned stop.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT32H54M34S",
            "x-tf-priority" : "13",
            "x-tf-example" : "1 day 8 hours 54 minutes"
          },
          "travelTimeBetweenStops" : {
            "title" : "Travel time between stops",
            "description" : "The combined travel time (defined in the ISO 8601 format) drivers will spend between different stops in this schedule, excluding the travel time from the start location to the first assigned stop, and the travel time from last assigned stop to the end location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT43H43M52S",
            "x-tf-priority" : "14",
            "x-tf-example" : "1 day 19 hours 43 minutes"
          },
          "travelTimeFromLastStopToEndLocation" : {
            "title" : "Travel time from last stop to end location",
            "description" : "The combined travel time (defined in the ISO 8601 format) drivers will travel from their last assigned stop to their end location.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ],
            "readOnly" : true,
            "example" : "PT33H40M21S",
            "x-tf-priority" : "15",
            "x-tf-example" : "1 day 9 hours 40 minutes"
          },
          "travelDistanceFromStartLocationToFirstStopMeters" : {
            "format" : "distance",
            "title" : "Travel distance from start location to first stop",
            "description" : "The sum of the distances the drivers will travel from their start location to their first assigned stop.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 218148,
            "x-tf-priority" : "16",
            "x-tf-example" : "218.15 km"
          },
          "travelDistanceBetweenStopsMeters" : {
            "format" : "distance",
            "title" : "Travel distance between stops",
            "description" : "The sum of the distances each driver will travel between different stops in this schedule, excluding the distance from the start location to the first assigned stop, and the distance from the last assigned stop to the end location.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 328508,
            "x-tf-priority" : "17",
            "x-tf-example" : "328.51 km"
          },
          "travelDistanceFromLastStopToEndLocationMeters" : {
            "format" : "distance",
            "title" : "Travel distance from last stop to end location",
            "description" : "The sum of the distances the drivers will travel from their last assigned stop to their end location.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 238255,
            "x-tf-priority" : "18",
            "x-tf-example" : "238.26 km"
          },
          "percentageJobsInSla" : {
            "format" : "percentage",
            "title" : "Jobs with stops finished in SLA (%)",
            "description" : "The percentage of jobs with stops that satisfy their SLA.",
            "type" : "number",
            "readOnly" : true,
            "example" : 95.98,
            "nullable" : true,
            "x-tf-example" : "95.98%",
            "x-tf-priority" : "19"
          },
          "absoluteJobsInSla" : {
            "format" : "number",
            "title" : "Jobs with stops finished in SLA",
            "description" : "The absolute number of jobs with stops that are finished before the latest SLA end time.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 95,
            "nullable" : true,
            "x-tf-example" : "95",
            "x-tf-priority" : "20"
          },
          "percentageStopsInSla" : {
            "format" : "percentage",
            "title" : "Stops finished in SLA (%)",
            "description" : "The percentage of stops that satisfy their SLA.",
            "type" : "number",
            "readOnly" : true,
            "example" : 95.98,
            "nullable" : true,
            "x-tf-example" : "95.98%",
            "x-tf-priority" : "21"
          },
          "absoluteStopsInSla" : {
            "format" : "number",
            "title" : "Stops finished in SLA",
            "description" : "The absolute number of stops that satisfy their SLA.",
            "type" : "integer",
            "readOnly" : true,
            "example" : 95,
            "nullable" : true,
            "x-tf-example" : "95",
            "x-tf-priority" : "22"
          }
        }
      },
      "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
      },
      "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 stop service duration part corresponding to this skill.  If this skill should not affect matching stop 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"
      },
      "Stop" : {
        "required" : [ "duration" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "Unique identifier for the stop.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            }
          },
          "name" : {
            "description" : "The name of the stop, if omitted, id is used.",
            "type" : "string",
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "nullable" : true
          },
          "location" : {
            "description" : "Location of the stop.",
            "maxItems" : 2,
            "minItems" : 2,
            "type" : "array",
            "items" : {
              "format" : "double",
              "type" : "number"
            },
            "externalDocs" : {
              "description" : "Getting started documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : [ 40.5044403760272, -76.37894009358867 ]
          },
          "timeWindows" : {
            "description" : "The array of time windows during which the stop can be visited.",
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeWindow"
            },
            "externalDocs" : {
              "description" : "Time windows and opening hours documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/time-windows-and-opening-hours"
            }
          },
          "demands" : {
            "description" : "The demands of the stop. Each capacity type needs to have a unique entry in this list.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Demand"
            },
            "externalDocs" : {
              "description" : "Driver capacity documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/job-requirements-and-tags/driver-capacity"
            }
          },
          "duration" : {
            "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/pickup-delivery-routing/latest/getting-started-with-pickup-delivery-routing"
            },
            "example" : "\"PT1H\" - 1 hour; \"PT10M\" - 10 minutes; \"PT1H30M10S\" - 1 hour 30 minutes 10 seconds"
          },
          "latestSlaEndTime" : {
            "description" : "The latest time (ISO 8601 date time) when the stop can end.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ],
            "externalDocs" : {
              "description" : "Stop service level agreement (SLA) documentation",
              "url" : "https://docs.timefold.ai/pickup-delivery-routing/latest/job-service-constraints/stop-slas"
            },
            "nullable" : true
          },
          "minStartTravelTime" : {
            "description" : "The minimum time (ISO 8601 date time) when a driver can start traveling to this stop. When set, it can postpone stop'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"
            } ],
            "nullable" : true
          }
        },
        "additionalProperties" : false
      },
      "StopDelayJustification" : {
        "type" : "object",
        "properties" : {
          "stopId" : {
            "type" : "string"
          },
          "delayInMinutes" : {
            "format" : "int64",
            "type" : "integer"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "StopPlan" : {
        "description" : "The output itinerary item representing a stop.",
        "required" : [ "id", "kind" ],
        "type" : "object",
        "allOf" : [ {
          "$ref" : "#/components/schemas/OutputItineraryItem"
        } ],
        "properties" : {
          "id" : {
            "description" : "The identifier of the stop this itinerary item represents.",
            "type" : "string"
          },
          "kind" : {
            "description" : "The itinerary item kind, 'STOP' 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 driver shift to this stop. Omitted when this stop 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 driver shift starts to perform the service job for this stop. Omitted when this stop 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 driver shift from this stop. Omitted when this stop is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "effectiveServiceDuration" : {
            "description" : "The service duration (ISO 8601 duration) after applying assigned driver shift's service duration multipliers (if any) and serviceDurationAdjustment.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "travelTimeFromPreviousStandstill" : {
            "description" : "The assigned driver shift's travel time (ISO 8601 duration) from its previous location to this stop location. Omitted when this stop is unreachable on the map.",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/Duration"
            } ]
          },
          "travelDistanceMetersFromPreviousStandstill" : {
            "format" : "int64",
            "description" : "The assigned driver shift's travel distance (meters) from its previous location to this stop location. Omitted when this stop is unreachable on the map.",
            "type" : "integer"
          },
          "unreachable" : {
            "description" : "Determines if this stop 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 travelling to this stop. When set, it can postpone stops'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 freezeDeparturesBeforeTime (for example, in real-time planning scenario).",
            "type" : "string",
            "allOf" : [ {
              "$ref" : "#/components/schemas/OffsetDateTime"
            } ]
          },
          "load" : {
            "description" : "Describes the load at this stop. It contains details about the used capacity before and after this stop.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/LoadDetails"
            }
          },
          "pinned" : {
            "description" : "Determines whether this stop is pinned at this itinerary position (it can not be moved during solving) or not.",
            "type" : "boolean"
          }
        }
      },
      "StopTimeWindow" : {
        "required" : [ "fitStopId", "timeWindows" ],
        "type" : "object",
        "properties" : {
          "fitStopId" : {
            "description" : "Identifier of the stop which has time windows that  need to be considered in the recommendations. The stop with given identifier needs  to be a part of a job in the 'modelInput'.",
            "type" : "string"
          },
          "timeWindows" : {
            "description" : "Time windows to get the driver shift recommendations for.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/TimeWindow"
            },
            "example" : {
              "startTime" : "2024-01-23T08:00:00",
              "endTime" : "2024-01-23T18:00:00"
            }
          }
        },
        "additionalProperties" : false
      },
      "StopsTimeWindowRecommendationRequest" : {
        "required" : [ "fitJobId", "modelInput", "maxNumberOfRecommendations", "fitStops" ],
        "type" : "object",
        "properties" : {
          "fitJobId" : {
            "description" : "Identifier of the job to get the recommendations for.  The job with given identifier needs to be a part of the 'modelInput'.",
            "type" : "string"
          },
          "config" : {
            "description" : "Optional configuration to override the defaults.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RecommendationConfig"
            } ]
          },
          "modelInput" : {
            "description" : "Input route plan that contains job with identifier specified by 'fitJobId' attribute.",
            "type" : "object",
            "allOf" : [ {
              "$ref" : "#/components/schemas/RoutePlanInput"
            } ]
          },
          "maxNumberOfRecommendations" : {
            "format" : "int32",
            "description" : "The maximum number of retrieved recommendations",
            "minimum" : 1,
            "type" : "integer",
            "example" : 1
          },
          "fitStops" : {
            "description" : "List of stops and time windows that need to be considered in the recommendation.  The list can cover all stops of the job or just some of the stops.",
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/StopTimeWindow"
            }
          }
        },
        "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
      },
      "UnassignedJob" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "description" : "The unique identifier of the unassigned job.",
            "type" : "string"
          },
          "unassignedStops" : {
            "description" : "The list of stop IDs that could not be assigned to any driver.",
            "type" : "array",
            "items" : {
              "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"
      },
      "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"
      }
    }
  }
}